mirror of
https://github.com/hl-archive-node/nanoreth.git
synced 2025-12-06 10:59:55 +00:00
chore: rm evmenvprovider trait (#13503)
This commit is contained in:
2
Cargo.lock
generated
2
Cargo.lock
generated
@ -7695,7 +7695,6 @@ dependencies = [
|
||||
"reth-primitives-traits",
|
||||
"reth-prune-types",
|
||||
"reth-revm",
|
||||
"reth-storage-api",
|
||||
"reth-storage-errors",
|
||||
"revm",
|
||||
"revm-primitives",
|
||||
@ -9126,7 +9125,6 @@ dependencies = [
|
||||
"reth-chainspec",
|
||||
"reth-engine-primitives",
|
||||
"reth-ethereum-engine-primitives",
|
||||
"reth-evm",
|
||||
"reth-metrics",
|
||||
"reth-payload-builder",
|
||||
"reth-payload-builder-primitives",
|
||||
|
||||
@ -24,8 +24,6 @@ reth-prune-types.workspace = true
|
||||
reth-revm.workspace = true
|
||||
reth-storage-errors.workspace = true
|
||||
|
||||
reth-storage-api = { workspace = true, optional = true }
|
||||
|
||||
revm.workspace = true
|
||||
revm-primitives.workspace = true
|
||||
|
||||
@ -68,7 +66,6 @@ test-utils = [
|
||||
"reth-primitives/test-utils",
|
||||
"reth-primitives-traits/test-utils",
|
||||
"reth-revm/test-utils",
|
||||
"dep:reth-storage-api",
|
||||
"revm/test-utils",
|
||||
"reth-prune-types/test-utils"
|
||||
]
|
||||
|
||||
@ -34,7 +34,6 @@ use env::EvmEnv;
|
||||
#[cfg(feature = "std")]
|
||||
pub mod metrics;
|
||||
pub mod noop;
|
||||
pub mod provider;
|
||||
pub mod state_change;
|
||||
pub mod system_calls;
|
||||
#[cfg(any(test, feature = "test-utils"))]
|
||||
|
||||
@ -1,23 +0,0 @@
|
||||
//! Provider trait for populating the EVM environment.
|
||||
|
||||
use crate::{env::EvmEnv, ConfigureEvmEnv};
|
||||
use alloy_consensus::Header;
|
||||
use reth_storage_errors::provider::ProviderResult;
|
||||
|
||||
/// A provider type that knows chain specific information required to configure a
|
||||
/// [`EvmEnv`].
|
||||
///
|
||||
/// This type is mainly used to provide required data to configure the EVM environment that is
|
||||
/// not part of the block and stored separately (on disk), for example the total difficulty.
|
||||
#[auto_impl::auto_impl(&, Arc)]
|
||||
pub trait EvmEnvProvider<H = Header>: Send + Sync {
|
||||
/// Fills the default [`EvmEnv`] fields with values specific to the
|
||||
/// given block header.
|
||||
fn env_with_header<EvmConfig>(
|
||||
&self,
|
||||
header: &H,
|
||||
evm_config: EvmConfig,
|
||||
) -> ProviderResult<EvmEnv>
|
||||
where
|
||||
EvmConfig: ConfigureEvmEnv<Header = H>;
|
||||
}
|
||||
@ -1,14 +1,11 @@
|
||||
//! Helpers for testing.
|
||||
|
||||
use crate::{
|
||||
env::EvmEnv,
|
||||
execute::{
|
||||
BasicBatchExecutor, BasicBlockExecutor, BatchExecutor, BlockExecutionOutput,
|
||||
BlockExecutionStrategy, BlockExecutorProvider, Executor,
|
||||
},
|
||||
provider::EvmEnvProvider,
|
||||
system_calls::OnStateHook,
|
||||
ConfigureEvmEnv,
|
||||
};
|
||||
use alloy_eips::eip7685::Requests;
|
||||
use alloy_primitives::BlockNumber;
|
||||
@ -17,26 +14,11 @@ use reth_execution_errors::BlockExecutionError;
|
||||
use reth_execution_types::ExecutionOutcome;
|
||||
use reth_primitives::{BlockWithSenders, EthPrimitives, NodePrimitives, Receipt, Receipts};
|
||||
use reth_prune_types::PruneModes;
|
||||
use reth_storage_errors::provider::{ProviderError, ProviderResult};
|
||||
use reth_storage_errors::provider::ProviderError;
|
||||
use revm::State;
|
||||
use revm_primitives::db::Database;
|
||||
use std::{fmt::Display, sync::Arc};
|
||||
|
||||
impl<C: Send + Sync, N: NodePrimitives> EvmEnvProvider<N::BlockHeader>
|
||||
for reth_storage_api::noop::NoopProvider<C, N>
|
||||
{
|
||||
fn env_with_header<EvmConfig>(
|
||||
&self,
|
||||
header: &N::BlockHeader,
|
||||
evm_config: EvmConfig,
|
||||
) -> ProviderResult<EvmEnv>
|
||||
where
|
||||
EvmConfig: ConfigureEvmEnv<Header = N::BlockHeader>,
|
||||
{
|
||||
Ok(evm_config.cfg_and_block_env(header))
|
||||
}
|
||||
}
|
||||
|
||||
/// A [`BlockExecutorProvider`] that returns mocked execution results.
|
||||
#[derive(Clone, Debug, Default)]
|
||||
pub struct MockExecutorProvider {
|
||||
|
||||
@ -21,8 +21,8 @@ use reth_network_api::NetworkInfo;
|
||||
use reth_node_builder::EthApiBuilderCtx;
|
||||
use reth_provider::{
|
||||
BlockNumReader, BlockReader, BlockReaderIdExt, CanonStateSubscriptions, ChainSpecProvider,
|
||||
EvmEnvProvider, NodePrimitivesProvider, ProviderBlock, ProviderHeader, ProviderReceipt,
|
||||
ProviderTx, StageCheckpointReader, StateProviderFactory,
|
||||
NodePrimitivesProvider, ProviderBlock, ProviderHeader, ProviderReceipt, ProviderTx,
|
||||
StageCheckpointReader, StateProviderFactory,
|
||||
};
|
||||
use reth_rpc::eth::{core::EthApiInner, DevSigner};
|
||||
use reth_rpc_eth_api::{
|
||||
@ -203,7 +203,6 @@ where
|
||||
Self: LoadBlock<Provider = N::Provider>,
|
||||
N: OpNodeCore<
|
||||
Provider: BlockReaderIdExt
|
||||
+ EvmEnvProvider
|
||||
+ ChainSpecProvider<ChainSpec: EthChainSpec + EthereumHardforks>
|
||||
+ StateProviderFactory,
|
||||
>,
|
||||
|
||||
@ -12,8 +12,8 @@ use reth_evm::ConfigureEvm;
|
||||
use reth_optimism_consensus::calculate_receipt_root_no_memo_optimism;
|
||||
use reth_primitives::{logs_bloom, BlockBody, Receipt, SealedBlockWithSenders, TransactionSigned};
|
||||
use reth_provider::{
|
||||
BlockReader, BlockReaderIdExt, ChainSpecProvider, EvmEnvProvider, ProviderBlock,
|
||||
ProviderHeader, ProviderReceipt, ProviderTx, ReceiptProvider, StateProviderFactory,
|
||||
BlockReader, BlockReaderIdExt, ChainSpecProvider, ProviderBlock, ProviderHeader,
|
||||
ProviderReceipt, ProviderTx, ReceiptProvider, StateProviderFactory,
|
||||
};
|
||||
use reth_rpc_eth_api::{
|
||||
helpers::{LoadPendingBlock, SpawnBlocking},
|
||||
@ -37,8 +37,7 @@ where
|
||||
Block = reth_primitives::Block,
|
||||
Receipt = reth_primitives::Receipt,
|
||||
Header = reth_primitives::Header,
|
||||
> + EvmEnvProvider
|
||||
+ ChainSpecProvider<ChainSpec: EthChainSpec + EthereumHardforks>
|
||||
> + ChainSpecProvider<ChainSpec: EthChainSpec + EthereumHardforks>
|
||||
+ StateProviderFactory,
|
||||
Pool: TransactionPool<Transaction: PoolTransaction<Consensus = ProviderTx<N::Provider>>>,
|
||||
Evm: ConfigureEvm<Header = Header, Transaction = TransactionSigned>,
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
use reth_evm::ConfigureEvm;
|
||||
use reth_primitives::NodePrimitives;
|
||||
use reth_provider::{BlockReader, CanonStateSubscriptions, EvmEnvProvider, StateProviderFactory};
|
||||
use reth_provider::{BlockReader, CanonStateSubscriptions, StateProviderFactory};
|
||||
use reth_rpc::{EthFilter, EthPubSub};
|
||||
use reth_rpc_eth_api::EthApiTypes;
|
||||
use reth_rpc_eth_types::{
|
||||
@ -31,8 +31,7 @@ where
|
||||
+ BlockReader<
|
||||
Block = <Events::Primitives as NodePrimitives>::Block,
|
||||
Receipt = <Events::Primitives as NodePrimitives>::Receipt,
|
||||
> + EvmEnvProvider
|
||||
+ Clone
|
||||
> + Clone
|
||||
+ Unpin
|
||||
+ 'static,
|
||||
Events: CanonStateSubscriptions + Clone + 'static,
|
||||
|
||||
@ -233,8 +233,7 @@ use reth_network_api::{noop::NoopNetwork, NetworkInfo, Peers};
|
||||
use reth_primitives::NodePrimitives;
|
||||
use reth_provider::{
|
||||
AccountReader, BlockReader, CanonStateSubscriptions, ChainSpecProvider, ChangeSetReader,
|
||||
EvmEnvProvider, FullRpcProvider, ProviderBlock, ProviderHeader, ProviderReceipt,
|
||||
StateProviderFactory,
|
||||
FullRpcProvider, ProviderBlock, ProviderHeader, ProviderReceipt, StateProviderFactory,
|
||||
};
|
||||
use reth_rpc::{
|
||||
AdminApi, DebugApi, EngineEthApi, EthBundle, MinerApi, NetApi, OtterscanApi, RPCApi, RethApi,
|
||||
@ -403,7 +402,7 @@ impl<Provider, Pool, Network, Tasks, Events, EvmConfig, BlockExecutor, Consensus
|
||||
provider: P,
|
||||
) -> RpcModuleBuilder<P, Pool, Network, Tasks, Events, EvmConfig, BlockExecutor, Consensus>
|
||||
where
|
||||
P: BlockReader + StateProviderFactory + EvmEnvProvider + 'static,
|
||||
P: BlockReader + StateProviderFactory + 'static,
|
||||
{
|
||||
let Self { pool, network, executor, events, evm_config, block_executor, consensus, .. } =
|
||||
self;
|
||||
@ -1004,8 +1003,7 @@ where
|
||||
+ BlockReader<
|
||||
Block = <Events::Primitives as NodePrimitives>::Block,
|
||||
Receipt = <Events::Primitives as NodePrimitives>::Receipt,
|
||||
> + EvmEnvProvider
|
||||
+ Clone
|
||||
> + Clone
|
||||
+ Unpin
|
||||
+ 'static,
|
||||
Pool: Send + Sync + Clone + 'static,
|
||||
|
||||
@ -24,7 +24,6 @@ reth-payload-primitives.workspace = true
|
||||
reth-tasks.workspace = true
|
||||
reth-rpc-types-compat.workspace = true
|
||||
reth-engine-primitives.workspace = true
|
||||
reth-evm.workspace = true
|
||||
reth-transaction-pool.workspace = true
|
||||
|
||||
# ethereum
|
||||
|
||||
@ -19,7 +19,6 @@ use parking_lot::Mutex;
|
||||
use reth_beacon_consensus::BeaconConsensusEngineHandle;
|
||||
use reth_chainspec::{EthereumHardforks, Hardforks};
|
||||
use reth_engine_primitives::{EngineTypes, EngineValidator};
|
||||
use reth_evm::provider::EvmEnvProvider;
|
||||
use reth_payload_builder::PayloadStore;
|
||||
use reth_payload_primitives::{
|
||||
validate_payload_timestamp, EngineApiMessageVersion, PayloadBuilderAttributes,
|
||||
@ -80,7 +79,7 @@ struct EngineApiInner<Provider, EngineT: EngineTypes, Pool, Validator, ChainSpec
|
||||
impl<Provider, EngineT, Pool, Validator, ChainSpec>
|
||||
EngineApi<Provider, EngineT, Pool, Validator, ChainSpec>
|
||||
where
|
||||
Provider: HeaderProvider + BlockReader + StateProviderFactory + EvmEnvProvider + 'static,
|
||||
Provider: HeaderProvider + BlockReader + StateProviderFactory + 'static,
|
||||
EngineT: EngineTypes,
|
||||
Pool: TransactionPool + 'static,
|
||||
Validator: EngineValidator<EngineT>,
|
||||
@ -744,7 +743,7 @@ where
|
||||
impl<Provider, EngineT, Pool, Validator, ChainSpec> EngineApiServer<EngineT>
|
||||
for EngineApi<Provider, EngineT, Pool, Validator, ChainSpec>
|
||||
where
|
||||
Provider: HeaderProvider + BlockReader + StateProviderFactory + EvmEnvProvider + 'static,
|
||||
Provider: HeaderProvider + BlockReader + StateProviderFactory + 'static,
|
||||
EngineT: EngineTypes,
|
||||
Pool: TransactionPool + 'static,
|
||||
Validator: EngineValidator<EngineT>,
|
||||
|
||||
@ -18,8 +18,8 @@ use reth_evm::{
|
||||
use reth_primitives::{BlockExt, InvalidTransactionError, SealedBlockWithSenders};
|
||||
use reth_primitives_traits::Receipt;
|
||||
use reth_provider::{
|
||||
BlockReader, BlockReaderIdExt, ChainSpecProvider, EvmEnvProvider, ProviderBlock, ProviderError,
|
||||
ProviderHeader, ProviderReceipt, ProviderTx, ReceiptProvider, StateProviderFactory,
|
||||
BlockReader, BlockReaderIdExt, ChainSpecProvider, ProviderBlock, ProviderError, ProviderHeader,
|
||||
ProviderReceipt, ProviderTx, ReceiptProvider, StateProviderFactory,
|
||||
};
|
||||
use reth_revm::{
|
||||
database::StateProviderDatabase,
|
||||
@ -48,7 +48,6 @@ pub trait LoadPendingBlock:
|
||||
>,
|
||||
> + RpcNodeCore<
|
||||
Provider: BlockReaderIdExt<Receipt: Receipt>
|
||||
+ EvmEnvProvider<ProviderHeader<Self::Provider>>
|
||||
+ ChainSpecProvider<ChainSpec: EthChainSpec + EthereumHardforks>
|
||||
+ StateProviderFactory,
|
||||
Pool: TransactionPool<Transaction: PoolTransaction<Consensus = ProviderTx<Self::Provider>>>,
|
||||
@ -87,12 +86,8 @@ pub trait LoadPendingBlock:
|
||||
// Note: for the PENDING block we assume it is past the known merge block and
|
||||
// thus this will not fail when looking up the total
|
||||
// difficulty value for the blockenv.
|
||||
let evm_env = self
|
||||
.provider()
|
||||
.env_with_header(block.header(), self.evm_config().clone())
|
||||
.map_err(Self::Error::from_eth_err)?;
|
||||
|
||||
let EvmEnv { cfg_env_with_handler_cfg, block_env } = evm_env;
|
||||
let EvmEnv { cfg_env_with_handler_cfg, block_env } =
|
||||
self.evm_config().cfg_and_block_env(block.header());
|
||||
|
||||
return Ok(PendingBlockEnv::new(
|
||||
cfg_env_with_handler_cfg,
|
||||
|
||||
@ -10,10 +10,10 @@ use alloy_serde::JsonStorageKey;
|
||||
use futures::Future;
|
||||
use reth_chainspec::{EthChainSpec, EthereumHardforks};
|
||||
use reth_errors::RethError;
|
||||
use reth_evm::env::EvmEnv;
|
||||
use reth_evm::{env::EvmEnv, ConfigureEvmEnv};
|
||||
use reth_provider::{
|
||||
BlockIdReader, BlockNumReader, ChainSpecProvider, EvmEnvProvider as _, StateProvider,
|
||||
StateProviderBox, StateProviderFactory,
|
||||
BlockIdReader, BlockNumReader, ChainSpecProvider, StateProvider, StateProviderBox,
|
||||
StateProviderFactory,
|
||||
};
|
||||
use reth_rpc_eth_types::{EthApiError, PendingBlockEnv, RpcInvalidTransactionError};
|
||||
use reth_transaction_pool::TransactionPool;
|
||||
@ -231,10 +231,8 @@ pub trait LoadState:
|
||||
|
||||
let header =
|
||||
self.cache().get_header(block_hash).await.map_err(Self::Error::from_eth_err)?;
|
||||
let evm_env = self
|
||||
.provider()
|
||||
.env_with_header(&header, self.evm_config().clone())
|
||||
.map_err(Self::Error::from_eth_err)?;
|
||||
let evm_env = self.evm_config().cfg_and_block_env(&header);
|
||||
|
||||
Ok((evm_env, block_hash.into()))
|
||||
}
|
||||
}
|
||||
|
||||
@ -23,8 +23,8 @@ use reth_evm::{
|
||||
use reth_primitives::{BlockExt, NodePrimitives, ReceiptWithBloom, SealedBlockWithSenders};
|
||||
use reth_primitives_traits::{Block as _, BlockBody, SignedTransaction};
|
||||
use reth_provider::{
|
||||
BlockIdReader, BlockReaderIdExt, ChainSpecProvider, EvmEnvProvider, HeaderProvider,
|
||||
ProviderBlock, ReceiptProviderIdExt, StateProofProvider, TransactionVariant,
|
||||
BlockIdReader, BlockReaderIdExt, ChainSpecProvider, HeaderProvider, ProviderBlock,
|
||||
ReceiptProviderIdExt, StateProofProvider, TransactionVariant,
|
||||
};
|
||||
use reth_revm::{database::StateProviderDatabase, witness::ExecutionWitnessRecord};
|
||||
use reth_rpc_api::DebugApiServer;
|
||||
@ -162,11 +162,8 @@ where
|
||||
.map_err(BlockError::RlpDecodeRawBlock)
|
||||
.map_err(Eth::Error::from_eth_err)?;
|
||||
|
||||
// Note: we assume the block has a valid height
|
||||
let EvmEnv { cfg_env_with_handler_cfg, block_env } = self
|
||||
.provider()
|
||||
.env_with_header(block.header(), self.eth_api().evm_config().clone())
|
||||
.map_err(Eth::Error::from_eth_err)?;
|
||||
let EvmEnv { cfg_env_with_handler_cfg, block_env } =
|
||||
self.eth_api().evm_config().cfg_and_block_env(block.header());
|
||||
|
||||
// Depending on EIP-2 we need to recover the transactions differently
|
||||
let senders =
|
||||
|
||||
@ -464,7 +464,7 @@ mod tests {
|
||||
use reth_primitives::{Block, BlockBody, TransactionSigned};
|
||||
use reth_provider::{
|
||||
test_utils::{MockEthProvider, NoopProvider},
|
||||
BlockReader, BlockReaderIdExt, ChainSpecProvider, EvmEnvProvider, StateProviderFactory,
|
||||
BlockReader, BlockReaderIdExt, ChainSpecProvider, StateProviderFactory,
|
||||
};
|
||||
use reth_rpc_eth_api::EthApiServer;
|
||||
use reth_rpc_eth_types::{
|
||||
@ -484,7 +484,6 @@ mod tests {
|
||||
Header = reth_primitives::Header,
|
||||
> + BlockReader
|
||||
+ ChainSpecProvider<ChainSpec = ChainSpec>
|
||||
+ EvmEnvProvider
|
||||
+ StateProviderFactory
|
||||
+ Unpin
|
||||
+ Clone
|
||||
|
||||
@ -1,9 +1,7 @@
|
||||
//! Contains RPC handler implementations for fee history.
|
||||
|
||||
use reth_chainspec::{EthChainSpec, EthereumHardforks};
|
||||
use reth_provider::{
|
||||
BlockReader, BlockReaderIdExt, ChainSpecProvider, EvmEnvProvider, StateProviderFactory,
|
||||
};
|
||||
use reth_provider::{BlockReader, BlockReaderIdExt, ChainSpecProvider, StateProviderFactory};
|
||||
use reth_rpc_eth_api::helpers::{EthFees, LoadBlock, LoadFee};
|
||||
use reth_rpc_eth_types::{FeeHistoryCache, GasPriceOracle};
|
||||
|
||||
@ -20,7 +18,6 @@ impl<Provider, Pool, Network, EvmConfig> LoadFee for EthApi<Provider, Pool, Netw
|
||||
where
|
||||
Self: LoadBlock<Provider = Provider>,
|
||||
Provider: BlockReaderIdExt
|
||||
+ EvmEnvProvider
|
||||
+ ChainSpecProvider<ChainSpec: EthChainSpec + EthereumHardforks>
|
||||
+ StateProviderFactory,
|
||||
{
|
||||
|
||||
@ -11,8 +11,8 @@ use reth_primitives::{
|
||||
BlockBody, Receipt,
|
||||
};
|
||||
use reth_provider::{
|
||||
BlockReader, BlockReaderIdExt, ChainSpecProvider, EvmEnvProvider, ProviderBlock,
|
||||
ProviderReceipt, ProviderTx, StateProviderFactory,
|
||||
BlockReader, BlockReaderIdExt, ChainSpecProvider, ProviderBlock, ProviderReceipt, ProviderTx,
|
||||
StateProviderFactory,
|
||||
};
|
||||
use reth_rpc_eth_api::{
|
||||
helpers::{LoadPendingBlock, SpawnBlocking},
|
||||
@ -35,8 +35,7 @@ where
|
||||
Block = reth_primitives::Block,
|
||||
Receipt = reth_primitives::Receipt,
|
||||
Header = reth_primitives::Header,
|
||||
> + EvmEnvProvider
|
||||
+ ChainSpecProvider<ChainSpec: EthChainSpec + EthereumHardforks>
|
||||
> + ChainSpecProvider<ChainSpec: EthChainSpec + EthereumHardforks>
|
||||
+ StateProviderFactory,
|
||||
Pool: TransactionPool<
|
||||
Transaction: PoolTransaction<Consensus = ProviderTx<Self::Provider>>,
|
||||
|
||||
@ -4,8 +4,8 @@ use crate::{
|
||||
AccountReader, BlockHashReader, BlockIdReader, BlockNumReader, BlockReader, BlockReaderIdExt,
|
||||
BlockSource, CanonChainTracker, CanonStateNotifications, CanonStateSubscriptions,
|
||||
ChainSpecProvider, ChainStateBlockReader, ChangeSetReader, DatabaseProvider,
|
||||
DatabaseProviderFactory, EvmEnvProvider, FullProvider, HashedPostStateProvider, HeaderProvider,
|
||||
ProviderError, ProviderFactory, PruneCheckpointReader, ReceiptProvider, ReceiptProviderIdExt,
|
||||
DatabaseProviderFactory, FullProvider, HashedPostStateProvider, HeaderProvider, ProviderError,
|
||||
ProviderFactory, PruneCheckpointReader, ReceiptProvider, ReceiptProviderIdExt,
|
||||
StageCheckpointReader, StateProviderBox, StateProviderFactory, StateReader,
|
||||
StaticFileProviderFactory, TransactionVariant, TransactionsProvider, WithdrawalsProvider,
|
||||
};
|
||||
@ -497,19 +497,6 @@ impl<N: ProviderNodeTypes> StageCheckpointReader for BlockchainProvider2<N> {
|
||||
}
|
||||
}
|
||||
|
||||
impl<N: ProviderNodeTypes> EvmEnvProvider<HeaderTy<N>> for BlockchainProvider2<N> {
|
||||
fn env_with_header<EvmConfig>(
|
||||
&self,
|
||||
header: &HeaderTy<N>,
|
||||
evm_config: EvmConfig,
|
||||
) -> ProviderResult<EvmEnv>
|
||||
where
|
||||
EvmConfig: ConfigureEvmEnv<Header = HeaderTy<N>>,
|
||||
{
|
||||
self.consistent_provider()?.env_with_header(header, evm_config)
|
||||
}
|
||||
}
|
||||
|
||||
impl<N: ProviderNodeTypes> PruneCheckpointReader for BlockchainProvider2<N> {
|
||||
fn get_prune_checkpoint(
|
||||
&self,
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
use super::{DatabaseProviderRO, ProviderFactory, ProviderNodeTypes};
|
||||
use crate::{
|
||||
providers::StaticFileProvider, AccountReader, BlockHashReader, BlockIdReader, BlockNumReader,
|
||||
BlockReader, BlockReaderIdExt, BlockSource, ChainSpecProvider, ChangeSetReader, EvmEnvProvider,
|
||||
HeaderProvider, ProviderError, PruneCheckpointReader, ReceiptProvider, ReceiptProviderIdExt,
|
||||
BlockReader, BlockReaderIdExt, BlockSource, ChainSpecProvider, ChangeSetReader, HeaderProvider,
|
||||
ProviderError, PruneCheckpointReader, ReceiptProvider, ReceiptProviderIdExt,
|
||||
StageCheckpointReader, StateReader, StaticFileProviderFactory, TransactionVariant,
|
||||
TransactionsProvider, WithdrawalsProvider,
|
||||
};
|
||||
@ -17,7 +17,6 @@ use reth_chain_state::{BlockState, CanonicalInMemoryState, MemoryOverlayStatePro
|
||||
use reth_chainspec::{ChainInfo, EthereumHardforks};
|
||||
use reth_db::models::BlockNumberAddress;
|
||||
use reth_db_api::models::{AccountBeforeTx, StoredBlockBodyIndices};
|
||||
use reth_evm::{env::EvmEnv, ConfigureEvmEnv};
|
||||
use reth_execution_types::{BundleStateInit, ExecutionOutcome, RevertsInit};
|
||||
use reth_node_types::{BlockTy, HeaderTy, ReceiptTy, TxTy};
|
||||
use reth_primitives::{
|
||||
@ -1232,19 +1231,6 @@ impl<N: ProviderNodeTypes> StageCheckpointReader for ConsistentProvider<N> {
|
||||
}
|
||||
}
|
||||
|
||||
impl<N: ProviderNodeTypes> EvmEnvProvider<HeaderTy<N>> for ConsistentProvider<N> {
|
||||
fn env_with_header<EvmConfig>(
|
||||
&self,
|
||||
header: &HeaderTy<N>,
|
||||
evm_config: EvmConfig,
|
||||
) -> ProviderResult<EvmEnv>
|
||||
where
|
||||
EvmConfig: ConfigureEvmEnv<Header = HeaderTy<N>>,
|
||||
{
|
||||
Ok(evm_config.cfg_and_block_env(header))
|
||||
}
|
||||
}
|
||||
|
||||
impl<N: ProviderNodeTypes> PruneCheckpointReader for ConsistentProvider<N> {
|
||||
fn get_prune_checkpoint(
|
||||
&self,
|
||||
|
||||
@ -3,9 +3,9 @@ use crate::{
|
||||
to_range,
|
||||
traits::{BlockSource, ReceiptProvider},
|
||||
BlockHashReader, BlockNumReader, BlockReader, ChainSpecProvider, DatabaseProviderFactory,
|
||||
EvmEnvProvider, HashedPostStateProvider, HeaderProvider, HeaderSyncGap, HeaderSyncGapProvider,
|
||||
ProviderError, PruneCheckpointReader, StageCheckpointReader, StateProviderBox,
|
||||
StaticFileProviderFactory, TransactionVariant, TransactionsProvider, WithdrawalsProvider,
|
||||
HashedPostStateProvider, HeaderProvider, HeaderSyncGap, HeaderSyncGapProvider, ProviderError,
|
||||
PruneCheckpointReader, StageCheckpointReader, StateProviderBox, StaticFileProviderFactory,
|
||||
TransactionVariant, TransactionsProvider, WithdrawalsProvider,
|
||||
};
|
||||
use alloy_eips::{
|
||||
eip4895::{Withdrawal, Withdrawals},
|
||||
@ -17,7 +17,6 @@ use reth_chainspec::{ChainInfo, EthereumHardforks};
|
||||
use reth_db::{init_db, mdbx::DatabaseArguments, DatabaseEnv};
|
||||
use reth_db_api::{database::Database, models::StoredBlockBodyIndices};
|
||||
use reth_errors::{RethError, RethResult};
|
||||
use reth_evm::{env::EvmEnv, ConfigureEvmEnv};
|
||||
use reth_node_types::{BlockTy, HeaderTy, NodeTypesWithDB, ReceiptTy, TxTy};
|
||||
use reth_primitives::{
|
||||
BlockWithSenders, SealedBlockFor, SealedBlockWithSenders, SealedHeader, StaticFileSegment,
|
||||
@ -591,19 +590,6 @@ impl<N: ProviderNodeTypes> StageCheckpointReader for ProviderFactory<N> {
|
||||
}
|
||||
}
|
||||
|
||||
impl<N: ProviderNodeTypes> EvmEnvProvider<HeaderTy<N>> for ProviderFactory<N> {
|
||||
fn env_with_header<EvmConfig>(
|
||||
&self,
|
||||
header: &HeaderTy<N>,
|
||||
evm_config: EvmConfig,
|
||||
) -> ProviderResult<EvmEnv>
|
||||
where
|
||||
EvmConfig: ConfigureEvmEnv<Header = HeaderTy<N>>,
|
||||
{
|
||||
self.provider()?.env_with_header(header, evm_config)
|
||||
}
|
||||
}
|
||||
|
||||
impl<N: NodeTypesWithDB> ChainSpecProvider for ProviderFactory<N> {
|
||||
type ChainSpec = N::ChainSpec;
|
||||
|
||||
|
||||
@ -11,12 +11,12 @@ use crate::{
|
||||
},
|
||||
AccountReader, BlockBodyWriter, BlockExecutionWriter, BlockHashReader, BlockNumReader,
|
||||
BlockReader, BlockWriter, BundleStateInit, ChainStateBlockReader, ChainStateBlockWriter,
|
||||
DBProvider, EvmEnvProvider, HashingWriter, HeaderProvider, HeaderSyncGap,
|
||||
HeaderSyncGapProvider, HistoricalStateProvider, HistoricalStateProviderRef, HistoryWriter,
|
||||
LatestStateProvider, LatestStateProviderRef, OriginalValuesKnown, ProviderError,
|
||||
PruneCheckpointReader, PruneCheckpointWriter, RevertsInit, StageCheckpointReader,
|
||||
StateCommitmentProvider, StateProviderBox, StateWriter, StaticFileProviderFactory, StatsReader,
|
||||
StorageLocation, StorageReader, StorageTrieWriter, TransactionVariant, TransactionsProvider,
|
||||
DBProvider, HashingWriter, HeaderProvider, HeaderSyncGap, HeaderSyncGapProvider,
|
||||
HistoricalStateProvider, HistoricalStateProviderRef, HistoryWriter, LatestStateProvider,
|
||||
LatestStateProviderRef, OriginalValuesKnown, ProviderError, PruneCheckpointReader,
|
||||
PruneCheckpointWriter, RevertsInit, StageCheckpointReader, StateCommitmentProvider,
|
||||
StateProviderBox, StateWriter, StaticFileProviderFactory, StatsReader, StorageLocation,
|
||||
StorageReader, StorageTrieWriter, TransactionVariant, TransactionsProvider,
|
||||
TransactionsProviderExt, TrieWriter, WithdrawalsProvider,
|
||||
};
|
||||
use alloy_consensus::{BlockHeader, Header};
|
||||
@ -47,7 +47,6 @@ use reth_db_api::{
|
||||
transaction::{DbTx, DbTxMut},
|
||||
DatabaseError,
|
||||
};
|
||||
use reth_evm::{env::EvmEnv, ConfigureEvmEnv};
|
||||
use reth_execution_types::{Chain, ExecutionOutcome};
|
||||
use reth_network_p2p::headers::downloader::SyncTarget;
|
||||
use reth_node_types::{BlockTy, BodyTy, HeaderTy, NodeTypes, ReceiptTy, TxTy};
|
||||
@ -1640,21 +1639,6 @@ impl<TX: DbTx + 'static, N: NodeTypesForProvider> BlockBodyIndicesProvider
|
||||
}
|
||||
}
|
||||
|
||||
impl<TX: DbTx + 'static, N: NodeTypesForProvider> EvmEnvProvider<HeaderTy<N>>
|
||||
for DatabaseProvider<TX, N>
|
||||
{
|
||||
fn env_with_header<EvmConfig>(
|
||||
&self,
|
||||
header: &HeaderTy<N>,
|
||||
evm_config: EvmConfig,
|
||||
) -> ProviderResult<EvmEnv>
|
||||
where
|
||||
EvmConfig: ConfigureEvmEnv<Header = HeaderTy<N>>,
|
||||
{
|
||||
Ok(evm_config.cfg_and_block_env(header))
|
||||
}
|
||||
}
|
||||
|
||||
impl<TX: DbTx, N: NodeTypes> StageCheckpointReader for DatabaseProvider<TX, N> {
|
||||
fn get_stage_checkpoint(&self, id: StageId) -> ProviderResult<Option<StageCheckpoint>> {
|
||||
Ok(self.tx.get::<tables::StageCheckpoints>(id.to_string())?)
|
||||
|
||||
@ -4,11 +4,10 @@ use crate::{
|
||||
AccountReader, BlockHashReader, BlockIdReader, BlockNumReader, BlockReader, BlockReaderIdExt,
|
||||
BlockSource, BlockchainTreePendingStateProvider, CanonStateNotifications,
|
||||
CanonStateSubscriptions, ChainSpecProvider, ChainStateBlockReader, ChangeSetReader,
|
||||
DatabaseProviderFactory, EvmEnvProvider, FullExecutionDataProvider, HeaderProvider,
|
||||
NodePrimitivesProvider, ProviderError, PruneCheckpointReader, ReceiptProvider,
|
||||
ReceiptProviderIdExt, StageCheckpointReader, StateProviderBox, StateProviderFactory,
|
||||
StaticFileProviderFactory, TransactionVariant, TransactionsProvider, TreeViewer,
|
||||
WithdrawalsProvider,
|
||||
DatabaseProviderFactory, FullExecutionDataProvider, HeaderProvider, NodePrimitivesProvider,
|
||||
ProviderError, PruneCheckpointReader, ReceiptProvider, ReceiptProviderIdExt,
|
||||
StageCheckpointReader, StateProviderBox, StateProviderFactory, StaticFileProviderFactory,
|
||||
TransactionVariant, TransactionsProvider, TreeViewer, WithdrawalsProvider,
|
||||
};
|
||||
use alloy_consensus::Header;
|
||||
use alloy_eips::{
|
||||
@ -26,7 +25,6 @@ use reth_chain_state::{ChainInfoTracker, ForkChoiceNotifications, ForkChoiceSubs
|
||||
use reth_chainspec::{ChainInfo, EthereumHardforks};
|
||||
use reth_db::table::Value;
|
||||
use reth_db_api::models::{AccountBeforeTx, StoredBlockBodyIndices};
|
||||
use reth_evm::{env::EvmEnv, ConfigureEvmEnv};
|
||||
use reth_node_types::{
|
||||
BlockTy, FullNodePrimitives, HeaderTy, NodeTypes, NodeTypesWithDB, NodeTypesWithEngine,
|
||||
ReceiptTy, TxTy,
|
||||
@ -601,19 +599,6 @@ impl<N: ProviderNodeTypes> StageCheckpointReader for BlockchainProvider<N> {
|
||||
}
|
||||
}
|
||||
|
||||
impl<N: TreeNodeTypes> EvmEnvProvider for BlockchainProvider<N> {
|
||||
fn env_with_header<EvmConfig>(
|
||||
&self,
|
||||
header: &Header,
|
||||
evm_config: EvmConfig,
|
||||
) -> ProviderResult<EvmEnv>
|
||||
where
|
||||
EvmConfig: ConfigureEvmEnv<Header = Header>,
|
||||
{
|
||||
self.database.provider()?.env_with_header(header, evm_config)
|
||||
}
|
||||
}
|
||||
|
||||
impl<N: ProviderNodeTypes> PruneCheckpointReader for BlockchainProvider<N> {
|
||||
fn get_prune_checkpoint(
|
||||
&self,
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
use crate::{
|
||||
traits::{BlockSource, ReceiptProvider},
|
||||
AccountReader, BlockHashReader, BlockIdReader, BlockNumReader, BlockReader, BlockReaderIdExt,
|
||||
ChainSpecProvider, ChangeSetReader, DatabaseProvider, EthStorage, EvmEnvProvider,
|
||||
HeaderProvider, ReceiptProviderIdExt, StateProvider, StateProviderBox, StateProviderFactory,
|
||||
StateReader, StateRootProvider, TransactionVariant, TransactionsProvider, WithdrawalsProvider,
|
||||
ChainSpecProvider, ChangeSetReader, DatabaseProvider, EthStorage, HeaderProvider,
|
||||
ReceiptProviderIdExt, StateProvider, StateProviderBox, StateProviderFactory, StateReader,
|
||||
StateRootProvider, TransactionVariant, TransactionsProvider, WithdrawalsProvider,
|
||||
};
|
||||
use alloy_consensus::{constants::EMPTY_ROOT_HASH, Header};
|
||||
use alloy_eips::{
|
||||
@ -19,7 +19,6 @@ use parking_lot::Mutex;
|
||||
use reth_chainspec::{ChainInfo, ChainSpec};
|
||||
use reth_db::mock::{DatabaseMock, TxMock};
|
||||
use reth_db_api::models::{AccountBeforeTx, StoredBlockBodyIndices};
|
||||
use reth_evm::{env::EvmEnv, ConfigureEvmEnv};
|
||||
use reth_execution_types::ExecutionOutcome;
|
||||
use reth_node_types::NodeTypes;
|
||||
use reth_primitives::{
|
||||
@ -707,19 +706,6 @@ impl StateProvider for MockEthProvider {
|
||||
}
|
||||
}
|
||||
|
||||
impl EvmEnvProvider for MockEthProvider {
|
||||
fn env_with_header<EvmConfig>(
|
||||
&self,
|
||||
header: &Header,
|
||||
evm_config: EvmConfig,
|
||||
) -> ProviderResult<EvmEnv>
|
||||
where
|
||||
EvmConfig: ConfigureEvmEnv<Header = Header>,
|
||||
{
|
||||
Ok(evm_config.cfg_and_block_env(header))
|
||||
}
|
||||
}
|
||||
|
||||
impl StateProviderFactory for MockEthProvider {
|
||||
fn latest(&self) -> ProviderResult<StateProviderBox> {
|
||||
Ok(Box::new(self.clone()))
|
||||
|
||||
@ -2,8 +2,8 @@
|
||||
|
||||
use crate::{
|
||||
AccountReader, BlockReaderIdExt, ChainSpecProvider, ChangeSetReader, DatabaseProviderFactory,
|
||||
EvmEnvProvider, HeaderProvider, StageCheckpointReader, StateProviderFactory,
|
||||
StaticFileProviderFactory, TransactionsProvider,
|
||||
HeaderProvider, StageCheckpointReader, StateProviderFactory, StaticFileProviderFactory,
|
||||
TransactionsProvider,
|
||||
};
|
||||
use reth_chain_state::{CanonStateSubscriptions, ForkChoiceSubscriptions};
|
||||
use reth_chainspec::EthereumHardforks;
|
||||
@ -22,7 +22,6 @@ pub trait FullProvider<N: NodeTypesWithDB>:
|
||||
Header = HeaderTy<N>,
|
||||
> + AccountReader
|
||||
+ StateProviderFactory
|
||||
+ EvmEnvProvider
|
||||
+ ChainSpecProvider<ChainSpec = N::ChainSpec>
|
||||
+ ChangeSetReader
|
||||
+ CanonStateSubscriptions
|
||||
@ -45,7 +44,6 @@ impl<T, N: NodeTypesWithDB> FullProvider<N> for T where
|
||||
Header = HeaderTy<N>,
|
||||
> + AccountReader
|
||||
+ StateProviderFactory
|
||||
+ EvmEnvProvider
|
||||
+ ChainSpecProvider<ChainSpec = N::ChainSpec>
|
||||
+ ChangeSetReader
|
||||
+ CanonStateSubscriptions
|
||||
@ -61,7 +59,6 @@ impl<T, N: NodeTypesWithDB> FullProvider<N> for T where
|
||||
/// simplicity.
|
||||
pub trait FullRpcProvider:
|
||||
StateProviderFactory
|
||||
+ EvmEnvProvider
|
||||
+ ChainSpecProvider<ChainSpec: EthereumHardforks>
|
||||
+ BlockReaderIdExt
|
||||
+ HeaderProvider
|
||||
@ -75,7 +72,6 @@ pub trait FullRpcProvider:
|
||||
|
||||
impl<T> FullRpcProvider for T where
|
||||
T: StateProviderFactory
|
||||
+ EvmEnvProvider
|
||||
+ ChainSpecProvider<ChainSpec: EthereumHardforks>
|
||||
+ BlockReaderIdExt
|
||||
+ HeaderProvider
|
||||
|
||||
@ -3,9 +3,6 @@
|
||||
// Re-export all the traits
|
||||
pub use reth_storage_api::*;
|
||||
|
||||
// Re-export for convenience
|
||||
pub use reth_evm::provider::EvmEnvProvider;
|
||||
|
||||
mod block;
|
||||
pub use block::*;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user