Redo gas estimation via revm

Adds a minimal amount of packages. Does add decent complexity. Avoids having
constants which aren't exact, due to things like the quadratic memory cost, and
the issues with such estimates accordingly.
This commit is contained in:
Luke Parker
2025-01-26 22:42:50 -05:00
parent 27c1dc4646
commit 5164a710a2
6 changed files with 682 additions and 227 deletions

138
Cargo.lock generated
View File

@@ -318,6 +318,7 @@ dependencies = [
"alloy-primitives",
"alloy-rpc-client",
"alloy-rpc-types-eth",
"alloy-rpc-types-trace",
"alloy-transport",
"async-stream",
"async-trait",
@@ -411,6 +412,20 @@ dependencies = [
"thiserror 2.0.9",
]
[[package]]
name = "alloy-rpc-types-trace"
version = "0.9.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cd38207e056cc7d1372367fbb4560ddf9107cbd20731743f641246bf0dede149"
dependencies = [
"alloy-primitives",
"alloy-rpc-types-eth",
"alloy-serde",
"serde",
"serde_json",
"thiserror 2.0.9",
]
[[package]]
name = "alloy-serde"
version = "0.9.2"
@@ -979,6 +994,16 @@ dependencies = [
"url",
]
[[package]]
name = "aurora-engine-modexp"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0aef7712851e524f35fbbb74fa6599c5cd8692056a1c36f9ca0d2001b670e7e5"
dependencies = [
"hex",
"num",
]
[[package]]
name = "auto_impl"
version = "1.2.0"
@@ -2562,6 +2587,17 @@ dependencies = [
"syn 2.0.94",
]
[[package]]
name = "enumn"
version = "0.1.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2f9ed6b3789237c8a0c1c505af1c7eb2c560df6186f01b098c3a1064ea532f38"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.94",
]
[[package]]
name = "env_logger"
version = "0.10.2"
@@ -5962,6 +5998,20 @@ dependencies = [
"winapi",
]
[[package]]
name = "num"
version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23"
dependencies = [
"num-bigint",
"num-complex",
"num-integer",
"num-iter",
"num-rational",
"num-traits",
]
[[package]]
name = "num-bigint"
version = "0.4.6"
@@ -6006,6 +6056,17 @@ dependencies = [
"num-traits",
]
[[package]]
name = "num-iter"
version = "0.1.45"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf"
dependencies = [
"autocfg",
"num-integer",
"num-traits",
]
[[package]]
name = "num-rational"
version = "0.4.2"
@@ -7275,6 +7336,68 @@ dependencies = [
"quick-error",
]
[[package]]
name = "revm"
version = "19.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0a5a57589c308880c0f89ebf68d92aeef0d51e1ed88867474f895f6fd0f25c64"
dependencies = [
"auto_impl",
"cfg-if",
"dyn-clone",
"revm-interpreter",
"revm-precompile",
"serde",
"serde_json",
]
[[package]]
name = "revm-interpreter"
version = "15.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c0f632e761f171fb2f6ace8d1552a5793e0350578d4acec3e79ade1489f4c2a6"
dependencies = [
"revm-primitives",
"serde",
]
[[package]]
name = "revm-precompile"
version = "16.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6542fb37650dfdbf4b9186769e49c4a8bc1901a3280b2ebf32f915b6c8850f36"
dependencies = [
"aurora-engine-modexp",
"c-kzg",
"cfg-if",
"k256",
"once_cell",
"revm-primitives",
"ripemd",
"secp256k1",
"sha2",
"substrate-bn",
]
[[package]]
name = "revm-primitives"
version = "15.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "48faea1ecf2c9f80d9b043bbde0db9da616431faed84c4cfa3dd7393005598e6"
dependencies = [
"alloy-eip2930",
"alloy-eip7702",
"alloy-primitives",
"auto_impl",
"bitflags 2.6.0",
"bitvec",
"cfg-if",
"dyn-clone",
"enumn",
"hex",
"serde",
]
[[package]]
name = "rfc6979"
version = "0.4.0"
@@ -9485,6 +9608,7 @@ dependencies = [
"k256",
"parity-scale-codec",
"rand_core",
"revm",
"serai-client",
"serai-ethereum-test-primitives",
"serai-processor-ethereum-deployer",
@@ -9844,6 +9968,7 @@ version = "1.0.134"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d00f4175c42ee48b15416f6193a959ba3a0d67fc699a0db9ad12df9f83991c7d"
dependencies = [
"indexmap 2.7.0",
"itoa",
"memchr",
"ryu",
@@ -10907,6 +11032,19 @@ dependencies = [
"zeroize",
]
[[package]]
name = "substrate-bn"
version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "72b5bbfa79abbae15dd642ea8176a21a635ff3c00059961d1ea27ad04e5b441c"
dependencies = [
"byteorder",
"crunchy",
"lazy_static",
"rand",
"rustc-hex",
]
[[package]]
name = "substrate-build-script-utils"
version = "3.0.0"