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
| Improve this Doc View SourceForkTxNonces(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
| Improve this Doc View SourceGetBlockDigest(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 SourceGetBlockPerceivedTime(HashDigest<SHA256>)
Queries the perceived time of a block, if it has been recorded.
Declaration
public override DateTimeOffset? GetBlockPerceivedTime(HashDigest<SHA256> blockHash)
Parameters
Type | Name | Description |
---|---|---|
HashDigest<SHA256> | 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
| Improve this Doc View SourceGetTransaction<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
| Improve this Doc View SourceIncreaseTxNonce(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 = 1L)
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
| Improve this Doc View SourceIndexBlockHash(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. The earliest staged TxId goes first, and the latest staged TxId goes last. |
Overrides
| Improve this Doc View SourceIterateTransactionIds()
Declaration
public override IEnumerable<TxId> IterateTransactionIds()
Returns
Type | Description |
---|---|
IEnumerable<TxId> |
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
| Improve this Doc View SourcePutBlock<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
SetBlockPerceivedTime(HashDigest<SHA256>, DateTimeOffset)
Records the perceived time of a block. If there is already a record, it is overwritten.
Declaration
public override void SetBlockPerceivedTime(HashDigest<SHA256> blockHash, DateTimeOffset perceivedTime)
Parameters
Type | Name | Description |
---|---|---|
HashDigest<SHA256> | 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. |
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 SourceUnstageTransactionIds(ISet<TxId>)
Declaration
public override void UnstageTransactionIds(ISet<TxId> txids)
Parameters
Type | Name | Description |
---|---|---|
ISet<TxId> | txids |