diff --git a/crates/evm/src/eth.rs b/crates/evm/src/eth.rs index dbe7731..061f747 100644 --- a/crates/evm/src/eth.rs +++ b/crates/evm/src/eth.rs @@ -1,6 +1,10 @@ //! Ethereum EVM implementation. -use crate::{env::EvmEnv, evm::{Database, EvmFactory}, Evm}; +use crate::{ + env::EvmEnv, + evm::{Database, EvmFactory}, + Evm, +}; use alloc::vec::Vec; use alloy_primitives::{Address, Bytes, TxKind, U256}; use core::fmt::Debug; diff --git a/crates/evm/src/evm.rs b/crates/evm/src/evm.rs index f4db6a1..705658e 100644 --- a/crates/evm/src/evm.rs +++ b/crates/evm/src/evm.rs @@ -1,7 +1,7 @@ //! Abstraction over EVM. -use core::error::Error; use alloy_primitives::{Address, Bytes}; +use core::error::Error; use revm::{ primitives::{BlockEnv, ResultAndState}, DatabaseCommit, GetInspector, @@ -32,7 +32,6 @@ pub trait Evm { /// running out of gas or overflowing stack). type HaltReason: Send + Sync; - /// Reference to [`BlockEnv`]. fn block(&self) -> &BlockEnv; @@ -67,7 +66,12 @@ pub trait EvmFactory { /// The EVM type that this factory creates. // TODO: this doesn't quite work because this would force use to use an enum approach for trace // evm for example, unless we - type Evm<'a, DB: Database + 'a, I: 'a>: Evm>; + type Evm<'a, DB: Database + 'a, I: 'a>: Evm< + DB = DB, + Tx = Self::Tx, + HaltReason = Self::HaltReason, + Error = Self::Error, + >; /// Transaction environment. type Tx; diff --git a/crates/evm/src/lib.rs b/crates/evm/src/lib.rs index 74fc5c4..c2b49c4 100644 --- a/crates/evm/src/lib.rs +++ b/crates/evm/src/lib.rs @@ -17,4 +17,4 @@ pub use eth::{EthEvm, EthEvmFactory}; pub mod env; pub use env::EvmEnv; pub mod error; -pub use error::*; \ No newline at end of file +pub use error::*; diff --git a/crates/op-evm/src/lib.rs b/crates/op-evm/src/lib.rs index 91c9254..93b2ff2 100644 --- a/crates/op-evm/src/lib.rs +++ b/crates/op-evm/src/lib.rs @@ -118,7 +118,7 @@ impl EvmFactory for OpEvmFactory { fn create_evm<'a, DB: Database + 'a>(&self, db: DB, input: EvmEnv) -> Self::Evm<'a, DB, ()> { let cfg_env_with_handler_cfg = CfgEnvWithHandlerCfg { cfg_env: input.cfg_env, - handler_cfg: HandlerCfg::new(input.spec), + handler_cfg: HandlerCfg { spec_id: input.spec, is_optimism: true }, }; OpEvm( revm::Evm::builder() @@ -137,7 +137,7 @@ impl EvmFactory for OpEvmFactory { ) -> Self::Evm<'a, DB, I> { let cfg_env_with_handler_cfg = CfgEnvWithHandlerCfg { cfg_env: input.cfg_env, - handler_cfg: HandlerCfg::new(input.spec), + handler_cfg: HandlerCfg { spec_id: input.spec, is_optimism: true }, }; revm::Evm::builder() .with_db(db)