revmc_examples_runner/
lib.rs1#![no_std]
4#![cfg_attr(not(test), warn(unused_extern_crates))]
5#![cfg_attr(docsrs, feature(doc_cfg))]
6
7use revmc_builtins as _;
10
11use revm_context::{BlockEnv, CfgEnv, Context, Journal, TxEnv};
12use revm_database_interface::Database;
13use revm_handler::{MainBuilder, MainnetEvm};
14use revm_primitives::{B256, hardfork::SpecId, hex, map::B256Map};
15use revmc_context::{JitEvm, RawEvmCompilerFn};
16
17include!("./common.rs");
18
19revmc_context::extern_revmc! {
21 fn fibonacci;
22}
23
24pub type MainnetContext<DB> = Context<BlockEnv, TxEnv, CfgEnv, DB, Journal<DB>, ()>;
26
27pub fn build_evm<DB: Database>(db: DB) -> JitEvm<MainnetEvm<MainnetContext<DB>>> {
30 let inner = Context::<BlockEnv, TxEnv, CfgEnv, DB, Journal<DB>, ()>::new(db, SpecId::CANCUN)
31 .build_mainnet();
32
33 let mut functions = B256Map::default();
34 functions.insert(B256::from(FIBONACCI_HASH), fibonacci as RawEvmCompilerFn);
35
36 JitEvm::new(inner, functions)
37}