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)