Interface IStore
Namespace: Libplanet.Store
Assembly: Libplanet.dll
Syntax
public interface IStore
Methods
| Improve this Doc View SourceAppendIndex(String, HashDigest<SHA256>)
Declaration
long AppendIndex(string namespace, HashDigest<SHA256> hash)
Parameters
| Type | Name | Description |
|---|---|---|
| String | namespace | |
| HashDigest<SHA256> | hash |
Returns
| Type | Description |
|---|---|
| Int64 |
CountBlocks()
Declaration
long CountBlocks()
Returns
| Type | Description |
|---|---|
| Int64 |
CountIndex(String)
Declaration
long CountIndex(string namespace)
Parameters
| Type | Name | Description |
|---|---|---|
| String | namespace |
Returns
| Type | Description |
|---|---|
| Int64 |
CountTransactions()
Declaration
long CountTransactions()
Returns
| Type | Description |
|---|---|
| Int64 |
DeleteBlock(HashDigest<SHA256>)
Declaration
bool DeleteBlock(HashDigest<SHA256> blockHash)
Parameters
| Type | Name | Description |
|---|---|---|
| HashDigest<SHA256> | blockHash |
Returns
| Type | Description |
|---|---|
| Boolean |
DeleteIndex(String, HashDigest<SHA256>)
Declaration
bool DeleteIndex(string namespace, HashDigest<SHA256> hash)
Parameters
| Type | Name | Description |
|---|---|---|
| String | namespace | |
| HashDigest<SHA256> | hash |
Returns
| Type | Description |
|---|---|
| Boolean |
DeleteNamespace(String)
Deletes an index, tx nonces, and state references in the given
namespace.
It also deletes namespace itself. If there is no such namespace it
does nothing.
Declaration
void DeleteNamespace(string namespace)
Parameters
| Type | Name | Description |
|---|---|---|
| String | namespace | The namespace to delete. |
Remarks
This does not delete blocks or transactions that belong to
the index of the namespace, but only the index,
tx nonces, and state references.
DeleteTransaction(TxId)
Declaration
bool DeleteTransaction(TxId txid)
Parameters
| Type | Name | Description |
|---|---|---|
| TxId | txid |
Returns
| Type | Description |
|---|---|
| Boolean |
ForkStateReferences<T>(String, String, Block<T>, IImmutableSet<Address>)
Forks state references, which are Hashes that
have the state of the Addresses, from
sourceNamespace to
destinationNamespace.
This method copies state references from
sourceNamespace to
destinationNamespace and strips
addressesToStrip of state references after
branchPoint.
Declaration
void ForkStateReferences<T>(string sourceNamespace, string destinationNamespace, Block<T> branchPoint, IImmutableSet<Address> addressesToStrip)
where T : IAction, new()
Parameters
| Type | Name | Description |
|---|---|---|
| String | sourceNamespace | The namespace of state references to fork. |
| String | destinationNamespace | The namespace of destination state references. |
| Block<T> | branchPoint | The branch point Block<T> to fork. |
| IImmutableSet<Address> | addressesToStrip |
Type Parameters
| Name | Description |
|---|---|
| T | An IAction class used with
|
Exceptions
| Type | Condition |
|---|---|
| NamespaceNotFoundException | Thrown when the given
|
See Also
GetBlock<T>(HashDigest<SHA256>)
Gets the corresponding stored Block<T> to the given
blockHash.
Declaration
Block<T> GetBlock<T>(HashDigest<SHA256> blockHash)
where T : IAction, new()
Parameters
| Type | Name | Description |
|---|---|---|
| HashDigest<SHA256> | 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. |
GetBlockIndex(HashDigest<SHA256>)
Declaration
long? GetBlockIndex(HashDigest<SHA256> blockHash)
Parameters
| Type | Name | Description |
|---|---|---|
| HashDigest<SHA256> | 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>(HashDigest<SHA256>).
GetBlockStates(HashDigest<SHA256>)
Gets the states updated by actions in the inquired block.
Declaration
AddressStateMap GetBlockStates(HashDigest<SHA256> blockHash)
Parameters
| Type | Name | Description |
|---|---|---|
| HashDigest<SHA256> | blockHash | Hash to query. |
Returns
| Type | Description |
|---|---|
| AddressStateMap | 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).
GetCanonicalNamespace()
Gets the current canonical namespace.
Declaration
string GetCanonicalNamespace()
Returns
| Type | Description |
|---|---|
| String | The current canonical namespace. Maybe |
GetTransaction<T>(TxId)
Declaration
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 |
GetTxNonce(String, Address)
Gets Transaction<T> nonce of the
address.
Declaration
long GetTxNonce(string namespace, Address address)
Parameters
| Type | Name | Description |
|---|---|---|
| String | namespace | The namespace 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
| Improve this Doc View SourceIncreaseTxNonce(String, Address, Int64)
Increases (or decreases if a negative delta is given)
the tx nonce counter for signer.
Declaration
void IncreaseTxNonce(string namespace, Address signer, long delta = 1L)
Parameters
| Type | Name | Description |
|---|---|---|
| String | namespace | The namespace 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
| Improve this Doc View SourceIndexBlockHash(String, Int64)
Declaration
HashDigest<SHA256>? IndexBlockHash(string namespace, long index)
Parameters
| Type | Name | Description |
|---|---|---|
| String | namespace | |
| Int64 | index |
Returns
| Type | Description |
|---|---|
| Nullable<HashDigest<SHA256>> |
IterateBlockHashes()
Declaration
IEnumerable<HashDigest<SHA256>> IterateBlockHashes()
Returns
| Type | Description |
|---|---|
| IEnumerable<HashDigest<SHA256>> |
IterateIndex(String, Int32, Nullable<Int32>)
Lists all block hashes in the
Declaration
IEnumerable<HashDigest<SHA256>> IterateIndex(string namespace, int offset = 0, int? limit = default(int? ))
Parameters
| Type | Name | Description |
|---|---|---|
| String | namespace | The namespace 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<HashDigest<SHA256>> | Block hashes in the index of the |
IterateStagedTransactionIds(Boolean)
Iterates staged TxIds.
Declaration
IEnumerable<TxId> IterateStagedTransactionIds(bool toBroadcast = false)
Parameters
| Type | Name | Description |
|---|---|---|
| Boolean | toBroadcast | Whether to iterate only the TxIds set to broadcast. |
Returns
| Type | Description |
|---|---|
| IEnumerable<TxId> | Staged TxIds. |
IterateStateReferences(String, Address)
Gets pairs of a state reference and a corresponding Index of
the requested address in the specified namespace.
Declaration
IEnumerable<Tuple<HashDigest<SHA256>, long>> IterateStateReferences(string namespace, Address address)
Parameters
| Type | Name | Description |
|---|---|---|
| String | namespace | The chain namespace. |
| Address | address | The Address to get state references. |
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 SourceIterateTransactionIds()
Declaration
IEnumerable<TxId> IterateTransactionIds()
Returns
| Type | Description |
|---|---|
| IEnumerable<TxId> |
ListAddresses(String)
Lists all addresses that have ever had states.
Declaration
IEnumerable<Address> ListAddresses(string namespace)
Parameters
| Type | Name | Description |
|---|---|---|
| String | namespace | The namespace to list addresses. |
Returns
| Type | Description |
|---|---|
| IEnumerable<Address> | All addresses in an arbitrary order. The order might be vary for each call. |
ListNamespaces()
Lists existing namespaces.
Declaration
IEnumerable<string> ListNamespaces()
Returns
| Type | Description |
|---|---|
| IEnumerable<String> | Existing namespaces. |
ListTxNonces(String)
Lists all Addresses that have ever signed Transaction<T>, and their corresponding Transaction<T> nonces.
Declaration
IEnumerable<KeyValuePair<Address, long>> ListTxNonces(string namespace)
Parameters
| Type | Name | Description |
|---|---|---|
| String | namespace | The namespace 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
| Improve this Doc View SourcePutBlock<T>(Block<T>)
Puts the given block in to the store.
Declaration
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>)
Puts a given Transaction<T> to the store. If the same transaction already exists in the store it does nothing.
Declaration
void PutTransaction<T>(Transaction<T> tx)
where T : IAction, new()
Parameters
| Type | Name | Description |
|---|---|---|
| Transaction<T> | tx | A transaction to put into the store. |
Type Parameters
| Name | Description |
|---|---|
| T | An IAction type. It should match to Transaction<T>'s type parameter. |
SetBlockStates(HashDigest<SHA256>, AddressStateMap)
Declaration
void SetBlockStates(HashDigest<SHA256> blockHash, AddressStateMap states)
Parameters
| Type | Name | Description |
|---|---|---|
| HashDigest<SHA256> | blockHash | |
| AddressStateMap | states |
SetCanonicalNamespace(String)
Set canonical namespace.
Declaration
void SetCanonicalNamespace(string namespace)
Parameters
| Type | Name | Description |
|---|---|---|
| String | namespace | A new canonical namespace. Cannot be |
Exceptions
| Type | Condition |
|---|---|
| ArgumentNullException | Thrown when |
StageTransactionIds(IDictionary<TxId, Boolean>)
Adds TxIds to the pending list so that a next Block<T> to be mined contains the corresponding Transaction<T>s.
Declaration
void StageTransactionIds(IDictionary<TxId, bool> txids)
Parameters
| Type | Name | Description |
|---|---|---|
| IDictionary<TxId, Boolean> | txids | TxIds to add to pending list. Keys are TxIds and values are whether to broadcast. |
StoreStateReference<T>(String, IImmutableSet<Address>, Block<T>)
Stores a state reference, which is a Hash
that has the state of the Address for each updated
Addresses by the Transaction<T>s in the
block.
Declaration
void StoreStateReference<T>(string namespace, IImmutableSet<Address> addresses, Block<T> block)
where T : IAction, new()
Parameters
| Type | Name | Description |
|---|---|---|
| String | namespace | The namespace to store a state reference. |
| IImmutableSet<Address> | addresses | The Addresses to store state reference. |
| Block<T> | block |
Type Parameters
| Name | Description |
|---|---|
| T | An IAction class used with
|
Remarks
State reference must be stored in the same order as the blocks. For now, it is assumed that this is only called by Append(Block<T>) method.
See Also
| Improve this Doc View SourceUnstageTransactionIds(ISet<TxId>)
Declaration
void UnstageTransactionIds(ISet<TxId> txids)
Parameters
| Type | Name | Description |
|---|---|---|
| ISet<TxId> | txids |