Trait reth_consensus_debug_client::BlockProvider

source ·
pub trait BlockProvider:
    Send
    + Sync
    + 'static {
    // Required methods
    fn subscribe_blocks(
        &self,
        tx: Sender<Block>,
    ) -> impl Future<Output = ()> + Send;
    fn get_block(
        &self,
        block_number: u64,
    ) -> impl Future<Output = Result<Block>> + Send;

    // Provided method
    fn get_or_fetch_previous_block(
        &self,
        previous_block_hashes: &AllocRingBuffer<B256>,
        current_block_number: u64,
        offset: usize,
    ) -> impl Future<Output = Result<B256>> + Send { ... }
}
Expand description

Supplies consensus client with new blocks sent in tx and a callback to find specific blocks by number to fetch past finalized and safe blocks.

Required Methods§

source

fn subscribe_blocks(&self, tx: Sender<Block>) -> impl Future<Output = ()> + Send

Runs a block provider to send new blocks to the given sender.

Note: This is expected to be spawned in a separate task.

source

fn get_block( &self, block_number: u64, ) -> impl Future<Output = Result<Block>> + Send

Get a past block by number.

Provided Methods§

source

fn get_or_fetch_previous_block( &self, previous_block_hashes: &AllocRingBuffer<B256>, current_block_number: u64, offset: usize, ) -> impl Future<Output = Result<B256>> + Send

Get previous block hash using previous block hash buffer. If it isn’t available (buffer started more recently than offset), fetch it using get_block.

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

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

source§

fn subscribe_blocks(&self, tx: Sender<Block>) -> impl Future<Output = ()> + Send

source§

fn get_block( &self, block_number: u64, ) -> impl Future<Output = Result<Block>> + Send

source§

fn get_or_fetch_previous_block( &self, previous_block_hashes: &AllocRingBuffer<B256>, current_block_number: u64, offset: usize, ) -> impl Future<Output = Result<B256>> + Send

source§

impl<T: BlockProvider + ?Sized> BlockProvider for Box<T>
where Box<T>: Send + Sync + 'static,

source§

fn subscribe_blocks(&self, tx: Sender<Block>) -> impl Future<Output = ()> + Send

source§

fn get_block( &self, block_number: u64, ) -> impl Future<Output = Result<Block>> + Send

source§

fn get_or_fetch_previous_block( &self, previous_block_hashes: &AllocRingBuffer<B256>, current_block_number: u64, offset: usize, ) -> impl Future<Output = Result<B256>> + Send

source§

impl<T: BlockProvider + ?Sized> BlockProvider for Arc<T>
where Arc<T>: Send + Sync + 'static,

source§

fn subscribe_blocks(&self, tx: Sender<Block>) -> impl Future<Output = ()> + Send

source§

fn get_block( &self, block_number: u64, ) -> impl Future<Output = Result<Block>> + Send

source§

fn get_or_fetch_previous_block( &self, previous_block_hashes: &AllocRingBuffer<B256>, current_block_number: u64, offset: usize, ) -> impl Future<Output = Result<B256>> + Send

Implementors§