ckb_store

Trait ChainStore

Source
pub trait ChainStore:
    Send
    + Sync
    + Sized {
Show 42 methods // Required methods fn cache(&self) -> Option<&StoreCache>; fn freezer(&self) -> Option<&Freezer>; fn get(&self, col: Col, key: &[u8]) -> Option<DBPinnableSlice<'_>>; fn get_iter(&self, col: Col, mode: IteratorMode<'_>) -> DBIter<'_>; // Provided methods fn borrow_as_data_loader(&self) -> BorrowedDataLoaderWrapper<'_, Self> { ... } fn get_block(&self, h: &Byte32) -> Option<BlockView> { ... } fn get_block_header(&self, hash: &Byte32) -> Option<HeaderView> { ... } fn get_block_body(&self, hash: &Byte32) -> Vec<TransactionView> { ... } fn get_unfrozen_block(&self, hash: &Byte32) -> Option<BlockView> { ... } fn get_block_txs_hashes(&self, hash: &Byte32) -> Vec<Byte32> { ... } fn get_block_proposal_txs_ids( &self, hash: &Byte32, ) -> Option<ProposalShortIdVec> { ... } fn get_block_uncles(&self, hash: &Byte32) -> Option<UncleBlockVecView> { ... } fn get_block_extension(&self, hash: &Byte32) -> Option<Bytes> { ... } fn get_block_ext(&self, block_hash: &Byte32) -> Option<BlockExt> { ... } fn get_block_hash(&self, number: BlockNumber) -> Option<Byte32> { ... } fn get_block_number(&self, hash: &Byte32) -> Option<BlockNumber> { ... } fn is_main_chain(&self, hash: &Byte32) -> bool { ... } fn get_tip_header(&self) -> Option<HeaderView> { ... } fn transaction_exists(&self, hash: &Byte32) -> bool { ... } fn get_transaction( &self, hash: &Byte32, ) -> Option<(TransactionView, Byte32)> { ... } fn get_transaction_info(&self, hash: &Byte32) -> Option<TransactionInfo> { ... } fn get_transaction_with_info( &self, hash: &Byte32, ) -> Option<(TransactionView, TransactionInfo)> { ... } fn have_cell(&self, out_point: &OutPoint) -> bool { ... } fn get_cell(&self, out_point: &OutPoint) -> Option<CellMeta> { ... } fn get_cell_data(&self, out_point: &OutPoint) -> Option<(Bytes, Byte32)> { ... } fn get_cell_data_hash(&self, out_point: &OutPoint) -> Option<Byte32> { ... } fn get_current_epoch_ext(&self) -> Option<EpochExt> { ... } fn get_epoch_ext(&self, hash: &Byte32) -> Option<EpochExt> { ... } fn get_epoch_index(&self, number: EpochNumber) -> Option<Byte32> { ... } fn get_block_epoch_index(&self, block_hash: &Byte32) -> Option<Byte32> { ... } fn get_block_epoch(&self, hash: &Byte32) -> Option<EpochExt> { ... } fn is_uncle(&self, hash: &Byte32) -> bool { ... } fn get_uncle_header(&self, hash: &Byte32) -> Option<HeaderView> { ... } fn block_exists(&self, hash: &Byte32) -> bool { ... } fn get_cellbase(&self, hash: &Byte32) -> Option<TransactionView> { ... } fn get_latest_built_filter_data_block_hash(&self) -> Option<Byte32> { ... } fn get_block_filter(&self, hash: &Byte32) -> Option<Bytes> { ... } fn get_block_filter_hash(&self, hash: &Byte32) -> Option<Byte32> { ... } fn get_packed_block(&self, hash: &Byte32) -> Option<Block> { ... } fn get_packed_block_header(&self, hash: &Byte32) -> Option<Header> { ... } fn get_header_digest(&self, position_u64: u64) -> Option<HeaderDigest> { ... } fn get_ancestor( &self, base: &Byte32, number: BlockNumber, ) -> Option<HeaderView> { ... }
}
Expand description

The ChainStore trait provides chain data store interface

Required Methods§

Source

fn cache(&self) -> Option<&StoreCache>

Return cache reference

Source

fn freezer(&self) -> Option<&Freezer>

Return freezer reference

Source

fn get(&self, col: Col, key: &[u8]) -> Option<DBPinnableSlice<'_>>

Return the bytes associated with a key value and the given column family.

Source

fn get_iter(&self, col: Col, mode: IteratorMode<'_>) -> DBIter<'_>

Return an iterator over the database key-value pairs in the given column family.

Provided Methods§

Source

fn borrow_as_data_loader(&self) -> BorrowedDataLoaderWrapper<'_, Self>

Return the borrowed data loader wrapper

Source

fn get_block(&self, h: &Byte32) -> Option<BlockView>

Get block by block header hash

Source

fn get_block_header(&self, hash: &Byte32) -> Option<HeaderView>

Get header by block header hash

Source

fn get_block_body(&self, hash: &Byte32) -> Vec<TransactionView>

Get block body by block header hash

Source

fn get_unfrozen_block(&self, hash: &Byte32) -> Option<BlockView>

Get unfrozen block from ky-store with given hash

Source

fn get_block_txs_hashes(&self, hash: &Byte32) -> Vec<Byte32>

Get all transaction-hashes in block body by block header hash

Source

fn get_block_proposal_txs_ids( &self, hash: &Byte32, ) -> Option<ProposalShortIdVec>

Get proposal short id by block header hash

Source

fn get_block_uncles(&self, hash: &Byte32) -> Option<UncleBlockVecView>

Get block uncles by block header hash

Source

fn get_block_extension(&self, hash: &Byte32) -> Option<Bytes>

Get block extension by block header hash

Source

fn get_block_ext(&self, block_hash: &Byte32) -> Option<BlockExt>

Get block ext by block header hash

Since v0.106, BlockExt added two option fields, so we have to use compatibility mode to read

Source

fn get_block_hash(&self, number: BlockNumber) -> Option<Byte32>

Get block header hash by block number

Source

fn get_block_number(&self, hash: &Byte32) -> Option<BlockNumber>

Get block number by block header hash

Source

fn is_main_chain(&self, hash: &Byte32) -> bool

TODO(doc): @quake

Source

fn get_tip_header(&self) -> Option<HeaderView>

TODO(doc): @quake

Source

fn transaction_exists(&self, hash: &Byte32) -> bool

Returns true if the transaction confirmed in main chain.

This function is base on transaction index COLUMN_TRANSACTION_INFO. Current release maintains a full index of historical transaction by default, this may be changed in future

Source

fn get_transaction(&self, hash: &Byte32) -> Option<(TransactionView, Byte32)>

Get commit transaction and block hash by its hash

Source

fn get_transaction_info(&self, hash: &Byte32) -> Option<TransactionInfo>

TODO(doc): @quake

Source

fn get_transaction_with_info( &self, hash: &Byte32, ) -> Option<(TransactionView, TransactionInfo)>

Gets transaction and associated info with correspond hash

Source

fn have_cell(&self, out_point: &OutPoint) -> bool

Return whether cell is live

Source

fn get_cell(&self, out_point: &OutPoint) -> Option<CellMeta>

Gets cell meta data with out_point

Source

fn get_cell_data(&self, out_point: &OutPoint) -> Option<(Bytes, Byte32)>

TODO(doc): @quake

Source

fn get_cell_data_hash(&self, out_point: &OutPoint) -> Option<Byte32>

TODO(doc): @quake

Source

fn get_current_epoch_ext(&self) -> Option<EpochExt>

Gets current epoch ext

Source

fn get_epoch_ext(&self, hash: &Byte32) -> Option<EpochExt>

Gets epoch ext by epoch index

Source

fn get_epoch_index(&self, number: EpochNumber) -> Option<Byte32>

Gets epoch index by epoch number

Source

fn get_block_epoch_index(&self, block_hash: &Byte32) -> Option<Byte32>

Gets epoch index by block hash

Source

fn get_block_epoch(&self, hash: &Byte32) -> Option<EpochExt>

TODO(doc): @quake

Source

fn is_uncle(&self, hash: &Byte32) -> bool

TODO(doc): @quake

Source

fn get_uncle_header(&self, hash: &Byte32) -> Option<HeaderView>

Gets header by uncle header hash

Source

fn block_exists(&self, hash: &Byte32) -> bool

TODO(doc): @quake

Source

fn get_cellbase(&self, hash: &Byte32) -> Option<TransactionView>

Gets cellbase by block hash

Source

fn get_latest_built_filter_data_block_hash(&self) -> Option<Byte32>

Gets latest built filter data block hash

Source

fn get_block_filter(&self, hash: &Byte32) -> Option<Bytes>

Gets block filter data by block hash

Source

fn get_block_filter_hash(&self, hash: &Byte32) -> Option<Byte32>

Gets block filter hash by block hash

Source

fn get_packed_block(&self, hash: &Byte32) -> Option<Block>

Gets block bytes by block hash

Source

fn get_packed_block_header(&self, hash: &Byte32) -> Option<Header>

Gets block header bytes by block hash

Source

fn get_header_digest(&self, position_u64: u64) -> Option<HeaderDigest>

Gets a header digest.

Source

fn get_ancestor(&self, base: &Byte32, number: BlockNumber) -> Option<HeaderView>

Gets ancestor block header by a base block hash and number

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§