chore: add BlockBodyIndicesProvider trait (#13347)

This commit is contained in:
joshieDo
2024-12-12 13:49:44 +00:00
committed by GitHub
parent cdb03ac0b1
commit 59fb0e210d
14 changed files with 136 additions and 112 deletions

View File

@ -1,10 +1,9 @@
use crate::{
BlockNumReader, HeaderProvider, OmmersProvider, ReceiptProvider, ReceiptProviderIdExt,
TransactionVariant, TransactionsProvider, WithdrawalsProvider,
BlockBodyIndicesProvider, BlockNumReader, HeaderProvider, OmmersProvider, ReceiptProvider,
ReceiptProviderIdExt, TransactionVariant, TransactionsProvider, WithdrawalsProvider,
};
use alloy_eips::{BlockHashOrNumber, BlockId, BlockNumberOrTag};
use alloy_primitives::{BlockNumber, B256};
use reth_db_models::StoredBlockBodyIndices;
use reth_primitives::{BlockWithSenders, SealedBlockFor, SealedBlockWithSenders, SealedHeader};
use reth_storage_errors::provider::ProviderResult;
use std::ops::RangeInclusive;
@ -50,6 +49,7 @@ pub type ProviderBlock<P> = <P as BlockReader>::Block;
pub trait BlockReader:
BlockNumReader
+ HeaderProvider
+ BlockBodyIndicesProvider
+ TransactionsProvider
+ ReceiptProvider
+ WithdrawalsProvider
@ -113,11 +113,6 @@ pub trait BlockReader:
self.block(num.into())
}
/// Returns the block body indices with matching number from database.
///
/// Returns `None` if block is not found.
fn block_body_indices(&self, num: u64) -> ProviderResult<Option<StoredBlockBodyIndices>>;
/// Returns the block with senders with matching number or hash from database.
///
/// Returns the block's transactions in the requested variant.
@ -192,9 +187,6 @@ impl<T: BlockReader> BlockReader for std::sync::Arc<T> {
fn block_by_number(&self, num: u64) -> ProviderResult<Option<Self::Block>> {
T::block_by_number(self, num)
}
fn block_body_indices(&self, num: u64) -> ProviderResult<Option<StoredBlockBodyIndices>> {
T::block_body_indices(self, num)
}
fn block_with_senders(
&self,
id: BlockHashOrNumber,
@ -258,9 +250,6 @@ impl<T: BlockReader> BlockReader for &T {
fn block_by_number(&self, num: u64) -> ProviderResult<Option<Self::Block>> {
T::block_by_number(self, num)
}
fn block_body_indices(&self, num: u64) -> ProviderResult<Option<StoredBlockBodyIndices>> {
T::block_body_indices(self, num)
}
fn block_with_senders(
&self,
id: BlockHashOrNumber,

View File

@ -0,0 +1,11 @@
use reth_db_models::StoredBlockBodyIndices;
use reth_storage_errors::provider::ProviderResult;
/// Client trait for fetching block body indices related data.
#[auto_impl::auto_impl(&, Arc)]
pub trait BlockBodyIndicesProvider: Send + Sync {
/// Returns the block body indices with matching number from database.
///
/// Returns `None` if block is not found.
fn block_body_indices(&self, num: u64) -> ProviderResult<Option<StoredBlockBodyIndices>>;
}

View File

@ -76,3 +76,6 @@ pub use legacy::*;
mod primitives;
pub use primitives::*;
mod block_indices;
pub use block_indices::*;

View File

@ -1,12 +1,12 @@
//! Various noop implementations for traits.
use crate::{
AccountReader, BlockHashReader, BlockIdReader, BlockNumReader, BlockReader, BlockReaderIdExt,
BlockSource, ChangeSetReader, HashedPostStateProvider, HeaderProvider, NodePrimitivesProvider,
OmmersProvider, PruneCheckpointReader, ReceiptProvider, ReceiptProviderIdExt,
StageCheckpointReader, StateProofProvider, StateProvider, StateProviderBox,
StateProviderFactory, StateRootProvider, StorageRootProvider, TransactionVariant,
TransactionsProvider, WithdrawalsProvider,
AccountReader, BlockBodyIndicesProvider, BlockHashReader, BlockIdReader, BlockNumReader,
BlockReader, BlockReaderIdExt, BlockSource, ChangeSetReader, HashedPostStateProvider,
HeaderProvider, NodePrimitivesProvider, OmmersProvider, PruneCheckpointReader, ReceiptProvider,
ReceiptProviderIdExt, StageCheckpointReader, StateProofProvider, StateProvider,
StateProviderBox, StateProviderFactory, StateRootProvider, StorageRootProvider,
TransactionVariant, TransactionsProvider, WithdrawalsProvider,
};
use alloy_eips::{
eip4895::{Withdrawal, Withdrawals},
@ -185,10 +185,6 @@ impl<C: Send + Sync, N: NodePrimitives> BlockReader for NoopProvider<C, N> {
Ok(None)
}
fn block_body_indices(&self, _num: u64) -> ProviderResult<Option<StoredBlockBodyIndices>> {
Ok(None)
}
fn block_with_senders(
&self,
_id: BlockHashOrNumber,
@ -575,3 +571,9 @@ impl<C: Send + Sync, N: NodePrimitives> PruneCheckpointReader for NoopProvider<C
impl<C: Send + Sync, N: NodePrimitives> NodePrimitivesProvider for NoopProvider<C, N> {
type Primitives = N;
}
impl<C: Send + Sync, N: Send + Sync> BlockBodyIndicesProvider for NoopProvider<C, N> {
fn block_body_indices(&self, _num: u64) -> ProviderResult<Option<StoredBlockBodyIndices>> {
Ok(None)
}
}