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. |