Struct ckb_snapshot::Snapshot
source · pub struct Snapshot { /* private fields */ }
Expand description
A snapshot captures a point-in-time view of the DB at the time it’s created
Implementations§
source§impl Snapshot
impl Snapshot
sourcepub fn new(
tip_header: HeaderView,
total_difficulty: U256,
epoch_ext: EpochExt,
store: StoreSnapshot,
proposals: ProposalView,
consensus: Arc<Consensus>
) -> Snapshot
pub fn new( tip_header: HeaderView, total_difficulty: U256, epoch_ext: EpochExt, store: StoreSnapshot, proposals: ProposalView, consensus: Arc<Consensus> ) -> Snapshot
New snapshot created after tip change
sourcepub fn refresh(&self, store: StoreSnapshot) -> Snapshot
pub fn refresh(&self, store: StoreSnapshot) -> Snapshot
Refreshing on block commit is necessary operation, even tip remains unchanged. when node relayed compact block,if some uncles were not available from receiver’s local sources, in GetBlockTransactions/BlockTransactions roundtrip, node will need access block data of uncles.
sourcepub fn tip_header(&self) -> &HeaderView
pub fn tip_header(&self) -> &HeaderView
Return reference of tip header
sourcepub fn tip_number(&self) -> BlockNumber
pub fn tip_number(&self) -> BlockNumber
Return tip header number
sourcepub fn cloned_consensus(&self) -> Arc<Consensus>
pub fn cloned_consensus(&self) -> Arc<Consensus>
Makes a clone of the Arc<Consensus>
sourcepub fn proposals(&self) -> &ProposalView
pub fn proposals(&self) -> &ProposalView
Return reference of proposals view
sourcepub fn total_difficulty(&self) -> &U256
pub fn total_difficulty(&self) -> &U256
Return current best chain total_difficulty
sourcepub fn compute_versionbits(&self, parent: &HeaderView) -> Option<Version>
pub fn compute_versionbits(&self, parent: &HeaderView) -> Option<Version>
Returns what version a new block should use.
sourcepub fn versionbits_active(&self, pos: DeploymentPos) -> bool
pub fn versionbits_active(&self, pos: DeploymentPos) -> bool
Returns specified softfork active or not
sourcepub fn chain_root_mmr(&self, block_number: BlockNumber) -> ChainRootMMR<&Self>
pub fn chain_root_mmr(&self, block_number: BlockNumber) -> ChainRootMMR<&Self>
Returns the chain root MMR for a provided block.
Trait Implementations§
source§impl CellChecker for Snapshot
impl CellChecker for Snapshot
source§impl CellProvider for Snapshot
impl CellProvider for Snapshot
source§impl ChainStore for Snapshot
impl ChainStore for Snapshot
source§fn cache(&self) -> Option<&StoreCache>
fn cache(&self) -> Option<&StoreCache>
Return cache reference
source§fn get(&self, col: Col, key: &[u8]) -> Option<DBPinnableSlice<'_>>
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<'_>
fn get_iter(&self, col: Col, mode: IteratorMode<'_>) -> DBIter<'_>
Return an iterator over the database key-value pairs in the given column family.
source§fn get_tip_header(&self) -> Option<HeaderView>
fn get_tip_header(&self) -> Option<HeaderView>
TODO(doc): @quake
source§fn get_current_epoch_ext(&self) -> Option<EpochExt>
fn get_current_epoch_ext(&self) -> Option<EpochExt>
Gets current epoch ext
source§fn borrow_as_data_loader(&self) -> BorrowedDataLoaderWrapper<'_, Self>
fn borrow_as_data_loader(&self) -> BorrowedDataLoaderWrapper<'_, Self>
Return the borrowed data loader wrapper
source§fn get_block_header(&self, hash: &Byte32) -> Option<HeaderView>
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>
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>
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>
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>
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>
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>
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>
fn get_block_ext(&self, block_hash: &Byte32) -> Option<BlockExt>
Get block ext by block header hash Read more
source§fn get_block_number(&self, hash: &Byte32) -> Option<u64>
fn get_block_number(&self, hash: &Byte32) -> Option<u64>
Get block number by block header hash
source§fn is_main_chain(&self, hash: &Byte32) -> bool
fn is_main_chain(&self, hash: &Byte32) -> bool
TODO(doc): @quake
source§fn transaction_exists(&self, hash: &Byte32) -> bool
fn transaction_exists(&self, hash: &Byte32) -> bool
Returns true if the transaction confirmed in main chain. Read more
source§fn get_transaction(&self, hash: &Byte32) -> Option<(TransactionView, Byte32)>
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>
fn get_transaction_info(&self, hash: &Byte32) -> Option<TransactionInfo>
TODO(doc): @quake
source§fn get_transaction_with_info(
&self,
hash: &Byte32
) -> Option<(TransactionView, TransactionInfo)>
fn get_transaction_with_info( &self, hash: &Byte32 ) -> Option<(TransactionView, TransactionInfo)>
Gets transaction and associated info with correspond hash
source§fn get_cell(&self, out_point: &OutPoint) -> Option<CellMeta>
fn get_cell(&self, out_point: &OutPoint) -> Option<CellMeta>
Gets cell meta data with out_point
source§fn get_block_epoch_index(&self, block_hash: &Byte32) -> Option<Byte32>
fn get_block_epoch_index(&self, block_hash: &Byte32) -> Option<Byte32>
Gets epoch index by block hash
source§fn get_uncle_header(&self, hash: &Byte32) -> Option<HeaderView>
fn get_uncle_header(&self, hash: &Byte32) -> Option<HeaderView>
Gets header by uncle header hash
source§fn block_exists(&self, hash: &Byte32) -> bool
fn block_exists(&self, hash: &Byte32) -> bool
TODO(doc): @quake
source§fn get_cellbase(&self, hash: &Byte32) -> Option<TransactionView>
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>
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>
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>
fn get_block_filter_hash(&self, hash: &Byte32) -> Option<Byte32>
Gets block filter hash by block hash
source§fn get_packed_block_header(&self, hash: &Byte32) -> Option<Header>
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>
fn get_header_digest(&self, position_u64: u64) -> Option<HeaderDigest>
Gets a header digest.
source§fn get_ancestor(&self, base: &Byte32, number: u64) -> Option<HeaderView>
fn get_ancestor(&self, base: &Byte32, number: u64) -> Option<HeaderView>
Gets ancestor block header by a base block hash and number
source§impl ConsensusProvider for Snapshot
impl ConsensusProvider for Snapshot
source§fn get_consensus(&self) -> &Consensus
fn get_consensus(&self) -> &Consensus
Returns the
Consensus
.source§impl HeaderChecker for Snapshot
impl HeaderChecker for Snapshot
source§fn check_valid(&self, block_hash: &Byte32) -> Result<(), OutPointError>
fn check_valid(&self, block_hash: &Byte32) -> Result<(), OutPointError>
Check if header in main chain
source§impl HeaderFieldsProvider for Snapshot
impl HeaderFieldsProvider for Snapshot
source§fn get_header_fields(&self, hash: &Byte32) -> Option<HeaderFields>
fn get_header_fields(&self, hash: &Byte32) -> Option<HeaderFields>
Get the header fields of the given block hash
source§impl HeaderProvider for Snapshot
impl HeaderProvider for Snapshot
source§fn get_header(&self, hash: &Byte32) -> Option<HeaderView>
fn get_header(&self, hash: &Byte32) -> Option<HeaderView>
Get the header of the given block hash
source§impl MMRStore<HeaderDigest> for &Snapshot
impl MMRStore<HeaderDigest> for &Snapshot
source§impl PartialEq for Snapshot
impl PartialEq for Snapshot
source§impl VersionbitsIndexer for Snapshot
impl VersionbitsIndexer for Snapshot
source§fn block_epoch_index(&self, block_hash: &Byte32) -> Option<Byte32>
fn block_epoch_index(&self, block_hash: &Byte32) -> Option<Byte32>
Gets epoch index by block hash
source§fn block_header(&self, block_hash: &Byte32) -> Option<HeaderView>
fn block_header(&self, block_hash: &Byte32) -> Option<HeaderView>
Gets block header by block hash
impl Eq for Snapshot
Auto Trait Implementations§
impl !Freeze for Snapshot
impl !RefUnwindSafe for Snapshot
impl Send for Snapshot
impl Sync for Snapshot
impl Unpin for Snapshot
impl !UnwindSafe for Snapshot
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
source§impl<T> CallHasher for T
impl<T> CallHasher for T
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more