diff --git a/Cargo.lock b/Cargo.lock index 01a0cee17..7a6726ec8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -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", diff --git a/crates/evm/Cargo.toml b/crates/evm/Cargo.toml index 39add9396..fe5505b52 100644 --- a/crates/evm/Cargo.toml +++ b/crates/evm/Cargo.toml @@ -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" ] diff --git a/crates/evm/src/lib.rs b/crates/evm/src/lib.rs index 0c17b3acf..c539735b5 100644 --- a/crates/evm/src/lib.rs +++ b/crates/evm/src/lib.rs @@ -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"))] diff --git a/crates/evm/src/provider.rs b/crates/evm/src/provider.rs deleted file mode 100644 index e4733a1dd..000000000 --- a/crates/evm/src/provider.rs +++ /dev/null @@ -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: Send + Sync { - /// Fills the default [`EvmEnv`] fields with values specific to the - /// given block header. - fn env_with_header( - &self, - header: &H, - evm_config: EvmConfig, - ) -> ProviderResult - where - EvmConfig: ConfigureEvmEnv
; -} diff --git a/crates/evm/src/test_utils.rs b/crates/evm/src/test_utils.rs index a3c230af1..762098a48 100644 --- a/crates/evm/src/test_utils.rs +++ b/crates/evm/src/test_utils.rs @@ -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 EvmEnvProvider - for reth_storage_api::noop::NoopProvider -{ - fn env_with_header( - &self, - header: &N::BlockHeader, - evm_config: EvmConfig, - ) -> ProviderResult - where - EvmConfig: ConfigureEvmEnv
, - { - Ok(evm_config.cfg_and_block_env(header)) - } -} - /// A [`BlockExecutorProvider`] that returns mocked execution results. #[derive(Clone, Debug, Default)] pub struct MockExecutorProvider { diff --git a/crates/optimism/rpc/src/eth/mod.rs b/crates/optimism/rpc/src/eth/mod.rs index f244d114e..ebcbaed12 100644 --- a/crates/optimism/rpc/src/eth/mod.rs +++ b/crates/optimism/rpc/src/eth/mod.rs @@ -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, N: OpNodeCore< Provider: BlockReaderIdExt - + EvmEnvProvider + ChainSpecProvider + StateProviderFactory, >, diff --git a/crates/optimism/rpc/src/eth/pending_block.rs b/crates/optimism/rpc/src/eth/pending_block.rs index 37df1e85d..3d930e2bf 100644 --- a/crates/optimism/rpc/src/eth/pending_block.rs +++ b/crates/optimism/rpc/src/eth/pending_block.rs @@ -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 + > + ChainSpecProvider + StateProviderFactory, Pool: TransactionPool>>, Evm: ConfigureEvm
, diff --git a/crates/rpc/rpc-builder/src/eth.rs b/crates/rpc/rpc-builder/src/eth.rs index 7339c7089..10071c26e 100644 --- a/crates/rpc/rpc-builder/src/eth.rs +++ b/crates/rpc/rpc-builder/src/eth.rs @@ -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 = ::Block, Receipt = ::Receipt, - > + EvmEnvProvider - + Clone + > + Clone + Unpin + 'static, Events: CanonStateSubscriptions + Clone + 'static, diff --git a/crates/rpc/rpc-builder/src/lib.rs b/crates/rpc/rpc-builder/src/lib.rs index 9835c832c..10dab2ab5 100644 --- a/crates/rpc/rpc-builder/src/lib.rs +++ b/crates/rpc/rpc-builder/src/lib.rs @@ -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 RpcModuleBuilder 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 = ::Block, Receipt = ::Receipt, - > + EvmEnvProvider - + Clone + > + Clone + Unpin + 'static, Pool: Send + Sync + Clone + 'static, diff --git a/crates/rpc/rpc-engine-api/Cargo.toml b/crates/rpc/rpc-engine-api/Cargo.toml index f9f05da33..ae3fc490d 100644 --- a/crates/rpc/rpc-engine-api/Cargo.toml +++ b/crates/rpc/rpc-engine-api/Cargo.toml @@ -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 diff --git a/crates/rpc/rpc-engine-api/src/engine_api.rs b/crates/rpc/rpc-engine-api/src/engine_api.rs index 2e80c105e..9b7b80c4c 100644 --- a/crates/rpc/rpc-engine-api/src/engine_api.rs +++ b/crates/rpc/rpc-engine-api/src/engine_api.rs @@ -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 EngineApi where - Provider: HeaderProvider + BlockReader + StateProviderFactory + EvmEnvProvider + 'static, + Provider: HeaderProvider + BlockReader + StateProviderFactory + 'static, EngineT: EngineTypes, Pool: TransactionPool + 'static, Validator: EngineValidator, @@ -744,7 +743,7 @@ where impl EngineApiServer for EngineApi where - Provider: HeaderProvider + BlockReader + StateProviderFactory + EvmEnvProvider + 'static, + Provider: HeaderProvider + BlockReader + StateProviderFactory + 'static, EngineT: EngineTypes, Pool: TransactionPool + 'static, Validator: EngineValidator, diff --git a/crates/rpc/rpc-eth-api/src/helpers/pending_block.rs b/crates/rpc/rpc-eth-api/src/helpers/pending_block.rs index 3c1548a40..5f0512e3e 100644 --- a/crates/rpc/rpc-eth-api/src/helpers/pending_block.rs +++ b/crates/rpc/rpc-eth-api/src/helpers/pending_block.rs @@ -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 - + EvmEnvProvider> + ChainSpecProvider + StateProviderFactory, Pool: TransactionPool>>, @@ -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, diff --git a/crates/rpc/rpc-eth-api/src/helpers/state.rs b/crates/rpc/rpc-eth-api/src/helpers/state.rs index 37ed66aba..9173b5e34 100644 --- a/crates/rpc/rpc-eth-api/src/helpers/state.rs +++ b/crates/rpc/rpc-eth-api/src/helpers/state.rs @@ -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())) } } diff --git a/crates/rpc/rpc/src/debug.rs b/crates/rpc/rpc/src/debug.rs index eab9afb43..d4b8c3757 100644 --- a/crates/rpc/rpc/src/debug.rs +++ b/crates/rpc/rpc/src/debug.rs @@ -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 = diff --git a/crates/rpc/rpc/src/eth/core.rs b/crates/rpc/rpc/src/eth/core.rs index 48320de2b..e1e8c70d6 100644 --- a/crates/rpc/rpc/src/eth/core.rs +++ b/crates/rpc/rpc/src/eth/core.rs @@ -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 - + EvmEnvProvider + StateProviderFactory + Unpin + Clone diff --git a/crates/rpc/rpc/src/eth/helpers/fees.rs b/crates/rpc/rpc/src/eth/helpers/fees.rs index 045d6dcb5..5bab6311f 100644 --- a/crates/rpc/rpc/src/eth/helpers/fees.rs +++ b/crates/rpc/rpc/src/eth/helpers/fees.rs @@ -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 LoadFee for EthApi, Provider: BlockReaderIdExt - + EvmEnvProvider + ChainSpecProvider + StateProviderFactory, { diff --git a/crates/rpc/rpc/src/eth/helpers/pending_block.rs b/crates/rpc/rpc/src/eth/helpers/pending_block.rs index 2af82ef51..0713ebccd 100644 --- a/crates/rpc/rpc/src/eth/helpers/pending_block.rs +++ b/crates/rpc/rpc/src/eth/helpers/pending_block.rs @@ -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 + > + ChainSpecProvider + StateProviderFactory, Pool: TransactionPool< Transaction: PoolTransaction>, diff --git a/crates/storage/provider/src/providers/blockchain_provider.rs b/crates/storage/provider/src/providers/blockchain_provider.rs index e621a5603..fbf485826 100644 --- a/crates/storage/provider/src/providers/blockchain_provider.rs +++ b/crates/storage/provider/src/providers/blockchain_provider.rs @@ -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 StageCheckpointReader for BlockchainProvider2 { } } -impl EvmEnvProvider> for BlockchainProvider2 { - fn env_with_header( - &self, - header: &HeaderTy, - evm_config: EvmConfig, - ) -> ProviderResult - where - EvmConfig: ConfigureEvmEnv
>, - { - self.consistent_provider()?.env_with_header(header, evm_config) - } -} - impl PruneCheckpointReader for BlockchainProvider2 { fn get_prune_checkpoint( &self, diff --git a/crates/storage/provider/src/providers/consistent.rs b/crates/storage/provider/src/providers/consistent.rs index 03e9ce0da..1cb90a340 100644 --- a/crates/storage/provider/src/providers/consistent.rs +++ b/crates/storage/provider/src/providers/consistent.rs @@ -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 StageCheckpointReader for ConsistentProvider { } } -impl EvmEnvProvider> for ConsistentProvider { - fn env_with_header( - &self, - header: &HeaderTy, - evm_config: EvmConfig, - ) -> ProviderResult - where - EvmConfig: ConfigureEvmEnv
>, - { - Ok(evm_config.cfg_and_block_env(header)) - } -} - impl PruneCheckpointReader for ConsistentProvider { fn get_prune_checkpoint( &self, diff --git a/crates/storage/provider/src/providers/database/mod.rs b/crates/storage/provider/src/providers/database/mod.rs index a114b4d07..64623f15a 100644 --- a/crates/storage/provider/src/providers/database/mod.rs +++ b/crates/storage/provider/src/providers/database/mod.rs @@ -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 StageCheckpointReader for ProviderFactory { } } -impl EvmEnvProvider> for ProviderFactory { - fn env_with_header( - &self, - header: &HeaderTy, - evm_config: EvmConfig, - ) -> ProviderResult - where - EvmConfig: ConfigureEvmEnv
>, - { - self.provider()?.env_with_header(header, evm_config) - } -} - impl ChainSpecProvider for ProviderFactory { type ChainSpec = N::ChainSpec; diff --git a/crates/storage/provider/src/providers/database/provider.rs b/crates/storage/provider/src/providers/database/provider.rs index 4b5cccfc9..e4973653c 100644 --- a/crates/storage/provider/src/providers/database/provider.rs +++ b/crates/storage/provider/src/providers/database/provider.rs @@ -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 BlockBodyIndicesProvider } } -impl EvmEnvProvider> - for DatabaseProvider -{ - fn env_with_header( - &self, - header: &HeaderTy, - evm_config: EvmConfig, - ) -> ProviderResult - where - EvmConfig: ConfigureEvmEnv
>, - { - Ok(evm_config.cfg_and_block_env(header)) - } -} - impl StageCheckpointReader for DatabaseProvider { fn get_stage_checkpoint(&self, id: StageId) -> ProviderResult> { Ok(self.tx.get::(id.to_string())?) diff --git a/crates/storage/provider/src/providers/mod.rs b/crates/storage/provider/src/providers/mod.rs index 7262dbfa1..20539b701 100644 --- a/crates/storage/provider/src/providers/mod.rs +++ b/crates/storage/provider/src/providers/mod.rs @@ -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 StageCheckpointReader for BlockchainProvider { } } -impl EvmEnvProvider for BlockchainProvider { - fn env_with_header( - &self, - header: &Header, - evm_config: EvmConfig, - ) -> ProviderResult - where - EvmConfig: ConfigureEvmEnv
, - { - self.database.provider()?.env_with_header(header, evm_config) - } -} - impl PruneCheckpointReader for BlockchainProvider { fn get_prune_checkpoint( &self, diff --git a/crates/storage/provider/src/test_utils/mock.rs b/crates/storage/provider/src/test_utils/mock.rs index 99cc6fa29..94ae41107 100644 --- a/crates/storage/provider/src/test_utils/mock.rs +++ b/crates/storage/provider/src/test_utils/mock.rs @@ -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( - &self, - header: &Header, - evm_config: EvmConfig, - ) -> ProviderResult - where - EvmConfig: ConfigureEvmEnv
, - { - Ok(evm_config.cfg_and_block_env(header)) - } -} - impl StateProviderFactory for MockEthProvider { fn latest(&self) -> ProviderResult { Ok(Box::new(self.clone())) diff --git a/crates/storage/provider/src/traits/full.rs b/crates/storage/provider/src/traits/full.rs index be485839f..b768d2fec 100644 --- a/crates/storage/provider/src/traits/full.rs +++ b/crates/storage/provider/src/traits/full.rs @@ -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: Header = HeaderTy, > + AccountReader + StateProviderFactory - + EvmEnvProvider + ChainSpecProvider + ChangeSetReader + CanonStateSubscriptions @@ -45,7 +44,6 @@ impl FullProvider for T where Header = HeaderTy, > + AccountReader + StateProviderFactory - + EvmEnvProvider + ChainSpecProvider + ChangeSetReader + CanonStateSubscriptions @@ -61,7 +59,6 @@ impl FullProvider for T where /// simplicity. pub trait FullRpcProvider: StateProviderFactory - + EvmEnvProvider + ChainSpecProvider + BlockReaderIdExt + HeaderProvider @@ -75,7 +72,6 @@ pub trait FullRpcProvider: impl FullRpcProvider for T where T: StateProviderFactory - + EvmEnvProvider + ChainSpecProvider + BlockReaderIdExt + HeaderProvider diff --git a/crates/storage/provider/src/traits/mod.rs b/crates/storage/provider/src/traits/mod.rs index d82e97d1d..4b3178fc6 100644 --- a/crates/storage/provider/src/traits/mod.rs +++ b/crates/storage/provider/src/traits/mod.rs @@ -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::*;