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§
Sourcefn subscribe_blocks(&self, tx: Sender<Block>) -> impl Future<Output = ()> + Send
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.
Provided Methods§
Sourcefn get_or_fetch_previous_block(
&self,
previous_block_hashes: &AllocRingBuffer<B256>,
current_block_number: u64,
offset: usize,
) -> impl Future<Output = Result<B256>> + Send
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
.
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.