mirror of
https://github.com/paradigmxyz/reth.git
synced 2026-01-28 00:28:20 -05:00
chore: move pending_with_provider to a struct fn (#9850)
This commit is contained in:
@@ -1,9 +1,8 @@
|
||||
use crate::{
|
||||
providers::{BundleStateProvider, StaticFileProvider},
|
||||
AccountReader, BlockHashReader, BlockIdReader, BlockNumReader, BlockReader, BlockReaderIdExt,
|
||||
BlockSource, CanonChainTracker, CanonStateNotifications, CanonStateSubscriptions,
|
||||
ChainSpecProvider, ChangeSetReader, DatabaseProviderFactory, DatabaseProviderRO,
|
||||
EvmEnvProvider, FullExecutionDataProvider, HeaderProvider, ProviderError, ProviderFactory,
|
||||
providers::StaticFileProvider, AccountReader, BlockHashReader, BlockIdReader, BlockNumReader,
|
||||
BlockReader, BlockReaderIdExt, BlockSource, CanonChainTracker, CanonStateNotifications,
|
||||
CanonStateSubscriptions, ChainSpecProvider, ChangeSetReader, DatabaseProviderFactory,
|
||||
DatabaseProviderRO, EvmEnvProvider, HeaderProvider, ProviderError, ProviderFactory,
|
||||
PruneCheckpointReader, ReceiptProvider, ReceiptProviderIdExt, RequestsProvider,
|
||||
StageCheckpointReader, StateProviderBox, StateProviderFactory, StaticFileProviderFactory,
|
||||
TransactionVariant, TransactionsProvider, WithdrawalsProvider,
|
||||
@@ -646,16 +645,6 @@ where
|
||||
}
|
||||
Ok(None)
|
||||
}
|
||||
|
||||
fn pending_with_provider(
|
||||
&self,
|
||||
bundle_state_data: Box<dyn FullExecutionDataProvider>,
|
||||
) -> ProviderResult<StateProviderBox> {
|
||||
let state_provider = self.pending()?;
|
||||
|
||||
let bundle_state_provider = BundleStateProvider::new(state_provider, bundle_state_data);
|
||||
Ok(Box::new(bundle_state_provider))
|
||||
}
|
||||
}
|
||||
|
||||
impl<DB> CanonChainTracker for BlockchainProvider2<DB>
|
||||
|
||||
@@ -123,12 +123,7 @@ where
|
||||
None => Err(ProviderError::HeaderNotFound(best.best_number.into())),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl<DB> BlockchainProvider<DB>
|
||||
where
|
||||
DB: Database,
|
||||
{
|
||||
/// Ensures that the given block number is canonical (synced)
|
||||
///
|
||||
/// This is a helper for guarding the [`HistoricalStateProvider`] against block numbers that are
|
||||
@@ -148,6 +143,26 @@ where
|
||||
}
|
||||
}
|
||||
|
||||
impl<DB> BlockchainProvider<DB>
|
||||
where
|
||||
Self: StateProviderFactory,
|
||||
DB: Database,
|
||||
{
|
||||
/// Return a [`StateProviderBox`] that contains bundle state data provider.
|
||||
/// Used to inspect or execute transaction on the pending state.
|
||||
fn pending_with_provider(
|
||||
&self,
|
||||
bundle_state_data: Box<dyn FullExecutionDataProvider>,
|
||||
) -> ProviderResult<StateProviderBox> {
|
||||
let canonical_fork = bundle_state_data.canonical_fork();
|
||||
trace!(target: "providers::blockchain", ?canonical_fork, "Returning post state provider");
|
||||
|
||||
let state_provider = self.history_by_block_hash(canonical_fork.hash)?;
|
||||
let bundle_state_provider = BundleStateProvider::new(state_provider, bundle_state_data);
|
||||
Ok(Box::new(bundle_state_provider))
|
||||
}
|
||||
}
|
||||
|
||||
impl<DB> DatabaseProviderFactory<DB> for BlockchainProvider<DB>
|
||||
where
|
||||
DB: Database,
|
||||
@@ -663,18 +678,6 @@ where
|
||||
}
|
||||
Ok(None)
|
||||
}
|
||||
|
||||
fn pending_with_provider(
|
||||
&self,
|
||||
bundle_state_data: Box<dyn FullExecutionDataProvider>,
|
||||
) -> ProviderResult<StateProviderBox> {
|
||||
let canonical_fork = bundle_state_data.canonical_fork();
|
||||
trace!(target: "providers::blockchain", ?canonical_fork, "Returning post state provider");
|
||||
|
||||
let state_provider = self.history_by_block_hash(canonical_fork.hash)?;
|
||||
let bundle_state_provider = BundleStateProvider::new(state_provider, bundle_state_data);
|
||||
Ok(Box::new(bundle_state_provider))
|
||||
}
|
||||
}
|
||||
|
||||
impl<DB> BlockchainTreeEngine for BlockchainProvider<DB>
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
use crate::{
|
||||
traits::{BlockSource, ReceiptProvider},
|
||||
AccountReader, BlockHashReader, BlockIdReader, BlockNumReader, BlockReader, BlockReaderIdExt,
|
||||
ChainSpecProvider, ChangeSetReader, EvmEnvProvider, FullExecutionDataProvider, HeaderProvider,
|
||||
ReceiptProviderIdExt, RequestsProvider, StateProvider, StateProviderBox, StateProviderFactory,
|
||||
StateRootProvider, TransactionVariant, TransactionsProvider, WithdrawalsProvider,
|
||||
ChainSpecProvider, ChangeSetReader, EvmEnvProvider, HeaderProvider, ReceiptProviderIdExt,
|
||||
RequestsProvider, StateProvider, StateProviderBox, StateProviderFactory, StateRootProvider,
|
||||
TransactionVariant, TransactionsProvider, WithdrawalsProvider,
|
||||
};
|
||||
use parking_lot::Mutex;
|
||||
use reth_chainspec::{ChainInfo, ChainSpec};
|
||||
@@ -661,13 +661,6 @@ impl StateProviderFactory for MockEthProvider {
|
||||
fn pending_state_by_hash(&self, _block_hash: B256) -> ProviderResult<Option<StateProviderBox>> {
|
||||
Ok(Some(Box::new(self.clone())))
|
||||
}
|
||||
|
||||
fn pending_with_provider<'a>(
|
||||
&'a self,
|
||||
_bundle_state_data: Box<dyn FullExecutionDataProvider + 'a>,
|
||||
) -> ProviderResult<StateProviderBox> {
|
||||
Ok(Box::new(self.clone()))
|
||||
}
|
||||
}
|
||||
|
||||
impl WithdrawalsProvider for MockEthProvider {
|
||||
|
||||
@@ -425,13 +425,6 @@ impl StateProviderFactory for NoopProvider {
|
||||
fn pending_state_by_hash(&self, _block_hash: B256) -> ProviderResult<Option<StateProviderBox>> {
|
||||
Ok(Some(Box::new(*self)))
|
||||
}
|
||||
|
||||
fn pending_with_provider<'a>(
|
||||
&'a self,
|
||||
_bundle_state_data: Box<dyn crate::FullExecutionDataProvider + 'a>,
|
||||
) -> ProviderResult<StateProviderBox> {
|
||||
Ok(Box::new(*self))
|
||||
}
|
||||
}
|
||||
|
||||
impl StageCheckpointReader for NoopProvider {
|
||||
|
||||
@@ -172,13 +172,6 @@ pub trait StateProviderFactory: BlockIdReader + Send + Sync {
|
||||
///
|
||||
/// If the block couldn't be found, returns `None`.
|
||||
fn pending_state_by_hash(&self, block_hash: B256) -> ProviderResult<Option<StateProviderBox>>;
|
||||
|
||||
/// Return a [StateProvider] that contains bundle state data provider.
|
||||
/// Used to inspect or execute transaction on the pending state.
|
||||
fn pending_with_provider(
|
||||
&self,
|
||||
bundle_state_data: Box<dyn FullExecutionDataProvider>,
|
||||
) -> ProviderResult<StateProviderBox>;
|
||||
}
|
||||
|
||||
/// Blockchain trait provider that gives access to the blockchain state that is not yet committed
|
||||
|
||||
Reference in New Issue
Block a user