Class BaseStore
Common code for several IStore implementations.
Namespace: Libplanet.Store
Assembly: Libplanet.Store.dll
Syntax
public abstract class BaseStore : object, IStore
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 |
---|---|
System.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 to check if it is in the IStore. |
Returns
Type | Description |
---|---|
System.Boolean | true if the IStore contains Block with
the specified |
ContainsCommittedEvidence(EvidenceId)
Determines whether the IStore contains EvidenceBase
the specified evidenceId
as committed.
Declaration
public abstract bool ContainsCommittedEvidence(EvidenceId evidenceId)
Parameters
Type | Name | Description |
---|---|---|
EvidenceId | evidenceId | The EvidenceId of the EvidenceBase to check if it is in the IStore and committed. |
Returns
Type | Description |
---|---|
System.Boolean | true if the IStore contains EvidenceBase
with the specified |
ContainsPendingEvidence(EvidenceId)
Determines whether the IStore contains EvidenceBase
the specified evidenceId
as pending.
Declaration
public abstract bool ContainsPendingEvidence(EvidenceId evidenceId)
Parameters
Type | Name | Description |
---|---|---|
EvidenceId | evidenceId | The EvidenceId of the EvidenceBase to check if it is in the IStore and pending. |
Returns
Type | Description |
---|---|
System.Boolean | true if the IStore contains EvidenceBase
with the specified |
ContainsTransaction(TxId)
Determines whether the IStore contains Transaction
the specified txId
.
Declaration
public abstract bool ContainsTransaction(TxId txId)
Parameters
Type | Name | Description |
---|---|---|
TxId | txId | The TxId of the Transaction to check if it is in the IStore. |
Returns
Type | Description |
---|---|
System.Boolean | true if the IStore contains Transaction
with the specified |
CountBlocks()
Common code for several IStore implementations.
Declaration
public virtual long CountBlocks()
Returns
Type | Description |
---|---|
System.Int64 |
CountIndex(Guid)
Common code for several IStore implementations.
Declaration
public abstract long CountIndex(Guid chainId)
Parameters
Type | Name | Description |
---|---|---|
Guid | chainId |
Returns
Type | Description |
---|---|
System.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 |
---|---|
System.Boolean | false if such block does not exist. Otherwise true. |
DeleteBlockCommit(BlockHash)
Deletes a BlockCommit of given height from store.
Declaration
public abstract void DeleteBlockCommit(BlockHash blockHash)
Parameters
Type | Name | Description |
---|---|---|
BlockHash | blockHash | The BlockHash of a BlockCommit to delete. |
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.
DeleteCommittedEvidence(EvidenceId)
Deletes a committed EvidenceBase of given evidenceId
from the store.
Declaration
public abstract void DeleteCommittedEvidence(EvidenceId evidenceId)
Parameters
Type | Name | Description |
---|---|---|
EvidenceId | evidenceId | The EvidenceId of a committed EvidenceBase to delete. |
DeleteNextStateRootHash(BlockHash)
Common code for several IStore implementations.
Declaration
public abstract void DeleteNextStateRootHash(BlockHash blockHash)
Parameters
Type | Name | Description |
---|---|---|
BlockHash | blockHash |
DeletePendingEvidence(EvidenceId)
Deletes a pending EvidenceBase of given evidenceId
from the store.
Declaration
public abstract void DeletePendingEvidence(EvidenceId evidenceId)
Parameters
Type | Name | Description |
---|---|---|
EvidenceId | evidenceId | The EvidenceId of a pending EvidenceBase to delete. |
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. |
BlockHash | blockHash |
DeserializeTxExecution(BlockHash, TxId, IValue, ILogger)
Common code for several IStore implementations.
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()
Common code for several IStore implementations.
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 to fork. |
See Also
ForkTxNonces(Guid, Guid)
Forks Transaction Nonces from
sourceChainId
to
destinationChainId
.
Declaration
public abstract void ForkTxNonces(Guid sourceChainId, Guid destinationChainId)
Parameters
Type | Name | Description |
---|---|---|
Guid | sourceChainId | The chain |
Guid | destinationChainId | The chain |
GetBlock(BlockHash)
Gets the corresponding stored Block to the given
blockHash
.
Declaration
public Block GetBlock(BlockHash blockHash)
Parameters
Type | Name | Description |
---|---|---|
BlockHash | blockHash | Hash to find. |
Returns
Type | Description |
---|---|
Block | A found block, or null if no block having such
|
GetBlockCommit(BlockHash)
Gets the BlockCommit for given blockHash
from
the store.
Declaration
public abstract BlockCommit GetBlockCommit(BlockHash blockHash)
Parameters
Type | Name | Description |
---|---|---|
BlockHash | blockHash | The BlockHash of a BlockCommit to retrieve. |
Returns
Type | Description |
---|---|
BlockCommit | Returns BlockCommit if given |
GetBlockCommitHashes()
Gets every BlockHashes of BlockCommits from store.
Declaration
public abstract IEnumerable<BlockHash> GetBlockCommitHashes()
Returns
Type | Description |
---|---|
IEnumerable<BlockHash> | Returns an |
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 |
---|---|
System.Nullable<BlockDigest> | A found BlockDigest, or null if no block
having such |
GetBlockIndex(BlockHash)
Declaration
public long? GetBlockIndex(BlockHash blockHash)
Parameters
Type | Name | Description |
---|---|---|
BlockHash | blockHash | Hash to find. |
Returns
Type | Description |
---|---|
System.Nullable<System.Int64> | A found block's Index, or null if
no block having such |
Remarks
It provides only limited information, but can be called without any type parameter unlike GetBlock(BlockHash).
GetCanonicalChainId()
Gets the ID of the current canonical chain.
Declaration
public abstract Guid? GetCanonicalChainId()
Returns
Type | Description |
---|---|
System.Nullable<Guid> | The ID of the current canonical chain. Maybe null. |
See Also
GetChainBlockCommit(Guid)
Gets a BlockCommit associated with a chainId
as its
Declaration
public abstract BlockCommit GetChainBlockCommit(Guid chainId)
Parameters
Type | Name | Description |
---|---|---|
Guid | chainId | The |
Returns
Type | Description |
---|---|
BlockCommit | Returns BlockCommit if given |
GetCommittedEvidence(EvidenceId)
Gets every committed EvidenceBase of given evidenceId
from the store.
Declaration
public abstract EvidenceBase GetCommittedEvidence(EvidenceId evidenceId)
Parameters
Type | Name | Description |
---|---|---|
EvidenceId | evidenceId | The EvidenceId of a committed EvidenceBase to retrieve. |
Returns
Type | Description |
---|---|
EvidenceBase | Returns EvidenceBase if given |
GetFirstTxIdBlockHashIndex(TxId)
Common code for several IStore implementations.
Declaration
public BlockHash? GetFirstTxIdBlockHashIndex(TxId txId)
Parameters
Type | Name | Description |
---|---|---|
TxId | txId |
Returns
Type | Description |
---|---|
System.Nullable<BlockHash> |
GetNextStateRootHash(BlockHash)
Common code for several IStore implementations.
Declaration
public abstract HashDigest<SHA256>? GetNextStateRootHash(BlockHash blockHash)
Parameters
Type | Name | Description |
---|---|---|
BlockHash | blockHash |
Returns
Type | Description |
---|---|
System.Nullable<HashDigest<SHA256>> |
GetPendingEvidence(EvidenceId)
Gets every pending EvidenceBase of given evidenceId
from the store.
Declaration
public abstract EvidenceBase GetPendingEvidence(EvidenceId evidenceId)
Parameters
Type | Name | Description |
---|---|---|
EvidenceId | evidenceId | The EvidenceId of a pending EvidenceBase to retrieve. |
Returns
Type | Description |
---|---|
EvidenceBase | Returns EvidenceBase if given |
GetTransaction(TxId)
Common code for several IStore implementations.
Declaration
public abstract Transaction GetTransaction(TxId txid)
Parameters
Type | Name | Description |
---|---|---|
TxId | txid |
Returns
Type | Description |
---|---|
Transaction |
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 null is returned instead. |
See Also
| Improve this Doc View SourceGetTxNonce(Guid, Address)
Gets Transaction 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 nonce. |
Address | address | The Address to get Transaction nonce. |
Returns
Type | Description |
---|---|
System.Int64 | A Transaction nonce. If there is no previous Transaction, 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 nonce. |
Address | signer | The address of the account to increase tx nonce. |
System.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. |
System.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 |
---|---|
System.Nullable<BlockHash> | The block hash of the index in the chain. If there is no such index, it returns null. |
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 chainId
.
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. |
System.Int32 | offset | The starting point to return block hashes. |
System.Nullable<System.Int32> | limit | The maximum number of block hashes to get. |
Returns
Type | Description |
---|---|
IEnumerable<BlockHash> | Block hashes in the index of the |
IteratePendingEvidenceIds()
Gets every EvidenceIds of pending EvidenceBases from the store.
Declaration
public abstract IEnumerable<EvidenceId> IteratePendingEvidenceIds()
Returns
Type | Description |
---|---|
IEnumerable<EvidenceId> | Returns an |
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. |
Returns
Type | Description |
---|---|
IEnumerable<BlockHash> | BlockHashes if the index exists. |
ListChainIds()
Lists chain IDs containing at least a single block.
Declaration
public abstract IEnumerable<Guid> ListChainIds()
Returns
Type | Description |
---|---|
IEnumerable<Guid> | Chain IDs with at least a single block. |
ListTxNonces(Guid)
Lists all Addresses that have ever signed Transaction, and their corresponding Transaction 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 nonces. |
Returns
Type | Description |
---|---|
IEnumerable<KeyValuePair<Address, System.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
PruneOutdatedChains(Boolean)
Delete all non-canonical chains.
Declaration
public abstract void PruneOutdatedChains(bool noopWithoutCanon = false)
Parameters
Type | Name | Description |
---|---|---|
System.Boolean | noopWithoutCanon | Flag to determine whether the function throws exception
when the canonical chain is not assigned. false by default.
If it set to true, does not throw exception when
there is no canonical chain.
Otherwise, throws |
PutBlock(Block)
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(Block block)
Parameters
Type | Name | Description |
---|---|---|
Block | block | A Block to put into the store. |
PutBlockCommit(BlockCommit)
Puts a BlockCommit to the store.
Declaration
public abstract void PutBlockCommit(BlockCommit blockCommit)
Parameters
Type | Name | Description |
---|---|---|
BlockCommit | blockCommit | A BlockCommit to store. |
PutChainBlockCommit(Guid, BlockCommit)
Puts a BlockCommit associated with a chainId
as its
Declaration
public abstract void PutChainBlockCommit(Guid chainId, BlockCommit blockCommit)
Parameters
Type | Name | Description |
---|---|---|
Guid | chainId | The |
BlockCommit | blockCommit | The BlockCommit to store. |
PutCommittedEvidence(EvidenceBase)
Puts a EvidenceBase to the store as committed evidence.
Declaration
public abstract void PutCommittedEvidence(EvidenceBase evidence)
Parameters
Type | Name | Description |
---|---|---|
EvidenceBase | evidence | A committed EvidenceBase to store. |
PutNextStateRootHash(BlockHash, HashDigest<SHA256>)
Common code for several IStore implementations.
Declaration
public abstract void PutNextStateRootHash(BlockHash blockHash, HashDigest<SHA256> nextStateRootHash)
Parameters
Type | Name | Description |
---|---|---|
BlockHash | blockHash | |
HashDigest<SHA256> | nextStateRootHash |
PutPendingEvidence(EvidenceBase)
Puts a EvidenceBase to the store as pending evidence.
Declaration
public abstract void PutPendingEvidence(EvidenceBase evidence)
Parameters
Type | Name | Description |
---|---|---|
EvidenceBase | evidence | A pending EvidenceBase to store. |
PutTransaction(Transaction)
Common code for several IStore implementations.
Declaration
public abstract void PutTransaction(Transaction tx)
Parameters
Type | Name | Description |
---|---|---|
Transaction | tx |
PutTxExecution(TxExecution)
Records the given txExecution
.
Declaration
public abstract void PutTxExecution(TxExecution txExecution)
Parameters
Type | Name | Description |
---|---|---|
TxExecution | txExecution | The transaction execution summary to record. Must not be null. |
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. |
BlockHash | blockHash |
SerializeTxExecution(TxExecution)
Common code for several IStore implementations.
Declaration
protected static IValue SerializeTxExecution(TxExecution txExecution)
Parameters
Type | Name | Description |
---|---|---|
TxExecution | txExecution |
Returns
Type | Description |
---|---|
IValue |
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. |