Interface IBlockStatesStore
An interface to store block states and state references to them.
Inherited Members
Namespace: Libplanet.Store
Assembly: Libplanet.dll
Syntax
public interface IBlockStatesStore : IStateStore
Methods
| Improve this Doc View SourceForkStateReferences<T>(Guid, Guid, Block<T>)
Forks state references, which are Hashes that
have the state of the Addresses, from
sourceChainId
to destinationChainId
.
This method copies state references from
sourceChainId
to destinationChainId
and strips
state references after branchPoint
.
Declaration
void ForkStateReferences<T>(Guid sourceChainId, Guid destinationChainId, Block<T> branchPoint)
where T : IAction, new()
Parameters
Type | Name | Description |
---|---|---|
Guid | sourceChainId | The chain ID of state references to fork. |
Guid | destinationChainId | The new chain ID to have state references. |
Block<T> | branchPoint | The branch point Block<T> to fork. |
Type Parameters
Name | Description |
---|---|
T | An IAction class used with
|
Exceptions
Type | Condition |
---|---|
ChainIdNotFoundException | Thrown when the given
|
See Also
GetBlockStates(HashDigest<SHA256>)
Gets the states updated by actions in the inquired block.
Declaration
IImmutableDictionary<string, IValue> GetBlockStates(HashDigest<SHA256> blockHash)
Parameters
Type | Name | Description |
---|---|---|
HashDigest<SHA256> | blockHash | Hash to query. |
Returns
Type | Description |
---|---|
IImmutableDictionary<String, IValue> | The states updated by actions in the inquired block.
If actions definitely do not update any addresses it returns
an empty map. If there is no record for the inquired block
(because actions in it have never been evaluated yet) it returns
|
Remarks
It does not return all states built up from the genesis block nor delta, but only dirty states by actions the inquired block.
For example, if actions in the genesis block do
a++; b++
, /// and actions in the second block do
b++; c++
, this method /// for the second block returns
b = 2; c = 1
(dirty), not
a = 1; b = 2; c = 1
(all states) nor
b = 1; c = 1
(delta).
See Also
| Improve this Doc View SourceIterateStateReferences(Guid, String, Nullable<Int64>, Nullable<Int64>, Nullable<Int32>)
Gets pairs of a state reference and a corresponding Index of
the requested key
in the specified chainId
.
Declaration
IEnumerable<Tuple<HashDigest<SHA256>, long>> IterateStateReferences(Guid chainId, string key, long? highestIndex = null, long? lowestIndex = null, int? limit = null)
Parameters
Type | Name | Description |
---|---|---|
Guid | chainId | The chain ID. |
String | key | The key to get state references. |
Nullable<Int64> | highestIndex | The highest index of state references to get. If it is
|
Nullable<Int64> | lowestIndex | The lowest index of state references to get. If it is
|
Nullable<Int32> | limit | The maximum number of state references to get. If it is
|
Returns
Type | Description |
---|---|
IEnumerable<Tuple<HashDigest<SHA256>, Int64>> | Ordered pairs of a state reference and a corresponding Index. The highest index (i.e., the closest to the tip) goes first and the lowest index (i.e., the closest to the genesis) goes last. |
See Also
| Improve this Doc View SourceListAllStateReferences(Guid, Int64, Int64)
Lists all accounts, that have any states, in the given chainId
and
their state references.
Declaration
IImmutableDictionary<string, IImmutableList<HashDigest<SHA256>>> ListAllStateReferences(Guid chainId, long lowestIndex = null, long highestIndex = null)
Parameters
Type | Name | Description |
---|---|---|
Guid | chainId | The chain ID to look up state references. |
Int64 | lowestIndex | Includes state references only made after the block this argument refers to. |
Int64 | highestIndex | Excludes state references made after the block this argument refers to. |
Returns
Type | Description |
---|---|
IImmutableDictionary<String, IImmutableList<HashDigest<SHA256>>> | A dictionary of account addresses to lists of their corresponding state references. Each list of state references is in ascending order, i.e., the block closest to the genesis goes first and the block closest to the tip goes last. |
ListStateKeys(Guid)
Lists all keys that have ever had states.
Declaration
IEnumerable<string> ListStateKeys(Guid chainId)
Parameters
Type | Name | Description |
---|---|---|
Guid | chainId | The ID of the chain to list state keys. |
Returns
Type | Description |
---|---|
IEnumerable<String> | All state keys in an arbitrary order. The order might be vary for each call. |
LookupStateReference(Guid, String, Int64)
Looks up a state reference, which is a block's Hash that contains
an action mutating the key
's tate.
Declaration
Tuple<HashDigest<SHA256>, long> LookupStateReference(Guid chainId, string key, long lookupUntilBlockIndex)
Parameters
Type | Name | Description |
---|---|---|
Guid | chainId | The chain ID to look up a state reference. |
String | key | The state key to look up. |
Int64 | lookupUntilBlockIndex | The index of the block to stop looking up. |
Returns
Type | Description |
---|---|
Tuple<HashDigest<SHA256>, Int64> | Returns a nullable tuple consisting of Hash and Index of the Block<T> with the state of the address. |
See Also
| Improve this Doc View SourcePruneBlockStates<T>(Guid, Block<T>)
Prunes states in blockchain chainId
with until specified block
until
.
Declaration
void PruneBlockStates<T>(Guid chainId, Block<T> until)
where T : IAction, new()
Parameters
Type | Name | Description |
---|---|---|
Guid | chainId | The chain ID to prune block states. |
Block<T> | until | The upper bound block to prune states. |
Type Parameters
Name | Description |
---|---|
T | An IAction class used with
|
SetBlockStates(HashDigest<SHA256>, IImmutableDictionary<String, IValue>)
Sets the states updated by actions in the specified block
(i.e., blockHash
).
Declaration
void SetBlockStates(HashDigest<SHA256> blockHash, IImmutableDictionary<string, IValue> states)
Parameters
Type | Name | Description |
---|---|---|
HashDigest<SHA256> | blockHash | Hash to update states. |
IImmutableDictionary<String, IValue> | states | The states updated by actions in the specified block
(i.e., |
See Also
| Improve this Doc View SourceStoreStateReference(Guid, IImmutableSet<String>, HashDigest<SHA256>, Int64)
Marks the specified keys
updated by any action in the specified block
(i.e., blockHash
).
Declaration
void StoreStateReference(Guid chainId, IImmutableSet<string> keys, HashDigest<SHA256> blockHash, long blockIndex)
Parameters
Type | Name | Description |
---|---|---|
Guid | chainId | The ID of the chain to store a state reference. |
IImmutableSet<String> | keys | The keys updated by the block. |
HashDigest<SHA256> | blockHash | The Hash of the block which changes
the |
Int64 | blockIndex | The block index. |