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 |
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.
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. |
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. |
GetBlock<T>(BlockHash)
Gets the corresponding stored Block<T> to the given
blockHash
.
Declaration
public Block<T> GetBlock<T>(BlockHash blockHash)
where T : IAction, new()
Parameters
Type | Name | Description |
---|---|---|
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>(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
GetCanonicalGenesisBlock<T>()
Returns the genesis block of the current canonical chain.
Declaration
public Block<T> GetCanonicalGenesisBlock<T>()
where T : IAction, new()
Returns
Type | Description |
---|---|
Block<T> | The genesis block of the current canonical chain. |
Type Parameters
Name | Description |
---|---|
T | An IAction type. It should match to Block<T>'s type parameter. |
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 |
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 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<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
PruneOutdatedChains(Boolean)
Delete all non-canonical chains.
Declaration
public abstract void PruneOutdatedChains(bool noopWithoutCanon = false)
Parameters
Type | Name | Description |
---|---|---|
Boolean | noopWithoutCanon | Flag to determine whether the function throws exception
when the canonical chain is not assigned. |
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. |