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.
DeleteTransaction(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 override void Dispose()
Overrides
| Improve this Doc View SourceForkBlockIndexes(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
GetBlockDigest(HashDigest<SHA256>)
Gets the corresponding stored BlockDigest to the given
blockHash.
Declaration
public override BlockDigest? GetBlockDigest(HashDigest<SHA256> blockHash)
Parameters
| Type | Name | Description |
|---|---|---|
| HashDigest<SHA256> | blockHash | Hash to find. |
Returns
| Type | Description |
|---|---|
| Nullable<BlockDigest> | A found BlockDigest, or |
Overrides
| Improve this Doc View SourceGetBlockStates(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
PruneBlockStates<T>(Guid, Block<T>)
Declaration
public override void PruneBlockStates<T>(Guid chainId, Block<T> until)
where T : IAction, new()
Parameters
| Type | Name | Description |
|---|---|---|
| Guid | chainId | |
| Block<T> | until |
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>)
Sets the states updated by actions in the specified block
(i.e., blockHash).
Declaration
public override void SetBlockStates(HashDigest<SHA256> blockHash, IImmutableDictionary<string, IValue> states)
Parameters
| Type | Name | Description |
|---|---|---|
| HashDigest<SHA256> | blockHash | Hash to update states. |
| IImmutableDictionary<String, IValue> | states | The states updated by actions in the specified block
(i.e., |
Overrides
See Also
SetCanonicalChainId(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 |