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, Int32, Int32, Int32, Boolean, Boolean)
Creates a new DefaultStore.
Declaration
public DefaultStore(string path, bool journal = true, int indexCacheSize = 50000, int blockCacheSize = 512, int txCacheSize = 1024, 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 | 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. |
| 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, BlockHash)
Appends a block to a chain.
Declaration
public override long AppendIndex(Guid chainId, BlockHash hash)
Parameters
| Type | Name | Description |
|---|---|---|
| Guid | chainId | The ID of a chain to append a block to. |
| BlockHash | hash | The hash of a block to append. Assumes the block is already put into the store. |
Returns
| Type | Description |
|---|---|
| Int64 | The index of the appended block. |
Overrides
| Improve this Doc View SourceContainsBlock(BlockHash)
Declaration
public override bool ContainsBlock(BlockHash blockHash)
Parameters
| Type | Name | Description |
|---|---|---|
| BlockHash | 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(BlockHash)
Removes a block from the store.
Declaration
public override bool DeleteBlock(BlockHash blockHash)
Parameters
| Type | Name | Description |
|---|---|---|
| BlockHash | blockHash | The hash of a block to remove. |
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 SourceDeleteTxIdBlockHashIndex(TxId, BlockHash)
Deletes the index for the txId and blockHash.
Declaration
public override void DeleteTxIdBlockHashIndex(TxId txId, BlockHash blockHash)
Parameters
| Type | Name | Description |
|---|---|---|
| TxId | txId | The TxId of the Transaction<T>. |
| BlockHash | blockHash |
Overrides
| Improve this Doc View SourceDispose()
Declaration
public override void Dispose()
Overrides
| Improve this Doc View SourceForkBlockIndexes(Guid, Guid, BlockHash)
Forks block indexes from
sourceChainId to
destinationChainId.
Declaration
public override void ForkBlockIndexes(Guid sourceChainId, Guid destinationChainId, BlockHash branchpoint)
Parameters
| Type | Name | Description |
|---|---|---|
| Guid | sourceChainId | The chain ID of block indexes to fork. |
| Guid | destinationChainId | The chain ID of destination block indexes. |
| BlockHash | branchpoint | The branchpoint Block<T> to fork. |
Overrides
Exceptions
| Type | Condition |
|---|---|
| ChainIdNotFoundException | Thrown when the given
|
See Also
ForkTxNonces(Guid, Guid)
Forks Transaction<T> Nonces from
sourceChainId to
destinationChainId.
Declaration
public override void ForkTxNonces(Guid sourceChainId, Guid destinationChainId)
Parameters
| Type | Name | Description |
|---|---|---|
| Guid | sourceChainId | The chain Id of Transaction<T> Nonces to fork. |
| Guid | destinationChainId | The chain Id of destination Transaction<T> Nonces. |
Overrides
Exceptions
| Type | Condition |
|---|---|
| ChainIdNotFoundException | Thrown when the given
|
GetBlockDigest(BlockHash)
Gets the corresponding stored BlockDigest to the given
blockHash.
Declaration
public override BlockDigest? GetBlockDigest(BlockHash blockHash)
Parameters
| Type | Name | Description |
|---|---|---|
| BlockHash | blockHash | Hash to find. |
Returns
| Type | Description |
|---|---|
| Nullable<BlockDigest> | A found BlockDigest, or |
Overrides
| Improve this Doc View SourceGetBlockPerceivedTime(BlockHash)
Queries the perceived time of a block, if it has been recorded.
Declaration
public override DateTimeOffset? GetBlockPerceivedTime(BlockHash blockHash)
Parameters
| Type | Name | Description |
|---|---|---|
| BlockHash | blockHash | Hash to query. |
Returns
| Type | Description |
|---|---|
| Nullable<DateTimeOffset> | The perceived time of a block, if it exists. Otherwise, |
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 SourceGetTxExecution(BlockHash, TxId)
Retrieves the recorded transaction execution summary.
Declaration
public override TxExecution GetTxExecution(BlockHash blockHash, TxId txid)
Parameters
| Type | Name | Description |
|---|---|---|
| BlockHash | blockHash | The Hash of the recorded transaction execution to retrieve. |
| TxId | txid | The Id of the recorded transaction execution to retrieve. |
Returns
| Type | Description |
|---|---|
| TxExecution | The recorded transaction execution summary. If it has been never recorded
|
Overrides
See Also
| 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)
Determines the block hash by its index.
Declaration
public override BlockHash? IndexBlockHash(Guid chainId, long index)
Parameters
| Type | Name | Description |
|---|---|---|
| Guid | chainId | The chain ID of the index that contains the block. |
| Int64 | index | The index of the block to query its hash. Negative indices mean the offset from the end. For example, -1 means the topmost block. |
Returns
| Type | Description |
|---|---|
| Nullable<BlockHash> | The block hash of the index in the chain. If there is no such index,
it returns |
Overrides
| Improve this Doc View SourceIterateBlockHashes()
Lists all block hashes in the store, regardless of their belonging chains.
Declaration
public override IEnumerable<BlockHash> IterateBlockHashes()
Returns
| Type | Description |
|---|---|
| IEnumerable<BlockHash> | All block hashes in the store. |
Overrides
| Improve this Doc View SourceIterateIndexes(Guid, Int32, Nullable<Int32>)
Lists all block hashes in the
Declaration
public override IEnumerable<BlockHash> IterateIndexes(Guid chainId, int offset, int? limit)
Parameters
| Type | Name | Description |
|---|---|---|
| Guid | chainId | The chain ID of the index that contains block hashes to iterate. |
| Int32 | offset | The starting point to return block hashes. |
| Nullable<Int32> | limit | The maximum number of block hashes to get. |
Returns
| Type | Description |
|---|---|
| IEnumerable<BlockHash> | Block hashes in the index of the |
Overrides
| Improve this Doc View SourceIterateTransactionIds()
Declaration
public override IEnumerable<TxId> IterateTransactionIds()
Returns
| Type | Description |
|---|---|
| IEnumerable<TxId> |
Overrides
| Improve this Doc View SourceIterateTxIdBlockHashIndex(TxId)
Declaration
public override IEnumerable<BlockHash> IterateTxIdBlockHashIndex(TxId txId)
Parameters
| Type | Name | Description |
|---|---|---|
| TxId | txId |
Returns
| Type | Description |
|---|---|
| IEnumerable<BlockHash> |
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 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
PutBlock<T>(Block<T>)
Puts the given block in to the store.
If the same block already exists in the store it does nothing.
Declaration
public override void PutBlock<T>(Block<T> block)
where T : IAction, new()
Parameters
| Type | Name | Description |
|---|---|---|
| Block<T> | block | A Block<T> to put into the store. |
Type Parameters
| Name | Description |
|---|---|
| T | An IAction class used with
|
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
PutTxExecution(TxFailure)
Records the given txFailure.
Declaration
public override void PutTxExecution(TxFailure txFailure)
Parameters
| Type | Name | Description |
|---|---|---|
| TxFailure | txFailure | The failed transaction execution summary to record.
Must not be |
Overrides
Remarks
See Also
| Improve this Doc View SourcePutTxExecution(TxSuccess)
Records the given txSuccess.
Declaration
public override void PutTxExecution(TxSuccess txSuccess)
Parameters
| Type | Name | Description |
|---|---|---|
| TxSuccess | txSuccess | The successful transaction execution summary to record.
Must not be |
Overrides
Remarks
See Also
| Improve this Doc View SourcePutTxIdBlockHashIndex(TxId, BlockHash)
Records a index for given pair txId and blockHash.
If there exist a record for txId already,
it overwrites the record silently.
Declaration
public override void PutTxIdBlockHashIndex(TxId txId, BlockHash blockHash)
Parameters
| Type | Name | Description |
|---|---|---|
| TxId | txId | The TxId of the Transaction<T>. |
| BlockHash | blockHash |
Overrides
| Improve this Doc View SourceSetBlockPerceivedTime(BlockHash, DateTimeOffset)
Records the perceived time of a block. If there is already a record, it is overwritten.
Declaration
public override void SetBlockPerceivedTime(BlockHash blockHash, DateTimeOffset perceivedTime)
Parameters
| Type | Name | Description |
|---|---|---|
| BlockHash | blockHash | Hash to record its perceived time. |
| DateTimeOffset | perceivedTime | The perceived time to record. |
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. |