Class DefaultStore
The default built-in IStore implementation. This stores data in the file system or in memory. It also uses LiteDB for some complex indices.
Inherited Members
Namespace: Libplanet.Store
Assembly: Libplanet.dll
Syntax
public class DefaultStore : BaseStore, IStore, IDisposable
Constructors
| Improve this Doc View SourceDefaultStore(String, Boolean, Boolean, Int32, Int32, Int32, Int32, Boolean, Boolean)
Creates a new DefaultStore.
Declaration
public DefaultStore(string path, bool compress = false, bool journal = true, int indexCacheSize = 50000, int blockCacheSize = 512, int txCacheSize = 1024, int statesCacheSize = 10000, bool flush = true, bool readOnly = false)
Parameters
Type | Name | Description |
---|---|---|
String | path | The path of the directory where the storage files will be saved.
If the path is |
Boolean | compress | Whether to compress data. Does not compress by default. |
Boolean | journal | Enables or disables double write check to ensure durability. |
Int32 | indexCacheSize | Max number of pages in the index cache. |
Int32 | blockCacheSize | The capacity of the block cache. |
Int32 | txCacheSize | The capacity of the transaction cache. |
Int32 | statesCacheSize | The capacity of the states cache. |
Boolean | flush | Writes data direct to disk avoiding OS cache. Turned on by default. |
Boolean | readOnly | Opens database readonly mode. Turned off by default. |
Methods
| Improve this Doc View SourceAppendIndex(Guid, HashDigest<SHA256>)
Declaration
public override long AppendIndex(Guid chainId, HashDigest<SHA256> hash)
Parameters
Type | Name | Description |
---|---|---|
Guid | chainId | |
HashDigest<SHA256> | hash |
Returns
Type | Description |
---|---|
Int64 |
Overrides
| Improve this Doc View SourceContainsBlock(HashDigest<SHA256>)
Declaration
public override bool ContainsBlock(HashDigest<SHA256> blockHash)
Parameters
Type | Name | Description |
---|---|---|
HashDigest<SHA256> | blockHash | The HashDigest<T> of the Block<T> to check if it is in the IStore. |
Returns
Type | Description |
---|---|
Boolean |
|
Overrides
| Improve this Doc View SourceContainsTransaction(TxId)
Determines whether the IStore contains Transaction<T>
the specified txId
.
Declaration
public override bool ContainsTransaction(TxId txId)
Parameters
Type | Name | Description |
---|---|---|
TxId | txId | The TxId of the Transaction<T> to check if it is in the IStore. |
Returns
Type | Description |
---|---|
Boolean |
|
Overrides
| Improve this Doc View SourceCountBlocks()
Declaration
public override long CountBlocks()
Returns
Type | Description |
---|---|
Int64 |
Overrides
| Improve this Doc View SourceCountIndex(Guid)
Declaration
public override long CountIndex(Guid chainId)
Parameters
Type | Name | Description |
---|---|---|
Guid | chainId |
Returns
Type | Description |
---|---|
Int64 |
Overrides
| Improve this Doc View SourceCountTransactions()
Declaration
public override long CountTransactions()
Returns
Type | Description |
---|---|
Int64 |
Overrides
| Improve this Doc View SourceDeleteBlock(HashDigest<SHA256>)
Declaration
public override bool DeleteBlock(HashDigest<SHA256> blockHash)
Parameters
Type | Name | Description |
---|---|---|
HashDigest<SHA256> | blockHash |
Returns
Type | Description |
---|---|
Boolean |
Overrides
| Improve this Doc View SourceDeleteChainId(Guid)
Deletes an index, tx nonces, and state references in the given
chainId
.
It also deletes chain itself. If there is no such chainId
it
does nothing.
Declaration
public override void DeleteChainId(Guid chainId)
Parameters
Type | Name | Description |
---|---|---|
Guid | chainId | The ID of chain to delete. |
Overrides
Remarks
This does not delete blocks or transactions that belong to the index of
the chainId
, but only the index, tx nonces, and state references.
DeleteIndex(Guid, HashDigest<SHA256>)
Declaration
public override bool DeleteIndex(Guid chainId, HashDigest<SHA256> hash)
Parameters
Type | Name | Description |
---|---|---|
Guid | chainId | |
HashDigest<SHA256> | hash |
Returns
Type | Description |
---|---|
Boolean |
Overrides
| Improve this Doc View SourceDeleteTransaction(TxId)
Declaration
public override bool DeleteTransaction(TxId txid)
Parameters
Type | Name | Description |
---|---|---|
TxId | txid |
Returns
Type | Description |
---|---|
Boolean |
Overrides
| Improve this Doc View SourceDispose()
Declaration
public void Dispose()
ForkBlockIndexes(Guid, Guid, HashDigest<SHA256>)
Forks block indexes from
sourceChainId
to
destinationChainId
.
Declaration
public override void ForkBlockIndexes(Guid sourceChainId, Guid destinationChainId, HashDigest<SHA256> branchPoint)
Parameters
Type | Name | Description |
---|---|---|
Guid | sourceChainId | The chain ID of block indexes to fork. |
Guid | destinationChainId | The chain ID of destination block indexes. |
HashDigest<SHA256> | branchPoint | The branch point Block<T> to fork. |
Overrides
Exceptions
Type | Condition |
---|---|
ChainIdNotFoundException | Thrown when the given
|
See Also
ForkStateReferences<T>(Guid, Guid, Block<T>)
Declaration
public override void ForkStateReferences<T>(Guid sourceChainId, Guid destinationChainId, Block<T> branchPoint)
where T : IAction, new()
Parameters
Type | Name | Description |
---|---|---|
Guid | sourceChainId | |
Guid | destinationChainId | |
Block<T> | branchPoint |
Type Parameters
Name | Description |
---|---|
T |
Overrides
GetBlockStates(HashDigest<SHA256>)
Declaration
public override IImmutableDictionary<string, IValue> GetBlockStates(HashDigest<SHA256> blockHash)
Parameters
Type | Name | Description |
---|---|---|
HashDigest<SHA256> | blockHash |
Returns
Type | Description |
---|---|
IImmutableDictionary<String, IValue> |
Overrides
| Improve this Doc View SourceGetCanonicalChainId()
Gets the ID of the current canonical chain.
Declaration
public override Guid? GetCanonicalChainId()
Returns
Type | Description |
---|---|
Nullable<Guid> | The ID of the current canonical chain. Maybe |
Overrides
See Also
GetTransaction<T>(TxId)
Declaration
public override Transaction<T> GetTransaction<T>(TxId txid)
where T : IAction, new()
Parameters
Type | Name | Description |
---|---|---|
TxId | txid |
Returns
Type | Description |
---|---|
Transaction<T> |
Type Parameters
Name | Description |
---|---|
T |
Overrides
| Improve this Doc View SourceGetTxNonce(Guid, Address)
Gets Transaction<T> nonce of the
address
.
Declaration
public override long GetTxNonce(Guid chainId, Address address)
Parameters
Type | Name | Description |
---|---|---|
Guid | chainId | The ID of the chain to get Transaction<T> nonce. |
Address | address | The Address to get Transaction<T> nonce. |
Returns
Type | Description |
---|---|
Int64 | A Transaction<T> nonce. If there is no previous Transaction<T>, return 0. |
Overrides
See Also
IncreaseTxNonce(Guid, Address, Int64)
Increases (or decreases if a negative delta
is given)
the tx nonce counter for signer
.
Declaration
public override void IncreaseTxNonce(Guid chainId, Address signer, long delta = null)
Parameters
Type | Name | Description |
---|---|---|
Guid | chainId | The ID of the chain to increase Transaction<T> nonce. |
Address | signer | The address of the account to increase tx nonce. |
Int64 | delta | How many to increase the counter. A negative number decreases the counter. 1 by default. |
Overrides
See Also
IndexBlockHash(Guid, Int64)
Declaration
public override HashDigest<SHA256>? IndexBlockHash(Guid chainId, long index)
Parameters
Type | Name | Description |
---|---|---|
Guid | chainId | |
Int64 | index |
Returns
Type | Description |
---|---|
Nullable<HashDigest<SHA256>> |
Overrides
| Improve this Doc View SourceIterateBlockHashes()
Declaration
public override IEnumerable<HashDigest<SHA256>> IterateBlockHashes()
Returns
Type | Description |
---|---|
IEnumerable<HashDigest<SHA256>> |
Overrides
| Improve this Doc View SourceIterateIndexes(Guid, Int32, Nullable<Int32>)
Declaration
public override IEnumerable<HashDigest<SHA256>> IterateIndexes(Guid chainId, int offset, int? limit)
Parameters
Type | Name | Description |
---|---|---|
Guid | chainId | |
Int32 | offset | |
Nullable<Int32> | limit |
Returns
Type | Description |
---|---|
IEnumerable<HashDigest<SHA256>> |
Overrides
| Improve this Doc View SourceIterateStagedTransactionIds()
Iterates staged TxIds.
Declaration
public override IEnumerable<TxId> IterateStagedTransactionIds()
Returns
Type | Description |
---|---|
IEnumerable<TxId> | Staged TxIds. |
Overrides
| Improve this Doc View SourceIterateStateReferences(Guid, String, Nullable<Int64>, Nullable<Int64>, Nullable<Int32>)
Gets pairs of a state reference and a corresponding Index of
the requested key
in the specified chainId
.
Declaration
public override IEnumerable<Tuple<HashDigest<SHA256>, long>> IterateStateReferences(Guid chainId, string key, long? highestIndex, long? lowestIndex, int? limit)
Parameters
Type | Name | Description |
---|---|---|
Guid | chainId | The chain ID. |
String | key | The key to get state references. |
Nullable<Int64> | highestIndex | The highest index of state references to get. If it is
|
Nullable<Int64> | lowestIndex | The lowest index of state references to get. If it is
|
Nullable<Int32> | limit | The maximum number of state references to get. If it is
|
Returns
Type | Description |
---|---|
IEnumerable<Tuple<HashDigest<SHA256>, Int64>> | Ordered pairs of a state reference and a corresponding Index. The highest index (i.e., the closest to the tip) goes first and the lowest index (i.e., the closest to the genesis) goes last. |
Overrides
See Also
IterateTransactionIds()
Declaration
public override IEnumerable<TxId> IterateTransactionIds()
Returns
Type | Description |
---|---|
IEnumerable<TxId> |
Overrides
| Improve this Doc View SourceListAllStateReferences(Guid, Int64, Int64)
Lists all accounts, that have any states, in the given chainId
and
their state references.
Declaration
public override IImmutableDictionary<string, IImmutableList<HashDigest<SHA256>>> ListAllStateReferences(Guid chainId, long lowestIndex = null, long highestIndex = null)
Parameters
Type | Name | Description |
---|---|---|
Guid | chainId | The chain ID to look up state references. |
Int64 | lowestIndex | Includes state references only made after the block this argument refers to. |
Int64 | highestIndex | Excludes state references made after the block this argument refers to. |
Returns
Type | Description |
---|---|
IImmutableDictionary<String, IImmutableList<HashDigest<SHA256>>> | A dictionary of account addresses to lists of their corresponding state references. Each list of state references is in ascending order, i.e., the block closest to the genesis goes first and the block closest to the tip goes last. |
Overrides
| Improve this Doc View SourceListChainIds()
Lists existing chain IDs.
Declaration
public override IEnumerable<Guid> ListChainIds()
Returns
Type | Description |
---|---|
IEnumerable<Guid> | Existing chain IDs. |
Overrides
| Improve this Doc View SourceListStateKeys(Guid)
Lists all keys that have ever had states.
Declaration
public override IEnumerable<string> ListStateKeys(Guid chainId)
Parameters
Type | Name | Description |
---|---|---|
Guid | chainId | The ID of the chain to list state keys. |
Returns
Type | Description |
---|---|
IEnumerable<String> | All state keys in an arbitrary order. The order might be vary for each call. |
Overrides
| Improve this Doc View SourceListTxNonces(Guid)
Lists all Addresses that have ever signed Transaction<T>, and their corresponding Transaction<T> nonces.
Declaration
public override IEnumerable<KeyValuePair<Address, long>> ListTxNonces(Guid chainId)
Parameters
Type | Name | Description |
---|---|---|
Guid | chainId | The ID of the chain to list Addresses and their Transaction<T> nonces. |
Returns
Type | Description |
---|---|
IEnumerable<KeyValuePair<Address, Int64>> | Pairs of an Address and its tx nonce. All nonces are greater than 0. (If there are underlying entries having zero nonces these must be hidden.) |
Overrides
See Also
LookupStateReference<T>(Guid, String, Block<T>)
Declaration
public override Tuple<HashDigest<SHA256>, long> LookupStateReference<T>(Guid chainId, string key, Block<T> lookupUntil)
where T : IAction, new()
Parameters
Type | Name | Description |
---|---|---|
Guid | chainId | |
String | key | |
Block<T> | lookupUntil |
Returns
Type | Description |
---|---|
Tuple<HashDigest<SHA256>, Int64> |
Type Parameters
Name | Description |
---|---|
T |
Overrides
PutBlock<T>(Block<T>)
Declaration
public override void PutBlock<T>(Block<T> block)
where T : IAction, new()
Parameters
Type | Name | Description |
---|---|---|
Block<T> | block |
Type Parameters
Name | Description |
---|---|
T |
Overrides
PutTransaction<T>(Transaction<T>)
Declaration
public override void PutTransaction<T>(Transaction<T> tx)
where T : IAction, new()
Parameters
Type | Name | Description |
---|---|---|
Transaction<T> | tx |
Type Parameters
Name | Description |
---|---|
T |
Overrides
SetBlockStates(HashDigest<SHA256>, IImmutableDictionary<String, IValue>)
Declaration
public override void SetBlockStates(HashDigest<SHA256> blockHash, IImmutableDictionary<string, IValue> states)
Parameters
Type | Name | Description |
---|---|---|
HashDigest<SHA256> | blockHash | |
IImmutableDictionary<String, IValue> | states |
Overrides
| Improve this Doc View SourceSetCanonicalChainId(Guid)
Sets the canonical chain.
Declaration
public override void SetCanonicalChainId(Guid chainId)
Parameters
Type | Name | Description |
---|---|---|
Guid | chainId | The ID of a new canonical chain. |
Overrides
See Also
| Improve this Doc View SourceStageTransactionIds(IImmutableSet<TxId>)
Adds TxIds to the pending list so that a next Block<T> to be mined contains the corresponding Transaction<T>s.
Declaration
public override void StageTransactionIds(IImmutableSet<TxId> txids)
Parameters
Type | Name | Description |
---|---|---|
IImmutableSet<TxId> | txids | TxIds to add to pending list. |
Overrides
| Improve this Doc View SourceStoreStateReference(Guid, IImmutableSet<String>, HashDigest<SHA256>, Int64)
Declaration
public override void StoreStateReference(Guid chainId, IImmutableSet<string> keys, HashDigest<SHA256> blockHash, long blockIndex)
Parameters
Type | Name | Description |
---|---|---|
Guid | chainId | |
IImmutableSet<String> | keys | |
HashDigest<SHA256> | blockHash | |
Int64 | blockIndex |
Overrides
| Improve this Doc View SourceUnstageTransactionIds(ISet<TxId>)
Declaration
public override void UnstageTransactionIds(ISet<TxId> txids)
Parameters
Type | Name | Description |
---|---|---|
ISet<TxId> | txids |