Repository: NomicFoundation/edr
Pull request #859: build: upgrade to REVM v21
Author: login: Wodann
Labels: name: no changeset needed
description: This PR doesn't require a changeset
Created: 2025-04-03T21:47:03Z | Merged: 2025-04-04T16:58:48Z

Fixes #858 

Linked issue #858: Upgrade to REVM v21

Diff:
diff --git a/Cargo.lock b/Cargo.lock
index 72434761e6..14cd978a7d 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -46,15 +46,37 @@ checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5"
 
 [[package]]
 name = "alloy-consensus"
-version = "0.3.6"
+version = "0.13.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "629b62e38d471cc15fea534eb7283d2f8a4e8bdb1811bcc5d66dda6cfce6fae1"
+checksum = "27d301f5bcfd37e3aac727c360d8b50c33ddff9169ce0370198dedda36a9927d"
 dependencies = [
- "alloy-eips 0.3.6",
- "alloy-primitives 0.8.22",
+ "alloy-eips",
+ "alloy-primitives 0.8.25",
  "alloy-rlp",
- "alloy-serde 0.3.6",
+ "alloy-serde",
+ "alloy-trie",
+ "auto_impl",
  "c-kzg",
+ "derive_more 2.0.1",
+ "either",
+ "k256",
+ "once_cell",
+ "rand",
+ "serde",
+ "thiserror 2.0.12",
+]
+
+[[package]]
+name = "alloy-consensus-any"
+version = "0.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9f4f97a85a45965e0e4f9f5b94bbafaa3e4ee6868bdbcf2e4a9acb4b358038fe"
+dependencies = [
+ "alloy-consensus",
+ "alloy-eips",
+ "alloy-primitives 0.8.25",
+ "alloy-rlp",
+ "alloy-serde",
  "serde",
 ]
 
@@ -65,7 +87,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "00e08c581811006021970bf07f2ecf3213f6237c125f7fd99607004b23627b61"
 dependencies = [
  "alloy-json-abi",
- "alloy-primitives 0.8.22",
+ "alloy-primitives 0.8.25",
  "alloy-sol-type-parser",
  "alloy-sol-types 0.8.22",
  "const-hex",
@@ -82,7 +104,7 @@ version = "0.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "675264c957689f0fd75f5993a73123c2cc3b5c235a38f5b9037fe6c826bfb2c0"
 dependencies = [
- "alloy-primitives 0.8.22",
+ "alloy-primitives 0.8.25",
  "alloy-rlp",
  "crc",
  "serde",
@@ -95,18 +117,7 @@ version = "0.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "0069cf0642457f87a01a014f6dc29d5d893cd4fd8fddf0c3cdfad1bb3ebafc41"
 dependencies = [
- "alloy-primitives 0.8.22",
- "alloy-rlp",
- "serde",
-]
-
-[[package]]
-name = "alloy-eip7702"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ea59dc42102bc9a1905dc57901edc6dd48b9f38115df86c7d252acba70d71d04"
-dependencies = [
- "alloy-primitives 0.8.22",
+ "alloy-primitives 0.8.25",
  "alloy-rlp",
  "serde",
 ]
@@ -117,7 +128,7 @@ version = "0.5.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "9b15b13d38b366d01e818fe8e710d4d702ef7499eacd44926a06171dd9585d0c"
 dependencies = [
- "alloy-primitives 0.8.22",
+ "alloy-primitives 0.8.25",
  "alloy-rlp",
  "k256",
  "serde",
@@ -126,58 +137,20 @@ dependencies = [
 
 [[package]]
 name = "alloy-eips"
-version = "0.3.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f923dd5fca5f67a43d81ed3ebad0880bd41f6dd0ada930030353ac356c54cd0f"
-dependencies = [
- "alloy-eip2930",
- "alloy-eip7702 0.1.1",
- "alloy-primitives 0.8.22",
- "alloy-rlp",
- "alloy-serde 0.3.6",
- "c-kzg",
- "derive_more 1.0.0",
- "once_cell",
- "serde",
- "sha2 0.10.8",
-]
-
-[[package]]
-name = "alloy-eips"
-version = "0.11.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5591581ca2ab0b3e7226a4047f9a1bfcf431da1d0cce3752fda609fea3c27e37"
-dependencies = [
- "alloy-eip2124",
- "alloy-eip2930",
- "alloy-eip7702 0.5.1",
- "alloy-primitives 0.8.22",
- "alloy-rlp",
- "alloy-serde 0.11.1",
- "auto_impl",
- "c-kzg",
- "derive_more 1.0.0",
- "once_cell",
- "serde",
-]
-
-[[package]]
-name = "alloy-eips"
-version = "0.12.4"
+version = "0.13.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d13734f722326c846e7690ce732c9864f5ae82f52c7fb60c871f56654f348d4c"
+checksum = "10b11c382ca8075128d1ae6822b60921cf484c911d9a5831797a01218f98125f"
 dependencies = [
  "alloy-eip2124",
  "alloy-eip2930",
- "alloy-eip7702 0.5.1",
- "alloy-primitives 0.8.22",
+ "alloy-eip7702",
+ "alloy-primitives 0.8.25",
  "alloy-rlp",
- "alloy-serde 0.12.4",
+ "alloy-serde",
  "auto_impl",
  "c-kzg",
  "derive_more 2.0.1",
  "either",
- "once_cell",
  "serde",
  "sha2 0.10.8",
 ]
@@ -188,56 +161,22 @@ version = "0.8.22"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "125601804507fef5ae7debcbf800906b12741f19800c1c05b953d0f1b990131a"
 dependencies = [
- "alloy-primitives 0.8.22",
+ "alloy-primitives 0.8.25",
  "alloy-sol-type-parser",
  "serde",
  "serde_json",
 ]
 
-[[package]]
-name = "alloy-json-rpc"
-version = "0.3.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d3c717b5298fad078cd3a418335b266eba91b511383ca9bd497f742d5975d5ab"
-dependencies = [
- "alloy-primitives 0.8.22",
- "alloy-sol-types 0.8.22",
- "serde",
- "serde_json",
- "thiserror 1.0.58",
- "tracing",
-]
-
-[[package]]
-name = "alloy-network"
-version = "0.3.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fb3705ce7d8602132bcf5ac7a1dd293a42adc2f183abf5907c30ac535ceca049"
-dependencies = [
- "alloy-consensus",
- "alloy-eips 0.3.6",
- "alloy-json-rpc",
- "alloy-network-primitives",
- "alloy-primitives 0.8.22",
- "alloy-rpc-types-eth",
- "alloy-serde 0.3.6",
- "alloy-signer",
- "alloy-sol-types 0.8.22",
- "async-trait",
- "auto_impl",
- "futures-utils-wasm",
- "thiserror 1.0.58",
-]
-
 [[package]]
 name = "alloy-network-primitives"
-version = "0.3.6"
+version = "0.13.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "94ad40869867ed2d9cd3842b1e800889e5b49e6b92da346e93862b4a741bedf3"
+checksum = "86f736e1d1eb1b770dbd32919bdf46d4dcd4617f2eed07947dfb32649962baba"
 dependencies = [
- "alloy-eips 0.3.6",
- "alloy-primitives 0.8.22",
- "alloy-serde 0.3.6",
+ "alloy-consensus",
+ "alloy-eips",
+ "alloy-primitives 0.8.25",
+ "alloy-serde",
  "serde",
 ]
 
@@ -265,9 +204,9 @@ dependencies = [
 
 [[package]]
 name = "alloy-primitives"
-version = "0.8.22"
+version = "0.8.25"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8c66bb6715b7499ea755bde4c96223ae8eb74e05c014ab38b9db602879ffb825"
+checksum = "8c77490fe91a0ce933a1f219029521f20fc28c2c0ca95d53fa4da9c00b8d9d4e"
 dependencies = [
  "alloy-rlp",
  "bytes",
@@ -315,72 +254,35 @@ dependencies = [
 
 [[package]]
 name = "alloy-rpc-types-eth"
-version = "0.3.6"
+version = "0.13.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "83aa984386deda02482660aa31cb8ca1e63d533f1c31a52d7d181ac5ec68e9b8"
+checksum = "9a8b6d55bdaa0c4a08650d4b32f174494cbade56adf6f2fcfa2a4f3490cb5511"
 dependencies = [
  "alloy-consensus",
- "alloy-eips 0.3.6",
+ "alloy-consensus-any",
+ "alloy-eips",
  "alloy-network-primitives",
- "alloy-primitives 0.8.22",
+ "alloy-primitives 0.8.25",
  "alloy-rlp",
- "alloy-serde 0.3.6",
+ "alloy-serde",
  "alloy-sol-types 0.8.22",
- "cfg-if",
- "derive_more 1.0.0",
- "hashbrown 0.14.5",
  "itertools 0.13.0",
  "serde",
  "serde_json",
+ "thiserror 2.0.12",
 ]
 
 [[package]]
 name = "alloy-serde"
-version = "0.3.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "731f75ec5d383107fd745d781619bd9cedf145836c51ecb991623d41278e71fa"
-dependencies = [
- "alloy-primitives 0.8.22",
- "serde",
- "serde_json",
-]
-
-[[package]]
-name = "alloy-serde"
-version = "0.11.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8732058f5ca28c1d53d241e8504620b997ef670315d7c8afab856b3e3b80d945"
-dependencies = [
- "alloy-primitives 0.8.22",
- "serde",
- "serde_json",
-]
-
-[[package]]
-name = "alloy-serde"
-version = "0.12.4"
+version = "0.13.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3aebca035ca670bd7de8165a9494c0d502625e26129dd95d17fdfd70d5521c02"
+checksum = "1824791912f468a481dedc1db50feef3e85a078f6d743a62db2ee9c2ca674882"
 dependencies = [
- "alloy-primitives 0.8.22",
+ "alloy-primitives 0.8.25",
  "serde",
  "serde_json",
 ]
 
-[[package]]
-name = "alloy-signer"
-version = "0.3.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "307324cca94354cd654d6713629f0383ec037e1ff9e3e3d547212471209860c0"
-dependencies = [
- "alloy-primitives 0.8.22",
- "async-trait",
- "auto_impl",
- "elliptic-curve",
- "k256",
- "thiserror 1.0.58",
-]
-
 [[package]]
 name = "alloy-sol-macro"
 version = "0.7.7"
@@ -504,12 +406,28 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "5f819635439ebb06aa13c96beac9b2e7360c259e90f5160a6848ae0d94d10452"
 dependencies = [
  "alloy-json-abi",
- "alloy-primitives 0.8.22",
+ "alloy-primitives 0.8.25",
  "alloy-sol-macro 0.8.22",
  "const-hex",
  "serde",
 ]
 
+[[package]]
+name = "alloy-trie"
+version = "0.7.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d95a94854e420f07e962f7807485856cde359ab99ab6413883e15235ad996e8b"
+dependencies = [
+ "alloy-primitives 0.8.25",
+ "alloy-rlp",
+ "arrayvec",
+ "derive_more 1.0.0",
+ "nybbles",
+ "serde",
+ "smallvec",
+ "tracing",
+]
+
 [[package]]
 name = "android-tzdata"
 version = "0.1.1"
@@ -552,6 +470,15 @@ version = "1.0.95"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "34ac096ce696dc2fcabef30516bb13c0a68a11d30131d3df6f04711467681b04"
 
+[[package]]
+name = "arbitrary"
+version = "1.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223"
+dependencies = [
+ "derive_arbitrary",
+]
+
 [[package]]
 name = "archery"
 version = "1.2.0"
@@ -562,6 +489,51 @@ dependencies = [
  "triomphe",
 ]
 
+[[package]]
+name = "ark-bls12-381"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3df4dcc01ff89867cd86b0da835f23c3f02738353aaee7dde7495af71363b8d5"
+dependencies = [
+ "ark-ec",
+ "ark-ff 0.5.0",
+ "ark-serialize 0.5.0",
+ "ark-std 0.5.0",
+]
+
+[[package]]
+name = "ark-bn254"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d69eab57e8d2663efa5c63135b2af4f396d66424f88954c21104125ab6b3e6bc"
+dependencies = [
+ "ark-ec",
+ "ark-ff 0.5.0",
+ "ark-r1cs-std",
+ "ark-std 0.5.0",
+]
+
+[[package]]
+name = "ark-ec"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "43d68f2d516162846c1238e755a7c4d131b892b70cc70c471a8e3ca3ed818fce"
+dependencies = [
+ "ahash",
+ "ark-ff 0.5.0",
+ "ark-poly",
+ "ark-serialize 0.5.0",
+ "ark-std 0.5.0",
+ "educe",
+ "fnv",
+ "hashbrown 0.15.2",
+ "itertools 0.13.0",
+ "num-bigint",
+ "num-integer",
+ "num-traits",
+ "zeroize",
+]
+
 [[package]]
 name = "ark-ff"
 version = "0.3.0"
@@ -600,6 +572,26 @@ dependencies = [
  "zeroize",
 ]
 
+[[package]]
+name = "ark-ff"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a177aba0ed1e0fbb62aa9f6d0502e9b46dad8c2eab04c14258a1212d2557ea70"
+dependencies = [
+ "ark-ff-asm 0.5.0",
+ "ark-ff-macros 0.5.0",
+ "ark-serialize 0.5.0",
+ "ark-std 0.5.0",
+ "arrayvec",
+ "digest 0.10.7",
+ "educe",
+ "itertools 0.13.0",
+ "num-bigint",
+ "num-traits",
+ "paste",
+ "zeroize",
+]
+
 [[package]]
 name = "ark-ff-asm"
 version = "0.3.0"
@@ -620,6 +612,16 @@ dependencies = [
  "syn 1.0.109",
 ]
 
+[[package]]
+name = "ark-ff-asm"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60"
+dependencies = [
+ "quote",
+ "syn 2.0.99",
+]
+
 [[package]]
 name = "ark-ff-macros"
 version = "0.3.0"
@@ -645,6 +647,63 @@ dependencies = [
  "syn 1.0.109",
 ]
 
+[[package]]
+name = "ark-ff-macros"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09be120733ee33f7693ceaa202ca41accd5653b779563608f1234f78ae07c4b3"
+dependencies = [
+ "num-bigint",
+ "num-traits",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.99",
+]
+
+[[package]]
+name = "ark-poly"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "579305839da207f02b89cd1679e50e67b4331e2f9294a57693e5051b7703fe27"
+dependencies = [
+ "ahash",
+ "ark-ff 0.5.0",
+ "ark-serialize 0.5.0",
+ "ark-std 0.5.0",
+ "educe",
+ "fnv",
+ "hashbrown 0.15.2",
+]
+
+[[package]]
+name = "ark-r1cs-std"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "941551ef1df4c7a401de7068758db6503598e6f01850bdb2cfdb614a1f9dbea1"
+dependencies = [
+ "ark-ec",
+ "ark-ff 0.5.0",
+ "ark-relations",
+ "ark-std 0.5.0",
+ "educe",
+ "num-bigint",
+ "num-integer",
+ "num-traits",
+ "tracing",
+]
+
+[[package]]
+name = "ark-relations"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec46ddc93e7af44bcab5230937635b06fb5744464dd6a7e7b083e80ebd274384"
+dependencies = [
+ "ark-ff 0.5.0",
+ "ark-std 0.5.0",
+ "tracing",
+ "tracing-subscriber 0.2.25",
+]
+
 [[package]]
 name = "ark-serialize"
 version = "0.3.0"
@@ -666,6 +725,30 @@ dependencies = [
  "num-bigint",
 ]
 
+[[package]]
+name = "ark-serialize"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f4d068aaf107ebcd7dfb52bc748f8030e0fc930ac8e360146ca54c1203088f7"
+dependencies = [
+ "ark-serialize-derive",
+ "ark-std 0.5.0",
+ "arrayvec",
+ "digest 0.10.7",
+ "num-bigint",
+]
+
+[[package]]
+name = "ark-serialize-derive"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "213888f660fddcca0d257e88e54ac05bca01885f258ccdf695bafd77031bb69d"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.99",
+]
+
 [[package]]
 name = "ark-std"
 version = "0.3.0"
@@ -686,6 +769,16 @@ dependencies = [
  "rand",
 ]
 
+[[package]]
+name = "ark-std"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "246a225cc6131e9ee4f24619af0f19d67761fff15d7ccc22e42b80846e69449a"
+dependencies = [
+ "num-traits",
+ "rand",
+]
+
 [[package]]
 name = "arrayref"
 version = "0.3.9"
@@ -697,6 +790,9 @@ name = "arrayvec"
 version = "0.7.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711"
+dependencies = [
+ "serde",
+]
 
 [[package]]
 name = "assert-json-diff"
@@ -933,10 +1029,11 @@ dependencies = [
 
 [[package]]
 name = "c-kzg"
-version = "1.0.3"
+version = "2.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f0307f72feab3300336fb803a57134159f6e20139af1357f36c54cb90d8e8928"
+checksum = "4e7e3c397401eb76228c89561cf22f85f41c95aa799ee9d860de3ea1cbc728fc"
 dependencies = [
+ "arbitrary",
  "blst",
  "cc",
  "glob",
@@ -964,9 +1061,12 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
 
 [[package]]
 name = "cc"
-version = "1.0.91"
+version = "1.2.17"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1fd97381a8cc6493395a5afc4c691c1084b3768db713b73aa215217aa245d153"
+checksum = "1fcb57c740ae1daf453ae85f16e37396f672b039e00d9d866e07ddb24e328e3a"
+dependencies = [
+ "shlex",
+]
 
 [[package]]
 name = "cfg-if"
@@ -1354,6 +1454,17 @@ dependencies = [
  "syn 2.0.99",
 ]
 
+[[package]]
+name = "derive_arbitrary"
+version = "1.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.99",
+]
+
 [[package]]
 name = "derive_more"
 version = "0.99.19"
@@ -1394,7 +1505,6 @@ dependencies = [
  "proc-macro2",
  "quote",
  "syn 2.0.99",
- "unicode-xid",
 ]
 
 [[package]]
@@ -1458,6 +1568,7 @@ dependencies = [
  "digest 0.10.7",
  "elliptic-curve",
  "rfc6979",
+ "serdect",
  "signature",
  "spki",
 ]
@@ -1473,9 +1584,9 @@ dependencies = [
 name = "edr_eth"
 version = "0.3.5"
 dependencies = [
- "alloy-eips 0.11.1",
+ "alloy-eips",
  "alloy-rlp",
- "alloy-serde 0.11.1",
+ "alloy-serde",
  "anyhow",
  "assert-json-diff",
  "auto_impl",
@@ -1559,7 +1670,7 @@ name = "edr_generic"
 version = "0.3.5"
 dependencies = [
  "alloy-rlp",
- "alloy-serde 0.12.4",
+ "alloy-serde",
  "anyhow",
  "derive-where",
  "edr_defaults",
@@ -1610,7 +1721,7 @@ dependencies = [
  "strum",
  "tracing",
  "tracing-flame",
- "tracing-subscriber",
+ "tracing-subscriber 0.3.18",
 ]
 
 [[package]]
@@ -1638,7 +1749,7 @@ name = "edr_op"
 version = "0.3.5"
 dependencies = [
  "alloy-rlp",
- "alloy-serde 0.12.4",
+ "alloy-serde",
  "anyhow",
  "edr_defaults",
  "edr_eth",
@@ -1666,7 +1777,7 @@ name = "edr_provider"
 version = "0.3.5"
 dependencies = [
  "alloy-dyn-abi",
- "alloy-serde 0.12.4",
+ "alloy-serde",
  "alloy-sol-types 0.8.22",
  "anyhow",
  "auto_impl",
@@ -1735,8 +1846,8 @@ dependencies = [
 name = "edr_rpc_eth"
 version = "0.3.5"
 dependencies = [
- "alloy-eips 0.12.4",
- "alloy-serde 0.12.4",
+ "alloy-eips",
+ "alloy-serde",
  "anyhow",
  "assert-json-diff",
  "derive-where",
@@ -1763,7 +1874,7 @@ dependencies = [
 name = "edr_scenarios"
 version = "0.3.5"
 dependencies = [
- "alloy-serde 0.12.4",
+ "alloy-serde",
  "edr_eth",
  "edr_evm",
  "edr_napi_core",
@@ -1811,6 +1922,18 @@ dependencies = [
 name = "edr_utils"
 version = "0.3.5"
 
+[[package]]
+name = "educe"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1d7bc049e1bd8cdeb31b68bbd586a9464ecf9f3944af3958a7a9d0f8b9799417"
+dependencies = [
+ "enum-ordinalize",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.99",
+]
+
 [[package]]
 name = "either"
 version = "1.15.0"
@@ -1836,6 +1959,7 @@ dependencies = [
  "pkcs8",
  "rand_core",
  "sec1",
+ "serdect",
  "subtle",
  "zeroize",
 ]
@@ -1855,6 +1979,26 @@ dependencies = [
  "cfg-if",
 ]
 
+[[package]]
+name = "enum-ordinalize"
+version = "4.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fea0dcfa4e54eeb516fe454635a95753ddd39acda650ce703031c6973e315dd5"
+dependencies = [
+ "enum-ordinalize-derive",
+]
+
+[[package]]
+name = "enum-ordinalize-derive"
+version = "4.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0d28318a75d4aead5c4db25382e8ef717932d0346600cacae6357eb5941bc5ff"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.99",
+]
+
 [[package]]
 name = "enumn"
 version = "0.1.13"
@@ -2068,12 +2212,6 @@ dependencies = [
  "slab",
 ]
 
-[[package]]
-name = "futures-utils-wasm"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "42012b0f064e01aa58b545fe3727f90f7dd4020f4a3ea735b50344965f5a57e9"
-
 [[package]]
 name = "generic-array"
 version = "0.14.7"
@@ -2179,7 +2317,6 @@ checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
 dependencies = [
  "ahash",
  "allocator-api2",
- "serde",
 ]
 
 [[package]]
@@ -2188,6 +2325,7 @@ version = "0.15.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289"
 dependencies = [
+ "allocator-api2",
  "foldhash",
  "serde",
 ]
@@ -2516,6 +2654,7 @@ dependencies = [
  "ecdsa",
  "elliptic-curve",
  "once_cell",
+ "serdect",
  "sha2 0.10.8",
 ]
 
@@ -2543,9 +2682,6 @@ name = "lazy_static"
 version = "1.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
-dependencies = [
- "spin 0.5.2",
-]
 
 [[package]]
 name = "libc"
@@ -2921,6 +3057,17 @@ version = "0.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3"
 
+[[package]]
+name = "nybbles"
+version = "0.3.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8983bb634df7248924ee0c4c3a749609b5abcb082c28fffe3254b3eb3602b307"
+dependencies = [
+ "const-hex",
+ "serde",
+ "smallvec",
+]
+
 [[package]]
 name = "object"
 version = "0.32.2"
@@ -2932,9 +3079,9 @@ dependencies = [
 
 [[package]]
 name = "once_cell"
-version = "1.19.0"
+version = "1.21.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
+checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
 
 [[package]]
 name = "oorandom"
@@ -2944,31 +3091,33 @@ checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575"
 
 [[package]]
 name = "op-alloy-consensus"
-version = "0.2.11"
+version = "0.12.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3ef361231f72bea90365e441bd97d9c8fd3875603f18bbcad0e04874c6158e53"
+checksum = "91764ebe0eddf6e3cfff41650332ff4e01defe372386027703f2e7e334734a05"
 dependencies = [
  "alloy-consensus",
- "alloy-eips 0.3.6",
- "alloy-primitives 0.8.22",
+ "alloy-eips",
+ "alloy-primitives 0.8.25",
  "alloy-rlp",
- "alloy-serde 0.3.6",
- "derive_more 1.0.0",
+ "alloy-serde",
+ "derive_more 2.0.1",
  "serde",
- "spin 0.9.8",
+ "thiserror 2.0.12",
 ]
 
 [[package]]
 name = "op-alloy-rpc-types"
-version = "0.2.11"
+version = "0.12.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e5a65da5f7591acba3d2304b25145ca9942ea90481213269aed9cb28add8e3ff"
+checksum = "80f3c492791fb980de337e6dffb3ee2a91a01bb97b5f4aab06d980008d96fe09"
 dependencies = [
- "alloy-eips 0.3.6",
- "alloy-network",
- "alloy-primitives 0.8.22",
+ "alloy-consensus",
+ "alloy-eips",
+ "alloy-network-primitives",
+ "alloy-primitives 0.8.25",
  "alloy-rpc-types-eth",
- "alloy-serde 0.3.6",
+ "alloy-serde",
+ "derive_more 2.0.1",
  "op-alloy-consensus",
  "serde",
  "serde_json",
@@ -2976,8 +3125,9 @@ dependencies = [
 
 [[package]]
 name = "op-revm"
-version = "1.0.0"
-source = "git+https://github.com/nomicfoundation/revm?rev=885b273a#885b273a309807691e47ad64b9670ef0cd014d7a"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e981d234dcfd3a3de7480e5a5cf7439071af39d15b7d258188cc4c69b9d1f26e"
 dependencies = [
  "auto_impl",
  "once_cell",
@@ -3641,8 +3791,9 @@ dependencies = [
 
 [[package]]
 name = "revm"
-version = "20.0.0"
-source = "git+https://github.com/nomicfoundation/revm?rev=885b273a#885b273a309807691e47ad64b9670ef0cd014d7a"
+version = "21.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7db41167e2a1fddb734984cc26e4bf0a0cb298829d1c488b4de37bda764e1d47"
 dependencies = [
  "revm-bytecode",
  "revm-context",
@@ -3659,8 +3810,9 @@ dependencies = [
 
 [[package]]
 name = "revm-bytecode"
-version = "1.0.0"
-source = "git+https://github.com/nomicfoundation/revm?rev=885b273a#885b273a309807691e47ad64b9670ef0cd014d7a"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fdc3ae92c0c071f4a5ac3ef398fed50bacf8ebd5495d2afded34c60874afa7a3"
 dependencies = [
  "bitvec",
  "phf",
@@ -3670,8 +3822,9 @@ dependencies = [
 
 [[package]]
 name = "revm-context"
-version = "1.0.0"
-source = "git+https://github.com/nomicfoundation/revm?rev=885b273a#885b273a309807691e47ad64b9670ef0cd014d7a"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c5fd5d8a35cf33d2494e32a966ebee6bc23dea9b1fbc3477c5b58e42ddceaa5b"
 dependencies = [
  "cfg-if",
  "derive-where",
@@ -3685,11 +3838,12 @@ dependencies = [
 
 [[package]]
 name = "revm-context-interface"
-version = "1.0.0"
-source = "git+https://github.com/nomicfoundation/revm?rev=885b273a#885b273a309807691e47ad64b9670ef0cd014d7a"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c8253163a7868c86b88dc76a193724b8c6252bf260dc1cf11d814a5f4fa7a804"
 dependencies = [
  "alloy-eip2930",
- "alloy-eip7702 0.5.1",
+ "alloy-eip7702",
  "auto_impl",
  "revm-database-interface",
  "revm-primitives",
@@ -3699,10 +3853,11 @@ dependencies = [
 
 [[package]]
 name = "revm-database"
-version = "1.0.0"
-source = "git+https://github.com/nomicfoundation/revm?rev=885b273a#885b273a309807691e47ad64b9670ef0cd014d7a"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fbb40baf1ec91bfda68a37a9be72c5d089e2b662532689209cb2e0febe1eb64c"
 dependencies = [
- "alloy-eips 0.12.4",
+ "alloy-eips",
  "auto_impl",
  "revm-bytecode",
  "revm-database-interface",
@@ -3713,8 +3868,9 @@ dependencies = [
 
 [[package]]
 name = "revm-database-interface"
-version = "1.0.0"
-source = "git+https://github.com/nomicfoundation/revm?rev=885b273a#885b273a309807691e47ad64b9670ef0cd014d7a"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0c541612673da04df1ab3a6a56127851e93a5d05539eb915a6c541d24e7c5902"
 dependencies = [
  "auto_impl",
  "revm-primitives",
@@ -3724,8 +3880,9 @@ dependencies = [
 
 [[package]]
 name = "revm-handler"
-version = "1.0.0"
-source = "git+https://github.com/nomicfoundation/revm?rev=885b273a#885b273a309807691e47ad64b9670ef0cd014d7a"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f55164c03c05eace53cf7f64df5dff14c7769956e6f2b9e4acb88301dc7537c"
 dependencies = [
  "auto_impl",
  "revm-bytecode",
@@ -3741,8 +3898,9 @@ dependencies = [
 
 [[package]]
 name = "revm-inspector"
-version = "1.0.0"
-source = "git+https://github.com/nomicfoundation/revm?rev=885b273a#885b273a309807691e47ad64b9670ef0cd014d7a"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "62f67d36e1abebe20b891b7ef57de3af2addfbc2d9cd4ea3f49ade8a67d0e79d"
 dependencies = [
  "auto_impl",
  "revm-context",
@@ -3757,8 +3915,9 @@ dependencies = [
 
 [[package]]
 name = "revm-interpreter"
-version = "16.0.0"
-source = "git+https://github.com/nomicfoundation/revm?rev=885b273a#885b273a309807691e47ad64b9670ef0cd014d7a"
+version = "17.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3cd45ea4fdee2c3f430df4ddb4936dc85c49dc5a7ce9838a8b9ad6861ab153c6"
 dependencies = [
  "revm-bytecode",
  "revm-context-interface",
@@ -3768,9 +3927,15 @@ dependencies = [
 
 [[package]]
 name = "revm-precompile"
-version = "17.0.0"
-source = "git+https://github.com/nomicfoundation/revm?rev=885b273a#885b273a309807691e47ad64b9670ef0cd014d7a"
+version = "18.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ac48995560dd5ea15e3788106bdf8893186d945bd40d674fb63aa351cf2e58fa"
 dependencies = [
+ "ark-bls12-381",
+ "ark-bn254",
+ "ark-ec",
+ "ark-ff 0.5.0",
+ "ark-serialize 0.5.0",
  "aurora-engine-modexp",
  "blst",
  "c-kzg",
@@ -3783,23 +3948,24 @@ dependencies = [
  "ripemd",
  "secp256k1",
  "sha2 0.10.8",
- "substrate-bn",
 ]
 
 [[package]]
 name = "revm-primitives"
-version = "16.0.0"
-source = "git+https://github.com/nomicfoundation/revm?rev=885b273a#885b273a309807691e47ad64b9670ef0cd014d7a"
+version = "17.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bb9b235b3c03299a531717ae4f9ee6bdb4c1a1755c9f8ce751298d1c99d95fc3"
 dependencies = [
- "alloy-primitives 0.8.22",
+ "alloy-primitives 0.8.25",
  "enumn",
  "serde",
 ]
 
 [[package]]
 name = "revm-state"
-version = "1.0.0"
-source = "git+https://github.com/nomicfoundation/revm?rev=885b273a#885b273a309807691e47ad64b9670ef0cd014d7a"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dfdff0435bd0cb9e1f9dcc44eaea581973b0550cb897ce368d43259922b1c241"
 dependencies = [
  "bitflags 2.6.0",
  "revm-bytecode",
@@ -3994,6 +4160,7 @@ dependencies = [
  "der",
  "generic-array",
  "pkcs8",
+ "serdect",
  "subtle",
  "zeroize",
 ]
@@ -4119,6 +4286,16 @@ dependencies = [
  "serde",
 ]
 
+[[package]]
+name = "serdect"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a84f14a19e9a014bb9f4512488d9829a68e04ecabffb0f9904cd1ace94598177"
+dependencies = [
+ "base16ct",
+ "serde",
+]
+
 [[package]]
 name = "serial_test"
 version = "2.0.0"
@@ -4197,6 +4374,12 @@ dependencies = [
  "lazy_static",
 ]
 
+[[package]]
+name = "shlex"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
+
 [[package]]
 name = "signature"
 version = "2.2.0"
@@ -4233,6 +4416,9 @@ name = "smallvec"
 version = "1.13.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
+dependencies = [
+ "serde",
+]
 
 [[package]]
 name = "socket2"
@@ -4244,21 +4430,6 @@ dependencies = [
  "windows-sys 0.52.0",
 ]
 
-[[package]]
-name = "spin"
-version = "0.5.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d"
-
-[[package]]
-name = "spin"
-version = "0.9.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67"
-dependencies = [
- "lock_api",
-]
-
 [[package]]
 name = "spki"
 version = "0.7.3"
@@ -4303,19 +4474,6 @@ dependencies = [
  "syn 2.0.99",
 ]
 
-[[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 = "subtle"
 version = "2.5.0"
@@ -4668,7 +4826,7 @@ dependencies = [
  "toml 0.5.11",
  "tracing",
  "tracing-flame",
- "tracing-subscriber",
+ "tracing-subscriber 0.3.18",
  "walkdir",
 ]
 
@@ -4707,6 +4865,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54"
 dependencies = [
  "once_cell",
+ "valuable",
 ]
 
 [[package]]
@@ -4717,7 +4876,16 @@ checksum = "0bae117ee14789185e129aaee5d93750abe67fdc5a9a62650452bfe4e122a3a9"
 dependencies = [
  "lazy_static",
  "tracing",
- "tracing-subscriber",
+ "tracing-subscriber 0.3.18",
+]
+
+[[package]]
+name = "tracing-subscriber"
+version = "0.2.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0e0d2eaa99c3c2e41547cfa109e910a68ea03823cccad4a0525dcbc9b01e8c71"
+dependencies = [
+ "tracing-core",
 ]
 
 [[package]]
diff --git a/Cargo.toml b/Cargo.toml
index 1b5b9af73b..228bfd8dab 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -25,8 +25,8 @@ rpath = true
 rpath = true
 
 [workspace.dependencies]
-alloy-eips = { version = "0.11.1", default-features = false }
-alloy-serde = { version = "0.11.1", default-features = false }
+alloy-eips = { version = "0.13.0", default-features = false }
+alloy-serde = { version = "0.13.0", default-features = false }
 paste = { version = "1.0.14", default-features = false }
 
 [workspace.lints.rust]
diff --git a/crates/edr_eth/Cargo.toml b/crates/edr_eth/Cargo.toml
index 56f9239868..9e270108f8 100644
--- a/crates/edr_eth/Cargo.toml
+++ b/crates/edr_eth/Cargo.toml
@@ -5,11 +5,11 @@ edition.workspace = true
 
 [dependencies]
 anyhow = "1.0.89"
-alloy-eips = { workspace = true}
+alloy-eips.workspace = true
 alloy-rlp = { version = "0.3", default-features = false, features = ["derive"] }
-alloy-serde = { workspace = true }
+alloy-serde.workspace = true
 auto_impl = { version = "1.2", default-features = false }
-c-kzg = { version = "1.0.3", default-features = false, features = ["ethereum_kzg_settings"] }
+c-kzg = { version = "2.1.0", default-features = false, features = ["ethereum_kzg_settings"] }
 derive-where = { version = "1.2.7", default-features = false }
 hash-db = { version = "0.15.2", default-features = false }
 hash256-std-hasher = { version = "0.15.2", default-features = false }
@@ -19,11 +19,11 @@ itertools = { version = "0.10.5", default-features = false, features = ["use_all
 k256 = { version = "0.13.1", default-features = false, features = ["arithmetic", "ecdsa", "pkcs8", ] }
 log = { version = "0.4.17", default-features = false }
 once_cell = { version = "1.19.0", default-features = false, features = ["alloc", "race", "std"] }
-revm-bytecode = { git = "https://github.com/nomicfoundation/revm", rev = "885b273a", version = "1.0.0-alpha.2", default-features = false }
-revm-context = { git = "https://github.com/nomicfoundation/revm", rev = "885b273a", version = "1.0.0-alpha.2", default-features = false }
-revm-context-interface = { git = "https://github.com/nomicfoundation/revm", rev = "885b273a", version = "1.0.0-alpha.2", default-features = false }
-revm-primitives = { git = "https://github.com/nomicfoundation/revm", rev = "885b273a", version = "16.0.0-alpha.2", default-features = false, features = ["hashbrown", "rand"] }
-revm-state = { git = "https://github.com/nomicfoundation/revm", rev = "885b273a", version = "1.0.0-alpha.2", default-features = false }
+revm-bytecode = { version = "2.0.0", default-features = false }
+revm-context = { version = "2.0.0", default-features = false }
+revm-context-interface = { version = "2.0.0", default-features = false }
+revm-primitives = { version = "17.0.0", default-features = false, features = ["hashbrown", "rand"] }
+revm-state = { version = "2.0.0", default-features = false }
 serde = { version = "1.0.209", default-features = false, features = ["derive"], optional = true }
 sha2 = { version = "0.10.8", default-features = false }
 sha3 = { version = "0.10.8", default-features = false }
@@ -48,7 +48,7 @@ tokio = { version = "1.23.0", features = ["macros"] }
 default = ["std"]
 rand = ["revm-primitives/rand"]
 serde = ["dep:serde", "alloy-eips/serde", "c-kzg/serde", "revm-bytecode/serde", "revm-primitives/serde", "revm-state/serde"]
-std = ["alloy-eips/std", "hash256-std-hasher/std", "hash-db/std", "hex/std", "itertools/use_std", "k256/std", "k256/precomputed-tables", "revm-bytecode/std", "revm-primitives/std", "revm-state/serde", "serde?/std", "sha2/std", "sha3/std", "triehash/std"]
+std = ["alloy-eips/std", "alloy-serde/std", "hash256-std-hasher/std", "hash-db/std", "hex/std", "itertools/use_std", "k256/std", "k256/precomputed-tables", "revm-bytecode/std", "revm-primitives/std", "revm-state/serde", "serde?/std", "sha2/std", "sha3/std", "triehash/std"]
 test-remote = []
 tracing = ["dep:tracing"]
 
diff --git a/crates/edr_eth/src/transaction/pooled.rs b/crates/edr_eth/src/transaction/pooled.rs
index 8c3f7f9908..1cacad2634 100644
--- a/crates/edr_eth/src/transaction/pooled.rs
+++ b/crates/edr_eth/src/transaction/pooled.rs
@@ -566,7 +566,7 @@ mod tests {
             ).expect("Invalid commitment")],
             vec![c_kzg::Bytes48::from_hex(
                 "86ffb073648261475af77cc902c5189bf3d33d0f63e025f23c69ac1e4cc0a7646e1a59ff8e5600f0fcc35f78fe1a4df2"
-            ).expect("Invalid proof")], c_kzg::ethereum_kzg_settings())?
+            ).expect("Invalid proof")], c_kzg::ethereum_kzg_settings(0))?
         ),
         eip7702 => PooledTransaction::Eip7702(Eip7702 {
             chain_id: 31337,
diff --git a/crates/edr_eth/src/transaction/pooled/eip4844.rs b/crates/edr_eth/src/transaction/pooled/eip4844.rs
index 4a7c278fbe..cced1ba8b1 100644
--- a/crates/edr_eth/src/transaction/pooled/eip4844.rs
+++ b/crates/edr_eth/src/transaction/pooled/eip4844.rs
@@ -86,13 +86,13 @@ impl Eip4844 {
             });
         }
 
-        let verified = c_kzg::KzgProof::verify_blob_kzg_proof_batch(
-            blobs.as_slice(),
-            commitments.as_slice(),
-            proofs.as_slice(),
-            settings,
-        )
-        .map_err(CreationError::KzgProof)?;
+        let verified = settings
+            .verify_blob_kzg_proof_batch(
+                blobs.as_slice(),
+                commitments.as_slice(),
+                proofs.as_slice(),
+            )
+            .map_err(CreationError::KzgProof)?;
 
         if !verified {
             return Err(CreationError::Unverified);
@@ -358,7 +358,7 @@ impl alloy_rlp::Decodable for Eip4844 {
             blobs,
             commitments,
             proofs,
-            c_kzg::ethereum_kzg_settings(),
+            c_kzg::ethereum_kzg_settings(0),
         )
         .map_err(|_error| {
             alloy_rlp::Error::Custom("Failed to RLP decode Eip4844PooledTransaction.")
diff --git a/crates/edr_evm/Cargo.toml b/crates/edr_evm/Cargo.toml
index 8f38b7461f..c769a70fc4 100644
--- a/crates/edr_evm/Cargo.toml
+++ b/crates/edr_evm/Cargo.toml
@@ -22,12 +22,12 @@ edr_defaults = { version = "0.3.5", path = "../edr_defaults" }
 edr_eth = { version = "0.3.5", path = "../edr_eth", features = ["serde"] }
 edr_rpc_eth = { version = "0.3.5", path = "../edr_rpc_eth" }
 edr_utils = { version = "0.3.5", path = "../edr_utils" }
-revm = { git = "https://github.com/nomicfoundation/revm", rev = "885b273a", version = "20.0.0-alpha.2", default-features = false, features = ["blst", "c-kzg", "dev", "serde", "std"] }
-revm-context = { git = "https://github.com/nomicfoundation/revm", rev = "885b273a", version = "1.0.0-alpha.2", default-features = false }
-revm-context-interface = { git = "https://github.com/nomicfoundation/revm", rev = "885b273a", version = "1.0.0-alpha.2", default-features = false }
-revm-database-interface = { git = "https://github.com/nomicfoundation/revm", rev = "885b273a", version = "1.0.0-alpha.2", default-features = false }
-revm-handler = { git = "https://github.com/nomicfoundation/revm", rev = "885b273a", version = "1.0.0-alpha.2", default-features = false }
-revm-interpreter = { git = "https://github.com/nomicfoundation/revm", rev = "885b273a", version = "16.0.0-alpha.2", default-features = false }
+revm = { version = "21.0.0", default-features = false, features = ["blst", "c-kzg", "dev", "serde", "std"] }
+revm-context = { version = "2.0.0", default-features = false }
+revm-context-interface = { version = "2.0.0", default-features = false }
+revm-database-interface = { version = "2.0.0", default-features = false }
+revm-handler = { version = "2.0.0", default-features = false }
+revm-interpreter = { version = "17.0.0", default-features = false }
 rpds = { version = "1.1.0", default-features = false, features = ["std"] }
 serde = { version = "1.0.209", default-features = false, features = ["std"] }
 serde_json = { version = "1.0.127", default-features = false, features = ["std"] }
diff --git a/crates/edr_evm/src/interpreter.rs b/crates/edr_evm/src/interpreter.rs
index 11dc6b43d8..9037b40495 100644
--- a/crates/edr_evm/src/interpreter.rs
+++ b/crates/edr_evm/src/interpreter.rs
@@ -1,6 +1,7 @@
 pub use revm_handler::instructions::EthInstructions;
 pub use revm_interpreter::{
     CallInputs, CallOutcome, CallValue, CreateInputs, CreateOutcome, EOFCreateInputs, FrameInput,
-    Gas, Host, InstructionResult, Interpreter, InterpreterResult, InterpreterTypes, MemoryGetter,
-    SuccessOrHalt, interpreter::EthInterpreter, interpreter_types::Jumps, return_revert,
+    Gas, Host, InputsImpl, InstructionResult, Interpreter, InterpreterResult, InterpreterTypes,
+    MemoryGetter, SuccessOrHalt, interpreter::EthInterpreter, interpreter_types::Jumps,
+    return_revert,
 };
diff --git a/crates/edr_evm/src/precompile.rs b/crates/edr_evm/src/precompile.rs
index f5c5760ddd..3809895013 100644
--- a/crates/edr_evm/src/precompile.rs
+++ b/crates/edr_evm/src/precompile.rs
@@ -7,7 +7,7 @@ pub use revm::precompile::{
 };
 pub use revm_handler::{EthPrecompiles, PrecompileProvider};
 
-use crate::{config::Cfg, spec::ContextTrait};
+use crate::{config::Cfg, interpreter::InputsImpl, spec::ContextTrait};
 
 /// A precompile provider that allows adding custom or overwriting existing
 /// precompiles.
@@ -67,7 +67,7 @@ impl<
 {
     type Output = InterpreterResult;
 
-    fn set_spec(&mut self, spec: <ContextT::Cfg as Cfg>::Spec) {
+    fn set_spec(&mut self, spec: <ContextT::Cfg as Cfg>::Spec) -> bool {
         self.base.set_spec(spec);
 
         // Update unique addresses
@@ -77,17 +77,22 @@ impl<
             .cloned()
             .chain(self.base.warm_addresses())
             .collect();
+
+        true
     }
 
     fn run(
         &mut self,
         context: &mut ContextT,
         address: &Address,
-        bytes: &edr_eth::Bytes,
+        inputs: &InputsImpl,
+        is_static: bool,
         gas_limit: u64,
     ) -> Result<Option<Self::Output>, String> {
         let Some(precompile) = self.custom_precompiles.get(address) else {
-            return self.base.run(context, address, bytes, gas_limit);
+            return self
+                .base
+                .run(context, address, inputs, is_static, gas_limit);
         };
 
         let mut result = InterpreterResult {
@@ -96,7 +101,7 @@ impl<
             output: Bytes::new(),
         };
 
-        match (*precompile)(bytes, gas_limit) {
+        match (*precompile)(&inputs.input, gas_limit) {
             Ok(output) => {
                 let underflow = result.gas.record_cost(output.gas_used);
                 assert!(underflow, "Gas underflow is not possible");
diff --git a/crates/edr_evm/src/runtime.rs b/crates/edr_evm/src/runtime.rs
index 71f9bc5b6a..dcd0f025b2 100644
--- a/crates/edr_evm/src/runtime.rs
+++ b/crates/edr_evm/src/runtime.rs
@@ -4,6 +4,7 @@ use edr_eth::{
     transaction::TransactionValidation,
 };
 use revm::{ExecuteEvm, InspectEvm, Inspector, Journal, precompile::PrecompileFn};
+use revm_context::JournalTr as _;
 
 use crate::{
     blockchain::BlockHash,
@@ -41,7 +42,7 @@ where
     let context = revm::Context {
         block,
         tx: transaction,
-        journaled_state: Journal::new(cfg.spec.into(), database),
+        journaled_state: Journal::new(database),
         cfg,
         chain: ChainSpecT::Context::default(),
         error: Ok(()),
@@ -88,7 +89,7 @@ where
     let context = revm::Context {
         block,
         tx: transaction,
-        journaled_state: Journal::new(cfg.spec.into(), database),
+        journaled_state: Journal::new(database),
         cfg,
         chain: ChainSpecT::Context::default(),
         error: Ok(()),
diff --git a/crates/edr_evm/src/test_utils.rs b/crates/edr_evm/src/test_utils.rs
index 7b5046d58c..846ba1596f 100644
--- a/crates/edr_evm/src/test_utils.rs
+++ b/crates/edr_evm/src/test_utils.rs
@@ -127,7 +127,7 @@ pub fn dummy_eip155_transaction_with_price_limit_and_value(
     let transaction = request.fake_sign(caller);
     let transaction = transaction::Signed::from(transaction);
 
-    transaction::validate(transaction, l1::SpecId::LATEST)
+    transaction::validate(transaction, l1::SpecId::default())
 }
 
 /// Creates a dummy EIP-1559 transaction with the provided max fee and max
@@ -153,7 +153,7 @@ pub fn dummy_eip1559_transaction(
     let transaction = request.fake_sign(caller);
     let transaction = transaction::Signed::from(transaction);
 
-    transaction::validate(transaction, l1::SpecId::LATEST)
+    transaction::validate(transaction, l1::SpecId::default())
 }
 
 /// Runs a full remote block, asserting that the mined block matches the remote
diff --git a/crates/edr_evm/tests/integration/blockchain.rs b/crates/edr_evm/tests/integration/blockchain.rs
index 728ffdf1a4..896d561b6b 100644
--- a/crates/edr_evm/tests/integration/blockchain.rs
+++ b/crates/edr_evm/tests/integration/blockchain.rs
@@ -62,7 +62,7 @@ async fn create_forked_dummy_blockchain(
         ForkedBlockchain::new(
             tokio::runtime::Handle::current().clone(),
             None,
-            l1::SpecId::LATEST,
+            l1::SpecId::default(),
             Arc::new(rpc_client),
             fork_block_number,
             &mut irregular_state,
@@ -86,7 +86,7 @@ async fn create_dummy_blockchains()
     let local_blockchain = LocalBlockchain::new(
         StateDiff::default(),
         1,
-        l1::SpecId::LATEST,
+        l1::SpecId::default(),
         GenesisBlockOptions {
             gas_limit: Some(DEFAULT_GAS_LIMIT),
             mix_hash: Some(B256::ZERO),
diff --git a/crates/edr_evm/tests/integration/issues.rs b/crates/edr_evm/tests/integration/issues.rs
index 99b8d631c0..f14455f1a6 100644
--- a/crates/edr_evm/tests/integration/issues.rs
+++ b/crates/edr_evm/tests/integration/issues.rs
@@ -65,7 +65,7 @@ async fn issue_hh_4974_forking_avalanche_c_chain() -> anyhow::Result<()> {
     let _blockchain = ForkedBlockchain::new(
         runtime::Handle::current(),
         None,
-        l1::SpecId::LATEST,
+        l1::SpecId::default(),
         Arc::new(rpc_client),
         Some(FORK_BLOCK_NUMBER),
         &mut irregular_state,
diff --git a/crates/edr_evm/tests/integration/op.rs b/crates/edr_evm/tests/integration/op.rs
index beadaa2a55..826ec30d33 100644
--- a/crates/edr_evm/tests/integration/op.rs
+++ b/crates/edr_evm/tests/integration/op.rs
@@ -31,7 +31,7 @@ async fn unknown_transaction_types() -> anyhow::Result<()> {
     let blockchain = ForkedBlockchain::new(
         runtime::Handle::current(),
         None,
-        l1::SpecId::LATEST,
+        l1::SpecId::default(),
         Arc::new(rpc_client),
         None,
         &mut irregular_state,
diff --git a/crates/edr_generic/Cargo.toml b/crates/edr_generic/Cargo.toml
index 33dff6fb37..fe4e02d9f8 100644
--- a/crates/edr_generic/Cargo.toml
+++ b/crates/edr_generic/Cargo.toml
@@ -6,7 +6,7 @@ description = "A generic chain specification for Ethereum Layer 1 chains."
 
 [dependencies]
 alloy-rlp = { version = "0.3.11", default-features = false, features = ["derive"] }
-alloy-serde = { version = "0.12.4", default-features = false, features = ["std"] }
+alloy-serde = { workspace = true, features = ["std"] }
 derive-where = { version = "1.2.7", default-features = false }
 edr_eth = { path = "../edr_eth" }
 edr_evm = { path = "../edr_evm" }
diff --git a/crates/edr_generic/tests/integration/unknown_transaction_type.rs b/crates/edr_generic/tests/integration/unknown_transaction_type.rs
index beadaa2a55..826ec30d33 100644
--- a/crates/edr_generic/tests/integration/unknown_transaction_type.rs
+++ b/crates/edr_generic/tests/integration/unknown_transaction_type.rs
@@ -31,7 +31,7 @@ async fn unknown_transaction_types() -> anyhow::Result<()> {
     let blockchain = ForkedBlockchain::new(
         runtime::Handle::current(),
         None,
-        l1::SpecId::LATEST,
+        l1::SpecId::default(),
         Arc::new(rpc_client),
         None,
         &mut irregular_state,
diff --git a/crates/edr_op/Cargo.toml b/crates/edr_op/Cargo.toml
index 4b3eb995be..ca78eb2e17 100644
--- a/crates/edr_op/Cargo.toml
+++ b/crates/edr_op/Cargo.toml
@@ -5,7 +5,7 @@ edition.workspace = true
 
 [dependencies]
 alloy-rlp = { version = "0.3.11", default-features = false, features = ["derive"] }
-alloy-serde = { version = "0.12.4", default-features = false, features = ["std"] }
+alloy-serde = { workspace = true, features = ["std"] }
 edr_eth = { path = "../edr_eth", features = ["serde", "std"] }
 edr_evm = { path = "../edr_evm" }
 edr_generic = { path = "../edr_generic" }
@@ -14,8 +14,8 @@ edr_provider = { path = "../edr_provider" }
 edr_rpc_eth = { path = "../edr_rpc_eth" }
 edr_solidity = { path = "../edr_solidity" }
 log = { version = "0.4.17", default-features = false }
-op-alloy-rpc-types = { version = "0.2.11", default-features = false }
-op-revm = { git = "https://github.com/nomicfoundation/revm", rev = "885b273a", version = "1.0.0-alpha.1", default-features = false, features = ["c-kzg", "dev", "serde", "std"] }
+op-alloy-rpc-types = { version = "0.12.0", default-features = false }
+op-revm = { version = "2.0.0", default-features = false, features = ["c-kzg", "dev", "serde", "std"] }
 serde = { version = "1.0.209", default-features = false, features = ["derive", "std"] }
 thiserror = { version = "1.0.37", default-features = false }
 tokio = { version = "1.21.2", default-features = false, features = ["macros", "rt-multi-thread", "sync"] }
diff --git a/crates/edr_op/src/receipt/block.rs b/crates/edr_op/src/receipt/block.rs
index 2294eb3080..f2b7c04406 100644
--- a/crates/edr_op/src/receipt/block.rs
+++ b/crates/edr_op/src/receipt/block.rs
@@ -3,7 +3,7 @@ use edr_eth::{
     log::FilterLog,
     receipt::{AsExecutionReceipt, ExecutionReceipt, ReceiptTrait, RootOrStatus},
 };
-use op_alloy_rpc_types::receipt::L1BlockInfo;
+use op_alloy_rpc_types::L1BlockInfo;
 
 use crate::{eip2718::TypedEnvelope, receipt};
 
diff --git a/crates/edr_op/src/receipt/factory.rs b/crates/edr_op/src/receipt/factory.rs
index cdc1084027..efbdd1cb06 100644
--- a/crates/edr_op/src/receipt/factory.rs
+++ b/crates/edr_op/src/receipt/factory.rs
@@ -53,7 +53,7 @@ fn to_rpc_l1_block_info(
     l1_block_info: &L1BlockInfo,
     transaction: &transaction::Signed,
     transaction_receipt: &TransactionReceipt<TypedEnvelope<receipt::Execution<FilterLog>>>,
-) -> Option<op_alloy_rpc_types::receipt::L1BlockInfo> {
+) -> Option<op_alloy_rpc_types::L1BlockInfo> {
     if matches!(
         transaction_receipt.inner,
         TypedEnvelope::Legacy(_) | TypedEnvelope::Deposit(_)
@@ -84,7 +84,7 @@ fn to_rpc_l1_block_info(
             .data_gas(enveloped_tx, hardfork)
             .saturating_add(l1_block_info.l1_fee_overhead.unwrap_or_default());
 
-        let l1_block_info = op_alloy_rpc_types::receipt::L1BlockInfo {
+        let l1_block_info = op_alloy_rpc_types::L1BlockInfo {
             l1_gas_price: Some(
                 l1_block_info
                     .l1_base_fee
@@ -113,6 +113,16 @@ fn to_rpc_l1_block_info(
                     .try_into()
                     .expect("L1 blob base fee scalar cannot be larger than u128::max")
             }),
+            operator_fee_scalar: l1_block_info.operator_fee_scalar.map(|scalar| {
+                scalar
+                    .try_into()
+                    .expect("Operator fee scalar cannot be larger than u128::max")
+            }),
+            operator_fee_constant: l1_block_info.operator_fee_constant.map(|scalar| {
+                scalar
+                    .try_into()
+                    .expect("Operator fee constant cannot be larger than u128::max")
+            }),
         };
 
         Some(l1_block_info)
diff --git a/crates/edr_op/src/rpc.rs b/crates/edr_op/src/rpc.rs
index 49c803f84c..2dcee1dfae 100644
--- a/crates/edr_op/src/rpc.rs
+++ b/crates/edr_op/src/rpc.rs
@@ -4,7 +4,7 @@ pub mod receipt;
 pub mod transaction;
 
 use edr_eth::{Address, B256, Bloom, U256, eips::eip7702, log::FilterLog};
-use op_alloy_rpc_types::receipt::L1BlockInfo;
+use op_alloy_rpc_types::L1BlockInfo;
 use serde::{Deserialize, Serialize};
 
 /// Transaction receipt
diff --git a/crates/edr_op/tests/integration/rpc.rs b/crates/edr_op/tests/integration/rpc.rs
index 51d8bd08df..38debdd536 100644
--- a/crates/edr_op/tests/integration/rpc.rs
+++ b/crates/edr_op/tests/integration/rpc.rs
@@ -11,7 +11,7 @@ use edr_evm::{
 use edr_op::{OpChainSpec, hardfork, transaction};
 use edr_rpc_eth::client::EthRpcClient;
 use edr_test_utils::env::get_alchemy_url;
-use op_alloy_rpc_types::receipt::L1BlockInfo;
+use op_alloy_rpc_types::L1BlockInfo;
 use tokio::runtime;
 
 #[tokio::test(flavor = "multi_thread")]
diff --git a/crates/edr_provider/Cargo.toml b/crates/edr_provider/Cargo.toml
index dfd626bff0..c03bbfda16 100644
--- a/crates/edr_provider/Cargo.toml
+++ b/crates/edr_provider/Cargo.toml
@@ -6,7 +6,7 @@ edition.workspace = true
 [dependencies]
 alloy-dyn-abi = { version = "0.8.22", features = ["eip712"] }
 alloy-sol-types = { version = "0.8.22", default-features = false, features = ["std"] }
-alloy-serde = { version = "0.12.4", default-features = false, features = ["std"] }
+alloy-serde = { workspace = true, features = ["std"] }
 anyhow = { version = "1.0.89", optional = true }
 auto_impl = { version = "1.2", default-features = false }
 derive-where = { version = "1.2.7", default-features = false }
@@ -26,7 +26,7 @@ log = { version = "0.4.20", default-features = false }
 lru = "0.12.2"
 parking_lot = { version = "0.12.1", default-features = false }
 rand = { version = "0.8.5", default-features = false }
-revm-precompile = { git = "https://github.com/nomicfoundation/revm", rev = "885b273a", version = "17.0.0-alpha.1", default-features = false, features = ["blst", "c-kzg", "secp256r1", "std"] }
+revm-precompile = { version = "18.0.0", default-features = false, features = ["blst", "c-kzg", "secp256r1", "std"] }
 rpds = { version = "1.1.0", default-features = false, features = ["std"] }
 serde = { version = "1.0.209", default-features = false, features = ["derive"] }
 serde_json = { version = "1.0.127" }
diff --git a/crates/edr_provider/src/data.rs b/crates/edr_provider/src/data.rs
index 015f2b53b2..97b884ad54 100644
--- a/crates/edr_provider/src/data.rs
+++ b/crates/edr_provider/src/data.rs
@@ -1279,6 +1279,20 @@ where
         Ok(cfg)
     }
 
+    /// Retrieves the hardfork at the provided block spec, if it exists.
+    pub fn hardfork_at_block_spec(
+        &self,
+        block_spec: &BlockSpec,
+    ) -> Result<ChainSpecT::Hardfork, ProviderErrorForChainSpec<ChainSpecT>> {
+        let block_number = self.block_number_by_block_spec(block_spec)?;
+
+        if let Some(block_number) = block_number {
+            self.spec_at_block_number(block_number, block_spec)
+        } else {
+            Ok(self.blockchain.hardfork())
+        }
+    }
+
     fn current_state(
         &mut self,
     ) -> Result<Arc<Box<dyn SyncState<StateError>>>, ProviderErrorForChainSpec<ChainSpecT>> {
diff --git a/crates/edr_provider/src/requests/eth/call.rs b/crates/edr_provider/src/requests/eth/call.rs
index 0255205083..e70db248c2 100644
--- a/crates/edr_provider/src/requests/eth/call.rs
+++ b/crates/edr_provider/src/requests/eth/call.rs
@@ -104,6 +104,7 @@ pub(crate) fn resolve_call_request<
     let request = ChainSpecT::TransactionRequest::from_rpc_type(request, context)?;
     let transaction = request.fake_sign(sender);
 
-    transaction::validate(transaction, l1::SpecId::LATEST)
+    let hardfork = data.hardfork_at_block_spec(block_spec)?;
+    transaction::validate(transaction, hardfork.into())
         .map_err(ProviderError::TransactionCreationError)
 }
diff --git a/crates/edr_provider/src/requests/eth/gas.rs b/crates/edr_provider/src/requests/eth/gas.rs
index 19fd2484cb..f2bf929e8a 100644
--- a/crates/edr_provider/src/requests/eth/gas.rs
+++ b/crates/edr_provider/src/requests/eth/gas.rs
@@ -181,7 +181,8 @@ fn resolve_estimate_gas_request<
     let request = ChainSpecT::TransactionRequest::from_rpc_type(request, context)?;
     let transaction = request.fake_sign(sender);
 
-    transaction::validate(transaction, l1::SpecId::LATEST)
+    let hardfork = data.hardfork_at_block_spec(block_spec)?;
+    transaction::validate(transaction, hardfork.into())
         .map_err(ProviderError::TransactionCreationError)
 }
 
diff --git a/crates/edr_provider/tests/common/blob.rs b/crates/edr_provider/tests/common/blob.rs
index e3e79f4319..e29c65bc8f 100644
--- a/crates/edr_provider/tests/common/blob.rs
+++ b/crates/edr_provider/tests/common/blob.rs
@@ -35,7 +35,7 @@ impl BlobTransactionBuilder {
             self.blobs,
             self.commitments,
             self.proofs,
-            ethereum_kzg_settings(),
+            ethereum_kzg_settings(0),
         )
         .expect("Invalid blob transaction");
 
diff --git a/crates/edr_rpc_eth/Cargo.toml b/crates/edr_rpc_eth/Cargo.toml
index 5d29b4b330..3cb8dfc893 100644
--- a/crates/edr_rpc_eth/Cargo.toml
+++ b/crates/edr_rpc_eth/Cargo.toml
@@ -4,8 +4,8 @@ version = "0.3.5"
 edition.workspace = true
 
 [dependencies]
-alloy-eips = { version = "0.12.4", default-features = false }
-alloy-serde = { version = "0.12.4", default-features = false, features = ["std"] }
+alloy-eips.workspace = true
+alloy-serde = { workspace = true, features = ["std"] }
 derive-where = { version = "1.2.7", default-features = false }
 edr_eth = { version = "0.3.5", path = "../edr_eth", features = ["serde"] }
 edr_rpc_client = { version = "0.3.5", path = "../edr_rpc_client" }
diff --git a/crates/edr_rpc_eth/src/receipt.rs b/crates/edr_rpc_eth/src/receipt.rs
index cc364dff62..a7edcc641a 100644
--- a/crates/edr_rpc_eth/src/receipt.rs
+++ b/crates/edr_rpc_eth/src/receipt.rs
@@ -341,7 +341,7 @@ mod test {
 
     impl_execution_receipt_tests! {
         L1ChainSpec, EthBlockReceiptFactory::default() => {
-            legacy, l1::SpecId::LATEST => TypedEnvelope::Legacy(edr_eth::receipt::Execution::Legacy(edr_eth::receipt::execution::Legacy {
+            legacy, l1::SpecId::default() => TypedEnvelope::Legacy(edr_eth::receipt::Execution::Legacy(edr_eth::receipt::execution::Legacy {
                 root: B256::random(),
                 cumulative_gas_used: 0xffff,
                 logs_bloom: Bloom::random(),
@@ -350,7 +350,7 @@ mod test {
                     ExecutionLog::new_unchecked(Address::random(), Vec::new(), Bytes::from_static(b"test"))
                 ],
             })),
-            eip658_eip2930, l1::SpecId::LATEST => TypedEnvelope::Eip2930(edr_eth::receipt::Execution::Eip658(edr_eth::receipt::execution::Eip658 {
+            eip658_eip2930, l1::SpecId::default() => TypedEnvelope::Eip2930(edr_eth::receipt::Execution::Eip658(edr_eth::receipt::execution::Eip658 {
                 status: true,
                 cumulative_gas_used: 0xffff,
                 logs_bloom: Bloom::random(),
@@ -359,7 +359,7 @@ mod test {
                     ExecutionLog::new_unchecked(Address::random(), Vec::new(), Bytes::from_static(b"test"))
                 ],
             })),
-            eip658_eip1559, l1::SpecId::LATEST => TypedEnvelope::Eip2930(edr_eth::receipt::Execution::Eip658(edr_eth::receipt::execution::Eip658 {
+            eip658_eip1559, l1::SpecId::default() => TypedEnvelope::Eip2930(edr_eth::receipt::Execution::Eip658(edr_eth::receipt::execution::Eip658 {
                 status: true,
                 cumulative_gas_used: 0xffff,
                 logs_bloom: Bloom::random(),
@@ -368,7 +368,7 @@ mod test {
                     ExecutionLog::new_unchecked(Address::random(), Vec::new(), Bytes::from_static(b"test"))
                 ],
             })),
-            eip658_eip4844, l1::SpecId::LATEST => TypedEnvelope::Eip4844(edr_eth::receipt::Execution::Eip658(edr_eth::receipt::execution::Eip658 {
+            eip658_eip4844, l1::SpecId::default() => TypedEnvelope::Eip4844(edr_eth::receipt::Execution::Eip658(edr_eth::receipt::execution::Eip658 {
                 status: true,
                 cumulative_gas_used: 0xffff,
                 logs_bloom: Bloom::random(),
diff --git a/crates/edr_scenarios/Cargo.toml b/crates/edr_scenarios/Cargo.toml
index 54f365e408..39ea06eb3f 100644
--- a/crates/edr_scenarios/Cargo.toml
+++ b/crates/edr_scenarios/Cargo.toml
@@ -4,7 +4,7 @@ version = "0.3.5"
 edition.workspace = true
 
 [dependencies]
-alloy-serde = { version = "0.12.4", default-features = false, features = ["std"] }
+alloy-serde = { workspace = true, features = ["std"] }
 edr_test_utils = { version = "0.3.5", path = "../edr_test_utils" }
 edr_eth = { version = "0.3.5", path = "../edr_eth" }
 edr_evm = { version = "0.3.5", path = "../edr_evm", features = ["tracing"] }


Reviews:
user: login: agostbiro
body: Thanks, LGTM with one question

state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-04-04T10:13:01Z
user: login: Wodann
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-04T15:47:10Z
user: login: Wodann
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-04T15:59:52Z
user: login: agostbiro
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-04T16:01:32Z

Review comments:
diff_hunk: @@ -25,7 +25,7 @@ rpath = true
 rpath = true
 
 [workspace.dependencies]
-alloy-eips = { version = "0.11.1", default-features = false }
+alloy-eips = { version = "0.13.0", default-features = false }
path: Cargo.toml
user: login: agostbiro
body: This is a bit risky as Foundry is still on `alloy` 0.12, but I assume it's necessary because of REVM 21. So having `alloy-eips = 0.12` wouldn't work, right?
created_at: 2025-04-04T10:12:31Z
author_association: CONTRIBUTOR
diff_hunk: @@ -25,7 +25,7 @@ rpath = true
 rpath = true
 
 [workspace.dependencies]
-alloy-eips = { version = "0.11.1", default-features = false }
+alloy-eips = { version = "0.13.0", default-features = false }
path: Cargo.toml
user: login: Wodann
body: Let me attempt that
created_at: 2025-04-04T15:47:10Z
author_association: MEMBER
diff_hunk: @@ -25,7 +25,7 @@ rpath = true
 rpath = true
 
 [workspace.dependencies]
-alloy-eips = { version = "0.11.1", default-features = false }
+alloy-eips = { version = "0.13.0", default-features = false }
path: Cargo.toml
user: login: Wodann
body: No, it's unfortunately required 😔 

```
error: failed to select a version for `c-kzg`.
    ... required by package `alloy-eips v0.12.0`
    ... which satisfies dependency `alloy-eips = "^0.12.0"` of package `edr_eth v0.3.5 (/workspaces/edr/crates/edr_eth)`
    ... which satisfies path dependency `edr_eth` (locked to 0.3.5) of package `edr_napi v0.3.5 (/workspaces/edr/crates/edr_napi)`
versions that meet the requirements `^1.0` are: 1.0.3, 1.0.2, 1.0.0

the package `c-kzg` links to the native library `ckzg`, but it conflicts with a previous package which links to `ckzg` as well:
package `c-kzg v2.1.0`
    ... which satisfies dependency `c-kzg = "^2.1.0"` of package `edr_eth v0.3.5 (/workspaces/edr/crates/edr_eth)`
    ... which satisfies path dependency `edr_eth` (locked to 0.3.5) of package `edr_napi v0.3.5 (/workspaces/edr/crates/edr_napi)`
Only one package in the dependency graph may specify the same links value. This helps ensure that only one copy of a native library is linked in the final binary. Try to adjust your dependencies so that only one package uses the `links = "ckzg"` value. For more information, see https://doc.rust-lang.org/cargo/reference/resolver.html#links.

failed to select a version for `c-kzg` which could resolve this conflict
```
created_at: 2025-04-04T15:59:51Z
author_association: MEMBER
diff_hunk: @@ -25,7 +25,7 @@ rpath = true
 rpath = true
 
 [workspace.dependencies]
-alloy-eips = { version = "0.11.1", default-features = false }
+alloy-eips = { version = "0.13.0", default-features = false }
path: Cargo.toml
user: login: agostbiro
body: ok thanks for checking!
created_at: 2025-04-04T16:01:32Z
author_association: CONTRIBUTOR

PR comments:
user: login: changeset-bot[bot]
created_at: 2025-04-03T21:47:06Z
body: ###  ⚠️  No Changeset found

Latest commit: eff1734fe8e48ad6049ae6e1e6a9e1a156f0adda

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. **If these changes should result in a version bump, you need to add a changeset.**

<details><summary>This PR includes no changesets</summary>

  When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

</details>

[Click here to learn what changesets are, and how to add one](https://github.com/changesets/changesets/blob/main/docs/adding-a-changeset.md).

[Click here if you're a maintainer who wants to add a changeset to this PR](https://github.com/NomicFoundation/edr/new/build/revm?filename=.changeset/shiny-shrimps-tan.md&value=---%0A%0A---%0A%0Abuild%3A%20upgrade%20to%20REVM%20v21%0A)


author_association: NONE
user: login: codecov[bot]
created_at: 2025-04-03T22:13:37Z
body: ## [Codecov](https://app.codecov.io/gh/NomicFoundation/edr/pull/859?dropdown=coverage&src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=NomicFoundation) Report
Attention: Patch coverage is `68.18182%` with `14 lines` in your changes missing coverage. Please review.
> Project coverage is 54.16%. Comparing base [(`3072ddd`)](https://app.codecov.io/gh/NomicFoundation/edr/commit/3072dddaf1e21ffc19fa6c53ea6969d927a71122?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=NomicFoundation) to head [(`eff1734`)](https://app.codecov.io/gh/NomicFoundation/edr/commit/eff1734fe8e48ad6049ae6e1e6a9e1a156f0adda?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=NomicFoundation).
> Report is 1 commits behind head on feat/multichain.

| [Files with missing lines](https://app.codecov.io/gh/NomicFoundation/edr/pull/859?dropdown=coverage&src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=NomicFoundation) | Patch % | Lines |
|---|---|---|
| [crates/edr\_op/src/receipt/factory.rs](https://app.codecov.io/gh/NomicFoundation/edr/pull/859?src=pr&el=tree&filepath=crates%2Fedr_op%2Fsrc%2Freceipt%2Ffactory.rs&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=NomicFoundation#diff-Y3JhdGVzL2Vkcl9vcC9zcmMvcmVjZWlwdC9mYWN0b3J5LnJz) | 16.66% | [6 Missing and 4 partials :warning: ](https://app.codecov.io/gh/NomicFoundation/edr/pull/859?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=NomicFoundation) |
| [crates/edr\_eth/src/transaction/pooled/eip4844.rs](https://app.codecov.io/gh/NomicFoundation/edr/pull/859?src=pr&el=tree&filepath=crates%2Fedr_eth%2Fsrc%2Ftransaction%2Fpooled%2Feip4844.rs&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=NomicFoundation#diff-Y3JhdGVzL2Vkcl9ldGgvc3JjL3RyYW5zYWN0aW9uL3Bvb2xlZC9laXA0ODQ0LnJz) | 87.50% | [0 Missing and 1 partial :warning: ](https://app.codecov.io/gh/NomicFoundation/edr/pull/859?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=NomicFoundation) |
| [crates/edr\_provider/src/data.rs](https://app.codecov.io/gh/NomicFoundation/edr/pull/859?src=pr&el=tree&filepath=crates%2Fedr_provider%2Fsrc%2Fdata.rs&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=NomicFoundation#diff-Y3JhdGVzL2Vkcl9wcm92aWRlci9zcmMvZGF0YS5ycw==) | 88.88% | [0 Missing and 1 partial :warning: ](https://app.codecov.io/gh/NomicFoundation/edr/pull/859?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=NomicFoundation) |
| [crates/edr\_provider/src/requests/eth/call.rs](https://app.codecov.io/gh/NomicFoundation/edr/pull/859?src=pr&el=tree&filepath=crates%2Fedr_provider%2Fsrc%2Frequests%2Feth%2Fcall.rs&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=NomicFoundation#diff-Y3JhdGVzL2Vkcl9wcm92aWRlci9zcmMvcmVxdWVzdHMvZXRoL2NhbGwucnM=) | 50.00% | [0 Missing and 1 partial :warning: ](https://app.codecov.io/gh/NomicFoundation/edr/pull/859?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=NomicFoundation) |
| [crates/edr\_provider/src/requests/eth/gas.rs](https://app.codecov.io/gh/NomicFoundation/edr/pull/859?src=pr&el=tree&filepath=crates%2Fedr_provider%2Fsrc%2Frequests%2Feth%2Fgas.rs&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=NomicFoundation#diff-Y3JhdGVzL2Vkcl9wcm92aWRlci9zcmMvcmVxdWVzdHMvZXRoL2dhcy5ycw==) | 50.00% | [0 Missing and 1 partial :warning: ](https://app.codecov.io/gh/NomicFoundation/edr/pull/859?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=NomicFoundation) |

<details><summary>Additional details and impacted files</summary>


```diff
@@                 Coverage Diff                 @@
##           feat/multichain     #859      +/-   ##
===================================================
- Coverage            54.19%   54.16%   -0.03%     
===================================================
  Files                  250      250              
  Lines                29633    29657      +24     
  Branches             29633    29657      +24     
===================================================
+ Hits                 16059    16065       +6     
- Misses               12618    12629      +11     
- Partials               956      963       +7     
```

</details>

[:umbrella: View full report in Codecov by Sentry](https://app.codecov.io/gh/NomicFoundation/edr/pull/859?dropdown=coverage&src=pr&el=continue&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=NomicFoundation).   
:loudspeaker: Have feedback on the report? [Share it here](https://about.codecov.io/codecov-pr-comment-feedback/?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=NomicFoundation).

<details><summary> :rocket: New features to boost your workflow: </summary>

- :snowflake: [Test Analytics](https://docs.codecov.com/docs/test-analytics): Detect flaky tests, report on failures, and find test suite problems.
- :package: [JS Bundle Analysis](https://docs.codecov.com/docs/javascript-bundle-analysis): Save yourself from yourself by tracking and limiting bundle sizes in JS merges.
</details>
author_association: NONE