Show / Hide Table of Contents

Class DefaultStore

The default built-in IStore implementation. This stores data in the file system or in memory. It also uses LiteDB for some complex indices.

Inheritance
Object
BaseStore
DefaultStore
Implements
IStore
IDisposable
Inherited Members
BaseStore.GetBlock<T>(HashDigest<SHA256>)
BaseStore.GetBlockIndex(HashDigest<SHA256>)
Namespace: Libplanet.Store
Assembly: Libplanet.dll
Syntax
public class DefaultStore : BaseStore, IStore, IDisposable

Constructors

| Improve this Doc View Source

DefaultStore(String, Boolean, Boolean, Int32, Int32, Int32, Int32, Boolean, Boolean)

Creates a new DefaultStore.

Declaration
public DefaultStore(string path, bool compress = false, bool journal = true, int indexCacheSize = 50000, int blockCacheSize = 512, int txCacheSize = 1024, int statesCacheSize = 10000, bool flush = true, bool readOnly = false)
Parameters
Type Name Description
String path

The path of the directory where the storage files will be saved. If the path is null, the database is created in memory.

Boolean compress

Whether to compress data. Does not compress by default.

Boolean journal

Enables or disables double write check to ensure durability.

Int32 indexCacheSize

Max number of pages in the index cache.

Int32 blockCacheSize

The capacity of the block cache.

Int32 txCacheSize

The capacity of the transaction cache.

Int32 statesCacheSize

The capacity of the states cache.

Boolean flush

Writes data direct to disk avoiding OS cache. Turned on by default.

Boolean readOnly

Opens database readonly mode. Turned off by default.

Methods

| Improve this Doc View Source

AppendIndex(Guid, HashDigest<SHA256>)

Declaration
public override long AppendIndex(Guid chainId, HashDigest<SHA256> hash)
Parameters
Type Name Description
Guid chainId
HashDigest<SHA256> hash
Returns
Type Description
Int64
Overrides
BaseStore.AppendIndex(Guid, HashDigest<SHA256>)
| Improve this Doc View Source

ContainsBlock(HashDigest<SHA256>)

Determines whether the IStore contains Block<T> the specified blockHash.

Declaration
public override bool ContainsBlock(HashDigest<SHA256> blockHash)
Parameters
Type Name Description
HashDigest<SHA256> blockHash

The HashDigest<T> of the Block<T> to check if it is in the IStore.

Returns
Type Description
Boolean

true if the IStore contains Block<T> with the specified blockHash; otherwise, false.

Overrides
BaseStore.ContainsBlock(HashDigest<SHA256>)
| Improve this Doc View Source

ContainsTransaction(TxId)

Determines whether the IStore contains Transaction<T> the specified txId.

Declaration
public override 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

true if the IStore contains Transaction<T> with the specified txId; otherwise, false.

Overrides
BaseStore.ContainsTransaction(TxId)
| Improve this Doc View Source

CountBlocks()

Declaration
public override long CountBlocks()
Returns
Type Description
Int64
Overrides
BaseStore.CountBlocks()
| Improve this Doc View Source

CountIndex(Guid)

Declaration
public override long CountIndex(Guid chainId)
Parameters
Type Name Description
Guid chainId
Returns
Type Description
Int64
Overrides
BaseStore.CountIndex(Guid)
| Improve this Doc View Source

CountTransactions()

Declaration
public override long CountTransactions()
Returns
Type Description
Int64
Overrides
BaseStore.CountTransactions()
| Improve this Doc View Source

DeleteBlock(HashDigest<SHA256>)

Declaration
public override bool DeleteBlock(HashDigest<SHA256> blockHash)
Parameters
Type Name Description
HashDigest<SHA256> blockHash
Returns
Type Description
Boolean
Overrides
BaseStore.DeleteBlock(HashDigest<SHA256>)
| Improve this Doc View Source

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 override void DeleteChainId(Guid chainId)
Parameters
Type Name Description
Guid chainId

The ID of chain to delete.

Overrides
BaseStore.DeleteChainId(Guid)
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.

| Improve this Doc View Source

DeleteTransaction(TxId)

Declaration
public override bool DeleteTransaction(TxId txid)
Parameters
Type Name Description
TxId txid
Returns
Type Description
Boolean
Overrides
BaseStore.DeleteTransaction(TxId)
| Improve this Doc View Source

Dispose()

Declaration
public override void Dispose()
Overrides
BaseStore.Dispose()
| Improve this Doc View Source

ForkBlockIndexes(Guid, Guid, HashDigest<SHA256>)

Forks block indexes from sourceChainId to destinationChainId.

Declaration
public override void ForkBlockIndexes(Guid sourceChainId, Guid destinationChainId, HashDigest<SHA256> branchPoint)
Parameters
Type Name Description
Guid sourceChainId

The chain ID of block indexes to fork.

Guid destinationChainId

The chain ID of destination block indexes.

HashDigest<SHA256> branchPoint

The branch point Block<T> to fork.

Overrides
BaseStore.ForkBlockIndexes(Guid, Guid, HashDigest<SHA256>)
Exceptions
Type Condition
ChainIdNotFoundException

Thrown when the given sourceChainId does not exist.

See Also
IterateIndexes(Guid, Int32, Nullable<Int32>)
AppendIndex(Guid, HashDigest<SHA256>)
| Improve this Doc View Source

ForkStateReferences<T>(Guid, Guid, Block<T>)

Declaration
public override void ForkStateReferences<T>(Guid sourceChainId, Guid destinationChainId, Block<T> branchPoint)
    where T : IAction, new()
Parameters
Type Name Description
Guid sourceChainId
Guid destinationChainId
Block<T> branchPoint
Type Parameters
Name Description
T
Overrides
Libplanet.Store.BaseStore.ForkStateReferences<T>(Guid, Guid, Libplanet.Blocks.Block<T>)
| Improve this Doc View Source

GetBlockDigest(HashDigest<SHA256>)

Gets the corresponding stored BlockDigest to the given blockHash.

Declaration
public override BlockDigest? GetBlockDigest(HashDigest<SHA256> blockHash)
Parameters
Type Name Description
HashDigest<SHA256> blockHash

Hash to find.

Returns
Type Description
Nullable<BlockDigest>

A found BlockDigest, or null if no block having such blockHash is stored.

Overrides
BaseStore.GetBlockDigest(HashDigest<SHA256>)
| Improve this Doc View Source

GetBlockStates(HashDigest<SHA256>)

Declaration
public override IImmutableDictionary<string, IValue> GetBlockStates(HashDigest<SHA256> blockHash)
Parameters
Type Name Description
HashDigest<SHA256> blockHash
Returns
Type Description
IImmutableDictionary<String, IValue>
Overrides
BaseStore.GetBlockStates(HashDigest<SHA256>)
| Improve this Doc View Source

GetCanonicalChainId()

Gets the ID of the current canonical chain.

Declaration
public override Guid? GetCanonicalChainId()
Returns
Type Description
Nullable<Guid>

The ID of the current canonical chain. Maybe null.

Overrides
BaseStore.GetCanonicalChainId()
See Also
SetCanonicalChainId(Guid)
| Improve this Doc View Source

GetTransaction<T>(TxId)

Declaration
public override 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
Overrides
BaseStore.GetTransaction<T>(TxId)
| Improve this Doc View Source

GetTxNonce(Guid, Address)

Gets Transaction<T> nonce of the address.

Declaration
public override 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.

Overrides
BaseStore.GetTxNonce(Guid, Address)
See Also
IncreaseTxNonce(Guid, Address, Int64)
| Improve this Doc View Source

IncreaseTxNonce(Guid, Address, Int64)

Increases (or decreases if a negative delta is given) the tx nonce counter for signer.

Declaration
public override 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.

Overrides
BaseStore.IncreaseTxNonce(Guid, Address, Int64)
See Also
GetTxNonce(Guid, Address)
| Improve this Doc View Source

IndexBlockHash(Guid, Int64)

Declaration
public override HashDigest<SHA256>? IndexBlockHash(Guid chainId, long index)
Parameters
Type Name Description
Guid chainId
Int64 index
Returns
Type Description
Nullable<HashDigest<SHA256>>
Overrides
BaseStore.IndexBlockHash(Guid, Int64)
| Improve this Doc View Source

IterateBlockHashes()

Declaration
public override IEnumerable<HashDigest<SHA256>> IterateBlockHashes()
Returns
Type Description
IEnumerable<HashDigest<SHA256>>
Overrides
BaseStore.IterateBlockHashes()
| Improve this Doc View Source

IterateIndexes(Guid, Int32, Nullable<Int32>)

Declaration
public override IEnumerable<HashDigest<SHA256>> IterateIndexes(Guid chainId, int offset, int? limit)
Parameters
Type Name Description
Guid chainId
Int32 offset
Nullable<Int32> limit
Returns
Type Description
IEnumerable<HashDigest<SHA256>>
Overrides
BaseStore.IterateIndexes(Guid, Int32, Nullable<Int32>)
| Improve this Doc View Source

IterateStagedTransactionIds()

Iterates staged TxIds.

Declaration
public override IEnumerable<TxId> IterateStagedTransactionIds()
Returns
Type Description
IEnumerable<TxId>

Staged TxIds.

Overrides
BaseStore.IterateStagedTransactionIds()
| Improve this Doc View Source

IterateStateReferences(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
public override IEnumerable<Tuple<HashDigest<SHA256>, long>> IterateStateReferences(Guid chainId, string key, long? highestIndex, long? lowestIndex, int? limit)
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 null, it will be the highest index possible.

Nullable<Int64> lowestIndex

The lowest index of state references to get. If it is null, it will be the lowest index possible.

Nullable<Int32> limit

The maximum number of state references to get. If it is null, it does not limit the number of 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.

Overrides
BaseStore.IterateStateReferences(Guid, String, Nullable<Int64>, Nullable<Int64>, Nullable<Int32>)
See Also
StoreStateReference(Guid, IImmutableSet<String>, HashDigest<SHA256>, Int64)
| Improve this Doc View Source

IterateTransactionIds()

Declaration
public override IEnumerable<TxId> IterateTransactionIds()
Returns
Type Description
IEnumerable<TxId>
Overrides
BaseStore.IterateTransactionIds()
| Improve this Doc View Source

ListAllStateReferences(Guid, Int64, Int64)

Lists all accounts, that have any states, in the given chainId and their state references.

Declaration
public override 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.

Overrides
BaseStore.ListAllStateReferences(Guid, Int64, Int64)
| Improve this Doc View Source

ListChainIds()

Lists existing chain IDs.

Declaration
public override IEnumerable<Guid> ListChainIds()
Returns
Type Description
IEnumerable<Guid>

Existing chain IDs.

Overrides
BaseStore.ListChainIds()
| Improve this Doc View Source

ListStateKeys(Guid)

Lists all keys that have ever had states.

Declaration
public override 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.

Overrides
BaseStore.ListStateKeys(Guid)
| Improve this Doc View Source

ListTxNonces(Guid)

Lists all Addresses that have ever signed Transaction<T>, and their corresponding Transaction<T> nonces.

Declaration
public override 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.)

Overrides
BaseStore.ListTxNonces(Guid)
See Also
GetTxNonce(Guid, Address)
| Improve this Doc View Source

LookupStateReference<T>(Guid, String, Block<T>)

Declaration
public override Tuple<HashDigest<SHA256>, long> LookupStateReference<T>(Guid chainId, string key, Block<T> lookupUntil)
    where T : IAction, new()
Parameters
Type Name Description
Guid chainId
String key
Block<T> lookupUntil
Returns
Type Description
Tuple<HashDigest<SHA256>, Int64>
Type Parameters
Name Description
T
Overrides
Libplanet.Store.BaseStore.LookupStateReference<T>(Guid, System.String, Libplanet.Blocks.Block<T>)
| Improve this Doc View Source

PruneBlockStates<T>(Guid, Block<T>)

Declaration
public override void PruneBlockStates<T>(Guid chainId, Block<T> until)
    where T : IAction, new()
Parameters
Type Name Description
Guid chainId
Block<T> until
Type Parameters
Name Description
T
Overrides
Libplanet.Store.BaseStore.PruneBlockStates<T>(Guid, Libplanet.Blocks.Block<T>)
| Improve this Doc View Source

PutBlock<T>(Block<T>)

Declaration
public override void PutBlock<T>(Block<T> block)
    where T : IAction, new()
Parameters
Type Name Description
Block<T> block
Type Parameters
Name Description
T
Overrides
Libplanet.Store.BaseStore.PutBlock<T>(Libplanet.Blocks.Block<T>)
| Improve this Doc View Source

PutTransaction<T>(Transaction<T>)

Declaration
public override void PutTransaction<T>(Transaction<T> tx)
    where T : IAction, new()
Parameters
Type Name Description
Transaction<T> tx
Type Parameters
Name Description
T
Overrides
Libplanet.Store.BaseStore.PutTransaction<T>(Libplanet.Tx.Transaction<T>)
| Improve this Doc View Source

SetBlockStates(HashDigest<SHA256>, IImmutableDictionary<String, IValue>)

Sets the states updated by actions in the specified block (i.e., blockHash).

Declaration
public override 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., blockHash).

Overrides
BaseStore.SetBlockStates(HashDigest<SHA256>, IImmutableDictionary<String, IValue>)
See Also
GetBlockStates(HashDigest<SHA256>)
| Improve this Doc View Source

SetCanonicalChainId(Guid)

Sets the canonical chain.

Declaration
public override void SetCanonicalChainId(Guid chainId)
Parameters
Type Name Description
Guid chainId

The ID of a new canonical chain.

Overrides
BaseStore.SetCanonicalChainId(Guid)
See Also
GetCanonicalChainId()
| Improve this Doc View Source

StageTransactionIds(IImmutableSet<TxId>)

Adds TxIds to the pending list so that a next Block<T> to be mined contains the corresponding Transaction<T>s.

Declaration
public override void StageTransactionIds(IImmutableSet<TxId> txids)
Parameters
Type Name Description
IImmutableSet<TxId> txids

TxIds to add to pending list.

Overrides
BaseStore.StageTransactionIds(IImmutableSet<TxId>)
| Improve this Doc View Source

StoreStateReference(Guid, IImmutableSet<String>, HashDigest<SHA256>, Int64)

Declaration
public override void StoreStateReference(Guid chainId, IImmutableSet<string> keys, HashDigest<SHA256> blockHash, long blockIndex)
Parameters
Type Name Description
Guid chainId
IImmutableSet<String> keys
HashDigest<SHA256> blockHash
Int64 blockIndex
Overrides
BaseStore.StoreStateReference(Guid, IImmutableSet<String>, HashDigest<SHA256>, Int64)
| Improve this Doc View Source

UnstageTransactionIds(ISet<TxId>)

Declaration
public override void UnstageTransactionIds(ISet<TxId> txids)
Parameters
Type Name Description
ISet<TxId> txids
Overrides
BaseStore.UnstageTransactionIds(ISet<TxId>)

Implements

IStore
IDisposable

See Also

IStore
  • Improve this Doc
  • View Source
Back to top Copyright © 2019–2020 Planetarium