Class BaseStore
Common code for several IStore implementations.
Namespace: Libplanet.Store
Assembly: Libplanet.dll
Syntax
public abstract class BaseStore : object, IStore, IDisposable
Methods
| Improve this Doc View SourceAppendIndex(Guid, BlockHash)
Appends a block to a chain.
Declaration
public abstract 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. |
ContainsBlock(BlockHash)
Declaration
public abstract 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 |
|
ContainsTransaction(TxId)
Determines whether the IStore contains Transaction<T>
the specified txId.
Declaration
public abstract 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 |
|
CountBlocks()
Declaration
public virtual long CountBlocks()
Returns
| Type | Description |
|---|---|
| Int64 |
CountIndex(Guid)
Declaration
public abstract long CountIndex(Guid chainId)
Parameters
| Type | Name | Description |
|---|---|---|
| Guid | chainId |
Returns
| Type | Description |
|---|---|
| Int64 |
CountTransactions()
Declaration
public virtual long CountTransactions()
Returns
| Type | Description |
|---|---|
| Int64 |
DeleteBlock(BlockHash)
Removes a block from the store.
Declaration
public abstract bool DeleteBlock(BlockHash blockHash)
Parameters
| Type | Name | Description |
|---|---|---|
| BlockHash | blockHash | The hash of a block to remove. |
Returns
| Type | Description |
|---|---|
| Boolean |
|
DeleteChainId(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 abstract void DeleteChainId(Guid chainId)
Parameters
| Type | Name | Description |
|---|---|---|
| Guid | chainId | The ID of chain to delete. |
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 abstract bool DeleteTransaction(TxId txid)
Parameters
| Type | Name | Description |
|---|---|---|
| TxId | txid |
Returns
| Type | Description |
|---|---|
| Boolean |
DeleteTxIdBlockHashIndex(TxId, BlockHash)
Deletes the index for the txId and blockHash.
Declaration
public abstract void DeleteTxIdBlockHashIndex(TxId txId, BlockHash blockHash)
Parameters
| Type | Name | Description |
|---|---|---|
| TxId | txId | The TxId of the Transaction<T>. |
| BlockHash | blockHash |
DeserializeTxExecution(BlockHash, TxId, IValue, ILogger)
Declaration
protected static TxExecution DeserializeTxExecution(BlockHash blockHash, TxId txid, IValue decoded, ILogger logger)
Parameters
| Type | Name | Description |
|---|---|---|
| BlockHash | blockHash | |
| TxId | txid | |
| IValue | decoded | |
| ILogger | logger |
Returns
| Type | Description |
|---|---|
| TxExecution |
Dispose()
Declaration
public abstract void Dispose()
ForkBlockIndexes(Guid, Guid, BlockHash)
Forks block indexes from
sourceChainId to
destinationChainId.
Declaration
public abstract 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. |
Exceptions
| Type | Condition |
|---|---|
| ChainIdNotFoundException | Thrown when the given
|
See Also
ForkTxNonces(Guid, Guid)
Forks Transaction<T> Nonces from
sourceChainId to
destinationChainId.
Declaration
public abstract 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. |
Exceptions
| Type | Condition |
|---|---|
| ChainIdNotFoundException | Thrown when the given
|
GetBlock<T>(HashAlgorithmGetter, BlockHash)
Gets the corresponding stored Block<T> to the given
blockHash.
Declaration
public Block<T> GetBlock<T>(HashAlgorithmGetter hashAlgorithmGetter, BlockHash blockHash)
where T : IAction, new()
Parameters
| Type | Name | Description |
|---|---|---|
| HashAlgorithmGetter | hashAlgorithmGetter | The function to determine hash algorithm used for proof-of-work mining. |
| BlockHash | blockHash | Hash to find. |
Returns
| Type | Description |
|---|---|
| Block<T> | A found block, or |
Type Parameters
| Name | Description |
|---|---|
| T | An IAction type. It should match to Block<T>'s type parameter. |
GetBlockDigest(BlockHash)
Gets the corresponding stored BlockDigest to the given
blockHash.
Declaration
public abstract BlockDigest? GetBlockDigest(BlockHash blockHash)
Parameters
| Type | Name | Description |
|---|---|---|
| BlockHash | blockHash | Hash to find. |
Returns
| Type | Description |
|---|---|
| Nullable<BlockDigest> | A found BlockDigest, or |
GetBlockIndex(BlockHash)
Declaration
public long? GetBlockIndex(BlockHash blockHash)
Parameters
| Type | Name | Description |
|---|---|---|
| BlockHash | blockHash | Hash to find. |
Returns
| Type | Description |
|---|---|
| Nullable<Int64> | A found block's Index, or |
Remarks
It provides only limited information, but can be called without any type parameter unlike GetBlock<T>(HashAlgorithmGetter, BlockHash).
GetBlockPerceivedTime(BlockHash)
Queries the perceived time of a block, if it has been recorded.
Declaration
public abstract 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, |
GetCanonicalChainId()
Gets the ID of the current canonical chain.
Declaration
public abstract Guid? GetCanonicalChainId()
Returns
| Type | Description |
|---|---|
| Nullable<Guid> | The ID of the current canonical chain. Maybe |
See Also
GetFirstTxIdBlockHashIndex(TxId)
Declaration
public BlockHash? GetFirstTxIdBlockHashIndex(TxId txId)
Parameters
| Type | Name | Description |
|---|---|---|
| TxId | txId |
Returns
| Type | Description |
|---|---|
| Nullable<BlockHash> |
GetTransaction<T>(TxId)
Declaration
public abstract 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 |
GetTxExecution(BlockHash, TxId)
Retrieves the recorded transaction execution summary.
Declaration
public abstract 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
|
See Also
| Improve this Doc View SourceGetTxNonce(Guid, Address)
Gets Transaction<T> nonce of the
address.
Declaration
public abstract 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. |
See Also
IncreaseTxNonce(Guid, Address, Int64)
Increases (or decreases if a negative delta is given)
the tx nonce counter for signer.
Declaration
public abstract 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. |
See Also
IndexBlockHash(Guid, Int64)
Determines the block hash by its index.
Declaration
public abstract 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 |
IterateBlockHashes()
Lists all block hashes in the store, regardless of their belonging chains.
Declaration
public abstract IEnumerable<BlockHash> IterateBlockHashes()
Returns
| Type | Description |
|---|---|
| IEnumerable<BlockHash> | All block hashes in the store. |
IterateIndexes(Guid, Int32, Nullable<Int32>)
Lists all block hashes in the
Declaration
public abstract 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 |
IterateTransactionIds()
Declaration
public abstract IEnumerable<TxId> IterateTransactionIds()
Returns
| Type | Description |
|---|---|
| IEnumerable<TxId> |
IterateTxIdBlockHashIndex(TxId)
Retrieves BlockHashes indexed by the txId.
Declaration
public abstract IEnumerable<BlockHash> IterateTxIdBlockHashIndex(TxId txId)
Parameters
| Type | Name | Description |
|---|---|---|
| TxId | txId | The TxId of the Transaction<T>. |
Returns
| Type | Description |
|---|---|
| IEnumerable<BlockHash> | BlockHashes if the index exists. |
ListChainIds()
Lists existing chain IDs.
Declaration
public abstract IEnumerable<Guid> ListChainIds()
Returns
| Type | Description |
|---|---|
| IEnumerable<Guid> | Existing chain IDs. |
ListTxNonces(Guid)
Lists all Addresses that have ever signed Transaction<T>, and their corresponding Transaction<T> nonces.
Declaration
public abstract 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.) |
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 abstract 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
|
PutTransaction<T>(Transaction<T>)
Declaration
public abstract void PutTransaction<T>(Transaction<T> tx)
where T : IAction, new()
Parameters
| Type | Name | Description |
|---|---|---|
| Transaction<T> | tx |
Type Parameters
| Name | Description |
|---|---|
| T |
PutTxExecution(TxFailure)
Records the given txFailure.
Declaration
public abstract void PutTxExecution(TxFailure txFailure)
Parameters
| Type | Name | Description |
|---|---|---|
| TxFailure | txFailure | The failed transaction execution summary to record.
Must not be |
Remarks
See Also
| Improve this Doc View SourcePutTxExecution(TxSuccess)
Records the given txSuccess.
Declaration
public abstract void PutTxExecution(TxSuccess txSuccess)
Parameters
| Type | Name | Description |
|---|---|---|
| TxSuccess | txSuccess | The successful transaction execution summary to record.
Must not be |
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 abstract void PutTxIdBlockHashIndex(TxId txId, BlockHash blockHash)
Parameters
| Type | Name | Description |
|---|---|---|
| TxId | txId | The TxId of the Transaction<T>. |
| BlockHash | blockHash |
SerializeTxExecution(TxFailure)
Declaration
protected static IValue SerializeTxExecution(TxFailure txFailure)
Parameters
| Type | Name | Description |
|---|---|---|
| TxFailure | txFailure |
Returns
| Type | Description |
|---|---|
| IValue |
SerializeTxExecution(TxSuccess)
Declaration
protected static IValue SerializeTxExecution(TxSuccess txSuccess)
Parameters
| Type | Name | Description |
|---|---|---|
| TxSuccess | txSuccess |
Returns
| Type | Description |
|---|---|
| IValue |
SetBlockPerceivedTime(BlockHash, DateTimeOffset)
Records the perceived time of a block. If there is already a record, it is overwritten.
Declaration
public abstract 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. |
SetCanonicalChainId(Guid)
Sets the canonical chain.
Declaration
public abstract void SetCanonicalChainId(Guid chainId)
Parameters
| Type | Name | Description |
|---|---|---|
| Guid | chainId | The ID of a new canonical chain. |