From 6be8a5794c8e5e4a2d8bb905daaa49904b0e6a1e Mon Sep 17 00:00:00 2001 From: Ziyad Edher Date: Fri, 14 Apr 2023 23:41:20 -0700 Subject: [PATCH 1/2] Bump revm version and migrate usage --- runners/revm/Cargo.lock | 56 +++++++++++----------------------------- runners/revm/Cargo.toml | 5 ++-- runners/revm/src/main.rs | 9 +++---- 3 files changed, 21 insertions(+), 49 deletions(-) diff --git a/runners/revm/Cargo.lock b/runners/revm/Cargo.lock index 2e53d09e..61f4350d 100644 --- a/runners/revm/Cargo.lock +++ b/runners/revm/Cargo.lock @@ -277,18 +277,6 @@ dependencies = [ "libc", ] -[[package]] -name = "fixed-hash" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfcf0ed7fe52a17a03854ec54a9f76d6d84508d1c0e66bc1793301c73fc8493c" -dependencies = [ - "byteorder", - "rand", - "rustc-hex", - "static_assertions", -] - [[package]] name = "fixed-hash" version = "0.8.0" @@ -363,9 +351,9 @@ checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" [[package]] name = "hex-literal" -version = "0.3.4" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" +checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "impl-codec" @@ -494,26 +482,15 @@ version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" -[[package]] -name = "primitive-types" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e28720988bff275df1f51b171e1b2a18c30d194c4d2b61defdacecd625a5d94a" -dependencies = [ - "fixed-hash 0.7.0", - "impl-codec", - "impl-rlp", - "uint", -] - [[package]] name = "primitive-types" version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9f3486ccba82358b11a77516035647c34ba167dfa53312630de83b12bd4f3d66" dependencies = [ - "fixed-hash 0.8.0", + "fixed-hash", "impl-codec", + "impl-rlp", "uint", ] @@ -607,35 +584,32 @@ dependencies = [ [[package]] name = "revm-interpreter" -version = "3.0.0" -source = "git+https://github.com/bluealloy/revm?rev=3fda52e#3fda52ecdcdc0767697a020fdc0ffb8b2f433158" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f408c834f251dc33ca424b027c132f2cfe541335c5d9895e04d2987f9cfd071" dependencies = [ - "bytes", "derive_more", "enumn", - "fixed-hash 0.8.0", - "hashbrown 0.13.2", - "hex", - "hex-literal", "revm-primitives", - "rlp", - "ruint", "sha3", ] [[package]] name = "revm-primitives" -version = "3.0.0" -source = "git+https://github.com/bluealloy/revm?rev=3fda52e#3fda52ecdcdc0767697a020fdc0ffb8b2f433158" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "180427e1169b860ab63eaa5bcff158010073646abf3312aed11a1d7aa1aa8291" dependencies = [ "auto_impl", + "bitvec", "bytes", "derive_more", "enumn", - "fixed-hash 0.8.0", + "fixed-hash", "hashbrown 0.13.2", "hex", "hex-literal", + "primitive-types", "rlp", "ruint", "sha3", @@ -658,7 +632,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ad3a104dc8c3867f653b0fec89c65e00b0ceb752718ad282177a7e0f33257ac" dependencies = [ "derive_more", - "primitive-types 0.12.1", + "primitive-types", "rlp", "ruint-macro", "rustc_version", @@ -678,7 +652,7 @@ dependencies = [ "bytes", "clap", "hex", - "primitive-types 0.11.1", + "primitive-types", "revm-interpreter", ] diff --git a/runners/revm/Cargo.toml b/runners/revm/Cargo.toml index 2c149558..4bfd86de 100644 --- a/runners/revm/Cargo.toml +++ b/runners/revm/Cargo.toml @@ -7,7 +7,6 @@ edition = "2021" bytes = "1.4" clap = { version = "4.2.2", features = ["derive"] } hex = "0.4" -primitive-types = { version = "0.11", features = ["rlp"] } -# from branch primitives -revm-interpreter = { git = "https://github.com/bluealloy/revm", rev="3fda52e", package="revm-interpreter"} +primitive-types = { version = "0.12.1", features = ["rlp"] } +revm-interpreter = "1.1.1" diff --git a/runners/revm/src/main.rs b/runners/revm/src/main.rs index 17f53304..75a185d2 100644 --- a/runners/revm/src/main.rs +++ b/runners/revm/src/main.rs @@ -7,7 +7,6 @@ use revm_interpreter::{ primitives::{Bytecode, Env, LatestSpec, TransactTo, B160}, Contract, DummyHost, InstructionResult, Interpreter, }; -//use revm-interpreter::{} extern crate alloc; @@ -49,10 +48,10 @@ fn main() { env.tx.transact_to = TransactTo::create(); env.tx.data = calldata.clone(); - let bytecode = to_analysed::(Bytecode::new_raw(contract_code)); + let bytecode = to_analysed(Bytecode::new_raw(contract_code)); // revm interpreter. (rakita note: should be simplified in one of next version.) - let contract = Contract::new_env::(&env, bytecode); + let contract = Contract::new_env(&env, bytecode); let mut host = DummyHost::new(env.clone()); let mut interpreter = Interpreter::new(contract, u64::MAX, false); let reason = interpreter.run::<_, LatestSpec>(&mut host); @@ -66,8 +65,8 @@ fn main() { env.tx.caller = caller_address; env.tx.data = calldata; - let created_bytecode = to_analysed::(Bytecode::new_raw(created_contract)); - let contract = Contract::new_env::(&env, created_bytecode); + let created_bytecode = to_analysed(Bytecode::new_raw(created_contract)); + let contract = Contract::new_env(&env, created_bytecode); for _ in 0..args.num_runs { let mut interpreter = revm_interpreter::Interpreter::new(contract.clone(), u64::MAX, false); From b62eb4a458523b10956281ffef70f48b3a7904ea Mon Sep 17 00:00:00 2001 From: Ziyad Edher Date: Fri, 14 Apr 2023 23:41:48 -0700 Subject: [PATCH 2/2] Update README.md with new benchmark results --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index aa6d7f47..d6db9049 100644 --- a/README.md +++ b/README.md @@ -6,16 +6,16 @@ evm-bench makes it easy to compare EVM performance in a scalable, standardized, and portable way. -| | evmone | revm | pyrevm | geth | py-evm.pypy | py-evm.cpython | ethereumjs | -| ----------------------- | ------ | ------ | ------ | ------ | ----------- | -------------- | ---------- | -| **sum** | 66ms | 84.8ms | 194ms | 235ms | 7.201s | 19.0886s | 146.3218s | -| **relative** | 1.000x | 1.285x | 2.939x | 3.561x | 109.106x | 289.221x | 2216.997x | -| | | | | | | | | -| erc20.approval-transfer | 7ms | 9.6ms | 16.2ms | 17ms | 425.2ms | 1.13s | 2.0006s | -| erc20.mint | 5ms | 6.4ms | 14.8ms | 17.2ms | 334ms | 1.1554s | 3.1352s | -| erc20.transfer | 8.6ms | 11.6ms | 22.8ms | 24.6ms | 449.2ms | 1.6172s | 3.6564s | -| snailtracer | 43ms | 53ms | 128ms | 163ms | 5.664s | 13.675s | 135.059s | -| ten-thousand-hashes | 2.4ms | 4.2ms | 12.2ms | 13.2ms | 328.6ms | 1.511s | 2.4706s | +| | evmone | revm | pyrevm | geth | py-evm.cpython | ethereumjs | +| ----------------------- | ------ | ------- | ------ | ------- | -------------- | ---------- | +| **sum** | 69.2ms | 100.4ms | 218ms | 231.4ms | 21.7272s | 31.3376s | +| **relative** | 1.000x | 1.451x | 3.150x | 3.344x | 313.977x | 452.855x | +| | | | | | | | +| erc20.approval-transfer | 7.4ms | 10.2ms | 21.8ms | 17.4ms | 1.374s | 1.8832s | +| erc20.mint | 5.2ms | 6.2ms | 16.8ms | 18.4ms | 1.2822s | 2.8656s | +| erc20.transfer | 8.6ms | 12ms | 24.4ms | 26ms | 1.8158s | 3.3676s | +| snailtracer | 45ms | 67ms | 143ms | 157ms | 15.455s | 21.592s | +| ten-thousand-hashes | 3ms | 5ms | 12ms | 12.6ms | 1.8002s | 1.6292s | To reproduce these results, check out [usage with the evm-bench suite below](#with-the-evm-bench-suite).