feat: update revm 19 alloy 09 (#13594)

This commit is contained in:
Matthias Seitz
2024-12-30 19:49:39 +01:00
committed by GitHub
parent a6325c41e0
commit 0b135a2670
54 changed files with 273 additions and 341 deletions

255
Cargo.lock generated
View File

@@ -121,9 +121,9 @@ dependencies = [
[[package]]
name = "alloy-consensus"
version = "0.8.3"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e88e1edea70787c33e11197d3f32ae380f3db19e6e061e539a5bcf8184a6b326"
checksum = "db66918860ff33920fb9e6d648d1e8cee275321406ea255ac9320f6562e26fec"
dependencies = [
"alloy-eips",
"alloy-primitives",
@@ -141,9 +141,9 @@ dependencies = [
[[package]]
name = "alloy-consensus-any"
version = "0.8.3"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "57b1bb53f40c0273cd1975573cd457b39213e68584e36d1401d25fd0398a1d65"
checksum = "04519b5157de8a2166bddb07d84a63590100f1d3e2b3682144e787f1c27ccdac"
dependencies = [
"alloy-consensus",
"alloy-eips",
@@ -155,9 +155,9 @@ dependencies = [
[[package]]
name = "alloy-contract"
version = "0.8.3"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1b668c78c4b1f12f474ede5a85e8ce550d0aa1ef7d49fd1d22855a43b960e725"
checksum = "8ff00ab4dd371f53e648d65bd5af01057bdad8aaae8b3cd7cee75445575995c1"
dependencies = [
"alloy-dyn-abi",
"alloy-json-abi",
@@ -206,9 +206,9 @@ dependencies = [
[[package]]
name = "alloy-eip7702"
version = "0.4.2"
version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4c986539255fb839d1533c128e190e557e52ff652c9ef62939e233a81dd93f7e"
checksum = "cabf647eb4650c91a9d38cb6f972bb320009e7e9d61765fb688a86f1563b33e8"
dependencies = [
"alloy-primitives",
"alloy-rlp",
@@ -222,9 +222,9 @@ dependencies = [
[[package]]
name = "alloy-eips"
version = "0.8.3"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5f9fadfe089e9ccc0650473f2d4ef0a28bc015bbca5631d9f0f09e49b557fdb3"
checksum = "e56518f46b074d562ac345238343e2231b672a13aca18142d285f95cc055980b"
dependencies = [
"alloy-eip2930",
"alloy-eip7702",
@@ -243,10 +243,11 @@ dependencies = [
[[package]]
name = "alloy-genesis"
version = "0.8.3"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2b2a4cf7b70f3495788e74ce1c765260ffe38820a2a774ff4aacb62e31ea73f9"
checksum = "2cf200fd4c28435995e47b26d4761a4cf6e1011a13b81f9a9afaf16a93d9fd09"
dependencies = [
"alloy-eips",
"alloy-primitives",
"alloy-serde",
"alloy-trie",
@@ -267,9 +268,9 @@ dependencies = [
[[package]]
name = "alloy-json-rpc"
version = "0.8.3"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e29040b9d5fe2fb70415531882685b64f8efd08dfbd6cc907120650504821105"
checksum = "b17c5ada5faf0f9d2921e8b20971eced68abbc92a272b0502cac8b1d00f56777"
dependencies = [
"alloy-primitives",
"alloy-sol-types",
@@ -281,9 +282,9 @@ dependencies = [
[[package]]
name = "alloy-network"
version = "0.8.3"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "510cc00b318db0dfccfdd2d032411cfae64fc144aef9679409e014145d3dacc4"
checksum = "24f3117647e3262f6db9e18b371bf67c5810270c0cf915786c30fad3b1739561"
dependencies = [
"alloy-consensus",
"alloy-consensus-any",
@@ -306,9 +307,9 @@ dependencies = [
[[package]]
name = "alloy-network-primitives"
version = "0.8.3"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9081c099e798b8a2bba2145eb82a9a146f01fc7a35e9ab6e7b43305051f97550"
checksum = "1535a4577648ec2fd3c446d4644d9b8e9e01e5816be53a5d515dc1624e2227b2"
dependencies = [
"alloy-consensus",
"alloy-eips",
@@ -319,9 +320,9 @@ dependencies = [
[[package]]
name = "alloy-node-bindings"
version = "0.8.3"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "aef9849fb8bbb28f69f2cbdb4b0dac2f0e35c04f6078a00dfb8486469aed02de"
checksum = "bf741e871fb62c80e0007041e8bc1e81978abfd98aafea8354472f06bfd4d309"
dependencies = [
"alloy-genesis",
"alloy-primitives",
@@ -368,9 +369,9 @@ dependencies = [
[[package]]
name = "alloy-provider"
version = "0.8.3"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dc2dfaddd9a30aa870a78a4e1316e3e115ec1e12e552cbc881310456b85c1f24"
checksum = "fcfa2db03d4221b5ca14bff7dbed4712689cb87a3e826af522468783ff05ec5d"
dependencies = [
"alloy-chains",
"alloy-consensus",
@@ -390,7 +391,7 @@ dependencies = [
"async-stream",
"async-trait",
"auto_impl",
"dashmap 6.1.0",
"dashmap",
"futures",
"futures-utils-wasm",
"lru",
@@ -409,9 +410,9 @@ dependencies = [
[[package]]
name = "alloy-pubsub"
version = "0.8.3"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "695809e743628d54510c294ad17a4645bd9f465aeb0d20ee9ce9877c9712dc9c"
checksum = "4eace70e43b073d4bfc1de915c45993a50facd6526fd8da80204e0f83a9e233a"
dependencies = [
"alloy-json-rpc",
"alloy-primitives",
@@ -450,9 +451,9 @@ dependencies = [
[[package]]
name = "alloy-rpc-client"
version = "0.8.3"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "531137b283547d5b9a5cafc96b006c64ef76810c681d606f28be9781955293b6"
checksum = "d2ec6963b08f1c6ef8eacc01dbba20f2c6a1533550403f6b52dbbe0da0360834"
dependencies = [
"alloy-json-rpc",
"alloy-primitives",
@@ -475,9 +476,9 @@ dependencies = [
[[package]]
name = "alloy-rpc-types"
version = "0.8.3"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3410a472ce26c457e9780f708ee6bd540b30f88f1f31fdab7a11d00bd6aa1aee"
checksum = "138ef78340b47f16ca4d04a4d75fe2ccdb3f1a4f748d5f3b2fbebc43581fd02e"
dependencies = [
"alloy-primitives",
"alloy-rpc-types-engine",
@@ -488,9 +489,9 @@ dependencies = [
[[package]]
name = "alloy-rpc-types-admin"
version = "0.8.3"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5e4da9f5c14c38d84ce83a7c76541d39b7fd15ccd2265690151284544836e8c8"
checksum = "7de3dafd26452207c9d5caa19d74295704fda6c2656c74081ce5609eb7975c1b"
dependencies = [
"alloy-genesis",
"alloy-primitives",
@@ -500,9 +501,9 @@ dependencies = [
[[package]]
name = "alloy-rpc-types-anvil"
version = "0.8.3"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9ed06bd8a5fc57b352a6cbac24eec52a4760f08ae2c1eb56ac49c8ed4b02c351"
checksum = "efbe94a1fcd071f19b313e4506d1affee0bd0b4a1cfbfd18a2541fda8e5487cf"
dependencies = [
"alloy-primitives",
"alloy-rpc-types-eth",
@@ -512,9 +513,9 @@ dependencies = [
[[package]]
name = "alloy-rpc-types-any"
version = "0.8.3"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ed98e1af55a7d856bfa385f30f63d8d56be2513593655c904a8f4a7ec963aa3e"
checksum = "c64a83112b09bd293ef522bfa3800fa2d2df4d72f2bcd3a84b08490503b22e55"
dependencies = [
"alloy-consensus-any",
"alloy-rpc-types-eth",
@@ -523,9 +524,9 @@ dependencies = [
[[package]]
name = "alloy-rpc-types-beacon"
version = "0.8.3"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c966cacae719252501d2c5f6b67beac2fd6c03ec3c5bb64d664e769737ea5651"
checksum = "daf233da6e246eb792a9ce0aec3317cf5fa085ef4c800d1733d12a12aabdc2df"
dependencies = [
"alloy-eips",
"alloy-primitives",
@@ -539,9 +540,9 @@ dependencies = [
[[package]]
name = "alloy-rpc-types-debug"
version = "0.8.3"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e1dec1c1b65614ebd5834a7dfddf525a186962082023718e10f4f64ed2d02514"
checksum = "3cb36f68cc0c83120ecfbf0b1862b35f846da8e0cb95be3d10a3a08bfa711248"
dependencies = [
"alloy-primitives",
"serde",
@@ -549,9 +550,9 @@ dependencies = [
[[package]]
name = "alloy-rpc-types-engine"
version = "0.8.3"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "03bd16fa4959255ebf4a7702df08f325e5631df5cdca07c8a8e58bdc10fe02e3"
checksum = "2c9d87e5622ed4d471f1eefb99a400cd7e362a1889baa9bb4417742260ca43a8"
dependencies = [
"alloy-consensus",
"alloy-eips",
@@ -570,9 +571,9 @@ dependencies = [
[[package]]
name = "alloy-rpc-types-eth"
version = "0.8.3"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8737d7a6e37ca7bba9c23e9495c6534caec6760eb24abc9d5ffbaaba147818e1"
checksum = "5fc1892a1ac0d2a49c063f0791aa6bde342f020c5d37aaaec14832b661802cb4"
dependencies = [
"alloy-consensus",
"alloy-consensus-any",
@@ -583,18 +584,18 @@ dependencies = [
"alloy-serde",
"alloy-sol-types",
"arbitrary",
"derive_more",
"itertools 0.13.0",
"jsonrpsee-types",
"serde",
"serde_json",
"thiserror 2.0.9",
]
[[package]]
name = "alloy-rpc-types-mev"
version = "0.8.3"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d81da8a9b3094af917a109d55617844096d22c8dbf70cde1c5a93a2bbef7c29a"
checksum = "04a86c2e9433b6dbc531fd1f09dd07198cd2127f5567528140d70ee8f8091f08"
dependencies = [
"alloy-eips",
"alloy-primitives",
@@ -606,9 +607,9 @@ dependencies = [
[[package]]
name = "alloy-rpc-types-trace"
version = "0.8.3"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "db14a83665cd28ffd01939f04c2adf0e0fd9bb648b73ca651dcaa0869dae027f"
checksum = "b25a5e0a7ae0127f20077b23319c8d4a416187c204bf3329ab28a0309ed45535"
dependencies = [
"alloy-primitives",
"alloy-rpc-types-eth",
@@ -620,9 +621,9 @@ dependencies = [
[[package]]
name = "alloy-rpc-types-txpool"
version = "0.8.3"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0a574e97dff62097d22d6cd360f898f3d069239ca0ca7bfc2e5e7b22815ec572"
checksum = "64952ac1199868bcd05b3aae2d5e988e6bd171e42ae71580abe6718263061b27"
dependencies = [
"alloy-primitives",
"alloy-rpc-types-eth",
@@ -632,9 +633,9 @@ dependencies = [
[[package]]
name = "alloy-serde"
version = "0.8.3"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5851bf8d5ad33014bd0c45153c603303e730acc8a209450a7ae6b4a12c2789e2"
checksum = "17939f6bef49268e4494158fce1ab8913cd6164ec3f9a4ada2c677b9b5a77f2f"
dependencies = [
"alloy-primitives",
"arbitrary",
@@ -644,9 +645,9 @@ dependencies = [
[[package]]
name = "alloy-signer"
version = "0.8.3"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7e10ca565da6500cca015ba35ee424d59798f2e1b85bc0dd8f81dafd401f029a"
checksum = "77d1f0762a44338f0e05987103bd5919df52170d949080bfebfeb6aaaa867c39"
dependencies = [
"alloy-primitives",
"async-trait",
@@ -658,9 +659,9 @@ dependencies = [
[[package]]
name = "alloy-signer-local"
version = "0.8.3"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "47fababf5a745133490cde927d48e50267f97d3d1209b9fc9f1d1d666964d172"
checksum = "59dd2f16055f532f83a8f8e3c13cf1e3b5ff78afdef82edb613946156e542272"
dependencies = [
"alloy-consensus",
"alloy-network",
@@ -746,9 +747,9 @@ dependencies = [
[[package]]
name = "alloy-transport"
version = "0.8.3"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "538a04a37221469cac0ce231b737fd174de2fdfcdd843bdd068cb39ed3e066ad"
checksum = "3a3827275a4eed3431ce876a59c76fd19effc2a8c09566b2603e3a3376d38af0"
dependencies = [
"alloy-json-rpc",
"base64 0.22.1",
@@ -766,9 +767,9 @@ dependencies = [
[[package]]
name = "alloy-transport-http"
version = "0.8.3"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2ed40eb1e1265b2911512f6aa1dcece9702d078f5a646730c45e39e2be00ac1c"
checksum = "958417ddf333c55b0627cb7fbee7c6666895061dee79f50404dd6dbdd8e9eba0"
dependencies = [
"alloy-json-rpc",
"alloy-transport",
@@ -781,9 +782,9 @@ dependencies = [
[[package]]
name = "alloy-transport-ipc"
version = "0.8.3"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a7a172a59d24706b26a79a837f86d51745cb26ca6f8524712acd0208a14cff95"
checksum = "168abcf4337c3fbc0bf9030e62bbaca8b9a0fddf687ecc6585e2e6515dde8b0d"
dependencies = [
"alloy-json-rpc",
"alloy-pubsub",
@@ -800,9 +801,9 @@ dependencies = [
[[package]]
name = "alloy-transport-ws"
version = "0.8.3"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fba0e39d181d13c266dbb8ca54ed584a2c66d6e9279afca89c7a6b1825e98abb"
checksum = "fcaf327f8d3e938272c2eace672094d3800e069e3f34137358e563faaa314f8a"
dependencies = [
"alloy-pubsub",
"alloy-transport",
@@ -1400,13 +1401,14 @@ dependencies = [
[[package]]
name = "boa_ast"
version = "0.19.1"
version = "0.20.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3a69ee3a749ea36d4e56d92941e7b25076b493d4917c3d155b6cf369e23547d9"
checksum = "2c340fe0f0b267787095cbe35240c6786ff19da63ec7b69367ba338eace8169b"
dependencies = [
"bitflags 2.6.0",
"boa_interner",
"boa_macros",
"boa_string",
"indexmap 2.7.0",
"num-bigint",
"rustc-hash 2.1.0",
@@ -1414,9 +1416,9 @@ dependencies = [
[[package]]
name = "boa_engine"
version = "0.19.1"
version = "0.20.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "06e4559b35b80ceb2e6328481c0eca9a24506663ea33ee1e279be6b5b618b25c"
checksum = "f620c3f06f51e65c0504ddf04978be1b814ac6586f0b45f6019801ab5efd37f9"
dependencies = [
"arrayvec",
"bitflags 2.6.0",
@@ -1429,9 +1431,9 @@ dependencies = [
"boa_string",
"bytemuck",
"cfg-if",
"dashmap 5.5.3",
"fast-float",
"hashbrown 0.14.5",
"dashmap",
"fast-float2",
"hashbrown 0.15.2",
"icu_normalizer",
"indexmap 2.7.0",
"intrusive-collections",
@@ -1453,32 +1455,32 @@ dependencies = [
"static_assertions",
"tap",
"thin-vec",
"thiserror 1.0.69",
"thiserror 2.0.9",
"time",
]
[[package]]
name = "boa_gc"
version = "0.19.1"
version = "0.20.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "716406f57d67bc3ac7fd227d5513b42df401dff14a3be22cbd8ee29817225363"
checksum = "2425c0b7720d42d73eaa6a883fbb77a5c920da8694964a3d79a67597ac55cce2"
dependencies = [
"boa_macros",
"boa_profiler",
"boa_string",
"hashbrown 0.14.5",
"hashbrown 0.15.2",
"thin-vec",
]
[[package]]
name = "boa_interner"
version = "0.19.1"
version = "0.20.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4e18df2272616e1ba0322a69333d37dbb78797f1aa0595aad9dc41e8ecd06ad9"
checksum = "42407a3b724cfaecde8f7d4af566df4b56af32a2f11f0956f5570bb974e7f749"
dependencies = [
"boa_gc",
"boa_macros",
"hashbrown 0.14.5",
"hashbrown 0.15.2",
"indexmap 2.7.0",
"once_cell",
"phf",
@@ -1488,9 +1490,9 @@ dependencies = [
[[package]]
name = "boa_macros"
version = "0.19.1"
version = "0.20.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "240f4126219a83519bad05c9a40bfc0303921eeb571fc2d7e44c17ffac99d3f1"
checksum = "9fd3f870829131332587f607a7ff909f1af5fc523fd1b192db55fbbdf52e8d3c"
dependencies = [
"proc-macro2",
"quote",
@@ -1500,16 +1502,16 @@ dependencies = [
[[package]]
name = "boa_parser"
version = "0.19.1"
version = "0.20.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "62b59dc05bf1dc019b11478a92986f590cff43fced4d20e866eefb913493e91c"
checksum = "9cc142dac798cdc6e2dbccfddeb50f36d2523bb977a976e19bdb3ae19b740804"
dependencies = [
"bitflags 2.6.0",
"boa_ast",
"boa_interner",
"boa_macros",
"boa_profiler",
"fast-float",
"fast-float2",
"icu_properties",
"num-bigint",
"num-traits",
@@ -1519,17 +1521,17 @@ dependencies = [
[[package]]
name = "boa_profiler"
version = "0.19.1"
version = "0.20.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "00ee0645509b3b91abd724f25072649d9e8e65653a78ff0b6e592788a58dd838"
checksum = "4064908e7cdf9b6317179e9b04dcb27f1510c1c144aeab4d0394014f37a0f922"
[[package]]
name = "boa_string"
version = "0.19.1"
version = "0.20.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ae85205289bab1f2c7c8a30ddf0541cf89ba2ff7dbd144feef50bbfa664288d4"
checksum = "7debc13fbf7997bf38bf8e9b20f1ad5e2a7d27a900e1f6039fe244ce30f589b5"
dependencies = [
"fast-float",
"fast-float2",
"paste",
"rustc-hash 2.1.0",
"sptr",
@@ -2339,19 +2341,6 @@ dependencies = [
"syn 2.0.93",
]
[[package]]
name = "dashmap"
version = "5.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856"
dependencies = [
"cfg-if",
"hashbrown 0.14.5",
"lock_api",
"once_cell",
"parking_lot_core",
]
[[package]]
name = "dashmap"
version = "6.1.0"
@@ -3180,10 +3169,10 @@ dependencies = [
]
[[package]]
name = "fast-float"
version = "0.2.0"
name = "fast-float2"
version = "0.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "95765f67b4b18863968b4a1bd5bb576f732b29a4a28c7cd84c09fa3e2875f33c"
checksum = "f8eb564c5c7423d25c886fb561d1e4ee69f72354d16918afa32c08811f6b6a55"
[[package]]
name = "fastrand"
@@ -5386,9 +5375,9 @@ checksum = "b410bbe7e14ab526a0e86877eb47c6996a2bd7746f027ba551028c925390e4e9"
[[package]]
name = "op-alloy-consensus"
version = "0.8.5"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c698f80ee53e56d1b60a97e9d90ad09788b516c964c9c97fb5927860b812ef0d"
checksum = "0adb232ec805af3aa35606c19329aa7dc44c4457ae318ed0b8fc7f799dd7dbfe"
dependencies = [
"alloy-consensus",
"alloy-eips",
@@ -5404,9 +5393,9 @@ dependencies = [
[[package]]
name = "op-alloy-genesis"
version = "0.8.5"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a023058a145333ed1760fd34d7f7605d5dd0211381690a29a66658127c8f307b"
checksum = "84c272cfd65317538f5815c2b7059445230b050d48ebe2d0bab3e861d419a785"
dependencies = [
"alloy-consensus",
"alloy-eips",
@@ -5419,9 +5408,9 @@ dependencies = [
[[package]]
name = "op-alloy-network"
version = "0.8.5"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d5771424687f73e70f8dbc7d1f4b404cc2fdac9b4cd14745d7f7065c3422e947"
checksum = "19872a58b7acceeffb8e88ea048bee1690e7cde53068bd652976435d61fcd1de"
dependencies = [
"alloy-consensus",
"alloy-network",
@@ -5434,9 +5423,9 @@ dependencies = [
[[package]]
name = "op-alloy-protocol"
version = "0.8.5"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "caf7cfd504c4cb5b34fe15a59ea68cbb87c3c9cbea4214d31455464505ee6434"
checksum = "ad65d040648e0963ed378e88489f5805e24fb56b7e6611362299cd4c24debeb2"
dependencies = [
"alloc-no-stdlib",
"alloy-consensus",
@@ -5458,9 +5447,9 @@ dependencies = [
[[package]]
name = "op-alloy-rpc-jsonrpsee"
version = "0.8.5"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a8a942124522a7f43d66fc0c332c77edb260c061560f02f8b45a8cc66c740164"
checksum = "36b1f2547067c5b60f3144ae1033a54ce1d11341d8327fa8f203b048d51465e9"
dependencies = [
"alloy-eips",
"alloy-primitives",
@@ -5471,9 +5460,9 @@ dependencies = [
[[package]]
name = "op-alloy-rpc-types"
version = "0.8.5"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b5aef2128fe8979596b3a1f79a2454f3e32fd239889a03d50fe686b9a2f30a16"
checksum = "e68d1a51fe3ee143f102b82f54fa237f21d12635da363276901e6d3ef6c65b7b"
dependencies = [
"alloy-consensus",
"alloy-eips",
@@ -5490,9 +5479,9 @@ dependencies = [
[[package]]
name = "op-alloy-rpc-types-engine"
version = "0.8.5"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b333b8894735ad2e5e2e3afb828a52811e75504735e19a5f9274483826d7fa99"
checksum = "9f8833ef149ceb74f8f25a79801d110d88ec2db32e700fa10db6c5f5b5cbb71a"
dependencies = [
"alloy-eips",
"alloy-primitives",
@@ -5819,9 +5808,9 @@ dependencies = [
[[package]]
name = "pollster"
version = "0.3.0"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "22686f4785f02a4fcc856d3b3bb19bf6c8160d103f7a99cc258bddd0251dc7f2"
checksum = "2f3a9f18d041e6d0e102a0a46750538147e5e8992d3b4873aaafee2520b00ce3"
[[package]]
name = "polyval"
@@ -6932,7 +6921,6 @@ dependencies = [
"reth-primitives",
"reth-primitives-traits",
"reth-storage-api",
"revm-primitives",
]
[[package]]
@@ -7882,7 +7870,7 @@ dependencies = [
"bitflags 2.6.0",
"byteorder",
"codspeed-criterion-compat",
"dashmap 6.1.0",
"dashmap",
"derive_more",
"indexmap 2.7.0",
"parking_lot",
@@ -8805,7 +8793,7 @@ dependencies = [
"alloy-rpc-types-engine",
"assert_matches",
"auto_impl",
"dashmap 6.1.0",
"dashmap",
"eyre",
"itertools 0.13.0",
"metrics",
@@ -9668,13 +9656,14 @@ dependencies = [
[[package]]
name = "revm"
version = "18.0.0"
version = "19.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "15689a3c6a8d14b647b4666f2e236ef47b5a5133cdfd423f545947986fff7013"
checksum = "e8905d0c5f10e767f13ea7cb8e502d315f144071a60fe2bd83977922dd3afa26"
dependencies = [
"auto_impl",
"cfg-if",
"dyn-clone",
"once_cell",
"revm-interpreter",
"revm-precompile",
"serde",
@@ -9683,9 +9672,9 @@ dependencies = [
[[package]]
name = "revm-inspectors"
version = "0.13.0"
version = "0.14.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8d056aaa21f36038ab35fe8ce940ee332903a0b4b992b8ca805fb60c85eb2086"
checksum = "dc873bc873e12a1723493e1a35804fa79b673a0bfb1c19cfee659d46def8be42"
dependencies = [
"alloy-primitives",
"alloy-rpc-types-eth",
@@ -9702,9 +9691,9 @@ dependencies = [
[[package]]
name = "revm-interpreter"
version = "14.0.0"
version = "15.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "74e3f11d0fed049a4a10f79820c59113a79b38aed4ebec786a79d5c667bfeb51"
checksum = "e5ff76b50b5a9fa861fbc236fc82ce1afdf58861f65012aea807d679e54630d6"
dependencies = [
"revm-primitives",
"serde",
@@ -9712,9 +9701,9 @@ dependencies = [
[[package]]
name = "revm-precompile"
version = "15.0.0"
version = "16.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e381060af24b750069a2b2d2c54bba273d84e8f5f9e8026fc9262298e26cc336"
checksum = "6542fb37650dfdbf4b9186769e49c4a8bc1901a3280b2ebf32f915b6c8850f36"
dependencies = [
"aurora-engine-modexp",
"blst",
@@ -9732,9 +9721,9 @@ dependencies = [
[[package]]
name = "revm-primitives"
version = "14.0.0"
version = "15.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3702f132bb484f4f0d0ca4f6fbde3c82cfd745041abbedd6eda67730e1868ef0"
checksum = "48faea1ecf2c9f80d9b043bbde0db9da616431faed84c4cfa3dd7393005598e6"
dependencies = [
"alloy-eip2930",
"alloy-eip7702",

View File

@@ -426,10 +426,10 @@ reth-trie-sparse = { path = "crates/trie/sparse" }
reth-zstd-compressors = { path = "crates/storage/zstd-compressors", default-features = false }
# revm
revm = { version = "18.0.0", default-features = false }
revm-inspectors = "0.13.0"
revm-primitives = { version = "14.0.0", default-features = false }
revm-interpreter = { version = "14.0.0", default-features = false }
revm = { version = "19.0.0", default-features = false }
revm-primitives = { version = "15.1.0", default-features = false }
revm-interpreter = { version = "15.0.0", default-features = false }
revm-inspectors = "0.14.1"
# eth
alloy-chains = { version = "0.1.32", default-features = false }
@@ -441,47 +441,47 @@ alloy-rlp = { version = "0.3.10", default-features = false }
alloy-sol-types = "0.8.15"
alloy-trie = { version = "0.7", default-features = false }
alloy-consensus = { version = "0.8.3", default-features = false }
alloy-contract = { version = "0.8.3", default-features = false }
alloy-eips = { version = "0.8.3", default-features = false }
alloy-genesis = { version = "0.8.3", default-features = false }
alloy-json-rpc = { version = "0.8.3", default-features = false }
alloy-network = { version = "0.8.3", default-features = false }
alloy-network-primitives = { version = "0.8.3", default-features = false }
alloy-node-bindings = { version = "0.8.3", default-features = false }
alloy-provider = { version = "0.8.3", features = [
alloy-consensus = { version = "0.9.0", default-features = false }
alloy-contract = { version = "0.9.0", default-features = false }
alloy-eips = { version = "0.9.0", default-features = false }
alloy-genesis = { version = "0.9.0", default-features = false }
alloy-json-rpc = { version = "0.9.0", default-features = false }
alloy-network = { version = "0.9.0", default-features = false }
alloy-network-primitives = { version = "0.9.0", default-features = false }
alloy-node-bindings = { version = "0.9.0", default-features = false }
alloy-provider = { version = "0.9.0", features = [
"reqwest",
], default-features = false }
alloy-pubsub = { version = "0.8.3", default-features = false }
alloy-rpc-client = { version = "0.8.3", default-features = false }
alloy-rpc-types = { version = "0.8.3", features = [
alloy-pubsub = { version = "0.9.0", default-features = false }
alloy-rpc-client = { version = "0.9.0", default-features = false }
alloy-rpc-types = { version = "0.9.0", features = [
"eth",
], default-features = false }
alloy-rpc-types-admin = { version = "0.8.3", default-features = false }
alloy-rpc-types-anvil = { version = "0.8.3", default-features = false }
alloy-rpc-types-beacon = { version = "0.8.3", default-features = false }
alloy-rpc-types-debug = { version = "0.8.3", default-features = false }
alloy-rpc-types-engine = { version = "0.8.3", default-features = false }
alloy-rpc-types-eth = { version = "0.8.3", default-features = false }
alloy-rpc-types-mev = { version = "0.8.3", default-features = false }
alloy-rpc-types-trace = { version = "0.8.3", default-features = false }
alloy-rpc-types-txpool = { version = "0.8.3", default-features = false }
alloy-serde = { version = "0.8.3", default-features = false }
alloy-signer = { version = "0.8.3", default-features = false }
alloy-signer-local = { version = "0.8.3", default-features = false }
alloy-transport = { version = "0.8.3" }
alloy-transport-http = { version = "0.8.3", features = [
alloy-rpc-types-admin = { version = "0.9.0", default-features = false }
alloy-rpc-types-anvil = { version = "0.9.0", default-features = false }
alloy-rpc-types-beacon = { version = "0.9.0", default-features = false }
alloy-rpc-types-debug = { version = "0.9.0", default-features = false }
alloy-rpc-types-engine = { version = "0.9.0", default-features = false }
alloy-rpc-types-eth = { version = "0.9.0", default-features = false }
alloy-rpc-types-mev = { version = "0.9.0", default-features = false }
alloy-rpc-types-trace = { version = "0.9.0", default-features = false }
alloy-rpc-types-txpool = { version = "0.9.0", default-features = false }
alloy-serde = { version = "0.9.0", default-features = false }
alloy-signer = { version = "0.9.0", default-features = false }
alloy-signer-local = { version = "0.9.0", default-features = false }
alloy-transport = { version = "0.9.0" }
alloy-transport-http = { version = "0.9.0", features = [
"reqwest-rustls-tls",
], default-features = false }
alloy-transport-ipc = { version = "0.8.3", default-features = false }
alloy-transport-ws = { version = "0.8.3", default-features = false }
alloy-transport-ipc = { version = "0.9.0", default-features = false }
alloy-transport-ws = { version = "0.9.0", default-features = false }
# op
op-alloy-rpc-types = { version = "0.8.4", default-features = false }
op-alloy-rpc-types-engine = { version = "0.8.4", default-features = false }
op-alloy-rpc-jsonrpsee = { version = "0.8.4", default-features = false }
op-alloy-network = { version = "0.8.4", default-features = false }
op-alloy-consensus = { version = "0.8.4", default-features = false }
op-alloy-rpc-types = { version = "0.9.0", default-features = false }
op-alloy-rpc-types-engine = { version = "0.9.0", default-features = false }
op-alloy-rpc-jsonrpsee = { version = "0.9.0", default-features = false }
op-alloy-network = { version = "0.9.0", default-features = false }
op-alloy-consensus = { version = "0.9.0", default-features = false }
# misc
aquamarine = "0.6"

View File

@@ -221,8 +221,6 @@ impl<C: ChainSpecParser<ChainSpec = ChainSpec>> Command<C> {
suggested_fee_recipient: self.suggested_fee_recipient,
// TODO: add support for withdrawals
withdrawals: None,
target_blobs_per_block: None,
max_blobs_per_block: None,
};
let payload_config = PayloadConfig::new(
Arc::new(SealedHeader::new(best_block.header().clone(), best_block.hash())),

View File

@@ -277,7 +277,7 @@ impl ChainSpec {
if self.is_cancun_active_at_timestamp(self.genesis.timestamp) {
let blob_gas_used = self.genesis.blob_gas_used.unwrap_or(0);
let excess_blob_gas = self.genesis.excess_blob_gas.unwrap_or(0);
(Some(B256::ZERO), Some(blob_gas_used as u64), Some(excess_blob_gas as u64))
(Some(B256::ZERO), Some(blob_gas_used), Some(excess_blob_gas))
} else {
(None, None, None)
};

View File

@@ -18,7 +18,6 @@ reth-primitives.workspace = true
# ethereum
alloy-primitives.workspace = true
revm-primitives.workspace = true
reth-primitives-traits.workspace = true
alloy-consensus.workspace = true
alloy-eips.workspace = true

View File

@@ -1,15 +1,11 @@
//! Collection of methods for block validation.
use alloy_consensus::{constants::MAXIMUM_EXTRA_DATA_SIZE, BlockHeader, EMPTY_OMMER_ROOT_HASH};
use alloy_eips::{
calc_next_block_base_fee,
eip4844::{DATA_GAS_PER_BLOB, MAX_DATA_GAS_PER_BLOCK},
};
use alloy_eips::{calc_next_block_base_fee, eip4844::DATA_GAS_PER_BLOB, eip7840::BlobParams};
use reth_chainspec::{EthChainSpec, EthereumHardfork, EthereumHardforks};
use reth_consensus::ConsensusError;
use reth_primitives::SealedBlock;
use reth_primitives_traits::{BlockBody, GotExpected, SealedHeader};
use revm_primitives::calc_excess_blob_gas;
/// Gas used needs to be less than gas limit. Gas used is going to be checked after execution.
#[inline]
@@ -176,9 +172,10 @@ where
/// * `blob_gas_used` exists as a header field
/// * `excess_blob_gas` exists as a header field
/// * `parent_beacon_block_root` exists as a header field
/// * `blob_gas_used` is less than or equal to `MAX_DATA_GAS_PER_BLOCK`
/// * `blob_gas_used` is a multiple of `DATA_GAS_PER_BLOB`
/// * `excess_blob_gas` is a multiple of `DATA_GAS_PER_BLOB`
///
/// Note: This does not enforce any restrictions on `blob_gas_used`
pub fn validate_4844_header_standalone<H: BlockHeader>(header: &H) -> Result<(), ConsensusError> {
let blob_gas_used = header.blob_gas_used().ok_or(ConsensusError::BlobGasUsedMissing)?;
let excess_blob_gas = header.excess_blob_gas().ok_or(ConsensusError::ExcessBlobGasMissing)?;
@@ -187,13 +184,6 @@ pub fn validate_4844_header_standalone<H: BlockHeader>(header: &H) -> Result<(),
return Err(ConsensusError::ParentBeaconBlockRootMissing)
}
if blob_gas_used > MAX_DATA_GAS_PER_BLOCK {
return Err(ConsensusError::BlobGasUsedExceedsMaxBlobGasPerBlock {
blob_gas_used,
max_blob_gas_per_block: MAX_DATA_GAS_PER_BLOCK,
})
}
if blob_gas_used % DATA_GAS_PER_BLOB != 0 {
return Err(ConsensusError::BlobGasUsedNotMultipleOfBlobGasPerBlob {
blob_gas_used,
@@ -313,6 +303,7 @@ pub fn validate_against_parent_timestamp<H: BlockHeader>(
pub fn validate_against_parent_4844<H: BlockHeader>(
header: &H,
parent: &H,
blob_params: BlobParams,
) -> Result<(), ConsensusError> {
// From [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844#header-extension):
//
@@ -329,7 +320,7 @@ pub fn validate_against_parent_4844<H: BlockHeader>(
let excess_blob_gas = header.excess_blob_gas().ok_or(ConsensusError::ExcessBlobGasMissing)?;
let expected_excess_blob_gas =
calc_excess_blob_gas(parent_excess_blob_gas, parent_blob_gas_used);
blob_params.next_block_excess_blob_gas(parent_excess_blob_gas, parent_blob_gas_used);
if expected_excess_blob_gas != excess_blob_gas {
return Err(ConsensusError::ExcessBlobGasDiff {
diff: GotExpected { got: excess_blob_gas, expected: expected_excess_blob_gas },
@@ -509,7 +500,6 @@ mod tests {
excess_blob_gas: None,
parent_beacon_block_root: None,
requests_hash: None,
target_blobs_per_block: None,
};
// size: 0x9b5

View File

@@ -56,7 +56,8 @@ impl TransactionTestContext {
delegate_to: Address,
wallet: PrivateKeySigner,
) -> TxEnvelope {
let authorization = Authorization { chain_id, address: delegate_to, nonce: 0 };
let authorization =
Authorization { chain_id: U256::from(chain_id), address: delegate_to, nonce: 0 };
let signature = wallet
.sign_hash_sync(&authorization.signature_hash())
.expect("could not sign authorization");

View File

@@ -39,8 +39,6 @@ where
.chain_spec
.is_cancun_active_at_timestamp(timestamp)
.then(B256::random),
target_blobs_per_block: None,
max_blobs_per_block: None,
}
}
}

View File

@@ -1,6 +1,7 @@
//! Stream wrapper that simulates reorgs.
use alloy_consensus::{Header, Transaction};
use alloy_eips::eip7840::BlobParams;
use alloy_rpc_types_engine::{
CancunPayloadFields, ExecutionPayload, ExecutionPayloadSidecar, ForkchoiceState, PayloadStatus,
};
@@ -28,7 +29,7 @@ use reth_revm::{
DatabaseCommit,
};
use reth_rpc_types_compat::engine::payload::block_to_payload;
use revm_primitives::{calc_excess_blob_gas, EVMError, EnvWithHandlerCfg};
use revm_primitives::{EVMError, EnvWithHandlerCfg};
use std::{
collections::VecDeque,
future::Future,
@@ -391,10 +392,7 @@ where
if chain_spec.is_cancun_active_at_timestamp(reorg_target.timestamp) {
(
Some(sum_blob_gas_used),
Some(calc_excess_blob_gas(
reorg_target_parent.excess_blob_gas.unwrap_or_default(),
reorg_target_parent.blob_gas_used.unwrap_or_default(),
)),
reorg_target_parent.next_block_excess_blob_gas(BlobParams::cancun()),
)
} else {
(None, None)
@@ -425,8 +423,7 @@ where
blob_gas_used,
excess_blob_gas,
state_root: state_provider.state_root(hashed_state)?,
requests_hash: None, // TODO(prague)
target_blobs_per_block: None, // TODO(prague)
requests_hash: None, // TODO(prague)
},
body: BlockBody {
transactions,

View File

@@ -9,7 +9,7 @@
#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))]
use alloy_consensus::{BlockHeader, EMPTY_OMMER_ROOT_HASH};
use alloy_eips::merge::ALLOWED_FUTURE_BLOCK_TIME_SECONDS;
use alloy_eips::{eip7840::BlobParams, merge::ALLOWED_FUTURE_BLOCK_TIME_SECONDS};
use alloy_primitives::U256;
use reth_chainspec::{EthChainSpec, EthereumHardfork, EthereumHardforks};
use reth_consensus::{
@@ -195,7 +195,13 @@ where
// ensure that the blob gas fields for this block
if self.chain_spec.is_cancun_active_at_timestamp(header.timestamp()) {
validate_against_parent_4844(header.header(), parent.header())?;
let blob_params = if self.chain_spec.is_prague_active_at_timestamp(header.timestamp()) {
BlobParams::prague()
} else {
BlobParams::cancun()
};
validate_against_parent_4844(header.header(), parent.header(), blob_params)?;
}
Ok(())

View File

@@ -323,8 +323,6 @@ mod tests {
.unwrap(),
withdrawals: None,
parent_beacon_block_root: None,
target_blobs_per_block: None,
max_blobs_per_block: None,
};
// Verify that the generated payload ID matches the expected value
@@ -362,8 +360,6 @@ mod tests {
},
]),
parent_beacon_block_root: None,
target_blobs_per_block: None,
max_blobs_per_block: None,
};
// Verify that the generated payload ID matches the expected value
@@ -396,8 +392,6 @@ mod tests {
)
.unwrap(),
),
target_blobs_per_block: None,
max_blobs_per_block: None,
};
// Verify that the generated payload ID matches the expected value

View File

@@ -810,6 +810,7 @@ mod tests {
.is_zero()));
}
// <https://github.com/ethereum/EIPs/pull/9144>
#[test]
fn eip_2935_fork_activation_outside_window_bounds() {
let fork_activation_block = (BLOCKHASH_SERVE_WINDOW + 256) as u64;
@@ -846,15 +847,6 @@ mod tests {
// the hash for the ancestor of the fork activation block should be present
assert!(executor
.with_state_mut(|state| state.basic(HISTORY_STORAGE_ADDRESS).unwrap().is_some()));
assert_ne!(
executor.with_state_mut(|state| state
.storage(
HISTORY_STORAGE_ADDRESS,
U256::from(fork_activation_block % BLOCKHASH_SERVE_WINDOW as u64 - 1)
)
.unwrap()),
U256::ZERO
);
}
#[test]

View File

@@ -31,7 +31,7 @@ use revm_primitives::{
};
mod config;
use alloy_eips::eip1559::INITIAL_BASE_FEE;
use alloy_eips::{eip1559::INITIAL_BASE_FEE, eip7840::BlobParams};
pub use config::{revm_spec, revm_spec_by_timestamp_and_block_number};
use reth_ethereum_forks::EthereumHardfork;
@@ -134,12 +134,15 @@ impl ConfigureEvmEnv for EthEvmConfig {
parent.number() + 1,
);
let blob_params =
if spec_id >= SpecId::PRAGUE { BlobParams::prague() } else { BlobParams::cancun() };
// if the parent block did not have excess blob gas (i.e. it was pre-cancun), but it is
// cancun now, we need to set the excess blob gas to the default value(0)
let blob_excess_gas_and_price = parent
.next_block_excess_blob_gas()
.next_block_excess_blob_gas(blob_params)
.or_else(|| (spec_id == SpecId::CANCUN).then_some(0))
.map(BlobExcessGasAndPrice::new);
.map(|gas| BlobExcessGasAndPrice::new(gas, spec_id >= SpecId::PRAGUE));
let mut basefee = parent.next_block_base_fee(
self.chain_spec.base_fee_params_at_timestamp(attributes.timestamp),

View File

@@ -1,5 +1,5 @@
use crate::utils::eth_payload_attributes;
use alloy_eips::{calc_next_block_base_fee, eip2718::Encodable2718, eip4844};
use alloy_eips::{calc_next_block_base_fee, eip2718::Encodable2718};
use alloy_primitives::{Address, B256, U256};
use alloy_provider::{network::EthereumWallet, Provider, ProviderBuilder, SendableTx};
use alloy_rpc_types_beacon::relay::{
@@ -69,7 +69,7 @@ async fn test_fee_history() -> eyre::Result<()> {
assert!(receipt.status());
let block = provider.get_block_by_number(1.into(), false.into()).await?.unwrap();
assert_eq!(block.header.gas_used as u128, receipt.gas_used,);
assert_eq!(block.header.gas_used, receipt.gas_used,);
assert_eq!(block.header.base_fee_per_gas.unwrap(), expected_first_base_fee as u64);
for _ in 0..100 {
@@ -240,7 +240,6 @@ async fn test_flashbots_validate_v4() -> eyre::Result<()> {
execution_payload: block_to_payload_v3(payload.block().clone()),
blobs_bundle: BlobsBundleV1::new([]),
execution_requests: payload.requests().unwrap().try_into().unwrap(),
target_blobs_per_block: eip4844::TARGET_BLOBS_PER_BLOCK,
signature: Default::default(),
},
parent_beacon_block_root: attrs.parent_beacon_block_root.unwrap(),

View File

@@ -1,5 +1,5 @@
use alloy_eips::{BlockId, BlockNumberOrTag};
use alloy_primitives::{bytes, Address, B256};
use alloy_primitives::{bytes, Address, B256, U256};
use alloy_provider::{
network::{
Ethereum, EthereumWallet, NetworkWallet, TransactionBuilder, TransactionBuilder7702,
@@ -26,8 +26,6 @@ pub(crate) fn eth_payload_attributes(timestamp: u64) -> EthPayloadBuilderAttribu
suggested_fee_recipient: Address::ZERO,
withdrawals: Some(vec![]),
parent_beacon_block_root: Some(B256::ZERO),
target_blobs_per_block: None,
max_blobs_per_block: None,
};
EthPayloadBuilderAttributes::new(B256::ZERO, attributes)
}
@@ -92,7 +90,7 @@ where
if tx_type == TxType::Eip7702 {
let signer = signers.choose(rng).unwrap();
let auth = Authorization {
chain_id: provider.get_chain_id().await?,
chain_id: U256::from(provider.get_chain_id().await?),
address: *call_destinations.choose(rng).unwrap(),
nonce: provider
.get_transaction_count(signer.address())

View File

@@ -11,7 +11,8 @@
use alloy_consensus::{Header, EMPTY_OMMER_ROOT_HASH};
use alloy_eips::{
eip4844::MAX_DATA_GAS_PER_BLOCK, eip6110, eip7685::Requests, merge::BEACON_NONCE,
eip4844::MAX_DATA_GAS_PER_BLOCK, eip6110, eip7685::Requests, eip7840::BlobParams,
merge::BEACON_NONCE,
};
use alloy_primitives::U256;
use reth_basic_payload_builder::{
@@ -40,8 +41,8 @@ use reth_transaction_pool::{
use revm::{
db::{states::bundle_state::BundleRetention, State},
primitives::{
calc_excess_blob_gas, BlockEnv, CfgEnvWithHandlerCfg, EVMError, EnvWithHandlerCfg,
InvalidTransaction, ResultAndState, TxEnv,
BlockEnv, CfgEnvWithHandlerCfg, EVMError, EnvWithHandlerCfg, InvalidTransaction,
ResultAndState, TxEnv,
},
DatabaseCommit,
};
@@ -438,13 +439,17 @@ where
.map_err(PayloadBuilderError::other)?;
excess_blob_gas = if chain_spec.is_cancun_active_at_timestamp(parent_header.timestamp) {
let parent_excess_blob_gas = parent_header.excess_blob_gas.unwrap_or_default();
let parent_blob_gas_used = parent_header.blob_gas_used.unwrap_or_default();
Some(calc_excess_blob_gas(parent_excess_blob_gas, parent_blob_gas_used))
let blob_params = if chain_spec.is_prague_active_at_timestamp(parent_header.timestamp) {
BlobParams::prague()
} else {
// cancun
BlobParams::cancun()
};
parent_header.next_block_excess_blob_gas(blob_params)
} else {
// for the first post-fork block, both parent.blob_gas_used and
// parent.excess_blob_gas are evaluated as 0
Some(calc_excess_blob_gas(0, 0))
Some(alloy_eips::eip4844::calc_excess_blob_gas(0, 0))
};
blob_gas_used = Some(sum_blob_gas_used);
@@ -472,7 +477,6 @@ where
blob_gas_used,
excess_blob_gas,
requests_hash,
target_blobs_per_block: None,
};
let withdrawals = chain_spec

View File

@@ -160,8 +160,8 @@ impl TxReceipt for Receipt {
alloy_primitives::logs_bloom(self.logs())
}
fn cumulative_gas_used(&self) -> u128 {
self.cumulative_gas_used as u128
fn cumulative_gas_used(&self) -> u64 {
self.cumulative_gas_used
}
fn logs(&self) -> &[Log] {

View File

@@ -157,11 +157,11 @@ pub trait ConfigureEvmEnv: Send + Sync + Unpin + Clone + 'static {
fn fill_cfg_env(&self, cfg_env: &mut CfgEnvWithHandlerCfg, header: &Self::Header);
/// Fill [`BlockEnv`] field according to the chain spec and given header
fn fill_block_env(&self, block_env: &mut BlockEnv, header: &Self::Header, after_merge: bool) {
fn fill_block_env(&self, block_env: &mut BlockEnv, header: &Self::Header, spec_id: SpecId) {
block_env.number = U256::from(header.number());
block_env.coinbase = header.beneficiary();
block_env.timestamp = U256::from(header.timestamp());
if after_merge {
if spec_id >= SpecId::MERGE {
block_env.prevrandao = header.mix_hash();
block_env.difficulty = U256::ZERO;
} else {
@@ -173,7 +173,7 @@ pub trait ConfigureEvmEnv: Send + Sync + Unpin + Clone + 'static {
// EIP-4844 excess blob gas of this block, introduced in Cancun
if let Some(excess_blob_gas) = header.excess_blob_gas() {
block_env.set_blob_excess_gas_and_price(excess_blob_gas);
block_env.set_blob_excess_gas_and_price(excess_blob_gas, spec_id >= SpecId::PRAGUE);
}
}
@@ -196,8 +196,7 @@ pub trait ConfigureEvmEnv: Send + Sync + Unpin + Clone + 'static {
header: &Self::Header,
) {
self.fill_cfg_env(cfg, header);
let after_merge = cfg.handler_cfg.spec_id >= SpecId::MERGE;
self.fill_block_env(block_env, header, after_merge);
self.fill_block_env(block_env, header, cfg.handler_cfg.spec_id);
}
/// Returns the configured [`EvmEnv`] for `parent + 1` block.

View File

@@ -260,7 +260,6 @@ mod tests {
excess_blob_gas: None,
parent_beacon_block_root: None,
requests_hash: None,
target_blobs_per_block: None,
},
]),
}.encode(&mut data);
@@ -296,7 +295,6 @@ mod tests {
excess_blob_gas: None,
parent_beacon_block_root: None,
requests_hash: None,
target_blobs_per_block: None,
},
]),
};
@@ -397,7 +395,6 @@ mod tests {
excess_blob_gas: None,
parent_beacon_block_root: None,
requests_hash: None,
target_blobs_per_block: None,
},
],
withdrawals: None,
@@ -473,7 +470,6 @@ mod tests {
excess_blob_gas: None,
parent_beacon_block_root: None,
requests_hash: None,
target_blobs_per_block: None,
},
],
withdrawals: None,

View File

@@ -143,7 +143,6 @@ mod tests {
excess_blob_gas: None,
parent_beacon_block_root: None,
requests_hash: None,
target_blobs_per_block: None,
};
assert_eq!(header.hash_slow(), expected_hash);
}
@@ -257,7 +256,6 @@ mod tests {
excess_blob_gas: Some(0),
parent_beacon_block_root: None,
requests_hash: None,
target_blobs_per_block: None,
};
let header = Header::decode(&mut data.as_slice()).unwrap();
@@ -298,7 +296,6 @@ mod tests {
blob_gas_used: Some(0),
excess_blob_gas: Some(0x1600000),
requests_hash: None,
target_blobs_per_block: None,
};
let header = Header::decode(&mut data.as_slice()).unwrap();

View File

@@ -122,11 +122,8 @@ impl TryFrom<HackReceipt> for OpReceipt {
deposit_receipt_version,
} = exported_receipt.try_into()?;
let receipt = alloy_consensus::Receipt {
status: success.into(),
cumulative_gas_used: cumulative_gas_used as u128,
logs,
};
let receipt =
alloy_consensus::Receipt { status: success.into(), cumulative_gas_used, logs };
match tx_type {
TxType::Legacy => Ok(Self::Legacy(receipt)),

View File

@@ -10,6 +10,7 @@
#![cfg(feature = "optimism")]
use alloy_consensus::{BlockHeader, Header, EMPTY_OMMER_ROOT_HASH};
use alloy_eips::eip7840::BlobParams;
use alloy_primitives::{B64, U256};
use reth_chainspec::EthereumHardforks;
use reth_consensus::{
@@ -142,7 +143,7 @@ impl HeaderValidator for OpBeaconConsensus {
// ensure that the blob gas fields for this block
if self.chain_spec.is_cancun_active_at_timestamp(header.timestamp) {
validate_against_parent_4844(header.header(), parent.header())?;
validate_against_parent_4844(header.header(), parent.header(), BlobParams::cancun())?;
}
Ok(())

View File

@@ -35,9 +35,9 @@ pub fn validate_block_post_execution(
// Check if gas used matches the value set in header.
let cumulative_gas_used =
receipts.last().map(|receipt| receipt.cumulative_gas_used()).unwrap_or(0);
if block.gas_used as u128 != cumulative_gas_used {
if block.gas_used != cumulative_gas_used {
return Err(ConsensusError::BlockGasUsed {
gas: GotExpected { got: cumulative_gas_used as u64, expected: block.gas_used },
gas: GotExpected { got: cumulative_gas_used, expected: block.gas_used },
gas_spent_by_tx: gas_spent_by_transactions(receipts),
})
}

View File

@@ -233,7 +233,7 @@ where
// Success flag was added in `EIP-658: Embedding transaction status code in
// receipts`.
status: Eip658Value::Eip658(result.is_success()),
cumulative_gas_used: cumulative_gas_used as u128,
cumulative_gas_used,
logs: result.into_logs(),
};

View File

@@ -14,6 +14,7 @@ extern crate alloc;
use alloc::{sync::Arc, vec::Vec};
use alloy_consensus::Header;
use alloy_eips::eip7840::BlobParams;
use alloy_primitives::{Address, U256};
use op_alloy_consensus::EIP1559ParamError;
use reth_evm::{env::EvmEnv, ConfigureEvm, ConfigureEvmEnv, NextBlockEnvAttributes};
@@ -135,9 +136,9 @@ impl ConfigureEvmEnv for OpEvmConfig {
// if the parent block did not have excess blob gas (i.e. it was pre-cancun), but it is
// cancun now, we need to set the excess blob gas to the default value(0)
let blob_excess_gas_and_price = parent
.next_block_excess_blob_gas()
.next_block_excess_blob_gas(BlobParams::cancun())
.or_else(|| (spec_id.is_enabled_in(SpecId::CANCUN)).then_some(0))
.map(BlobExcessGasAndPrice::new);
.map(|gas| BlobExcessGasAndPrice::new(gas, false));
let block_env = BlockEnv {
number: U256::from(parent.number + 1),

View File

@@ -242,8 +242,6 @@ mod test {
suggested_fee_recipient: Address::ZERO,
withdrawals: Some(vec![]),
parent_beacon_block_root: Some(B256::ZERO),
target_blobs_per_block: None,
max_blobs_per_block: None,
},
}
}

View File

@@ -60,8 +60,6 @@ pub fn optimism_payload_attributes(timestamp: u64) -> OpPayloadBuilderAttributes
suggested_fee_recipient: Address::ZERO,
withdrawals: Some(vec![]),
parent_beacon_block_root: Some(B256::ZERO),
target_blobs_per_block: None,
max_blobs_per_block: None,
};
OpPayloadBuilderAttributes {

View File

@@ -421,7 +421,6 @@ where
blob_gas_used,
excess_blob_gas,
requests_hash: None,
target_blobs_per_block: None,
};
// seal the block
@@ -819,7 +818,7 @@ where
let receipt = alloy_consensus::Receipt {
status: Eip658Value::Eip658(result.is_success()),
cumulative_gas_used: info.cumulative_gas_used as u128,
cumulative_gas_used: info.cumulative_gas_used,
logs: result.into_logs().into_iter().collect(),
};
@@ -930,7 +929,7 @@ where
let receipt = alloy_consensus::Receipt {
status: Eip658Value::Eip658(result.is_success()),
cumulative_gas_used: info.cumulative_gas_used as u128,
cumulative_gas_used: info.cumulative_gas_used,
logs: result.into_logs().into_iter().collect(),
};

View File

@@ -375,8 +375,6 @@ mod tests {
suggested_fee_recipient: address!("4200000000000000000000000000000000000011"),
withdrawals: Some([].into()),
parent_beacon_block_root: b256!("8fe0193b9bf83cb7e5a08538e494fecc23046aab9a497af3704f4afdae3250ff").into(),
target_blobs_per_block: None,
max_blobs_per_block: None,
},
transactions: Some([bytes!("7ef8f8a0dc19cfa777d90980e4875d0a548a881baaa3f83f14d1bc0d3038bc329350e54194deaddeaddeaddeaddeaddeaddeaddeaddead00019442000000000000000000000000000000000000158080830f424080b8a4440a5e20000f424000000000000000000000000300000000670d6d890000000000000125000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000000000014bf9181db6e381d4384bbf69c48b0ee0eed23c6ca26143c6d2544f9d39997a590000000000000000000000007f83d659683caf2767fd3c720981d51f5bc365bc")].into()),
no_tx_pool: None,

View File

@@ -85,7 +85,6 @@ pub const BEDROCK_HEADER: Header = Header {
excess_blob_gas: None,
parent_beacon_block_root: None,
requests_hash: None,
target_blobs_per_block: None,
};
/// Bedrock total difficulty on Optimism Mainnet.

View File

@@ -188,7 +188,7 @@ impl TxReceipt for OpReceipt {
self.as_receipt().bloom()
}
fn cumulative_gas_used(&self) -> u128 {
fn cumulative_gas_used(&self) -> u64 {
self.as_receipt().cumulative_gas_used()
}
@@ -236,7 +236,7 @@ mod compact {
Self {
tx_type: receipt.tx_type(),
success: receipt.status(),
cumulative_gas_used: receipt.cumulative_gas_used() as u64,
cumulative_gas_used: receipt.cumulative_gas_used(),
logs: Cow::Borrowed(&receipt.as_receipt().logs),
deposit_nonce: if let OpReceipt::Deposit(receipt) = receipt {
receipt.deposit_nonce
@@ -263,11 +263,8 @@ mod compact {
deposit_receipt_version,
} = receipt;
let inner = Receipt {
status: success.into(),
cumulative_gas_used: cumulative_gas_used as u128,
logs: logs.into_owned(),
};
let inner =
Receipt { status: success.into(), cumulative_gas_used, logs: logs.into_owned() };
match tx_type {
OpTxType::Legacy => Self::Legacy(inner),

View File

@@ -130,7 +130,7 @@ where
number: block_env.number.to::<u64>(),
gas_limit: block_env.gas_limit.to::<u64>(),
difficulty: U256::ZERO,
gas_used: receipts.last().map(|r| r.cumulative_gas_used()).unwrap_or_default() as u64,
gas_used: receipts.last().map(|r| r.cumulative_gas_used()).unwrap_or_default(),
blob_gas_used: is_cancun.then(|| {
transactions.iter().map(|tx| tx.blob_gas_used().unwrap_or_default()).sum::<u64>()
}),
@@ -138,7 +138,6 @@ where
extra_data: Default::default(),
parent_beacon_block_root: is_cancun.then_some(B256::ZERO),
requests_hash: is_prague.then_some(EMPTY_REQUESTS_HASH),
target_blobs_per_block: None,
};
// seal the block
@@ -156,7 +155,7 @@ where
) -> reth_provider::ProviderReceipt<Self::Provider> {
let receipt = alloy_consensus::Receipt {
status: Eip658Value::Eip658(result.is_success()),
cumulative_gas_used: cumulative_gas_used as u128,
cumulative_gas_used,
logs: result.into_logs().into_iter().collect(),
};

View File

@@ -39,6 +39,6 @@ where
receipts
.into_iter()
.enumerate()
.map(|(id, receipt)| (id as u64, receipt.cumulative_gas_used() as u64))
.map(|(id, receipt)| (id as u64, receipt.cumulative_gas_used()))
.collect()
}

View File

@@ -58,7 +58,6 @@ impl TryFrom<AnyRpcBlock> for Block {
excess_blob_gas,
parent_beacon_block_root,
requests_hash,
target_blobs_per_block,
} = block.header.inner;
Ok(Self {
@@ -85,7 +84,6 @@ impl TryFrom<AnyRpcBlock> for Block {
excess_blob_gas,
parent_beacon_block_root,
requests_hash,
target_blobs_per_block,
},
body: BlockBody {
transactions,
@@ -104,6 +102,7 @@ impl TryFrom<AnyRpcTransaction> for TransactionSigned {
let WithOtherFields { inner: tx, other: _ } = tx;
#[allow(unreachable_patterns)]
let (transaction, signature, hash) = match tx.inner {
AnyTxEnvelope::Ethereum(TxEnvelope::Legacy(tx)) => {
let (tx, signature, hash) = tx.into_parts();

View File

@@ -250,8 +250,8 @@ impl TxReceipt for Receipt {
alloy_primitives::logs_bloom(self.logs.iter())
}
fn cumulative_gas_used(&self) -> u128 {
self.cumulative_gas_used as u128
fn cumulative_gas_used(&self) -> u64 {
self.cumulative_gas_used
}
fn logs(&self) -> &[Log] {

View File

@@ -1510,7 +1510,6 @@ impl From<TxEnvelope> for TransactionSigned {
TxEnvelope::Eip1559(tx) => tx.into(),
TxEnvelope::Eip4844(tx) => tx.into(),
TxEnvelope::Eip7702(tx) => tx.into(),
_ => unreachable!(),
}
}
}

View File

@@ -279,11 +279,7 @@ where
payload,
ExecutionPayloadSidecar::v4(
CancunPayloadFields { versioned_hashes, parent_beacon_block_root },
PraguePayloadFields {
requests: RequestsOrHash::Requests(execution_requests),
// TODO: add as an argument and handle in `try_into_block`
target_blobs_per_block: 0,
},
PraguePayloadFields { requests: RequestsOrHash::Requests(execution_requests) },
),
)
.await

View File

@@ -1,7 +1,7 @@
//! `eth_` Extension traits.
use alloy_primitives::{Bytes, B256};
use alloy_rpc_types_eth::erc4337::ConditionalOptions;
use alloy_rpc_types_eth::erc4337::TransactionConditional;
use jsonrpsee::{core::RpcResult, proc_macros::rpc};
/// Extension trait for `eth_` namespace for L2s.
@@ -13,6 +13,6 @@ pub trait L2EthApiExt {
async fn send_raw_transaction_conditional(
&self,
bytes: Bytes,
condition: ConditionalOptions,
condition: TransactionConditional,
) -> RpcResult<B256>;
}

View File

@@ -1,6 +1,7 @@
//! Loads fee history from database. Helper trait for `eth_` fee and transaction RPC methods.
use alloy_consensus::BlockHeader;
use alloy_eips::eip7840::BlobParams;
use alloy_primitives::U256;
use alloy_rpc_types_eth::{BlockNumberOrTag, FeeHistory};
use futures::Future;
@@ -166,7 +167,7 @@ pub trait EthFees: LoadFee {
for header in &headers {
base_fee_per_gas.push(header.base_fee_per_gas().unwrap_or_default() as u128);
gas_used_ratio.push(header.gas_used() as f64 / header.gas_limit() as f64);
base_fee_per_blob_gas.push(header.blob_fee().unwrap_or_default());
base_fee_per_blob_gas.push(header.blob_fee(BlobParams::cancun()).unwrap_or_default());
blob_gas_used_ratio.push(
header.blob_gas_used().unwrap_or_default() as f64
/ alloy_eips::eip4844::MAX_DATA_GAS_PER_BLOCK as f64,
@@ -207,7 +208,7 @@ pub trait EthFees: LoadFee {
// Same goes for the `base_fee_per_blob_gas`:
// > "[..] includes the next block after the newest of the returned range, because this value can be derived from the newest block.
base_fee_per_blob_gas.push(last_header.next_block_blob_fee().unwrap_or_default());
base_fee_per_blob_gas.push(last_header.next_block_blob_fee(BlobParams::cancun()).unwrap_or_default());
};
Ok(FeeHistory {
@@ -332,7 +333,7 @@ pub trait LoadFee: LoadBlock {
async move {
self.block_with_senders(BlockNumberOrTag::Latest.into())
.await?
.and_then(|h| h.next_block_blob_fee())
.and_then(|h| h.next_block_blob_fee(BlobParams::cancun()))
.ok_or(EthApiError::ExcessBlobGasNotSet.into())
.map(U256::from)
}

View File

@@ -408,10 +408,8 @@ pub enum RpcInvalidTransactionError {
#[error("blob transaction missing blob hashes")]
BlobTransactionMissingBlobHashes,
/// Blob transaction has too many blobs
#[error("blob transaction exceeds max blobs per block; got {have}, max {max}")]
#[error("blob transaction exceeds max blobs per block; got {have}")]
TooManyBlobs {
/// The maximum number of blobs allowed.
max: usize,
/// The number of blobs in the transaction.
have: usize,
},
@@ -522,7 +520,7 @@ impl From<revm::primitives::InvalidTransaction> for RpcInvalidTransactionError {
InvalidTransaction::BlobGasPriceGreaterThanMax => Self::BlobFeeCapTooLow,
InvalidTransaction::EmptyBlobs => Self::BlobTransactionMissingBlobHashes,
InvalidTransaction::BlobVersionNotSupported => Self::BlobHashVersionMismatch,
InvalidTransaction::TooManyBlobs { max, have } => Self::TooManyBlobs { max, have },
InvalidTransaction::TooManyBlobs { have } => Self::TooManyBlobs { have },
InvalidTransaction::BlobCreateTransaction => Self::BlobTransactionIsCreate,
InvalidTransaction::EofCrateShouldHaveToAddress => Self::EofCrateShouldHaveToAddress,
InvalidTransaction::AuthorizationListNotSupported => {

View File

@@ -21,7 +21,6 @@ use reth_primitives::{NodePrimitives, SealedBlock};
use reth_primitives_traits::BlockBody;
use reth_rpc_server_types::constants::gas_oracle::MAX_HEADER_HISTORY;
use reth_storage_api::BlockReaderIdExt;
use revm_primitives::{calc_blob_gasprice, calc_excess_blob_gas};
use serde::{Deserialize, Serialize};
use tracing::trace;
@@ -294,7 +293,7 @@ where
*previous_gas = receipt.cumulative_gas_used();
Some(TxGasAndReward {
gas_used: gas_used as u64,
gas_used,
reward: tx.effective_tip_per_gas(base_fee_per_gas).unwrap_or_default(),
})
})
@@ -368,7 +367,9 @@ impl FeeHistoryEntry {
Self {
base_fee_per_gas: block.base_fee_per_gas().unwrap_or_default(),
gas_used_ratio: block.gas_used() as f64 / block.gas_limit() as f64,
base_fee_per_blob_gas: block.excess_blob_gas().map(calc_blob_gasprice),
base_fee_per_blob_gas: block
.excess_blob_gas()
.map(alloy_eips::eip4844::calc_blob_gasprice),
blob_gas_used_ratio: block.body.blob_gas_used() as f64 /
alloy_eips::eip4844::MAX_DATA_GAS_PER_BLOCK as f64,
excess_blob_gas: block.excess_blob_gas(),
@@ -397,13 +398,13 @@ impl FeeHistoryEntry {
///
/// See also [`Self::next_block_excess_blob_gas`]
pub fn next_block_blob_fee(&self) -> Option<u128> {
self.next_block_excess_blob_gas().map(calc_blob_gasprice)
self.next_block_excess_blob_gas().map(alloy_eips::eip4844::calc_blob_gasprice)
}
/// Calculate excess blob gas for the next block according to the EIP-4844 spec.
///
/// Returns a `None` if no excess blob gas is set, no EIP-4844 support
pub fn next_block_excess_blob_gas(&self) -> Option<u64> {
Some(calc_excess_blob_gas(self.excess_blob_gas?, self.blob_gas_used?))
Some(alloy_eips::eip4844::calc_excess_blob_gas(self.excess_blob_gas?, self.blob_gas_used?))
}
}

View File

@@ -6,7 +6,6 @@ use alloy_primitives::{Address, TxKind};
use alloy_rpc_types_eth::{Log, ReceiptWithBloom, TransactionReceipt};
use reth_primitives::{Receipt, TransactionMeta, TransactionSigned, TxType};
use reth_primitives_traits::SignedTransaction;
use revm_primitives::calc_blob_gasprice;
/// Builds an [`TransactionReceipt`] obtaining the inner receipt envelope from the given closure.
pub fn build_receipt<R, T, E>(
@@ -38,7 +37,8 @@ where
let blob_gas_used = transaction.blob_gas_used();
// Blob gas price should only be present if the transaction is a blob transaction
let blob_gas_price = blob_gas_used.and_then(|_| meta.excess_blob_gas.map(calc_blob_gasprice));
let blob_gas_price = blob_gas_used
.and_then(|_| meta.excess_blob_gas.map(alloy_eips::eip4844::calc_blob_gasprice));
let logs_bloom = receipt.bloom();
// get number of logs in the block
@@ -87,7 +87,7 @@ where
effective_gas_price: transaction.effective_gas_price(meta.base_fee),
// EIP-4844 fields
blob_gas_price,
blob_gas_used: blob_gas_used.map(u128::from),
blob_gas_used,
authorization_list: transaction.authorization_list().map(|l| l.to_vec()),
})
}

View File

@@ -86,7 +86,6 @@ pub fn try_payload_v1_to_block<T: Decodable2718>(
ommers_hash: EMPTY_OMMER_ROOT_HASH,
difficulty: Default::default(),
nonce: Default::default(),
target_blobs_per_block: None,
};
Ok(Block { header, body: BlockBody { transactions, ..Default::default() } })
@@ -132,14 +131,9 @@ pub fn block_to_payload<T: SignedTransaction>(
None
};
let prague = if let Some(requests_hash) = value.requests_hash {
Some(PraguePayloadFields {
requests: RequestsOrHash::Hash(requests_hash),
target_blobs_per_block: value.target_blobs_per_block.unwrap_or_default(),
})
} else {
None
};
let prague = value
.requests_hash
.map(|requests_hash| PraguePayloadFields { requests: RequestsOrHash::Hash(requests_hash) });
let sidecar = match (cancun, prague) {
(Some(cancun), Some(prague)) => ExecutionPayloadSidecar::v4(cancun, prague),

View File

@@ -1,6 +1,7 @@
//! `Eth` bundle implementation and helpers.
use alloy_consensus::{BlockHeader, Transaction as _};
use alloy_eips::eip4844::MAX_DATA_GAS_PER_BLOCK;
use alloy_primitives::{Keccak256, U256};
use alloy_rpc_types_mev::{EthCallBundle, EthCallBundleResponse, EthCallBundleTransactionResult};
use jsonrpsee::core::RpcResult;
@@ -22,7 +23,7 @@ use revm::{
db::{CacheDB, DatabaseCommit, DatabaseRef},
primitives::{ResultAndState, TxEnv},
};
use revm_primitives::{EnvKzgSettings, EnvWithHandlerCfg, SpecId, MAX_BLOB_GAS_PER_BLOCK};
use revm_primitives::{EnvKzgSettings, EnvWithHandlerCfg, SpecId};
use std::sync::Arc;
/// `Eth` bundle implementation.
@@ -90,7 +91,7 @@ where
// Validate that the bundle does not contain more than MAX_BLOB_NUMBER_PER_BLOCK blob
// transactions.
if transactions.iter().filter_map(|tx| tx.blob_gas_used()).sum::<u64>() >
MAX_BLOB_GAS_PER_BLOCK
MAX_DATA_GAS_PER_BLOCK
{
return Err(EthApiError::InvalidParams(
EthBundleError::Eip4844BlobGasExceeded.to_string(),
@@ -317,8 +318,7 @@ pub enum EthBundleError {
/// Thrown if the bundle does not contain a block number, or block number is 0.
#[error("bundle missing blockNumber")]
BundleMissingBlockNumber,
/// Thrown when the blob gas usage of the blob transactions in a bundle exceed
/// [`MAX_BLOB_GAS_PER_BLOCK`].
#[error("blob gas usage exceeds the limit of {MAX_BLOB_GAS_PER_BLOCK} gas per block.")]
/// Thrown when the blob gas usage of the blob transactions in a bundle exceed the maximum.
#[error("blob gas usage exceeds the limit of {MAX_DATA_GAS_PER_BLOCK} gas per block.")]
Eip4844BlobGasExceeded,
}

View File

@@ -97,7 +97,6 @@ where
extra_data: Default::default(),
parent_beacon_block_root: is_cancun.then_some(B256::ZERO),
requests_hash: is_prague.then_some(EMPTY_REQUESTS_HASH),
target_blobs_per_block: None,
};
// seal the block

View File

@@ -109,7 +109,6 @@ where
TxEip4844Variant::TxEip4844WithSidecar(tx) => &mut tx.tx.input,
},
TxEnvelope::Eip7702(tx) => &mut tx.tx_mut().input,
_ => return,
};
*input = input.slice(..4);
}

View File

@@ -53,7 +53,9 @@ where
// blob fee is burnt, so we don't need to calculate it
let total_fees = receipts
.iter()
.map(|receipt| receipt.gas_used().saturating_mul(receipt.effective_gas_price()))
.map(|receipt| {
(receipt.gas_used() as u128).saturating_mul(receipt.effective_gas_price())
})
.sum::<u128>();
Ok(BlockDetails::new(block, Default::default(), U256::from(total_fees)))
@@ -256,7 +258,7 @@ where
.map(|(receipt, tx_ty)| {
let inner = OtsReceipt {
status: receipt.status(),
cumulative_gas_used: receipt.cumulative_gas_used() as u64,
cumulative_gas_used: receipt.cumulative_gas_used(),
logs: None,
logs_bloom: None,
r#type: tx_ty,

View File

@@ -108,7 +108,7 @@ where
TxpoolInspectSummary {
to: tx.to(),
value: tx.value(),
gas: tx.gas_limit() as u128,
gas: tx.gas_limit(),
gas_price: tx.max_fee_per_gas(),
},
);

View File

@@ -380,7 +380,6 @@ where
requests: RequestsOrHash::Requests(
request.request.execution_requests.to_requests(),
),
target_blobs_per_block: request.request.target_blobs_per_block,
},
),
)?

View File

@@ -19,7 +19,7 @@ use reth_codecs_derive::add_arbitrary_tests;
#[cfg_attr(feature = "test-utils", allow(unreachable_pub), visibility::make(pub))]
#[add_arbitrary_tests(crate, compact)]
pub(crate) struct Authorization {
chain_id: u64,
chain_id: U256,
address: Address,
nonce: u64,
}
@@ -80,7 +80,7 @@ mod tests {
#[test]
fn test_roundtrip_compact_authorization_list_item() {
let authorization = AlloyAuthorization {
chain_id: 1u64,
chain_id: U256::from(1),
address: address!("dac17f958d2ee523a2206206994597c13d831ec7"),
nonce: 1,
}

View File

@@ -58,7 +58,6 @@ pub(crate) struct Header {
#[reth_codecs(crate = "crate")]
pub(crate) struct HeaderExt {
requests_hash: Option<B256>,
target_blobs_per_block: Option<u64>,
}
impl HeaderExt {
@@ -66,7 +65,7 @@ impl HeaderExt {
///
/// Required since [`Header`] uses `Option<HeaderExt>` as a field.
const fn into_option(self) -> Option<Self> {
if self.requests_hash.is_some() || self.target_blobs_per_block.is_some() {
if self.requests_hash.is_some() {
Some(self)
} else {
None
@@ -79,7 +78,7 @@ impl Compact for AlloyHeader {
where
B: bytes::BufMut + AsMut<[u8]>,
{
let extra_fields = HeaderExt { requests_hash: self.requests_hash, target_blobs_per_block: self.target_blobs_per_block };
let extra_fields = HeaderExt { requests_hash: self.requests_hash };
let header = Header {
parent_hash: self.parent_hash,
@@ -131,7 +130,6 @@ impl Compact for AlloyHeader {
parent_beacon_block_root: header.parent_beacon_block_root,
requests_hash: header.extra_fields.as_ref().and_then(|h| h.requests_hash),
extra_data: header.extra_data,
target_blobs_per_block: header.extra_fields.as_ref().and_then(|h| h.target_blobs_per_block),
};
(alloy_header, buf)
}
@@ -190,7 +188,7 @@ mod tests {
#[test]
fn test_extra_fields() {
let mut header = HOLESKY_BLOCK;
header.extra_fields = Some(HeaderExt { requests_hash: Some(B256::random()), target_blobs_per_block: Some(3) });
header.extra_fields = Some(HeaderExt { requests_hash: Some(B256::random())});
let mut encoded_header = vec![];
let len = header.to_compact(&mut encoded_header);

View File

@@ -8,7 +8,7 @@ use crate::{
BlockInfo, PoolTransaction, PoolUpdateKind,
};
use alloy_consensus::{BlockHeader, Typed2718};
use alloy_eips::BlockNumberOrTag;
use alloy_eips::{eip7840::BlobParams, BlockNumberOrTag};
use alloy_primitives::{Address, BlockHash, BlockNumber};
use alloy_rlp::Encodable;
use futures_util::{
@@ -119,7 +119,7 @@ pub async fn maintain_transaction_pool<N, Client, P, St, Tasks>(
chain_spec.base_fee_params_at_timestamp(latest.timestamp() + 12),
)
.unwrap_or_default(),
pending_blob_fee: latest.next_block_blob_fee(),
pending_blob_fee: latest.next_block_blob_fee(BlobParams::cancun()),
};
pool.set_block_info(info);
}
@@ -276,7 +276,7 @@ pub async fn maintain_transaction_pool<N, Client, P, St, Tasks>(
chain_spec.base_fee_params_at_timestamp(new_tip.timestamp() + 12),
)
.unwrap_or_default();
let pending_block_blob_fee = new_tip.next_block_blob_fee();
let pending_block_blob_fee = new_tip.next_block_blob_fee(BlobParams::cancun());
// we know all changed account in the new chain
let new_changed_accounts: HashSet<_> =
@@ -379,7 +379,7 @@ pub async fn maintain_transaction_pool<N, Client, P, St, Tasks>(
chain_spec.base_fee_params_at_timestamp(tip.timestamp() + 12),
)
.unwrap_or_default();
let pending_block_blob_fee = tip.next_block_blob_fee();
let pending_block_blob_fee = tip.next_block_blob_fee(BlobParams::cancun());
let first_block = blocks.first();
trace!(

View File

@@ -858,7 +858,7 @@ pub fn ensure_intrinsic_gas<T: EthPoolTransaction>(
SpecId::MERGE
};
let gas_after_merge = revm_interpreter::gas::validate_initial_tx_gas(
let gas = revm_interpreter::gas::calculate_initial_tx_gas(
spec_id,
transaction.input(),
transaction.is_create(),
@@ -866,7 +866,8 @@ pub fn ensure_intrinsic_gas<T: EthPoolTransaction>(
transaction.authorization_count() as u64,
);
if transaction.gas_limit() < gas_after_merge {
let gas_limit = transaction.gas_limit();
if gas_limit < gas.initial_gas || gas_limit < gas.floor_gas {
Err(InvalidPoolTransactionError::IntrinsicGasTooLow)
} else {
Ok(())

View File

@@ -116,7 +116,6 @@ impl From<Header> for SealedHeader {
excess_blob_gas: value.excess_blob_gas.map(|v| v.to::<u64>()),
parent_beacon_block_root: value.parent_beacon_block_root,
requests_hash: value.requests_hash,
target_blobs_per_block: value.target_blobs_per_block.map(|v| v.to::<u64>()),
};
Self::new(header, value.hash)
}