Trait reth_storage_api::HeaderProvider

source ·
pub trait HeaderProvider: Send + Sync {
    // Required methods
    fn header(&self, block_hash: &BlockHash) -> ProviderResult<Option<Header>>;
    fn header_by_number(&self, num: u64) -> ProviderResult<Option<Header>>;
    fn header_td(&self, hash: &BlockHash) -> ProviderResult<Option<U256>>;
    fn header_td_by_number(
        &self,
        number: BlockNumber,
    ) -> ProviderResult<Option<U256>>;
    fn headers_range(
        &self,
        range: impl RangeBounds<BlockNumber>,
    ) -> ProviderResult<Vec<Header>>;
    fn sealed_header(
        &self,
        number: BlockNumber,
    ) -> ProviderResult<Option<SealedHeader>>;
    fn sealed_headers_while(
        &self,
        range: impl RangeBounds<BlockNumber>,
        predicate: impl FnMut(&SealedHeader) -> bool,
    ) -> ProviderResult<Vec<SealedHeader>>;

    // Provided methods
    fn is_known(&self, block_hash: &BlockHash) -> ProviderResult<bool> { ... }
    fn header_by_hash_or_number(
        &self,
        hash_or_num: BlockHashOrNumber,
    ) -> ProviderResult<Option<Header>> { ... }
    fn sealed_headers_range(
        &self,
        range: impl RangeBounds<BlockNumber>,
    ) -> ProviderResult<Vec<SealedHeader>> { ... }
}
Expand description

Client trait for fetching Header related data.

Required Methods§

source

fn header(&self, block_hash: &BlockHash) -> ProviderResult<Option<Header>>

Get header by block hash

source

fn header_by_number(&self, num: u64) -> ProviderResult<Option<Header>>

Get header by block number

source

fn header_td(&self, hash: &BlockHash) -> ProviderResult<Option<U256>>

Get total difficulty by block hash.

source

fn header_td_by_number( &self, number: BlockNumber, ) -> ProviderResult<Option<U256>>

Get total difficulty by block number.

source

fn headers_range( &self, range: impl RangeBounds<BlockNumber>, ) -> ProviderResult<Vec<Header>>

Get headers in range of block numbers

source

fn sealed_header( &self, number: BlockNumber, ) -> ProviderResult<Option<SealedHeader>>

Get a single sealed header by block number.

source

fn sealed_headers_while( &self, range: impl RangeBounds<BlockNumber>, predicate: impl FnMut(&SealedHeader) -> bool, ) -> ProviderResult<Vec<SealedHeader>>

Get sealed headers while predicate returns true or the range is exhausted.

Provided Methods§

source

fn is_known(&self, block_hash: &BlockHash) -> ProviderResult<bool>

Check if block is known

source

fn header_by_hash_or_number( &self, hash_or_num: BlockHashOrNumber, ) -> ProviderResult<Option<Header>>

Get header by block number or hash

source

fn sealed_headers_range( &self, range: impl RangeBounds<BlockNumber>, ) -> ProviderResult<Vec<SealedHeader>>

Get headers in range of block numbers.

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl<'a, T: 'a + HeaderProvider + ?Sized> HeaderProvider for &'a T
where &'a T: Send + Sync,

source§

fn is_known(&self, block_hash: &BlockHash) -> ProviderResult<bool>

source§

fn header(&self, block_hash: &BlockHash) -> ProviderResult<Option<Header>>

source§

fn header_by_number(&self, num: u64) -> ProviderResult<Option<Header>>

source§

fn header_by_hash_or_number( &self, hash_or_num: BlockHashOrNumber, ) -> ProviderResult<Option<Header>>

source§

fn header_td(&self, hash: &BlockHash) -> ProviderResult<Option<U256>>

source§

fn header_td_by_number( &self, number: BlockNumber, ) -> ProviderResult<Option<U256>>

source§

fn headers_range( &self, range: impl RangeBounds<BlockNumber>, ) -> ProviderResult<Vec<Header>>

source§

fn sealed_header( &self, number: BlockNumber, ) -> ProviderResult<Option<SealedHeader>>

source§

fn sealed_headers_range( &self, range: impl RangeBounds<BlockNumber>, ) -> ProviderResult<Vec<SealedHeader>>

source§

fn sealed_headers_while( &self, range: impl RangeBounds<BlockNumber>, predicate: impl FnMut(&SealedHeader) -> bool, ) -> ProviderResult<Vec<SealedHeader>>

source§

impl<T: HeaderProvider + ?Sized> HeaderProvider for Arc<T>
where Arc<T>: Send + Sync,

source§

fn is_known(&self, block_hash: &BlockHash) -> ProviderResult<bool>

source§

fn header(&self, block_hash: &BlockHash) -> ProviderResult<Option<Header>>

source§

fn header_by_number(&self, num: u64) -> ProviderResult<Option<Header>>

source§

fn header_by_hash_or_number( &self, hash_or_num: BlockHashOrNumber, ) -> ProviderResult<Option<Header>>

source§

fn header_td(&self, hash: &BlockHash) -> ProviderResult<Option<U256>>

source§

fn header_td_by_number( &self, number: BlockNumber, ) -> ProviderResult<Option<U256>>

source§

fn headers_range( &self, range: impl RangeBounds<BlockNumber>, ) -> ProviderResult<Vec<Header>>

source§

fn sealed_header( &self, number: BlockNumber, ) -> ProviderResult<Option<SealedHeader>>

source§

fn sealed_headers_range( &self, range: impl RangeBounds<BlockNumber>, ) -> ProviderResult<Vec<SealedHeader>>

source§

fn sealed_headers_while( &self, range: impl RangeBounds<BlockNumber>, predicate: impl FnMut(&SealedHeader) -> bool, ) -> ProviderResult<Vec<SealedHeader>>

Implementors§