diff --git a/Cargo.lock b/Cargo.lock index 91ab9d891f5d..028376e7a60d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -9034,6 +9034,7 @@ dependencies = [ "reth-network-api", "reth-node-api", "reth-primitives", + "reth-primitives-traits", "reth-provider", "reth-revm", "reth-rpc-eth-types", diff --git a/crates/engine/invalid-block-hooks/src/witness.rs b/crates/engine/invalid-block-hooks/src/witness.rs index 08681a9d17a9..105b9a0b1820 100644 --- a/crates/engine/invalid-block-hooks/src/witness.rs +++ b/crates/engine/invalid-block-hooks/src/witness.rs @@ -8,8 +8,8 @@ use reth_engine_primitives::InvalidBlockHook; use reth_evm::{ state_change::post_block_balance_increments, system_calls::SystemCaller, ConfigureEvm, }; -use reth_primitives::{NodePrimitives, SealedBlockWithSenders, SealedHeader, TransactionSigned}; -use reth_primitives_traits::{HeaderTy, SignedTransaction}; +use reth_primitives::{NodePrimitives, SealedBlockWithSenders, SealedHeader}; +use reth_primitives_traits::SignedTransaction; use reth_provider::{BlockExecutionOutput, ChainSpecProvider, StateProviderFactory}; use reth_revm::{ database::StateProviderDatabase, db::states::bundle_state::BundleRetention, @@ -63,8 +63,8 @@ where trie_updates: Option<(&TrieUpdates, B256)>, ) -> eyre::Result<()> where - N: NodePrimitives, - EvmConfig: ConfigureEvm
, + N: NodePrimitives, + EvmConfig: ConfigureEvm
, { // TODO(alexey): unify with `DebugApi::debug_execution_witness` @@ -298,13 +298,13 @@ where impl InvalidBlockHook for InvalidBlockWitnessHook where - N: NodePrimitives, + N: NodePrimitives, P: StateProviderFactory + ChainSpecProvider + Send + Sync + 'static, - EvmConfig: ConfigureEvm
>, + EvmConfig: ConfigureEvm
, { fn on_invalid_block( &self, diff --git a/crates/engine/util/src/reorg.rs b/crates/engine/util/src/reorg.rs index 18a8c4737b5a..f31ba1c95284 100644 --- a/crates/engine/util/src/reorg.rs +++ b/crates/engine/util/src/reorg.rs @@ -111,7 +111,7 @@ where S: Stream>, Engine: EngineTypes, Provider: BlockReader + StateProviderFactory, - Evm: ConfigureEvm
, + Evm: ConfigureEvm
, Spec: EthereumHardforks, { type Item = S::Item; @@ -258,7 +258,7 @@ fn create_reorg_head( ) -> RethResult<(ExecutionPayload, ExecutionPayloadSidecar)> where Provider: BlockReader + StateProviderFactory, - Evm: ConfigureEvm
, + Evm: ConfigureEvm
, Spec: EthereumHardforks, { let chain_spec = payload_validator.chain_spec(); diff --git a/crates/ethereum/evm/src/execute.rs b/crates/ethereum/evm/src/execute.rs index e21b42433ddb..6cbbb69c906b 100644 --- a/crates/ethereum/evm/src/execute.rs +++ b/crates/ethereum/evm/src/execute.rs @@ -58,8 +58,15 @@ impl EthExecutionStrategyFactory { impl BlockExecutionStrategyFactory for EthExecutionStrategyFactory where - EvmConfig: - Clone + Unpin + Sync + Send + 'static + ConfigureEvm
, + EvmConfig: Clone + + Unpin + + Sync + + Send + + 'static + + ConfigureEvm< + Header = alloy_consensus::Header, + Transaction = reth_primitives::TransactionSigned, + >, { type Primitives = EthPrimitives; @@ -128,7 +135,10 @@ where impl BlockExecutionStrategy for EthExecutionStrategy where DB: Database + Display>, - EvmConfig: ConfigureEvm
, + EvmConfig: ConfigureEvm< + Header = alloy_consensus::Header, + Transaction = reth_primitives::TransactionSigned, + >, { type DB = DB; type Error = BlockExecutionError; diff --git a/crates/ethereum/evm/src/lib.rs b/crates/ethereum/evm/src/lib.rs index 8042562357f4..509b61cb2ece 100644 --- a/crates/ethereum/evm/src/lib.rs +++ b/crates/ethereum/evm/src/lib.rs @@ -62,6 +62,7 @@ impl EthEvmConfig { impl ConfigureEvmEnv for EthEvmConfig { type Header = Header; + type Transaction = TransactionSigned; type Error = Infallible; fn fill_tx_env(&self, tx_env: &mut TxEnv, transaction: &TransactionSigned, sender: Address) { diff --git a/crates/ethereum/node/Cargo.toml b/crates/ethereum/node/Cargo.toml index 55421cf8478d..f5fe1dac234c 100644 --- a/crates/ethereum/node/Cargo.toml +++ b/crates/ethereum/node/Cargo.toml @@ -32,8 +32,6 @@ reth-primitives.workspace = true reth-revm = { workspace = true, features = ["std"] } reth-trie-db.workspace = true -alloy-consensus.workspace = true - # revm with required ethereum features revm = { workspace = true, features = ["secp256k1", "blst", "c-kzg"] } diff --git a/crates/ethereum/node/src/node.rs b/crates/ethereum/node/src/node.rs index 58b6aeaf6447..dd4f1e5802c8 100644 --- a/crates/ethereum/node/src/node.rs +++ b/crates/ethereum/node/src/node.rs @@ -2,7 +2,6 @@ use std::sync::Arc; -use alloy_consensus::Header; use reth_basic_payload_builder::{BasicPayloadJobGenerator, BasicPayloadJobGeneratorConfig}; use reth_beacon_consensus::EthBeaconConsensus; use reth_chainspec::ChainSpec; @@ -13,7 +12,8 @@ use reth_evm::execute::BasicBlockExecutorProvider; use reth_evm_ethereum::execute::EthExecutionStrategyFactory; use reth_network::{NetworkHandle, PeersInfo}; use reth_node_api::{ - AddOnsContext, ConfigureEvm, EngineValidator, FullNodeComponents, NodeTypesWithDB, TxTy, + AddOnsContext, ConfigureEvm, EngineValidator, FullNodeComponents, HeaderTy, NodeTypesWithDB, + TxTy, }; use reth_node_builder::{ components::{ @@ -242,7 +242,7 @@ impl EthereumPayloadBuilder { where Types: NodeTypesWithEngine, Node: FullNodeTypes, - Evm: ConfigureEvm
, + Evm: ConfigureEvm
, Transaction = TxTy>, Pool: TransactionPool>> + Unpin + 'static, diff --git a/crates/ethereum/payload/src/lib.rs b/crates/ethereum/payload/src/lib.rs index df900f1f36b3..5566d88519ac 100644 --- a/crates/ethereum/payload/src/lib.rs +++ b/crates/ethereum/payload/src/lib.rs @@ -92,7 +92,7 @@ where // Default implementation of [PayloadBuilder] for unit type impl PayloadBuilder for EthereumPayloadBuilder where - EvmConfig: ConfigureEvm
, + EvmConfig: ConfigureEvm
, Client: StateProviderFactory + ChainSpecProvider, Pool: TransactionPool>, { @@ -156,7 +156,7 @@ pub fn default_ethereum_payload( best_txs: F, ) -> Result, PayloadBuilderError> where - EvmConfig: ConfigureEvm
, + EvmConfig: ConfigureEvm
, Client: StateProviderFactory + ChainSpecProvider, Pool: TransactionPool>, F: FnOnce(BestTransactionsAttributes) -> BestTransactionsIter, diff --git a/crates/evm/src/lib.rs b/crates/evm/src/lib.rs index ae884bdd5f86..29f6d7c65817 100644 --- a/crates/evm/src/lib.rs +++ b/crates/evm/src/lib.rs @@ -20,7 +20,6 @@ extern crate alloc; use crate::builder::RethEvmBuilder; use alloy_consensus::BlockHeader as _; use alloy_primitives::{Address, Bytes, B256, U256}; -use reth_primitives::TransactionSigned; use reth_primitives_traits::BlockHeader; use revm::{Database, Evm, GetInspector}; use revm_primitives::{BlockEnv, CfgEnvWithHandlerCfg, Env, EnvWithHandlerCfg, SpecId, TxEnv}; @@ -116,18 +115,21 @@ pub trait ConfigureEvmEnv: Send + Sync + Unpin + Clone + 'static { /// The header type used by the EVM. type Header: BlockHeader; + /// The transaction type. + type Transaction; + /// The error type that is returned by [`Self::next_cfg_and_block_env`]. type Error: core::error::Error + Send + Sync; - /// Returns a [`TxEnv`] from a [`TransactionSigned`] and [`Address`]. - fn tx_env(&self, transaction: &TransactionSigned, signer: Address) -> TxEnv { + /// Returns a [`TxEnv`] from a transaction and [`Address`]. + fn tx_env(&self, transaction: &Self::Transaction, signer: Address) -> TxEnv { let mut tx_env = TxEnv::default(); self.fill_tx_env(&mut tx_env, transaction, signer); tx_env } - /// Fill transaction environment from a [`TransactionSigned`] and the given sender address. - fn fill_tx_env(&self, tx_env: &mut TxEnv, transaction: &TransactionSigned, sender: Address); + /// Fill transaction environment from a transaction and the given sender address. + fn fill_tx_env(&self, tx_env: &mut TxEnv, transaction: &Self::Transaction, sender: Address); /// Fill transaction environment with a system contract call. fn fill_tx_env_system_contract_call( diff --git a/crates/node/api/src/node.rs b/crates/node/api/src/node.rs index 1b490c4cf416..fc6366a2eb5d 100644 --- a/crates/node/api/src/node.rs +++ b/crates/node/api/src/node.rs @@ -49,7 +49,7 @@ pub trait FullNodeComponents: FullNodeTypes + Clone + 'static { type Pool: TransactionPool>> + Unpin; /// The node's EVM configuration, defining settings for the Ethereum Virtual Machine. - type Evm: ConfigureEvm
>; + type Evm: ConfigureEvm
, Transaction = TxTy>; /// The type that knows how to execute blocks. type Executor: BlockExecutorProvider::Primitives>; diff --git a/crates/node/builder/src/components/builder.rs b/crates/node/builder/src/components/builder.rs index 15f6c12319ff..7e2d0eb43cc0 100644 --- a/crates/node/builder/src/components/builder.rs +++ b/crates/node/builder/src/components/builder.rs @@ -377,7 +377,7 @@ where Pool: TransactionPool>> + Unpin + 'static, - EVM: ConfigureEvm
>, + EVM: ConfigureEvm
, Transaction = TxTy>, Executor: BlockExecutorProvider::Primitives>, Cons: FullConsensus<::Primitives> + Clone + Unpin + 'static, { diff --git a/crates/node/builder/src/components/execute.rs b/crates/node/builder/src/components/execute.rs index 5ecc67d8b764..e3226fa8e371 100644 --- a/crates/node/builder/src/components/execute.rs +++ b/crates/node/builder/src/components/execute.rs @@ -1,7 +1,7 @@ //! EVM component for the node builder. use crate::{BuilderContext, FullNodeTypes}; use reth_evm::execute::BlockExecutorProvider; -use reth_node_api::{ConfigureEvm, HeaderTy}; +use reth_node_api::{ConfigureEvm, HeaderTy, TxTy}; use std::future::Future; /// A type that knows how to build the executor types. @@ -9,7 +9,7 @@ pub trait ExecutorBuilder: Send { /// The EVM config to use. /// /// This provides the node with the necessary configuration to configure an EVM. - type EVM: ConfigureEvm
>; + type EVM: ConfigureEvm
, Transaction = TxTy>; /// The type that knows how to execute blocks. type Executor: BlockExecutorProvider< @@ -26,7 +26,7 @@ pub trait ExecutorBuilder: Send { impl ExecutorBuilder for F where Node: FullNodeTypes, - EVM: ConfigureEvm
>, + EVM: ConfigureEvm
, Transaction = TxTy>, Executor: BlockExecutorProvider::Primitives>, F: FnOnce(&BuilderContext) -> Fut + Send, diff --git a/crates/node/builder/src/components/mod.rs b/crates/node/builder/src/components/mod.rs index 764277dcbf27..b643e2aa2a65 100644 --- a/crates/node/builder/src/components/mod.rs +++ b/crates/node/builder/src/components/mod.rs @@ -40,7 +40,7 @@ pub trait NodeComponents: Clone + Unpin + Send + Sync + 'stati type Pool: TransactionPool>> + Unpin; /// The node's EVM configuration, defining settings for the Ethereum Virtual Machine. - type Evm: ConfigureEvm
>; + type Evm: ConfigureEvm
, Transaction = TxTy>; /// The type that knows how to execute blocks. type Executor: BlockExecutorProvider::Primitives>; @@ -99,7 +99,7 @@ where Pool: TransactionPool>> + Unpin + 'static, - EVM: ConfigureEvm
>, + EVM: ConfigureEvm
, Transaction = TxTy>, Executor: BlockExecutorProvider::Primitives>, Cons: FullConsensus<::Primitives> + Clone + Unpin + 'static, { @@ -139,7 +139,7 @@ impl Clone for Components>, + EVM: ConfigureEvm
, Transaction = TxTy>, Executor: BlockExecutorProvider, Cons: Clone, { diff --git a/crates/optimism/evm/src/execute.rs b/crates/optimism/evm/src/execute.rs index 3673f73a894b..205c85160dcd 100644 --- a/crates/optimism/evm/src/execute.rs +++ b/crates/optimism/evm/src/execute.rs @@ -22,7 +22,7 @@ use reth_optimism_chainspec::OpChainSpec; use reth_optimism_consensus::validate_block_post_execution; use reth_optimism_forks::OpHardfork; use reth_optimism_primitives::OpPrimitives; -use reth_primitives::{BlockWithSenders, Receipt, TxType}; +use reth_primitives::{BlockWithSenders, Receipt, TransactionSigned, TxType}; use reth_revm::{Database, State}; use revm_primitives::{db::DatabaseCommit, EnvWithHandlerCfg, ResultAndState, U256}; use tracing::trace; @@ -52,8 +52,12 @@ impl OpExecutionStrategyFactory { impl BlockExecutionStrategyFactory for OpExecutionStrategyFactory where - EvmConfig: - Clone + Unpin + Sync + Send + 'static + ConfigureEvm
, + EvmConfig: Clone + + Unpin + + Sync + + Send + + 'static + + ConfigureEvm
, { type Primitives = OpPrimitives; type Strategy + Display>> = @@ -115,7 +119,7 @@ where impl BlockExecutionStrategy for OpExecutionStrategy where DB: Database + Display>, - EvmConfig: ConfigureEvm
, + EvmConfig: ConfigureEvm
, { type DB = DB; type Primitives = OpPrimitives; diff --git a/crates/optimism/evm/src/lib.rs b/crates/optimism/evm/src/lib.rs index 176864de6dc5..7424379f5ae7 100644 --- a/crates/optimism/evm/src/lib.rs +++ b/crates/optimism/evm/src/lib.rs @@ -57,6 +57,7 @@ impl OpEvmConfig { impl ConfigureEvmEnv for OpEvmConfig { type Header = Header; + type Transaction = TransactionSigned; type Error = DecodeError; fn fill_tx_env(&self, tx_env: &mut TxEnv, transaction: &TransactionSigned, sender: Address) { diff --git a/crates/optimism/node/src/node.rs b/crates/optimism/node/src/node.rs index a13ab9dcec16..b2203331ddfa 100644 --- a/crates/optimism/node/src/node.rs +++ b/crates/optimism/node/src/node.rs @@ -34,7 +34,7 @@ use reth_optimism_rpc::{ OpEthApi, SequencerClient, }; use reth_payload_builder::{PayloadBuilderHandle, PayloadBuilderService}; -use reth_primitives::BlockBody; +use reth_primitives::{BlockBody, TransactionSigned}; use reth_provider::{ providers::ChainStorage, BlockBodyReader, BlockBodyWriter, CanonStateSubscriptions, ChainSpecProvider, DBProvider, EthStorage, ProviderResult, ReadBodyInput, @@ -468,7 +468,7 @@ where Pool: TransactionPool>> + Unpin + 'static, - Evm: ConfigureEvm
, + Evm: ConfigureEvm
, { let payload_builder = reth_optimism_payload_builder::OpPayloadBuilder::new(evm_config) .with_transactions(self.best_transactions) diff --git a/crates/optimism/payload/src/builder.rs b/crates/optimism/payload/src/builder.rs index d385ca79546f..d146281c3598 100644 --- a/crates/optimism/payload/src/builder.rs +++ b/crates/optimism/payload/src/builder.rs @@ -96,7 +96,7 @@ impl OpPayloadBuilder { } impl OpPayloadBuilder where - EvmConfig: ConfigureEvm
, + EvmConfig: ConfigureEvm
, Txs: OpPayloadTransactions, { /// Constructs an Optimism payload from the transactions sent via the @@ -153,7 +153,7 @@ where impl OpPayloadBuilder where - EvmConfig: ConfigureEvm
, + EvmConfig: ConfigureEvm
, { /// Returns the configured [`CfgEnvWithHandlerCfg`] and [`BlockEnv`] for the targeted payload /// (that has the `parent` as its parent). @@ -215,7 +215,7 @@ impl PayloadBuilder for OpPayloadBui where Client: StateProviderFactory + ChainSpecProvider, Pool: TransactionPool>, - EvmConfig: ConfigureEvm
, + EvmConfig: ConfigureEvm
, Txs: OpPayloadTransactions, { type Attributes = OpPayloadBuilderAttributes; @@ -292,7 +292,7 @@ where ctx: &OpPayloadBuilderCtx, ) -> Result, PayloadBuilderError> where - EvmConfig: ConfigureEvm
, + EvmConfig: ConfigureEvm
, DB: Database, { let Self { pool, best } = self; @@ -337,7 +337,7 @@ where ctx: OpPayloadBuilderCtx, ) -> Result, PayloadBuilderError> where - EvmConfig: ConfigureEvm
, + EvmConfig: ConfigureEvm
, DB: Database + AsRef

, P: StateRootProvider, { @@ -464,7 +464,7 @@ where ctx: &OpPayloadBuilderCtx, ) -> Result where - EvmConfig: ConfigureEvm

, + EvmConfig: ConfigureEvm
, DB: Database + AsRef

, P: StateProofProvider, { @@ -699,7 +699,7 @@ impl OpPayloadBuilderCtx { impl OpPayloadBuilderCtx where - EvmConfig: ConfigureEvm

, + EvmConfig: ConfigureEvm
, { /// apply eip-4788 pre block contract call pub fn apply_pre_beacon_root_contract_call( diff --git a/crates/optimism/rpc/src/eth/pending_block.rs b/crates/optimism/rpc/src/eth/pending_block.rs index 9a8d169e5270..eebb61c8cb02 100644 --- a/crates/optimism/rpc/src/eth/pending_block.rs +++ b/crates/optimism/rpc/src/eth/pending_block.rs @@ -7,7 +7,7 @@ use alloy_primitives::{BlockNumber, B256}; use reth_chainspec::{EthChainSpec, EthereumHardforks}; use reth_evm::ConfigureEvm; use reth_optimism_consensus::calculate_receipt_root_no_memo_optimism; -use reth_primitives::{Receipt, SealedBlockWithSenders}; +use reth_primitives::{Receipt, SealedBlockWithSenders, TransactionSigned}; use reth_provider::{ BlockReader, BlockReaderIdExt, ChainSpecProvider, EvmEnvProvider, ExecutionOutcome, ProviderTx, ReceiptProvider, StateProviderFactory, @@ -33,7 +33,7 @@ where + ChainSpecProvider + StateProviderFactory, Pool: TransactionPool>>, - Evm: ConfigureEvm
, + Evm: ConfigureEvm
, >, { #[inline] diff --git a/crates/optimism/rpc/src/witness.rs b/crates/optimism/rpc/src/witness.rs index 278c785cbe9a..8cc4bd98ef25 100644 --- a/crates/optimism/rpc/src/witness.rs +++ b/crates/optimism/rpc/src/witness.rs @@ -9,7 +9,7 @@ use reth_chainspec::ChainSpecProvider; use reth_evm::ConfigureEvm; use reth_optimism_chainspec::OpChainSpec; use reth_optimism_payload_builder::OpPayloadBuilder; -use reth_primitives::SealedHeader; +use reth_primitives::{SealedHeader, TransactionSigned}; use reth_provider::{BlockReaderIdExt, ProviderError, ProviderResult, StateProviderFactory}; pub use reth_rpc_api::DebugExecutionWitnessApiServer; use reth_rpc_server_types::{result::internal_rpc_err, ToRpcResult}; @@ -49,7 +49,7 @@ where + StateProviderFactory + ChainSpecProvider + 'static, - EvmConfig: ConfigureEvm
+ 'static, + EvmConfig: ConfigureEvm
+ 'static, { fn execute_payload( &self, diff --git a/crates/rpc/rpc-builder/src/lib.rs b/crates/rpc/rpc-builder/src/lib.rs index 0b9a84a5b987..031f960096fa 100644 --- a/crates/rpc/rpc-builder/src/lib.rs +++ b/crates/rpc/rpc-builder/src/lib.rs @@ -50,7 +50,7 @@ //! Network: NetworkInfo + Peers + Clone + 'static, //! Events: //! CanonStateSubscriptions + Clone + 'static, -//! EvmConfig: ConfigureEvm
, +//! EvmConfig: ConfigureEvm
, //! BlockExecutor: BlockExecutorProvider, //! Consensus: reth_consensus::FullConsensus + Clone + 'static, //! { @@ -135,7 +135,7 @@ //! CanonStateSubscriptions + Clone + 'static, //! EngineApi: EngineApiServer, //! EngineT: EngineTypes, -//! EvmConfig: ConfigureEvm
, +//! EvmConfig: ConfigureEvm
, //! BlockExecutor: BlockExecutorProvider, //! Consensus: reth_consensus::FullConsensus + Clone + 'static, //! { diff --git a/crates/rpc/rpc-eth-api/Cargo.toml b/crates/rpc/rpc-eth-api/Cargo.toml index 859caa821cdc..d0aa065535a4 100644 --- a/crates/rpc/rpc-eth-api/Cargo.toml +++ b/crates/rpc/rpc-eth-api/Cargo.toml @@ -16,6 +16,7 @@ workspace = true revm.workspace = true revm-inspectors.workspace = true revm-primitives = { workspace = true, features = ["dev"] } +reth-primitives-traits.workspace = true reth-errors.workspace = true reth-evm.workspace = true reth-primitives.workspace = true diff --git a/crates/rpc/rpc-eth-api/src/helpers/call.rs b/crates/rpc/rpc-eth-api/src/helpers/call.rs index f9441f0630ab..aaa2ce131c9c 100644 --- a/crates/rpc/rpc-eth-api/src/helpers/call.rs +++ b/crates/rpc/rpc-eth-api/src/helpers/call.rs @@ -19,7 +19,7 @@ use futures::Future; use reth_chainspec::EthChainSpec; use reth_evm::{ConfigureEvm, ConfigureEvmEnv}; use reth_node_api::BlockBody; -use reth_primitives::TransactionSigned; +use reth_primitives_traits::SignedTransaction; use reth_provider::{BlockIdReader, ChainSpecProvider, HeaderProvider}; use reth_revm::{ database::StateProviderDatabase, @@ -664,14 +664,15 @@ pub trait Call: LoadState> + SpawnBlocking { where DB: Database + DatabaseCommit, EthApiError: From, - I: IntoIterator, + I: IntoIterator::Transaction)>, + ::Transaction: SignedTransaction, { let env = EnvWithHandlerCfg::new_with_cfg_env(cfg, block_env, Default::default()); let mut evm = self.evm_config().evm_with_env(db, env); let mut index = 0; for (sender, tx) in transactions { - if tx.hash() == target_tx_hash { + if *tx.tx_hash() == target_tx_hash { // reached the target transaction break } 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 782c1a2a8f6b..a5880c51e9b7 100644 --- a/crates/rpc/rpc-eth-api/src/helpers/pending_block.rs +++ b/crates/rpc/rpc-eth-api/src/helpers/pending_block.rs @@ -57,7 +57,7 @@ pub trait LoadPendingBlock: + ChainSpecProvider + StateProviderFactory, Pool: TransactionPool>>, - Evm: ConfigureEvm
, + Evm: ConfigureEvm
>, > { /// Returns a handle to the pending block. diff --git a/crates/rpc/rpc/src/eth/helpers/pending_block.rs b/crates/rpc/rpc/src/eth/helpers/pending_block.rs index 34c0ae962613..afd69a2f4041 100644 --- a/crates/rpc/rpc/src/eth/helpers/pending_block.rs +++ b/crates/rpc/rpc/src/eth/helpers/pending_block.rs @@ -31,7 +31,7 @@ where Pool: TransactionPool< Transaction: PoolTransaction>, >, - Evm: ConfigureEvm
, + Evm: ConfigureEvm
>, >, { #[inline] diff --git a/examples/custom-evm/src/main.rs b/examples/custom-evm/src/main.rs index d9e341c02cc4..8990ba2252ec 100644 --- a/examples/custom-evm/src/main.rs +++ b/examples/custom-evm/src/main.rs @@ -84,6 +84,8 @@ impl MyEvmConfig { impl ConfigureEvmEnv for MyEvmConfig { type Header = Header; + type Transaction = TransactionSigned; + type Error = Infallible; fn fill_tx_env(&self, tx_env: &mut TxEnv, transaction: &TransactionSigned, sender: Address) { diff --git a/examples/stateful-precompile/src/main.rs b/examples/stateful-precompile/src/main.rs index 29d5051434bf..03ed1fa69433 100644 --- a/examples/stateful-precompile/src/main.rs +++ b/examples/stateful-precompile/src/main.rs @@ -148,6 +148,7 @@ impl StatefulPrecompileMut for WrappedPrecompile { impl ConfigureEvmEnv for MyEvmConfig { type Header = Header; + type Transaction = TransactionSigned; type Error = Infallible; fn fill_tx_env(&self, tx_env: &mut TxEnv, transaction: &TransactionSigned, sender: Address) {