op_revm/api/
default_ctx.rs1use crate::{L1BlockInfo, OpSpecId, OpTransaction};
3use revm::{
4 context::{BlockEnv, CfgEnv, TxEnv},
5 database_interface::EmptyDB,
6 Context, Journal, MainContext,
7};
8
9pub type OpContext<DB> =
11 Context<BlockEnv, OpTransaction<TxEnv>, CfgEnv<OpSpecId>, DB, Journal<DB>, L1BlockInfo>;
12
13pub trait DefaultOp {
15 fn op() -> OpContext<EmptyDB>;
17}
18
19impl DefaultOp for OpContext<EmptyDB> {
20 fn op() -> Self {
21 Context::mainnet()
22 .with_tx(OpTransaction::default())
23 .with_cfg(CfgEnv::new_with_spec(OpSpecId::BEDROCK))
24 .with_chain(L1BlockInfo::default())
25 }
26}
27
28#[cfg(test)]
29mod test {
30 use super::*;
31 use crate::api::builder::OpBuilder;
32 use revm::{
33 inspector::{InspectEvm, NoOpInspector},
34 ExecuteEvm,
35 };
36
37 #[test]
38 fn default_run_op() {
39 let ctx = Context::op();
40 let mut evm = ctx.build_op_with_inspector(NoOpInspector {});
42 let _ = evm.transact_finalize(OpTransaction::default());
44 let _ = evm.inspect_tx(OpTransaction::default());
46 }
47}