Show / Hide Table of Contents

Class RocksDBStore

The RocksDB IStore implementation, which is more production-ready than DefaultStore. This stores data in the RocksDB with multiple partitions under the hood.

RocksDBStore and RocksDBKeyValueStore-backed TrieStateStore can be instantiated from a URI with rocksdb+file: scheme using , e.g.:

  • rocksdb+file:///var/data/planet/
  • rocksdb+file:///c:/Users/john/AppData/Local/planet/
  • rocksdb+file:///var/data/planet/?secure=true (trie keys are hashed)

The following query string parameters are supported:

block-cacheCorresponds to RocksDBStore(String, Int32, Int32, Nullable<UInt64>, Nullable<UInt64>, Nullable<UInt64>, Int32, Int32, Int32)'s blockCacheSize parameter. 512 by default.
tx-cacheCorresponds to RocksDBStore(String, Int32, Int32, Nullable<UInt64>, Nullable<UInt64>, Nullable<UInt64>, Int32, Int32, Int32)'s txCacheSize parameter. 1024 by default.
max-total-wal-sizeCorresponds to RocksDB's max_total_wal_size option.
keep-log-file-numCorresponds to RocksDB's keep_log_file_num option.
max_log_file_sizeCorresponds to RocksDB's max_log_file_size option.
tx-epoch-unit-secsCorresponds to RocksDBStore(String, Int32, Int32, Nullable<UInt64>, Nullable<UInt64>, Nullable<UInt64>, Int32, Int32, Int32)'s txEpochUnitSeconds parameter. 86400 by default.
block-epoch-unit-secsCorresponds to RocksDBStore(String, Int32, Int32, Nullable<UInt64>, Nullable<UInt64>, Nullable<UInt64>, Int32, Int32, Int32)'s blockEpochUnitSeconds parameter. 86400 by default.
connection-cacheCorresponds to RocksDBStore(String, Int32, Int32, Nullable<UInt64>, Nullable<UInt64>, Nullable<UInt64>, Int32, Int32, Int32)'s dbConnectionCacheSize parameter. 100 by default.
states-dirCorresponds to RocksDBKeyValueStore(String)'s path parameter. It is relative to the URI path, and defaults to states.
securetrue or false (default). Corresponds to 's secure parameter.
Inheritance
Object
BaseStore
RocksDBStore
Implements
IStore
IDisposable
Inherited Members
BaseStore.GetBlock<T>(HashAlgorithmGetter, BlockHash)
BaseStore.GetBlockIndex(BlockHash)
BaseStore.GetFirstTxIdBlockHashIndex(TxId)
BaseStore.SerializeTxExecution(TxSuccess)
BaseStore.SerializeTxExecution(TxFailure)
BaseStore.DeserializeTxExecution(BlockHash, TxId, IValue, ILogger)
Namespace: Libplanet.RocksDBStore
Assembly: Libplanet.RocksDBStore.dll
Syntax
public class RocksDBStore : BaseStore, IStore, IDisposable

Constructors

| Improve this Doc View Source

RocksDBStore(String, Int32, Int32, Nullable<UInt64>, Nullable<UInt64>, Nullable<UInt64>, Int32, Int32, Int32)

Creates a new RocksDBStore.

Declaration
public RocksDBStore(string path, int blockCacheSize = 512, int txCacheSize = 1024, ulong? maxTotalWalSize = null, ulong? keepLogFileNum = null, ulong? maxLogFileSize = null, int txEpochUnitSeconds = 86400, int blockEpochUnitSeconds = 86400, int dbConnectionCacheSize = 100)
Parameters
Type Name Description
String path

The path of the directory where the storage files will be saved.

Int32 blockCacheSize

The capacity of the block cache.

Int32 txCacheSize

The capacity of the transaction cache.

Nullable<UInt64> maxTotalWalSize

The number to configure max_total_wal_size RocksDB option.

Nullable<UInt64> keepLogFileNum

The number to configure keep_log_file_num RocksDB option.

Nullable<UInt64> maxLogFileSize

The number to configure max_log_file_size RocksDB option.

Int32 txEpochUnitSeconds

The interval between epochs of DB partions containing transactions. 86,400 seconds by default.

Int32 blockEpochUnitSeconds

The interval between epochs of DB partions containing blocks. 86,400 seconds by default.

Int32 dbConnectionCacheSize

The capacity of the block and transaction RocksDB connection cache. 100 by default.

Methods

| Improve this Doc View Source

AppendIndex(Guid, BlockHash)

Declaration
public override long AppendIndex(Guid chainId, BlockHash hash)
Parameters
Type Name Description
Guid chainId
BlockHash hash
Returns
Type Description
Int64
| Improve this Doc View Source

ContainsBlock(BlockHash)

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

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

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

Overrides
BaseStore.ContainsBlock(BlockHash)
| 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
| Improve this Doc View Source

CountTransactions()

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

DeleteBlock(BlockHash)

Removes a block from the store.

Declaration
public override bool DeleteBlock(BlockHash blockHash)
Parameters
Type Name Description
BlockHash blockHash

The hash of a block to remove.

Returns
Type Description
Boolean

false if such block does not exist. Otherwise true.

Overrides
BaseStore.DeleteBlock(BlockHash)
| Improve this Doc View Source

DeleteChainId(Guid)

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

DeleteTxIdBlockHashIndex(TxId, BlockHash)

Deletes the index for the txId and blockHash.

Declaration
public override void DeleteTxIdBlockHashIndex(TxId txId, BlockHash blockHash)
Parameters
Type Name Description
TxId txId

The TxId of the Transaction<T>.

BlockHash blockHash

The BlockHash of the Block<T>.

Overrides
BaseStore.DeleteTxIdBlockHashIndex(TxId, BlockHash)
| Improve this Doc View Source

Dispose()

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

ForkBlockIndexes(Guid, Guid, BlockHash)

Declaration
public override void ForkBlockIndexes(Guid sourceChainId, Guid destinationChainId, BlockHash branchpoint)
Parameters
Type Name Description
Guid sourceChainId
Guid destinationChainId
BlockHash branchpoint
| Improve this Doc View Source

ForkTxNonces(Guid, Guid)

Declaration
public override void ForkTxNonces(Guid sourceChainId, Guid destinationChainId)
Parameters
Type Name Description
Guid sourceChainId
Guid destinationChainId
| Improve this Doc View Source

GetBlockDigest(BlockHash)

Gets the corresponding stored BlockDigest to the given blockHash.

Declaration
public override BlockDigest? GetBlockDigest(BlockHash blockHash)
Parameters
Type Name Description
BlockHash 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(BlockHash)
| Improve this Doc View Source

GetBlockPerceivedTime(BlockHash)

Queries the perceived time of a block, if it has been recorded.

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

Overrides
BaseStore.GetBlockPerceivedTime(BlockHash)
| 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

GetTxExecution(BlockHash, TxId)

Retrieves the recorded transaction execution summary.

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

Overrides
BaseStore.GetTxExecution(BlockHash, TxId)
See Also
PutTxExecution(TxFailure)
PutTxExecution(TxSuccess)
| Improve this Doc View Source

GetTxNonce(Guid, Address)

Declaration
public override long GetTxNonce(Guid chainId, Address address)
Parameters
Type Name Description
Guid chainId
Address address
Returns
Type Description
Int64
| Improve this Doc View Source

IncreaseTxNonce(Guid, Address, Int64)

Declaration
public override void IncreaseTxNonce(Guid chainId, Address signer, long delta = null)
Parameters
Type Name Description
Guid chainId
Address signer
Int64 delta
| Improve this Doc View Source

IndexBlockHash(Guid, Int64)

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

IterateBlockHashes()

Lists all block hashes in the store, regardless of their belonging chains.

Declaration
public override IEnumerable<BlockHash> IterateBlockHashes()
Returns
Type Description
IEnumerable<BlockHash>

All block hashes in the store.

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

IterateIndexes(Guid, Int32, Nullable<Int32>)

Declaration
public override IEnumerable<BlockHash> IterateIndexes(Guid chainId, int offset, int? limit)
Parameters
Type Name Description
Guid chainId
Int32 offset
Nullable<Int32> limit
Returns
Type Description
IEnumerable<BlockHash>
| 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

IterateTxIdBlockHashIndex(TxId)

Retrieves BlockHashes indexed by the txId.

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

Overrides
BaseStore.IterateTxIdBlockHashIndex(TxId)
| 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

ListTxNonces(Guid)

Declaration
public override IEnumerable<KeyValuePair<Address, long>> ListTxNonces(Guid chainId)
Parameters
Type Name Description
Guid chainId
Returns
Type Description
IEnumerable<KeyValuePair<Address, Int64>>
| Improve this Doc View Source

MigrateChainDBFromColumnFamilies(String)

Declaration
public static bool MigrateChainDBFromColumnFamilies(string path)
Parameters
Type Name Description
String path
Returns
Type Description
Boolean
| Improve this Doc View Source

PruneOutdatedChains(Boolean)

Declaration
public override void PruneOutdatedChains(bool noopWithoutCanon = false)
Parameters
Type Name Description
Boolean noopWithoutCanon
| Improve this Doc View Source

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 override 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 block.

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

PutTxExecution(TxFailure)

Records the given txFailure.

Declaration
public override void PutTxExecution(TxFailure txFailure)
Parameters
Type Name Description
TxFailure txFailure

The failed transaction execution summary to record. Must not be null.

Overrides
BaseStore.PutTxExecution(TxFailure)
Remarks

If there is already the record for the same BlockHash and TxId, the record is silently overwritten.

See Also
PutTxExecution(TxSuccess)
GetTxExecution(BlockHash, TxId)
| Improve this Doc View Source

PutTxExecution(TxSuccess)

Records the given txSuccess.

Declaration
public override void PutTxExecution(TxSuccess txSuccess)
Parameters
Type Name Description
TxSuccess txSuccess

The successful transaction execution summary to record. Must not be null.

Overrides
BaseStore.PutTxExecution(TxSuccess)
Remarks

If there is already the record for the same BlockHash and TxId, the record is silently overwritten.

See Also
PutTxExecution(TxFailure)
GetTxExecution(BlockHash, TxId)
| Improve this Doc View Source

PutTxIdBlockHashIndex(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 override void PutTxIdBlockHashIndex(TxId txId, BlockHash blockHash)
Parameters
Type Name Description
TxId txId

The TxId of the Transaction<T>.

BlockHash blockHash

The BlockHash of the Block<T>.

Overrides
BaseStore.PutTxIdBlockHashIndex(TxId, BlockHash)
| Improve this Doc View Source

SetBlockPerceivedTime(BlockHash, DateTimeOffset)

Declaration
public override void SetBlockPerceivedTime(BlockHash blockHash, DateTimeOffset perceivedTime)
Parameters
Type Name Description
BlockHash blockHash
DateTimeOffset perceivedTime
| Improve this Doc View Source

SetCanonicalChainId(Guid)

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

Implements

IStore
IDisposable

See Also

IStore
  • Improve this Doc
  • View Source
In This Article
Back to top Copyright © 2018–2022 Planetarium