Skip to main content

DeriveSuperSegmentsForBlockChainInfo

Trait DeriveSuperSegmentsForBlockChainInfo 

Source
pub trait DeriveSuperSegmentsForBlockChainInfo: Send + Sync {
    // Required methods
    fn get_genesis_segment_root(
        &self,
    ) -> Result<SegmentRoot, DeriveSuperSegmentForBlockError>;
    fn segment_roots_for_block(
        &self,
        block_number: BlockNumber,
    ) -> impl ExactSizeIterator<Item = ShardSegmentRoot> + Send + Sync + 'static;
    fn previous_super_segment_header(
        &self,
        block_number: BlockNumber,
    ) -> Option<SuperSegmentHeader>;
    fn shard_segment_roots(
        &self,
        block_number: BlockNumber,
    ) -> Result<StdArc<[ShardSegmentRoot]>, ShardSegmentRootsError>;
}
Expand description

Chain info for derive_super_segments_for_block().

Must have access to enough parent blocks.

Required Methods§

Source

fn get_genesis_segment_root( &self, ) -> Result<SegmentRoot, DeriveSuperSegmentForBlockError>

Get genesis segment root of the beacon chain

Source

fn segment_roots_for_block( &self, block_number: BlockNumber, ) -> impl ExactSizeIterator<Item = ShardSegmentRoot> + Send + Sync + 'static

Get segment roots that are expected to be included at specified block number

Source

fn previous_super_segment_header( &self, block_number: BlockNumber, ) -> Option<SuperSegmentHeader>

Returns the previous super segment header for the block built with the specified number

Source

fn shard_segment_roots( &self, block_number: BlockNumber, ) -> Result<StdArc<[ShardSegmentRoot]>, ShardSegmentRootsError>

Returns intermediate and leaf shard segment roots included in the specified block number.

NOTE: Since blocks at this depth are already confirmed, only a block number is needed as a reference.

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§

Source§

impl<T> DeriveSuperSegmentsForBlockChainInfo for T
where T: BeaconChainInfo,