revme/cmd/bench/
snailtracer.rs1use database::{BenchmarkDB, BENCH_CALLER, BENCH_TARGET};
2use revm::{
3 bytecode::Bytecode,
4 primitives::{bytes, hex, Bytes, TxKind},
5 Context, ExecuteEvm, MainBuilder, MainContext,
6};
7
8pub fn simple_example(bytecode: Bytecode) {
9 let mut evm = Context::mainnet()
10 .with_db(BenchmarkDB::new_bytecode(bytecode.clone()))
11 .modify_tx_chained(|tx| {
12 tx.caller = BENCH_CALLER;
14 tx.kind = TxKind::Call(BENCH_TARGET);
15 tx.data = bytes!("30627b7c");
16 tx.gas_limit = 1_000_000_000;
17 })
18 .build_mainnet();
19 let _ = evm.transact_previous().unwrap();
20}
21
22pub fn run() {
23 println!("Running snailtracer example!");
24 let bytecode = Bytecode::new_raw(Bytes::from(hex::decode(BYTES).unwrap()));
25 let start = std::time::Instant::now();
26 simple_example(bytecode);
27 let elapsed = start.elapsed();
28 println!("elapsed: {:?}", elapsed);
29}
30
31const BYTES: &str = include_str!("snailtracer.hex");