From 6680ff4551ea29f502557f4c2d60b2551a598882 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Muhammed=20Kadir=20Y=C3=BCcel?= Date: Tue, 25 Feb 2025 13:02:58 +0300 Subject: [PATCH 01/10] chore: upgrade alloy types to latest --- Cargo.lock | 356 +++++++++++++++++++++++++++++++++++++---------------- Cargo.toml | 14 +-- 2 files changed, 258 insertions(+), 112 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1c21420b..cc6e1465 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -86,18 +86,61 @@ dependencies = [ "serde", ] +[[package]] +name = "alloy-consensus" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69e32ef5c74bbeb1733c37f4ac7f866f8c8af208b7b4265e21af609dcac5bd5e" +dependencies = [ + "alloy-eips 0.11.1", + "alloy-primitives", + "alloy-rlp", + "alloy-serde 0.11.1", + "alloy-trie", + "auto_impl", + "c-kzg", + "derive_more", + "serde", +] + [[package]] name = "alloy-consensus-any" version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa60357dda9a3d0f738f18844bd6d0f4a5924cc5cf00bfad2ff1369897966123" dependencies = [ - "alloy-consensus", + "alloy-consensus 0.7.3", "alloy-eips 0.7.3", "alloy-primitives", "alloy-rlp", ] +[[package]] +name = "alloy-consensus-any" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fa13b7b1e1e3fedc42f0728103bfa3b4d566d3d42b606db449504d88dbdbdcf" +dependencies = [ + "alloy-consensus 0.11.1", + "alloy-eips 0.11.1", + "alloy-primitives", + "alloy-rlp", + "alloy-serde 0.11.1", + "serde", +] + +[[package]] +name = "alloy-eip2124" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "675264c957689f0fd75f5993a73123c2cc3b5c235a38f5b9037fe6c826bfb2c0" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "crc", + "thiserror 2.0.4", +] + [[package]] name = "alloy-eip2930" version = "0.1.0" @@ -161,17 +204,21 @@ dependencies = [ [[package]] name = "alloy-eips" -version = "0.9.2" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52dd5869ed09e399003e0e0ec6903d981b2a92e74c5d37e6b40890bad2517526" +checksum = "5591581ca2ab0b3e7226a4047f9a1bfcf431da1d0cce3752fda609fea3c27e37" dependencies = [ + "alloy-eip2124", "alloy-eip2930", "alloy-eip7702 0.5.0", "alloy-primitives", "alloy-rlp", - "alloy-serde 0.9.2", + "alloy-serde 0.11.1", + "auto_impl", "c-kzg", "derive_more", + "ethereum_ssz", + "ethereum_ssz_derive", "once_cell", "serde", "sha2", @@ -195,18 +242,31 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c20219d1ad261da7a6331c16367214ee7ded41d001fabbbd656fbf71898b2773" dependencies = [ - "alloy-consensus", + "alloy-consensus 0.7.3", "alloy-eips 0.7.3", "alloy-primitives", "alloy-serde 0.7.3", "serde", ] +[[package]] +name = "alloy-network-primitives" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a00ce618ae2f78369918be0c20f620336381502c83b6ed62c2f7b2db27698b0" +dependencies = [ + "alloy-consensus 0.11.1", + "alloy-eips 0.11.1", + "alloy-primitives", + "alloy-serde 0.11.1", + "serde", +] + [[package]] name = "alloy-primitives" -version = "0.8.15" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6259a506ab13e1d658796c31e6e39d2e2ee89243bcc505ddc613b35732e0a430" +checksum = "478bedf4d24e71ea48428d1bc278553bd7c6ae07c30ca063beb0b09fe58a9e74" dependencies = [ "alloy-rlp", "arbitrary", @@ -218,7 +278,6 @@ dependencies = [ "foldhash", "getrandom", "hashbrown 0.15.0", - "hex-literal", "indexmap 2.6.0", "itoa", "k256", @@ -228,7 +287,7 @@ dependencies = [ "proptest-derive", "rand", "ruint", - "rustc-hash 2.0.0", + "rustc-hash 2.1.1", "serde", "sha3", "tiny-keccak", @@ -263,8 +322,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5ab686b0fa475d2a4f5916c5f07797734a691ec58e44f0f55d4746ea39cbcefb" dependencies = [ "alloy-primitives", - "alloy-rpc-types-engine", - "alloy-rpc-types-eth", + "alloy-rpc-types-engine 0.7.3", + "alloy-rpc-types-eth 0.7.3", "alloy-serde 0.7.3", "serde", ] @@ -285,7 +344,7 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5d297268357e3eae834ddd6888b15f764cbc0f4b3be9265f5f6ec239013f3d68" dependencies = [ - "alloy-consensus", + "alloy-consensus 0.7.3", "alloy-eips 0.7.3", "alloy-primitives", "alloy-rlp", @@ -299,16 +358,36 @@ dependencies = [ "strum", ] +[[package]] +name = "alloy-rpc-types-engine" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e83dde9fcf1ccb9b815cc0c89bba26bbbbaae5150a53ae624ed0fc63cb3676c1" +dependencies = [ + "alloy-consensus 0.11.1", + "alloy-eips 0.11.1", + "alloy-primitives", + "alloy-rlp", + "alloy-serde 0.11.1", + "derive_more", + "ethereum_ssz", + "ethereum_ssz_derive", + "jsonwebtoken", + "rand", + "serde", + "strum", +] + [[package]] name = "alloy-rpc-types-eth" version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a0600b8b5e2dc0cab12cbf91b5a885c35871789fb7b3a57b434bd4fced5b7a8b" dependencies = [ - "alloy-consensus", - "alloy-consensus-any", + "alloy-consensus 0.7.3", + "alloy-consensus-any 0.7.3", "alloy-eips 0.7.3", - "alloy-network-primitives", + "alloy-network-primitives 0.7.3", "alloy-primitives", "alloy-rlp", "alloy-serde 0.7.3", @@ -319,6 +398,26 @@ dependencies = [ "serde_json", ] +[[package]] +name = "alloy-rpc-types-eth" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b4dbee4d82f8a22dde18c28257bed759afeae7ba73da4a1479a039fd1445d04" +dependencies = [ + "alloy-consensus 0.11.1", + "alloy-consensus-any 0.11.1", + "alloy-eips 0.11.1", + "alloy-network-primitives 0.11.1", + "alloy-primitives", + "alloy-rlp", + "alloy-serde 0.11.1", + "alloy-sol-types", + "itertools 0.13.0", + "serde", + "serde_json", + "thiserror 2.0.4", +] + [[package]] name = "alloy-serde" version = "0.7.3" @@ -333,9 +432,9 @@ dependencies = [ [[package]] name = "alloy-serde" -version = "0.9.2" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae0465c71d4dced7525f408d84873aeebb71faf807d22d74c4a426430ccd9b55" +checksum = "8732058f5ca28c1d53d241e8504620b997ef670315d7c8afab856b3e3b80d945" dependencies = [ "alloy-primitives", "serde", @@ -344,9 +443,9 @@ dependencies = [ [[package]] name = "alloy-sol-macro" -version = "0.8.14" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bfd7853b65a2b4f49629ec975fee274faf6dff15ab8894c620943398ef283c0" +checksum = "a2708e27f58d747423ae21d31b7a6625159bd8d867470ddd0256f396a68efa11" dependencies = [ "alloy-sol-macro-expander", "alloy-sol-macro-input", @@ -358,9 +457,9 @@ dependencies = [ [[package]] name = "alloy-sol-macro-expander" -version = "0.8.14" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82ec42f342d9a9261699f8078e57a7a4fda8aaa73c1a212ed3987080e6a9cd13" +checksum = "c6b7984d7e085dec382d2c5ef022b533fcdb1fe6129200af30ebf5afddb6a361" dependencies = [ "alloy-sol-macro-input", "const-hex", @@ -376,9 +475,9 @@ dependencies = [ [[package]] name = "alloy-sol-macro-input" -version = "0.8.14" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed2c50e6a62ee2b4f7ab3c6d0366e5770a21cad426e109c2f40335a1b3aff3df" +checksum = "33d6a9fc4ed1a3c70bdb2357bec3924551c1a59f24e5a04a74472c755b37f87d" dependencies = [ "const-hex", "dunce", @@ -391,9 +490,9 @@ dependencies = [ [[package]] name = "alloy-sol-types" -version = "0.8.14" +version = "0.8.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9dc0fffe397aa17628160e16b89f704098bf3c9d74d5d369ebc239575936de5" +checksum = "1174cafd6c6d810711b4e00383037bdb458efc4fe3dbafafa16567e0320c54d8" dependencies = [ "alloy-primitives", "alloy-sol-macro", @@ -1711,9 +1810,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "foldhash" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f81ec6369c545a7d40e4589b5597581fa1c441fe1cce96dd1de43159910a36a2" +checksum = "a0d2fde1f7b3d48b8395d5f2de76c18a528bd6a9cdde438df747bfcba3e05d6f" [[package]] name = "foreign-types" @@ -2023,12 +2122,6 @@ dependencies = [ "serde", ] -[[package]] -name = "hex-literal" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" - [[package]] name = "hmac" version = "0.12.1" @@ -2489,7 +2582,7 @@ dependencies = [ "parking_lot", "pin-project", "rand", - "rustc-hash 2.0.0", + "rustc-hash 2.1.1", "serde", "serde_json", "thiserror 1.0.65", @@ -3202,7 +3295,7 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78f0daa0d0936d436a21b57571b1e27c5663aa2ab62f6edae5ba5be999f9f93e" dependencies = [ - "alloy-consensus", + "alloy-consensus 0.7.3", "alloy-eips 0.7.3", "alloy-primitives", "alloy-rlp", @@ -3213,13 +3306,29 @@ dependencies = [ "thiserror 2.0.4", ] +[[package]] +name = "op-alloy-consensus" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "621e69964165285ce750bf7ba961707e26c31df9f0b25652d6219dcee1f7f5b5" +dependencies = [ + "alloy-consensus 0.11.1", + "alloy-eips 0.11.1", + "alloy-primitives", + "alloy-rlp", + "alloy-serde 0.11.1", + "derive_more", + "serde", + "thiserror 2.0.4", +] + [[package]] name = "op-alloy-genesis" version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3eb0964932faa7050b74689f017aca66ffa3e52501080278a81bb0a43836c8dd" dependencies = [ - "alloy-consensus", + "alloy-consensus 0.7.3", "alloy-eips 0.7.3", "alloy-primitives", "alloy-sol-types", @@ -3235,7 +3344,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6d8c057c1a5bdf72d1f86c470a4d90f2d2ad1b273caa547c04cd6affe45b466d" dependencies = [ "alloc-no-stdlib", - "alloy-consensus", + "alloy-consensus 0.7.3", "alloy-eips 0.7.3", "alloy-primitives", "alloy-rlp", @@ -3244,7 +3353,7 @@ dependencies = [ "brotli", "cfg-if 1.0.0", "miniz_oxide", - "op-alloy-consensus", + "op-alloy-consensus 0.7.3", "op-alloy-genesis", "serde", "thiserror 2.0.4", @@ -3254,9 +3363,9 @@ dependencies = [ [[package]] name = "op-alloy-rpc-jsonrpsee" -version = "0.9.6" +version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6446c38f9e3e86acac6f2972a4953ffdd8bfef032bec633b0280a95783c0babd" +checksum = "409274d1940cdd6806c431157eb2b68b93ec2d019785f625b665d1c72c51d04e" dependencies = [ "alloy-primitives", "jsonrpsee", @@ -3268,14 +3377,32 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73741855ffaa2041b33cb616d7db7180c1149b648c68c23bee9e15501073fb32" dependencies = [ - "alloy-consensus", + "alloy-consensus 0.7.3", "alloy-eips 0.7.3", - "alloy-network-primitives", + "alloy-network-primitives 0.7.3", "alloy-primitives", - "alloy-rpc-types-eth", + "alloy-rpc-types-eth 0.7.3", "alloy-serde 0.7.3", "derive_more", - "op-alloy-consensus", + "op-alloy-consensus 0.7.3", + "serde", + "serde_json", +] + +[[package]] +name = "op-alloy-rpc-types" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a206be9e4aab37bfa352352d63d8dfa9d48d9df1f30478e4a9477865fd88ad6" +dependencies = [ + "alloy-consensus 0.11.1", + "alloy-eips 0.11.1", + "alloy-network-primitives 0.11.1", + "alloy-primitives", + "alloy-rpc-types-eth 0.11.1", + "alloy-serde 0.11.1", + "derive_more", + "op-alloy-consensus 0.10.5", "serde", "serde_json", ] @@ -3288,11 +3415,11 @@ checksum = "ebedc32e24013c8b3faea62d091bccbb90f871286fe2238c6f7e2ff29974df8e" dependencies = [ "alloy-eips 0.7.3", "alloy-primitives", - "alloy-rpc-types-engine", + "alloy-rpc-types-engine 0.7.3", "alloy-serde 0.7.3", "derive_more", "ethereum_ssz", - "op-alloy-consensus", + "op-alloy-consensus 0.7.3", "op-alloy-genesis", "op-alloy-protocol", "serde", @@ -3300,6 +3427,25 @@ dependencies = [ "thiserror 2.0.4", ] +[[package]] +name = "op-alloy-rpc-types-engine" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "158a8f5cec81cd301a2bdf97474b9918dda6318447619fbdfcf3f5bbc394d6be" +dependencies = [ + "alloy-consensus 0.11.1", + "alloy-eips 0.11.1", + "alloy-primitives", + "alloy-rpc-types-engine 0.11.1", + "alloy-serde 0.11.1", + "derive_more", + "ethereum_ssz", + "op-alloy-consensus 0.10.5", + "serde", + "snap", + "thiserror 2.0.4", +] + [[package]] name = "openssl" version = "0.10.68" @@ -4009,7 +4155,7 @@ name = "reth-basic-payload-builder" version = "1.1.2" source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" dependencies = [ - "alloy-consensus", + "alloy-consensus 0.7.3", "alloy-eips 0.7.3", "alloy-primitives", "alloy-rlp", @@ -4052,7 +4198,7 @@ name = "reth-chain-state" version = "1.1.2" source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" dependencies = [ - "alloy-consensus", + "alloy-consensus 0.7.3", "alloy-eips 0.7.3", "alloy-primitives", "derive_more", @@ -4079,7 +4225,7 @@ version = "1.1.2" source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" dependencies = [ "alloy-chains", - "alloy-consensus", + "alloy-consensus 0.7.3", "alloy-eips 0.7.3", "alloy-genesis", "alloy-primitives", @@ -4098,14 +4244,14 @@ name = "reth-codecs" version = "1.1.2" source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" dependencies = [ - "alloy-consensus", + "alloy-consensus 0.7.3", "alloy-eips 0.7.3", "alloy-genesis", "alloy-primitives", "alloy-trie", "bytes", "modular-bitfield", - "op-alloy-consensus", + "op-alloy-consensus 0.7.3", "reth-codecs-derive", "serde", ] @@ -4126,7 +4272,7 @@ name = "reth-consensus" version = "1.1.2" source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" dependencies = [ - "alloy-consensus", + "alloy-consensus 0.7.3", "alloy-eips 0.7.3", "alloy-primitives", "auto_impl", @@ -4140,7 +4286,7 @@ name = "reth-consensus-common" version = "1.1.2" source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" dependencies = [ - "alloy-consensus", + "alloy-consensus 0.7.3", "alloy-eips 0.7.3", "alloy-primitives", "reth-chainspec", @@ -4155,7 +4301,7 @@ name = "reth-db" version = "1.1.2" source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" dependencies = [ - "alloy-consensus", + "alloy-consensus 0.7.3", "alloy-primitives", "bytes", "derive_more", @@ -4174,7 +4320,7 @@ dependencies = [ "reth-storage-errors", "reth-tracing", "reth-trie-common", - "rustc-hash 2.0.0", + "rustc-hash 2.1.1", "serde", "strum", "sysinfo", @@ -4186,7 +4332,7 @@ name = "reth-db-api" version = "1.1.2" source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" dependencies = [ - "alloy-consensus", + "alloy-consensus 0.7.3", "alloy-genesis", "alloy-primitives", "bytes", @@ -4225,9 +4371,9 @@ name = "reth-engine-primitives" version = "1.1.2" source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" dependencies = [ - "alloy-consensus", + "alloy-consensus 0.7.3", "alloy-primitives", - "alloy-rpc-types-engine", + "alloy-rpc-types-engine 0.7.3", "futures", "reth-errors", "reth-execution-types", @@ -4260,7 +4406,7 @@ version = "1.1.2" source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" dependencies = [ "alloy-chains", - "alloy-consensus", + "alloy-consensus 0.7.3", "alloy-eips 0.7.3", "alloy-primitives", "alloy-rlp", @@ -4283,7 +4429,7 @@ dependencies = [ "alloy-eips 0.7.3", "alloy-primitives", "alloy-rlp", - "alloy-rpc-types-engine", + "alloy-rpc-types-engine 0.7.3", "reth-chain-state", "reth-chainspec", "reth-engine-primitives", @@ -4307,7 +4453,7 @@ dependencies = [ "crc", "dyn-clone", "once_cell", - "rustc-hash 2.0.0", + "rustc-hash 2.1.1", "serde", "thiserror 2.0.4", ] @@ -4317,7 +4463,7 @@ name = "reth-evm" version = "1.1.2" source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" dependencies = [ - "alloy-consensus", + "alloy-consensus 0.7.3", "alloy-eips 0.7.3", "alloy-primitives", "auto_impl", @@ -4359,7 +4505,7 @@ name = "reth-execution-types" version = "1.1.2" source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" dependencies = [ - "alloy-consensus", + "alloy-consensus 0.7.3", "alloy-eips 0.7.3", "alloy-primitives", "reth-execution-errors", @@ -4430,7 +4576,7 @@ name = "reth-network-p2p" version = "1.1.2" source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" dependencies = [ - "alloy-consensus", + "alloy-consensus 0.7.3", "alloy-eips 0.7.3", "alloy-primitives", "auto_impl", @@ -4508,13 +4654,13 @@ version = "1.1.2" source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" dependencies = [ "alloy-chains", - "alloy-consensus", + "alloy-consensus 0.7.3", "alloy-eips 0.7.3", "alloy-genesis", "alloy-primitives", "derive_more", "once_cell", - "op-alloy-rpc-types", + "op-alloy-rpc-types 0.7.3", "reth-chainspec", "reth-ethereum-forks", "reth-network-peers", @@ -4528,7 +4674,7 @@ name = "reth-optimism-consensus" version = "1.1.2" source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" dependencies = [ - "alloy-consensus", + "alloy-consensus 0.7.3", "alloy-primitives", "alloy-trie", "reth-chainspec", @@ -4547,11 +4693,11 @@ name = "reth-optimism-evm" version = "1.1.2" source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" dependencies = [ - "alloy-consensus", + "alloy-consensus 0.7.3", "alloy-eips 0.7.3", "alloy-primitives", "derive_more", - "op-alloy-consensus", + "op-alloy-consensus 0.7.3", "reth-chainspec", "reth-consensus", "reth-consensus-common", @@ -4588,14 +4734,14 @@ name = "reth-optimism-payload-builder" version = "1.1.2" source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" dependencies = [ - "alloy-consensus", + "alloy-consensus 0.7.3", "alloy-eips 0.7.3", "alloy-primitives", "alloy-rlp", "alloy-rpc-types-debug", - "alloy-rpc-types-engine", - "op-alloy-consensus", - "op-alloy-rpc-types-engine", + "alloy-rpc-types-engine 0.7.3", + "op-alloy-consensus 0.7.3", + "op-alloy-rpc-types-engine 0.7.3", "reth-basic-payload-builder", "reth-chain-state", "reth-chainspec", @@ -4625,13 +4771,13 @@ name = "reth-optimism-primitives" version = "1.1.2" source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" dependencies = [ - "alloy-consensus", + "alloy-consensus 0.7.3", "alloy-eips 0.7.3", "alloy-primitives", "alloy-rlp", "bytes", "derive_more", - "op-alloy-consensus", + "op-alloy-consensus 0.7.3", "rand", "reth-codecs", "reth-primitives", @@ -4665,7 +4811,7 @@ name = "reth-payload-builder-primitives" version = "1.1.2" source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" dependencies = [ - "alloy-rpc-types-engine", + "alloy-rpc-types-engine 0.7.3", "async-trait", "pin-project", "reth-payload-primitives", @@ -4681,8 +4827,8 @@ source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae5 dependencies = [ "alloy-eips 0.7.3", "alloy-primitives", - "alloy-rpc-types-engine", - "op-alloy-rpc-types-engine", + "alloy-rpc-types-engine 0.7.3", + "op-alloy-rpc-types-engine 0.7.3", "reth-chain-state", "reth-chainspec", "reth-errors", @@ -4698,7 +4844,7 @@ name = "reth-payload-util" version = "1.1.2" source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" dependencies = [ - "alloy-consensus", + "alloy-consensus 0.7.3", "alloy-primitives", "reth-primitives", ] @@ -4719,7 +4865,7 @@ name = "reth-primitives" version = "1.1.2" source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" dependencies = [ - "alloy-consensus", + "alloy-consensus 0.7.3", "alloy-eips 0.7.3", "alloy-primitives", "alloy-rlp", @@ -4731,7 +4877,7 @@ dependencies = [ "k256", "modular-bitfield", "once_cell", - "op-alloy-consensus", + "op-alloy-consensus 0.7.3", "rayon", "reth-codecs", "reth-ethereum-forks", @@ -4749,7 +4895,7 @@ name = "reth-primitives-traits" version = "1.1.2" source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" dependencies = [ - "alloy-consensus", + "alloy-consensus 0.7.3", "alloy-eips 0.7.3", "alloy-genesis", "alloy-primitives", @@ -4759,7 +4905,7 @@ dependencies = [ "bytes", "derive_more", "modular-bitfield", - "op-alloy-consensus", + "op-alloy-consensus 0.7.3", "reth-codecs", "revm-primitives", "serde", @@ -4771,10 +4917,10 @@ name = "reth-provider" version = "1.1.2" source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" dependencies = [ - "alloy-consensus", + "alloy-consensus 0.7.3", "alloy-eips 0.7.3", "alloy-primitives", - "alloy-rpc-types-engine", + "alloy-rpc-types-engine 0.7.3", "auto_impl", "dashmap", "itertools 0.13.0", @@ -4847,7 +4993,7 @@ name = "reth-rpc-layer" version = "1.1.2" source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" dependencies = [ - "alloy-rpc-types-engine", + "alloy-rpc-types-engine 0.7.3", "http 1.1.0", "jsonrpsee-http-client", "pin-project", @@ -4861,12 +5007,12 @@ name = "reth-rpc-types-compat" version = "1.1.2" source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" dependencies = [ - "alloy-consensus", + "alloy-consensus 0.7.3", "alloy-eips 0.7.3", "alloy-primitives", "alloy-rlp", - "alloy-rpc-types-engine", - "alloy-rpc-types-eth", + "alloy-rpc-types-engine 0.7.3", + "alloy-rpc-types-eth 0.7.3", "jsonrpsee-types", "reth-primitives", "serde", @@ -4901,10 +5047,10 @@ name = "reth-storage-api" version = "1.1.2" source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" dependencies = [ - "alloy-consensus", + "alloy-consensus 0.7.3", "alloy-eips 0.7.3", "alloy-primitives", - "alloy-rpc-types-engine", + "alloy-rpc-types-engine 0.7.3", "auto_impl", "reth-chainspec", "reth-db", @@ -4971,7 +5117,7 @@ name = "reth-transaction-pool" version = "1.1.2" source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" dependencies = [ - "alloy-consensus", + "alloy-consensus 0.7.3", "alloy-eips 0.7.3", "alloy-primitives", "alloy-rlp", @@ -4994,7 +5140,7 @@ dependencies = [ "reth-storage-api", "reth-tasks", "revm", - "rustc-hash 2.0.0", + "rustc-hash 2.1.1", "schnellru", "serde", "smallvec", @@ -5009,7 +5155,7 @@ name = "reth-trie" version = "1.1.2" source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" dependencies = [ - "alloy-consensus", + "alloy-consensus 0.7.3", "alloy-primitives", "alloy-rlp", "alloy-trie", @@ -5033,11 +5179,11 @@ name = "reth-trie-common" version = "1.1.2" source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" dependencies = [ - "alloy-consensus", + "alloy-consensus 0.7.3", "alloy-genesis", "alloy-primitives", "alloy-rlp", - "alloy-rpc-types-eth", + "alloy-rpc-types-eth 0.7.3", "alloy-trie", "bytes", "derive_more", @@ -5224,10 +5370,10 @@ dependencies = [ name = "rollup-boost" version = "0.1.0" dependencies = [ - "alloy-eips 0.9.2", + "alloy-eips 0.11.1", "alloy-primitives", - "alloy-rpc-types-engine", - "alloy-rpc-types-eth", + "alloy-rpc-types-engine 0.11.1", + "alloy-rpc-types-eth 0.11.1", "anyhow", "assert_cmd", "clap", @@ -5250,8 +5396,8 @@ dependencies = [ "metrics-util", "nix", "op-alloy-rpc-jsonrpsee", - "op-alloy-rpc-types", - "op-alloy-rpc-types-engine", + "op-alloy-rpc-types 0.10.5", + "op-alloy-rpc-types-engine 0.10.5", "opentelemetry", "opentelemetry-http", "opentelemetry-otlp", @@ -5325,9 +5471,9 @@ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" [[package]] name = "rustc-hash" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" dependencies = [ "rand", ] @@ -5935,9 +6081,9 @@ dependencies = [ [[package]] name = "syn-solidity" -version = "0.8.14" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0523f59468a2696391f2a772edc089342aacd53c3caa2ac3264e598edf119b" +checksum = "9c2de690018098e367beeb793991c7d4dc7270f42c9d2ac4ccc876c1368ca430" dependencies = [ "paste", "proc-macro2", diff --git a/Cargo.toml b/Cargo.toml index 9f606ccc..48f4405e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,13 +4,13 @@ version = "0.1.0" edition = "2021" [dependencies] -op-alloy-rpc-types-engine = "0.7.3" -op-alloy-rpc-types = "0.7.3" -op-alloy-rpc-jsonrpsee = { version = "0.9.6", features = ["client"] } -alloy-rpc-types-engine = "0.7.3" -alloy-rpc-types-eth = "0.7.3" -alloy-primitives = "0.8.10" -alloy-eips = { version = "0.9.2", features = ["serde"] } +op-alloy-rpc-types-engine = "0.10.5" +op-alloy-rpc-types = "0.10.5" +op-alloy-rpc-jsonrpsee = { version = "0.10.5", features = ["client"] } +alloy-rpc-types-engine = "0.11.1" +alloy-rpc-types-eth = "0.11.1" +alloy-primitives = "0.8.21" +alloy-eips = { version = "0.11.1", features = ["serde"] } tokio = { version = "1", features = ["full"] } tracing = "0.1.4" tracing-subscriber = { version = "0.3.11", features = ["env-filter"] } From 70302b07d8a081543eb1418beca309f3c5c4c9b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Muhammed=20Kadir=20Y=C3=BCcel?= Date: Tue, 25 Feb 2025 23:24:22 +0300 Subject: [PATCH 02/10] feat: new_payload_v4 --- src/metrics.rs | 6 ++++ src/server.rs | 95 ++++++++++++++++++++++++++++++++++++++++++-------- 2 files changed, 87 insertions(+), 14 deletions(-) diff --git a/src/metrics.rs b/src/metrics.rs index 371ac9ac..249e8a17 100644 --- a/src/metrics.rs +++ b/src/metrics.rs @@ -10,12 +10,18 @@ pub struct ServerMetrics { #[metric(describe = "Count of new_payload_v3 calls proxied to the builder")] pub new_payload_count: Counter, + #[metric(describe = "Count of new_payload_v4 calls proxied to the builder")] + pub new_payload_v4_count: Counter, + #[metric(describe = "Count of get_payload_v3 calls proxied to the builder")] pub get_payload_count: Counter, #[metric(describe = "Latency for `engine_newPayloadV3`")] pub new_payload_v3: Histogram, + #[metric(describe = "Latency for `engine_newPayloadV4`")] + pub new_payload_v4: Histogram, + #[metric(describe = "Latency for `engine_getPayloadV3`")] pub get_payload_v3: Histogram, diff --git a/src/server.rs b/src/server.rs index 6d303946..782467be 100644 --- a/src/server.rs +++ b/src/server.rs @@ -1,7 +1,7 @@ use crate::client::ExecutionClient; use crate::debug_api; use crate::metrics::ServerMetrics; -use alloy_primitives::B256; +use alloy_primitives::{Bytes, B256}; use debug_api::DebugServer; use std::num::NonZero; use std::sync::Arc; @@ -37,6 +37,29 @@ pub struct PayloadTraceContext { local_to_external_payload_ids: Arc>>, } +enum PayloadVersion { + V3, + V4(Vec), +} + +impl PayloadVersion { + pub fn as_str(&self) -> &'static str { + match self { + PayloadVersion::V3 => "v3", + PayloadVersion::V4(_) => "v4", + } + } +} + +impl Clone for PayloadVersion { + fn clone(&self) -> Self { + match self { + PayloadVersion::V3 => PayloadVersion::V3, + PayloadVersion::V4(execution_requests) => PayloadVersion::V4(execution_requests.clone()) + } + } +} + impl PayloadTraceContext { fn new() -> Self { PayloadTraceContext { @@ -203,6 +226,15 @@ pub trait EngineApi { versioned_hashes: Vec, parent_beacon_block_root: B256, ) -> RpcResult; + + #[method(name = "newPayloadV4")] + async fn new_payload_v4( + &self, + payload: ExecutionPayloadV3, + versioned_hashes: Vec, + parent_beacon_block_root: B256, + execution_requests: Vec, + ) -> RpcResult; } #[async_trait] @@ -244,7 +276,7 @@ impl EngineApiServer for RollupBoostServer { ) -> RpcResult { let start = Instant::now(); let res = self - .new_payload_v3(payload, versioned_hashes, parent_beacon_block_root) + .new_payload(PayloadVersion::V3, payload, versioned_hashes, parent_beacon_block_root) .await; let elapsed = start.elapsed(); if let Some(metrics) = &self.metrics { @@ -252,6 +284,24 @@ impl EngineApiServer for RollupBoostServer { } res } + + async fn new_payload_v4( + &self, + payload: ExecutionPayloadV3, + versioned_hashes: Vec, + parent_beacon_block_root: B256, + execution_requests: Vec, + ) -> RpcResult { + let start = Instant::now(); + let res = self + .new_payload(PayloadVersion::V4(execution_requests), payload, versioned_hashes, parent_beacon_block_root) + .await; + let elapsed = start.elapsed(); + if let Some(metrics) = &self.metrics { + metrics.new_payload_v4.record(elapsed); + } + res + } } impl RollupBoostServer { @@ -543,20 +593,26 @@ impl RollupBoostServer { }) } - async fn new_payload_v3( + async fn new_payload( &self, + version: PayloadVersion, payload: ExecutionPayloadV3, versioned_hashes: Vec, parent_beacon_block_root: B256, ) -> RpcResult { + let label = version.as_str(); let execution_payload = ExecutionPayload::from(payload.clone()); let block_hash = execution_payload.block_hash(); let parent_hash = execution_payload.parent_hash(); - info!(message = "received new_payload_v3", "block_hash" = %block_hash); + info!(message = format!("received new_payload_{}", label), "block_hash" = %block_hash); // async call to builder to sync the builder node if self.boost_sync { if let Some(metrics) = &self.metrics { - metrics.new_payload_count.increment(1); + let metric = match version { + PayloadVersion::V3 => &metrics.new_payload_count, + PayloadVersion::V4(_) => &metrics.new_payload_v4_count, + }; + metric.increment(1); } let parent_spans = self .payload_trace_context @@ -579,18 +635,23 @@ impl RollupBoostServer { .await; let builder = self.builder_client.clone(); + let builder_version = version.clone(); let builder_payload = payload.clone(); let builder_versioned_hashes = versioned_hashes.clone(); tokio::spawn(async move { - let _ = builder.auth_client.new_payload_v3(builder_payload, builder_versioned_hashes, parent_beacon_block_root).await + let builder_future = match builder_version { + PayloadVersion::V3 => builder.auth_client.new_payload_v3(builder_payload, builder_versioned_hashes, parent_beacon_block_root), + PayloadVersion::V4(execution_requests) => builder.auth_client.new_payload_v4(builder_payload, builder_versioned_hashes, parent_beacon_block_root, execution_requests), + }; + let _ = builder_future.await .map(|response: PayloadStatus| { if response.is_invalid() { - error!(message = "builder rejected new_payload_v3", "url" = ?builder.auth_rpc, "block_hash" = %block_hash); + error!(message = format!("builder rejected new_payload_{}", label), "url" = ?builder.auth_rpc, "block_hash" = %block_hash); } else { - info!(message = "called new_payload_v3 to builder", "url" = ?builder.auth_rpc, "payload_status" = %response.status, "block_hash" = %block_hash); + info!(message = format!("called new_payload_{} to builder", label), "url" = ?builder.auth_rpc, "payload_status" = %response.status, "block_hash" = %block_hash); } }).map_err(|e| { - error!(message = "error calling new_payload_v3 to builder", "url" = ?builder.auth_rpc, "error" = %e, "block_hash" = %block_hash); + error!(message = format!("error calling new_payload_{} to builder", label), "url" = ?builder.auth_rpc, "error" = %e, "block_hash" = %block_hash); e }); if let Some(mut spans) = spans { @@ -598,15 +659,21 @@ impl RollupBoostServer { }; }); } - self.l2_client - .auth_client - .new_payload_v3(payload, versioned_hashes, parent_beacon_block_root) - .await + + let l2_future = match version { + PayloadVersion::V3 => self.l2_client + .auth_client + .new_payload_v3(payload, versioned_hashes, parent_beacon_block_root), + PayloadVersion::V4(execution_requests) => self.l2_client + .auth_client + .new_payload_v4(payload, versioned_hashes, parent_beacon_block_root, execution_requests), + }; + l2_future.await .map_err(|e| match e { ClientError::Call(err) => err, // Already an ErrorObjectOwned, so just return it other_error => { error!( - message = "error calling new_payload_v3", + message = format!("error calling new_payload_{}", label), "url" = ?self.l2_client.auth_rpc, "error" = %other_error, "block_hash" = %block_hash From 0e23a57e829c368e3c71bfc883c376d930839d0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Muhammed=20Kadir=20Y=C3=BCcel?= Date: Wed, 26 Feb 2025 11:53:35 +0300 Subject: [PATCH 03/10] feat: get_payload_v4 --- src/metrics.rs | 6 +++ src/server.rs | 125 ++++++++++++++++++++++++++++++++++++++++++------- 2 files changed, 113 insertions(+), 18 deletions(-) diff --git a/src/metrics.rs b/src/metrics.rs index 249e8a17..46d73147 100644 --- a/src/metrics.rs +++ b/src/metrics.rs @@ -16,6 +16,9 @@ pub struct ServerMetrics { #[metric(describe = "Count of get_payload_v3 calls proxied to the builder")] pub get_payload_count: Counter, + #[metric(describe = "Count of get_payload_v4 calls proxied to the builder")] + pub get_payload_v4_count: Counter, + #[metric(describe = "Latency for `engine_newPayloadV3`")] pub new_payload_v3: Histogram, @@ -25,6 +28,9 @@ pub struct ServerMetrics { #[metric(describe = "Latency for `engine_getPayloadV3`")] pub get_payload_v3: Histogram, + #[metric(describe = "Latency for `engine_getPayloadV4`")] + pub get_payload_v4: Histogram, + #[metric(describe = "Latency for `engine_forkChoiceUpdatedV3`")] pub fork_choice_updated_v3: Histogram, } diff --git a/src/server.rs b/src/server.rs index 782467be..317ddb15 100644 --- a/src/server.rs +++ b/src/server.rs @@ -16,7 +16,7 @@ use jsonrpsee::types::error::INVALID_REQUEST_CODE; use jsonrpsee::types::{ErrorCode, ErrorObject}; use jsonrpsee::RpcModule; use lru::LruCache; -use op_alloy_rpc_types_engine::OpExecutionPayloadEnvelopeV3; +use op_alloy_rpc_types_engine::{OpExecutionPayloadEnvelopeV3, OpExecutionPayloadEnvelopeV4}; use opentelemetry::global::{self, BoxedSpan, BoxedTracer}; use opentelemetry::trace::{Span, TraceContextExt, Tracer}; use opentelemetry::{Context, KeyValue}; @@ -60,6 +60,36 @@ impl Clone for PayloadVersion { } } +enum OpExecutionPayloadEnvelope { + V3(OpExecutionPayloadEnvelopeV3), + V4(OpExecutionPayloadEnvelopeV4), +} + +impl OpExecutionPayloadEnvelope { + fn execution_payload(&self) -> ExecutionPayloadV3 { + match self { + OpExecutionPayloadEnvelope::V3(envelope) => envelope.execution_payload.clone(), + OpExecutionPayloadEnvelope::V4(envelope) => envelope.execution_payload.clone(), + } + } + + fn parent_beacon_block_root(&self) -> B256 { + match self { + OpExecutionPayloadEnvelope::V3(envelope) => envelope.parent_beacon_block_root, + OpExecutionPayloadEnvelope::V4(envelope) => envelope.parent_beacon_block_root, + } + } +} + +impl Clone for OpExecutionPayloadEnvelope { + fn clone(&self) -> Self { + match self { + OpExecutionPayloadEnvelope::V3(envelope) => OpExecutionPayloadEnvelope::V3(envelope.clone()), + OpExecutionPayloadEnvelope::V4(envelope) => OpExecutionPayloadEnvelope::V4(envelope.clone()), + } + } +} + impl PayloadTraceContext { fn new() -> Self { PayloadTraceContext { @@ -219,6 +249,12 @@ pub trait EngineApi { payload_id: PayloadId, ) -> RpcResult; + #[method(name = "getPayloadV4")] + async fn get_payload_v4( + &self, + payload_id: PayloadId, + ) -> RpcResult; + #[method(name = "newPayloadV3")] async fn new_payload_v3( &self, @@ -260,12 +296,31 @@ impl EngineApiServer for RollupBoostServer { payload_id: PayloadId, ) -> RpcResult { let start = Instant::now(); - let res = self.get_payload_v3(payload_id).await; + let res = self.get_payload(PayloadVersion::V3, payload_id).await; let elapsed = start.elapsed(); if let Some(metrics) = &self.metrics { metrics.get_payload_v3.record(elapsed); } - res + res.and_then(|envelope| match envelope { + OpExecutionPayloadEnvelope::V3(payload) => Ok(payload), + _ => Err(ErrorCode::InternalError.into()), + }) + } + + async fn get_payload_v4( + &self, + payload_id: PayloadId, + ) -> RpcResult { + let start = Instant::now(); + let res = self.get_payload(PayloadVersion::V4(vec![]), payload_id).await; + let elapsed = start.elapsed(); + if let Some(metrics) = &self.metrics { + metrics.get_payload_v4.record(elapsed); + } + res.and_then(|envelope| match envelope { + OpExecutionPayloadEnvelope::V4(payload) => Ok(payload), + _ => Err(ErrorCode::InternalError.into()), + }) } async fn new_payload_v3( @@ -458,12 +513,21 @@ impl RollupBoostServer { Ok(l2_response) } - async fn get_payload_v3( + async fn get_payload( &self, + version: PayloadVersion, payload_id: PayloadId, - ) -> RpcResult { - info!(message = "received get_payload_v3", "payload_id" = %payload_id); - let l2_client_future = self.l2_client.auth_client.get_payload_v3(payload_id); + ) -> RpcResult { + let label = version.as_str(); + info!(message = format!("received get_payload_{}", label), "payload_id" = %payload_id); + + let l2_version = version.clone(); + let l2_client_future = async move { + match l2_version { + PayloadVersion::V3 => self.l2_client.auth_client.get_payload_v3(payload_id).await.map(OpExecutionPayloadEnvelope::V3), + PayloadVersion::V4(_) => self.l2_client.auth_client.get_payload_v4(payload_id).await.map(OpExecutionPayloadEnvelope::V4), + } + }; let builder_client_future = Box::pin(async move { let dry_run = self.dry_run.lock().await; @@ -479,7 +543,11 @@ impl RollupBoostServer { } if let Some(metrics) = &self.metrics { - metrics.get_payload_count.increment(1); + let metric = match version { + PayloadVersion::V3 => &metrics.get_payload_count, + PayloadVersion::V4(_) => &metrics.get_payload_v4_count, + }; + metric.increment(1); } let parent_span = self .payload_trace_context @@ -518,22 +586,42 @@ impl RollupBoostServer { } let builder = self.builder_client.clone(); - let payload = builder.auth_client.get_payload_v3(external_payload_id).await.map_err(|e| { - error!(message = "error calling get_payload_v3 from builder", "url" = ?builder.auth_rpc, "error" = %e, "local_payload_id" = %payload_id, "external_payload_id" = %external_payload_id); - e - })?; + let payload = match version { + PayloadVersion::V3 => { + let payload = builder.auth_client.get_payload_v3(external_payload_id).await.map_err(|e| { + error!(message = "error calling get_payload_v3 from builder", "url" = ?builder.auth_rpc, "error" = %e, "local_payload_id" = %payload_id, "external_payload_id" = %external_payload_id); + e + })?; + OpExecutionPayloadEnvelope::V3(payload) + }, + PayloadVersion::V4(_) => { + let payload = builder.auth_client.get_payload_v4(external_payload_id).await.map_err(|e| { + error!(message = "error calling get_payload_v4 from builder", "url" = ?builder.auth_rpc, "error" = %e, "local_payload_id" = %payload_id, "external_payload_id" = %external_payload_id); + e + })?; + OpExecutionPayloadEnvelope::V4(payload) + }, + }; - let block_hash = ExecutionPayload::from(payload.clone().execution_payload).block_hash(); + let block_hash = ExecutionPayload::from(payload.clone().execution_payload()).block_hash(); info!(message = "received payload from builder", "local_payload_id" = %payload_id, "external_payload_id" = %external_payload_id, "block_hash" = %block_hash); // Send the payload to the local execution engine with engine_newPayload to validate the block from the builder. // Otherwise, we do not want to risk the network to a halt since op-node will not be able to propose the block. // If validation fails, return the local block since that one has already been validated. if let Some(metrics) = &self.metrics { - metrics.new_payload_count.increment(1); + let metric = match version { + PayloadVersion::V3 => &metrics.new_payload_count, + PayloadVersion::V4(_) => &metrics.new_payload_v4_count, + }; + metric.increment(1); } - let payload_status = self.l2_client.auth_client.new_payload_v3(payload.execution_payload.clone(), vec![], payload.parent_beacon_block_root).await.map_err(|e| { - error!(message = "error calling new_payload_v3 to validate builder payload", "url" = ?self.l2_client.auth_rpc, "error" = %e, "local_payload_id" = %payload_id, "external_payload_id" = %external_payload_id); + let l2_call = match version { + PayloadVersion::V3 => self.l2_client.auth_client.new_payload_v3(payload.execution_payload(), vec![], payload.parent_beacon_block_root()), + PayloadVersion::V4(execution_requests) => self.l2_client.auth_client.new_payload_v4(payload.execution_payload(), vec![], payload.parent_beacon_block_root(), execution_requests) + }; + let payload_status = l2_call.await.map_err(|e| { + error!(message = format!("error calling new_payload_{} to validate builder payload", label), "url" = ?self.l2_client.auth_rpc, "error" = %e, "local_payload_id" = %payload_id, "external_payload_id" = %external_payload_id); e })?; if let Some(mut s) = span { @@ -566,7 +654,7 @@ impl RollupBoostServer { ClientError::Call(err) => Err(err), // Already an ErrorObjectOwned, so just return it other_error => { error!( - message = "error calling get_payload_v3", + message = format!("error calling get_payload_{}", label), "error" = %other_error, "payload_id" = %payload_id ); @@ -575,7 +663,7 @@ impl RollupBoostServer { }, }; payload.map(|(payload, context)| { - let inner_payload = ExecutionPayload::from(payload.clone().execution_payload); + let inner_payload = ExecutionPayload::from(payload.clone().execution_payload()); let block_hash = inner_payload.block_hash(); let block_number = inner_payload.block_number(); @@ -589,6 +677,7 @@ impl RollupBoostServer { "context" = %context, "payload_id" = %payload_id ); + payload }) } From f3543e8c814a1eba3b9355d7602e7447819f0c5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Muhammed=20Kadir=20Y=C3=BCcel?= Date: Wed, 26 Feb 2025 12:23:40 +0300 Subject: [PATCH 04/10] test: v4 tests --- src/server.rs | 136 +++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 130 insertions(+), 6 deletions(-) diff --git a/src/server.rs b/src/server.rs index 317ddb15..979b5675 100644 --- a/src/server.rs +++ b/src/server.rs @@ -805,10 +805,14 @@ mod tests { pub struct MockEngineServer { fcu_requests: Arc)>>>, get_payload_requests: Arc>>, + get_payload_v4_requests: Arc>>, new_payload_requests: Arc, B256)>>>, + new_payload_v4_requests: Arc, B256, Vec)>>>, fcu_response: RpcResult, get_payload_response: RpcResult, + get_payload_v4_response: RpcResult, new_payload_response: RpcResult, + new_payload_v4_response: RpcResult, pub override_payload_id: Option, } @@ -818,7 +822,9 @@ mod tests { Self { fcu_requests: Arc::new(Mutex::new(vec![])), get_payload_requests: Arc::new(Mutex::new(vec![])), + get_payload_v4_requests: Arc::new(Mutex::new(vec![])), new_payload_requests: Arc::new(Mutex::new(vec![])), + new_payload_v4_requests: Arc::new(Mutex::new(vec![])), fcu_response: Ok(ForkchoiceUpdated::new(PayloadStatus::from_status(PayloadStatusEnum::Valid))), get_payload_response: Ok(OpExecutionPayloadEnvelopeV3{ execution_payload: ExecutionPayloadV3 { @@ -850,12 +856,47 @@ mod tests { proofs: vec![], blobs: vec![], }, - should_override_builder: false, - parent_beacon_block_root: B256::ZERO, - }), - override_payload_id: None, - new_payload_response: Ok(PayloadStatus::from_status(PayloadStatusEnum::Valid)), - } + should_override_builder: false, + parent_beacon_block_root: B256::ZERO, + }), + get_payload_v4_response: Ok(OpExecutionPayloadEnvelopeV4{ + execution_payload: ExecutionPayloadV3 { + payload_inner: ExecutionPayloadV2 { + payload_inner: ExecutionPayloadV1 { + base_fee_per_gas: U256::from(7u64), + block_number: 0xa946u64, + block_hash: hex!("a5ddd3f286f429458a39cafc13ffe89295a7efa8eb363cf89a1a4887dbcf272b").into(), + logs_bloom: hex!("00200004000000000000000080000000000200000000000000000000000000000000200000000000000000000000000000000000800000000200000000000000000000000000000000000008000000200000000000000000000001000000000000000000000000000000800000000000000000000100000000000030000000000000000040000000000000000000000000000000000800080080404000000000000008000000000008200000000000200000000000000000000000000000000000000002000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000100000000000000000000").into(), + extra_data: hex!("d883010d03846765746888676f312e32312e31856c696e7578").into(), + gas_limit: 0x1c9c380, + gas_used: 0x1f4a9, + timestamp: 0x651f35b8, + fee_recipient: hex!("f97e180c050e5ab072211ad2c213eb5aee4df134").into(), + parent_hash: hex!("d829192799c73ef28a7332313b3c03af1f2d5da2c36f8ecfafe7a83a3bfb8d1e").into(), + prev_randao: hex!("753888cc4adfbeb9e24e01c84233f9d204f4a9e1273f0e29b43c4c148b2b8b7e").into(), + receipts_root: hex!("4cbc48e87389399a0ea0b382b1c46962c4b8e398014bf0cc610f9c672bee3155").into(), + state_root: hex!("017d7fa2b5adb480f5e05b2c95cb4186e12062eed893fc8822798eed134329d1").into(), + transactions: vec![], + }, + withdrawals: vec![], + }, + blob_gas_used: 0xc0000, + excess_blob_gas: 0x580000, + }, + block_value: U256::from(0), + blobs_bundle: BlobsBundleV1{ + commitments: vec![], + proofs: vec![], + blobs: vec![], + }, + should_override_builder: false, + parent_beacon_block_root: B256::ZERO, + execution_requests: vec![], + }), + override_payload_id: None, + new_payload_response: Ok(PayloadStatus::from_status(PayloadStatusEnum::Valid)), + new_payload_v4_response: Ok(PayloadStatus::from_status(PayloadStatusEnum::Valid)), + } } } @@ -987,6 +1028,49 @@ mod tests { assert_eq!(req.2, B256::ZERO); drop(new_payload_requests_mu); + // test new_payload_v4 success + let new_payload_response = test_harness + .client + .new_payload_v4( + test_harness + .l2_mock + .get_payload_v4_response + .clone() + .unwrap() + .execution_payload + .clone(), + vec![], + B256::ZERO, + vec![], + ) + .await; + if let Err(ref err) = new_payload_response { + println!("Test encountered error: {:?}", err); + } + assert!(new_payload_response.is_ok()); + let new_payload_requests = test_harness.l2_mock.new_payload_v4_requests.clone(); + let new_payload_requests_mu = new_payload_requests.lock().unwrap(); + let new_payload_requests_builder = test_harness.builder_mock.new_payload_v4_requests.clone(); + let new_payload_requests_builder_mu = new_payload_requests_builder.lock().unwrap(); + assert_eq!(new_payload_requests_mu.len(), 1); + assert_eq!(new_payload_requests_builder_mu.len(), 0); + let req: &(ExecutionPayloadV3, Vec>, B256, Vec) = + new_payload_requests_mu.first().unwrap(); + assert_eq!( + req.0, + test_harness + .l2_mock + .get_payload_v4_response + .clone() + .unwrap() + .execution_payload + .clone() + ); + assert_eq!(req.1, Vec::>::new()); + assert_eq!(req.2, B256::ZERO); + assert_eq!(req.3, Vec::::new()); + drop(new_payload_requests_mu); + // test get_payload_v3 success let get_payload_response = test_harness .client @@ -1004,6 +1088,24 @@ mod tests { assert_eq!(new_payload_requests_mu.len(), 2); let req: &PayloadId = get_payload_requests_mu.first().unwrap(); assert_eq!(*req, PayloadId::new([0, 0, 0, 0, 0, 0, 0, 1])); + + // test get_payload_v4 success + let get_payload_response = test_harness + .client + .get_payload_v4(PayloadId::new([0, 0, 0, 0, 0, 0, 1, 0])) + .await; + assert!(get_payload_response.is_ok()); + let get_payload_requests = test_harness.l2_mock.get_payload_v4_requests.clone(); + let get_payload_requests_mu = get_payload_requests.lock().unwrap(); + let get_payload_requests_builder = test_harness.builder_mock.get_payload_v4_requests.clone(); + let get_payload_requests_builder_mu = get_payload_requests_builder.lock().unwrap(); + let new_payload_requests = test_harness.l2_mock.new_payload_v4_requests.clone(); + let new_payload_requests_mu = new_payload_requests.lock().unwrap(); + assert_eq!(get_payload_requests_builder_mu.len(), 1); + assert_eq!(get_payload_requests_mu.len(), 1); + assert_eq!(new_payload_requests_mu.len(), 2); + let req: &PayloadId = get_payload_requests_mu.first().unwrap(); + assert_eq!(*req, PayloadId::new([0, 0, 0, 0, 0, 0, 1, 0])); test_harness.cleanup().await; } @@ -1111,6 +1213,17 @@ mod tests { }) .unwrap(); + module + .register_method("engine_getPayloadV4", move |params, _, _| { + let params: (PayloadId,) = params.parse()?; + let mut get_payload_requests = + mock_engine_server.get_payload_v4_requests.lock().unwrap(); + get_payload_requests.push(params.0); + + mock_engine_server.get_payload_v4_response.clone() + }) + .unwrap(); + module .register_method("engine_newPayloadV3", move |params, _, _| { let params: (ExecutionPayloadV3, Vec, B256) = params.parse()?; @@ -1122,6 +1235,17 @@ mod tests { }) .unwrap(); + module + .register_method("engine_newPayloadV4", move |params, _, _| { + let params: (ExecutionPayloadV3, Vec, B256, Vec) = params.parse()?; + let mut new_payload_requests = + mock_engine_server.new_payload_v4_requests.lock().unwrap(); + new_payload_requests.push(params); + + mock_engine_server.new_payload_v4_response.clone() + }) + .unwrap(); + server.start(module) } From c4715f708df4d4a8b98e3144367ff125c2c5438c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Muhammed=20Kadir=20Y=C3=BCcel?= Date: Wed, 26 Feb 2025 12:28:52 +0300 Subject: [PATCH 05/10] refactor: drop deprecated usage --- src/proxy.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/proxy.rs b/src/proxy.rs index 54aeaafd..009940c7 100644 --- a/src/proxy.rs +++ b/src/proxy.rs @@ -191,7 +191,7 @@ async fn forward_request( mod tests { use super::*; use alloy_primitives::{hex, Bytes, B256, U128, U64}; - use alloy_rpc_types_eth::erc4337::ConditionalOptions; + use alloy_rpc_types_eth::erc4337::TransactionConditional; use http_body_util::BodyExt; use hyper::service::service_fn; use hyper_util::rt::TokioIo; @@ -597,7 +597,7 @@ mod tests { let expected_tx: Bytes = hex!("1234").into(); let expected_method = "eth_sendRawTransactionConditional"; - let transact_conditionals = ConditionalOptions::default(); + let transact_conditionals = TransactionConditional::default(); test_harness .proxy_client .request::( From 9856edd1807525b8a12a0aa87c09de1c8f72d838 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Muhammed=20Kadir=20Y=C3=BCcel?= Date: Wed, 26 Feb 2025 14:02:51 +0300 Subject: [PATCH 06/10] chore: upgrade to latest dependencies alloy & reth v1.2.0 --- Cargo.lock | 1305 +++++++++++++++++++--------------------- Cargo.toml | 14 +- src/integration/mod.rs | 2 - src/server.rs | 3 +- 4 files changed, 633 insertions(+), 691 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index cc6e1465..e817fa55 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -67,35 +67,16 @@ dependencies = [ "strum", ] -[[package]] -name = "alloy-consensus" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a101d4d016f47f13890a74290fdd17b05dd175191d9337bc600791fb96e4dea8" -dependencies = [ - "alloy-eips 0.7.3", - "alloy-primitives", - "alloy-rlp", - "alloy-serde 0.7.3", - "alloy-trie", - "arbitrary", - "auto_impl", - "c-kzg", - "derive_more", - "rand", - "serde", -] - [[package]] name = "alloy-consensus" version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69e32ef5c74bbeb1733c37f4ac7f866f8c8af208b7b4265e21af609dcac5bd5e" dependencies = [ - "alloy-eips 0.11.1", + "alloy-eips", "alloy-primitives", "alloy-rlp", - "alloy-serde 0.11.1", + "alloy-serde", "alloy-trie", "auto_impl", "c-kzg", @@ -103,29 +84,17 @@ dependencies = [ "serde", ] -[[package]] -name = "alloy-consensus-any" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa60357dda9a3d0f738f18844bd6d0f4a5924cc5cf00bfad2ff1369897966123" -dependencies = [ - "alloy-consensus 0.7.3", - "alloy-eips 0.7.3", - "alloy-primitives", - "alloy-rlp", -] - [[package]] name = "alloy-consensus-any" version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fa13b7b1e1e3fedc42f0728103bfa3b4d566d3d42b606db449504d88dbdbdcf" dependencies = [ - "alloy-consensus 0.11.1", - "alloy-eips 0.11.1", + "alloy-consensus", + "alloy-eips", "alloy-primitives", "alloy-rlp", - "alloy-serde 0.11.1", + "alloy-serde", "serde", ] @@ -138,6 +107,7 @@ dependencies = [ "alloy-primitives", "alloy-rlp", "crc", + "serde", "thiserror 2.0.4", ] @@ -149,23 +119,6 @@ checksum = "0069cf0642457f87a01a014f6dc29d5d893cd4fd8fddf0c3cdfad1bb3ebafc41" dependencies = [ "alloy-primitives", "alloy-rlp", - "arbitrary", - "rand", - "serde", -] - -[[package]] -name = "alloy-eip7702" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c986539255fb839d1533c128e190e557e52ff652c9ef62939e233a81dd93f7e" -dependencies = [ - "alloy-primitives", - "alloy-rlp", - "arbitrary", - "derive_more", - "k256", - "rand", "serde", ] @@ -178,30 +131,10 @@ dependencies = [ "alloy-primitives", "alloy-rlp", "derive_more", + "k256", "serde", ] -[[package]] -name = "alloy-eips" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b6755b093afef5925f25079dd5a7c8d096398b804ba60cb5275397b06b31689" -dependencies = [ - "alloy-eip2930", - "alloy-eip7702 0.4.2", - "alloy-primitives", - "alloy-rlp", - "alloy-serde 0.7.3", - "arbitrary", - "c-kzg", - "derive_more", - "ethereum_ssz", - "ethereum_ssz_derive", - "once_cell", - "serde", - "sha2", -] - [[package]] name = "alloy-eips" version = "0.11.1" @@ -210,10 +143,10 @@ checksum = "5591581ca2ab0b3e7226a4047f9a1bfcf431da1d0cce3752fda609fea3c27e37" dependencies = [ "alloy-eip2124", "alloy-eip2930", - "alloy-eip7702 0.5.0", + "alloy-eip7702", "alloy-primitives", "alloy-rlp", - "alloy-serde 0.11.1", + "alloy-serde", "auto_impl", "c-kzg", "derive_more", @@ -226,39 +159,27 @@ dependencies = [ [[package]] name = "alloy-genesis" -version = "0.7.3" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aeec8e6eab6e52b7c9f918748c9b811e87dbef7312a2e3a2ca1729a92966a6af" +checksum = "0cded3a2d4bd7173f696458c5d4c98c18a628dfcc9f194385e80a486e412e2e0" dependencies = [ + "alloy-eips", "alloy-primitives", - "alloy-serde 0.7.3", + "alloy-serde", "alloy-trie", "serde", ] -[[package]] -name = "alloy-network-primitives" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c20219d1ad261da7a6331c16367214ee7ded41d001fabbbd656fbf71898b2773" -dependencies = [ - "alloy-consensus 0.7.3", - "alloy-eips 0.7.3", - "alloy-primitives", - "alloy-serde 0.7.3", - "serde", -] - [[package]] name = "alloy-network-primitives" version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3a00ce618ae2f78369918be0c20f620336381502c83b6ed62c2f7b2db27698b0" dependencies = [ - "alloy-consensus 0.11.1", - "alloy-eips 0.11.1", + "alloy-consensus", + "alloy-eips", "alloy-primitives", - "alloy-serde 0.11.1", + "alloy-serde", "serde", ] @@ -269,11 +190,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "478bedf4d24e71ea48428d1bc278553bd7c6ae07c30ca063beb0b09fe58a9e74" dependencies = [ "alloy-rlp", - "arbitrary", "bytes", "cfg-if 1.0.0", "const-hex", - "derive_arbitrary", "derive_more", "foldhash", "getrandom", @@ -284,7 +203,6 @@ dependencies = [ "keccak-asm", "paste", "proptest", - "proptest-derive", "rand", "ruint", "rustc-hash 2.1.1", @@ -295,9 +213,9 @@ dependencies = [ [[package]] name = "alloy-rlp" -version = "0.3.9" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0822426598f95e45dd1ea32a738dac057529a709ee645fcc516ffa4cbde08f" +checksum = "3d6c1d995bff8d011f7cd6c81820d51825e6e06d6db73914c1630ecf544d83d6" dependencies = [ "alloy-rlp-derive", "arrayvec", @@ -306,9 +224,9 @@ dependencies = [ [[package]] name = "alloy-rlp-derive" -version = "0.3.9" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b09cae092c27b6f1bde952653a22708691802e57bfef4a2973b80bea21efd3f" +checksum = "a40e1ef334153322fd878d07e86af7a529bcb86b2439525920a88eba87bcf943" dependencies = [ "proc-macro2", "quote", @@ -317,45 +235,25 @@ dependencies = [ [[package]] name = "alloy-rpc-types" -version = "0.7.3" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ab686b0fa475d2a4f5916c5f07797734a691ec58e44f0f55d4746ea39cbcefb" +checksum = "6f18e68a3882f372e045ddc89eb455469347767d17878ca492cfbac81e71a111" dependencies = [ "alloy-primitives", - "alloy-rpc-types-engine 0.7.3", - "alloy-rpc-types-eth 0.7.3", - "alloy-serde 0.7.3", + "alloy-rpc-types-engine", + "alloy-rpc-types-eth", + "alloy-serde", "serde", ] [[package]] name = "alloy-rpc-types-debug" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0294b553785eb3fa7fff2e8aec45e82817258e7e6c9365c034a90cb6baeebc9" -dependencies = [ - "alloy-primitives", - "serde", -] - -[[package]] -name = "alloy-rpc-types-engine" -version = "0.7.3" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d297268357e3eae834ddd6888b15f764cbc0f4b3be9265f5f6ec239013f3d68" +checksum = "2834b7012054cb2f90ee9893b7cc97702edca340ec1ef386c30c42e55e6cd691" dependencies = [ - "alloy-consensus 0.7.3", - "alloy-eips 0.7.3", "alloy-primitives", - "alloy-rlp", - "alloy-serde 0.7.3", - "derive_more", - "ethereum_ssz", - "ethereum_ssz_derive", - "jsonwebtoken", - "rand", "serde", - "strum", ] [[package]] @@ -364,11 +262,11 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e83dde9fcf1ccb9b815cc0c89bba26bbbbaae5150a53ae624ed0fc63cb3676c1" dependencies = [ - "alloy-consensus 0.11.1", - "alloy-eips 0.11.1", + "alloy-consensus", + "alloy-eips", "alloy-primitives", "alloy-rlp", - "alloy-serde 0.11.1", + "alloy-serde", "derive_more", "ethereum_ssz", "ethereum_ssz_derive", @@ -378,39 +276,19 @@ dependencies = [ "strum", ] -[[package]] -name = "alloy-rpc-types-eth" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0600b8b5e2dc0cab12cbf91b5a885c35871789fb7b3a57b434bd4fced5b7a8b" -dependencies = [ - "alloy-consensus 0.7.3", - "alloy-consensus-any 0.7.3", - "alloy-eips 0.7.3", - "alloy-network-primitives 0.7.3", - "alloy-primitives", - "alloy-rlp", - "alloy-serde 0.7.3", - "alloy-sol-types", - "derive_more", - "itertools 0.13.0", - "serde", - "serde_json", -] - [[package]] name = "alloy-rpc-types-eth" version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b4dbee4d82f8a22dde18c28257bed759afeae7ba73da4a1479a039fd1445d04" dependencies = [ - "alloy-consensus 0.11.1", - "alloy-consensus-any 0.11.1", - "alloy-eips 0.11.1", - "alloy-network-primitives 0.11.1", + "alloy-consensus", + "alloy-consensus-any", + "alloy-eips", + "alloy-network-primitives", "alloy-primitives", "alloy-rlp", - "alloy-serde 0.11.1", + "alloy-serde", "alloy-sol-types", "itertools 0.13.0", "serde", @@ -418,18 +296,6 @@ dependencies = [ "thiserror 2.0.4", ] -[[package]] -name = "alloy-serde" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9afa753a97002a33b2ccb707d9f15f31c81b8c1b786c95b73cc62bb1d1fd0c3f" -dependencies = [ - "alloy-primitives", - "arbitrary", - "serde", - "serde_json", -] - [[package]] name = "alloy-serde" version = "0.11.1" @@ -501,9 +367,9 @@ dependencies = [ [[package]] name = "alloy-trie" -version = "0.7.6" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a5fd8fea044cc9a8c8a50bb6f28e31f0385d820f116c5b98f6f4e55d6e5590b" +checksum = "d95a94854e420f07e962f7807485856cde359ab99ab6413883e15235ad996e8b" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -599,15 +465,6 @@ dependencies = [ "syn 2.0.90", ] -[[package]] -name = "arbitrary" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110" -dependencies = [ - "derive_arbitrary", -] - [[package]] name = "ark-ff" version = "0.3.0" @@ -1500,17 +1357,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "derive_arbitrary" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.90", -] - [[package]] name = "derive_more" version = "1.0.0" @@ -1560,6 +1406,17 @@ dependencies = [ "subtle", ] +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + [[package]] name = "doc-comment" version = "0.3.3" @@ -1594,6 +1451,7 @@ dependencies = [ "digest 0.10.7", "elliptic-curve", "rfc6979", + "serdect", "signature", "spki", ] @@ -1619,6 +1477,7 @@ dependencies = [ "pkcs8", "rand_core", "sec1", + "serdect", "subtle", "zeroize", ] @@ -1638,22 +1497,6 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d" -[[package]] -name = "enr" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "972070166c68827e64bd1ebc8159dd8e32d9bc2da7ebe8f20b61308f7974ad30" -dependencies = [ - "alloy-rlp", - "base64 0.21.7", - "bytes", - "hex", - "log", - "rand", - "sha3", - "zeroize", -] - [[package]] name = "enumn" version = "0.1.14" @@ -2325,6 +2168,124 @@ dependencies = [ "cc", ] +[[package]] +name = "icu_collections" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locid" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_locid_transform" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_locid_transform_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_locid_transform_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" + +[[package]] +name = "icu_normalizer" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "utf16_iter", + "utf8_iter", + "write16", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" + +[[package]] +name = "icu_properties" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locid_transform", + "icu_properties_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" + +[[package]] +name = "icu_provider" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_provider_macros", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_provider_macros" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + [[package]] name = "ident_case" version = "1.0.1" @@ -2333,12 +2294,23 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" -version = "0.5.0" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" dependencies = [ - "unicode-bidi", - "unicode-normalization", + "icu_normalizer", + "icu_properties", ] [[package]] @@ -2403,7 +2375,6 @@ version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" dependencies = [ - "arbitrary", "equivalent", "hashbrown 0.15.0", "serde", @@ -2718,6 +2689,7 @@ dependencies = [ "ecdsa", "elliptic-curve", "once_cell", + "serdect", "sha2", ] @@ -2788,7 +2760,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" dependencies = [ "cfg-if 1.0.0", - "windows-targets 0.52.6", + "windows-targets 0.48.5", ] [[package]] @@ -2825,6 +2797,12 @@ version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +[[package]] +name = "litemap" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" + [[package]] name = "lock_api" version = "0.4.12" @@ -3259,9 +3237,9 @@ dependencies = [ [[package]] name = "nybbles" -version = "0.2.1" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95f06be0417d97f81fe4e5c86d7d01b392655a9cac9c19a848aa033e18937b23" +checksum = "8983bb634df7248924ee0c4c3a749609b5abcb082c28fffe3254b3eb3602b307" dependencies = [ "alloy-rlp", "const-hex", @@ -3291,156 +3269,62 @@ dependencies = [ [[package]] name = "op-alloy-consensus" -version = "0.7.3" +version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78f0daa0d0936d436a21b57571b1e27c5663aa2ab62f6edae5ba5be999f9f93e" +checksum = "621e69964165285ce750bf7ba961707e26c31df9f0b25652d6219dcee1f7f5b5" dependencies = [ - "alloy-consensus 0.7.3", - "alloy-eips 0.7.3", + "alloy-consensus", + "alloy-eips", "alloy-primitives", "alloy-rlp", - "alloy-serde 0.7.3", - "arbitrary", + "alloy-serde", "derive_more", "serde", "thiserror 2.0.4", ] [[package]] -name = "op-alloy-consensus" +name = "op-alloy-rpc-jsonrpsee" version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "621e69964165285ce750bf7ba961707e26c31df9f0b25652d6219dcee1f7f5b5" +checksum = "409274d1940cdd6806c431157eb2b68b93ec2d019785f625b665d1c72c51d04e" dependencies = [ - "alloy-consensus 0.11.1", - "alloy-eips 0.11.1", "alloy-primitives", - "alloy-rlp", - "alloy-serde 0.11.1", - "derive_more", - "serde", - "thiserror 2.0.4", + "jsonrpsee", ] [[package]] -name = "op-alloy-genesis" -version = "0.7.3" +name = "op-alloy-rpc-types" +version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3eb0964932faa7050b74689f017aca66ffa3e52501080278a81bb0a43836c8dd" +checksum = "7a206be9e4aab37bfa352352d63d8dfa9d48d9df1f30478e4a9477865fd88ad6" dependencies = [ - "alloy-consensus 0.7.3", - "alloy-eips 0.7.3", + "alloy-consensus", + "alloy-eips", + "alloy-network-primitives", "alloy-primitives", - "alloy-sol-types", + "alloy-rpc-types-eth", + "alloy-serde", + "derive_more", + "op-alloy-consensus", "serde", - "serde_repr", - "thiserror 2.0.4", + "serde_json", ] [[package]] -name = "op-alloy-protocol" -version = "0.7.3" +name = "op-alloy-rpc-types-engine" +version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d8c057c1a5bdf72d1f86c470a4d90f2d2ad1b273caa547c04cd6affe45b466d" +checksum = "158a8f5cec81cd301a2bdf97474b9918dda6318447619fbdfcf3f5bbc394d6be" dependencies = [ - "alloc-no-stdlib", - "alloy-consensus 0.7.3", - "alloy-eips 0.7.3", + "alloy-consensus", + "alloy-eips", "alloy-primitives", - "alloy-rlp", - "alloy-serde 0.7.3", - "async-trait", - "brotli", - "cfg-if 1.0.0", - "miniz_oxide", - "op-alloy-consensus 0.7.3", - "op-alloy-genesis", - "serde", - "thiserror 2.0.4", - "tracing", - "unsigned-varint", -] - -[[package]] -name = "op-alloy-rpc-jsonrpsee" -version = "0.10.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "409274d1940cdd6806c431157eb2b68b93ec2d019785f625b665d1c72c51d04e" -dependencies = [ - "alloy-primitives", - "jsonrpsee", -] - -[[package]] -name = "op-alloy-rpc-types" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73741855ffaa2041b33cb616d7db7180c1149b648c68c23bee9e15501073fb32" -dependencies = [ - "alloy-consensus 0.7.3", - "alloy-eips 0.7.3", - "alloy-network-primitives 0.7.3", - "alloy-primitives", - "alloy-rpc-types-eth 0.7.3", - "alloy-serde 0.7.3", - "derive_more", - "op-alloy-consensus 0.7.3", - "serde", - "serde_json", -] - -[[package]] -name = "op-alloy-rpc-types" -version = "0.10.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a206be9e4aab37bfa352352d63d8dfa9d48d9df1f30478e4a9477865fd88ad6" -dependencies = [ - "alloy-consensus 0.11.1", - "alloy-eips 0.11.1", - "alloy-network-primitives 0.11.1", - "alloy-primitives", - "alloy-rpc-types-eth 0.11.1", - "alloy-serde 0.11.1", - "derive_more", - "op-alloy-consensus 0.10.5", - "serde", - "serde_json", -] - -[[package]] -name = "op-alloy-rpc-types-engine" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebedc32e24013c8b3faea62d091bccbb90f871286fe2238c6f7e2ff29974df8e" -dependencies = [ - "alloy-eips 0.7.3", - "alloy-primitives", - "alloy-rpc-types-engine 0.7.3", - "alloy-serde 0.7.3", - "derive_more", - "ethereum_ssz", - "op-alloy-consensus 0.7.3", - "op-alloy-genesis", - "op-alloy-protocol", - "serde", - "snap", - "thiserror 2.0.4", -] - -[[package]] -name = "op-alloy-rpc-types-engine" -version = "0.10.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "158a8f5cec81cd301a2bdf97474b9918dda6318447619fbdfcf3f5bbc394d6be" -dependencies = [ - "alloy-consensus 0.11.1", - "alloy-eips 0.11.1", - "alloy-primitives", - "alloy-rpc-types-engine 0.11.1", - "alloy-serde 0.11.1", + "alloy-rpc-types-engine", + "alloy-serde", "derive_more", "ethereum_ssz", - "op-alloy-consensus 0.10.5", + "op-alloy-consensus", "serde", "snap", "thiserror 2.0.4", @@ -3904,17 +3788,6 @@ dependencies = [ "unarray", ] -[[package]] -name = "proptest-derive" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ff7ff745a347b87471d859a377a9a404361e7efc2a971d73424a6d183c0fc77" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.90", -] - [[package]] name = "prost" version = "0.13.3" @@ -4152,13 +4025,12 @@ dependencies = [ [[package]] name = "reth-basic-payload-builder" -version = "1.1.2" -source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" +version = "1.2.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.2.0#1e965caf5fa176f244a31c0d2662ba1b590938db" dependencies = [ - "alloy-consensus 0.7.3", - "alloy-eips 0.7.3", + "alloy-consensus", + "alloy-eips", "alloy-primitives", - "alloy-rlp", "futures-core", "futures-util", "metrics", @@ -4173,33 +4045,18 @@ dependencies = [ "reth-provider", "reth-revm", "reth-tasks", - "reth-transaction-pool", "revm", "tokio", "tracing", ] -[[package]] -name = "reth-blockchain-tree-api" -version = "1.1.2" -source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" -dependencies = [ - "alloy-eips 0.7.3", - "alloy-primitives", - "reth-consensus", - "reth-execution-errors", - "reth-primitives", - "reth-storage-errors", - "thiserror 2.0.4", -] - [[package]] name = "reth-chain-state" -version = "1.1.2" -source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" +version = "1.2.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.2.0#1e965caf5fa176f244a31c0d2662ba1b590938db" dependencies = [ - "alloy-consensus 0.7.3", - "alloy-eips 0.7.3", + "alloy-consensus", + "alloy-eips", "alloy-primitives", "derive_more", "metrics", @@ -4221,45 +4078,44 @@ dependencies = [ [[package]] name = "reth-chainspec" -version = "1.1.2" -source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" +version = "1.2.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.2.0#1e965caf5fa176f244a31c0d2662ba1b590938db" dependencies = [ "alloy-chains", - "alloy-consensus 0.7.3", - "alloy-eips 0.7.3", + "alloy-consensus", + "alloy-eips", "alloy-genesis", "alloy-primitives", + "alloy-trie", "auto_impl", "derive_more", - "once_cell", "reth-ethereum-forks", "reth-network-peers", "reth-primitives-traits", - "reth-trie-common", "serde_json", ] [[package]] name = "reth-codecs" -version = "1.1.2" -source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" +version = "1.2.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.2.0#1e965caf5fa176f244a31c0d2662ba1b590938db" dependencies = [ - "alloy-consensus 0.7.3", - "alloy-eips 0.7.3", + "alloy-consensus", + "alloy-eips", "alloy-genesis", "alloy-primitives", "alloy-trie", "bytes", "modular-bitfield", - "op-alloy-consensus 0.7.3", + "op-alloy-consensus", "reth-codecs-derive", "serde", ] [[package]] name = "reth-codecs-derive" -version = "1.1.2" -source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" +version = "1.2.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.2.0#1e965caf5fa176f244a31c0d2662ba1b590938db" dependencies = [ "convert_case", "proc-macro2", @@ -4269,39 +4125,36 @@ dependencies = [ [[package]] name = "reth-consensus" -version = "1.1.2" -source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" +version = "1.2.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.2.0#1e965caf5fa176f244a31c0d2662ba1b590938db" dependencies = [ - "alloy-consensus 0.7.3", - "alloy-eips 0.7.3", + "alloy-consensus", + "alloy-eips", "alloy-primitives", "auto_impl", "derive_more", - "reth-primitives", "reth-primitives-traits", ] [[package]] name = "reth-consensus-common" -version = "1.1.2" -source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" +version = "1.2.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.2.0#1e965caf5fa176f244a31c0d2662ba1b590938db" dependencies = [ - "alloy-consensus 0.7.3", - "alloy-eips 0.7.3", + "alloy-consensus", + "alloy-eips", "alloy-primitives", "reth-chainspec", "reth-consensus", - "reth-primitives", "reth-primitives-traits", - "revm-primitives", ] [[package]] name = "reth-db" -version = "1.1.2" -source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" +version = "1.2.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.2.0#1e965caf5fa176f244a31c0d2662ba1b590938db" dependencies = [ - "alloy-consensus 0.7.3", + "alloy-consensus", "alloy-primitives", "bytes", "derive_more", @@ -4329,10 +4182,10 @@ dependencies = [ [[package]] name = "reth-db-api" -version = "1.1.2" -source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" +version = "1.2.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.2.0#1e965caf5fa176f244a31c0d2662ba1b590938db" dependencies = [ - "alloy-consensus 0.7.3", + "alloy-consensus", "alloy-genesis", "alloy-primitives", "bytes", @@ -4354,10 +4207,10 @@ dependencies = [ [[package]] name = "reth-db-models" -version = "1.1.2" -source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" +version = "1.2.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.2.0#1e965caf5fa176f244a31c0d2662ba1b590938db" dependencies = [ - "alloy-eips 0.7.3", + "alloy-eips", "alloy-primitives", "bytes", "modular-bitfield", @@ -4368,13 +4221,16 @@ dependencies = [ [[package]] name = "reth-engine-primitives" -version = "1.1.2" -source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" +version = "1.2.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.2.0#1e965caf5fa176f244a31c0d2662ba1b590938db" dependencies = [ - "alloy-consensus 0.7.3", + "alloy-consensus", + "alloy-eips", "alloy-primitives", - "alloy-rpc-types-engine 0.7.3", + "alloy-rpc-types-engine", + "auto_impl", "futures", + "reth-chain-state", "reth-errors", "reth-execution-types", "reth-payload-builder-primitives", @@ -4389,10 +4245,9 @@ dependencies = [ [[package]] name = "reth-errors" -version = "1.1.2" -source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" +version = "1.2.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.2.0#1e965caf5fa176f244a31c0d2662ba1b590938db" dependencies = [ - "reth-blockchain-tree-api", "reth-consensus", "reth-execution-errors", "reth-fs-util", @@ -4402,12 +4257,12 @@ dependencies = [ [[package]] name = "reth-eth-wire-types" -version = "1.1.2" -source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" +version = "1.2.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.2.0#1e965caf5fa176f244a31c0d2662ba1b590938db" dependencies = [ "alloy-chains", - "alloy-consensus 0.7.3", - "alloy-eips 0.7.3", + "alloy-consensus", + "alloy-eips", "alloy-primitives", "alloy-rlp", "bytes", @@ -4415,7 +4270,7 @@ dependencies = [ "reth-chainspec", "reth-codecs-derive", "reth-ethereum-forks", - "reth-primitives", + "reth-ethereum-primitives", "reth-primitives-traits", "serde", "thiserror 2.0.4", @@ -4423,48 +4278,65 @@ dependencies = [ [[package]] name = "reth-ethereum-engine-primitives" -version = "1.1.2" -source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" +version = "1.2.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.2.0#1e965caf5fa176f244a31c0d2662ba1b590938db" dependencies = [ - "alloy-eips 0.7.3", + "alloy-eips", "alloy-primitives", "alloy-rlp", - "alloy-rpc-types-engine 0.7.3", - "reth-chain-state", + "alloy-rpc-types-engine", "reth-chainspec", "reth-engine-primitives", "reth-payload-primitives", "reth-payload-validator", "reth-primitives", - "reth-rpc-types-compat", "serde", "sha2", ] [[package]] name = "reth-ethereum-forks" -version = "1.1.2" -source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" +version = "1.2.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.2.0#1e965caf5fa176f244a31c0d2662ba1b590938db" dependencies = [ "alloy-chains", + "alloy-eip2124", "alloy-primitives", - "alloy-rlp", "auto_impl", - "crc", "dyn-clone", "once_cell", "rustc-hash 2.1.1", "serde", - "thiserror 2.0.4", +] + +[[package]] +name = "reth-ethereum-primitives" +version = "1.2.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.2.0#1e965caf5fa176f244a31c0d2662ba1b590938db" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "alloy-rpc-types-eth", + "alloy-serde", + "derive_more", + "modular-bitfield", + "reth-codecs", + "reth-primitives-traits", + "reth-zstd-compressors", + "revm-primitives", + "secp256k1", + "serde", ] [[package]] name = "reth-evm" -version = "1.1.2" -source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" +version = "1.2.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.2.0#1e965caf5fa176f244a31c0d2662ba1b590938db" dependencies = [ - "alloy-consensus 0.7.3", - "alloy-eips 0.7.3", + "alloy-consensus", + "alloy-eips", "alloy-primitives", "auto_impl", "futures-util", @@ -4472,13 +4344,12 @@ dependencies = [ "reth-chainspec", "reth-consensus", "reth-consensus-common", + "reth-ethereum-primitives", "reth-execution-errors", "reth-execution-types", "reth-metrics", "reth-primitives", "reth-primitives-traits", - "reth-prune-types", - "reth-revm", "reth-storage-errors", "revm", "revm-primitives", @@ -4486,27 +4357,24 @@ dependencies = [ [[package]] name = "reth-execution-errors" -version = "1.1.2" -source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" +version = "1.2.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.2.0#1e965caf5fa176f244a31c0d2662ba1b590938db" dependencies = [ - "alloy-eips 0.7.3", + "alloy-eips", "alloy-primitives", "alloy-rlp", "nybbles", - "reth-consensus", - "reth-prune-types", "reth-storage-errors", - "revm-primitives", "thiserror 2.0.4", ] [[package]] name = "reth-execution-types" -version = "1.1.2" -source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" +version = "1.2.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.2.0#1e965caf5fa176f244a31c0d2662ba1b590938db" dependencies = [ - "alloy-consensus 0.7.3", - "alloy-eips 0.7.3", + "alloy-consensus", + "alloy-eips", "alloy-primitives", "reth-execution-errors", "reth-primitives", @@ -4520,8 +4388,8 @@ dependencies = [ [[package]] name = "reth-fs-util" -version = "1.1.2" -source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" +version = "1.2.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.2.0#1e965caf5fa176f244a31c0d2662ba1b590938db" dependencies = [ "serde", "serde_json", @@ -4530,8 +4398,8 @@ dependencies = [ [[package]] name = "reth-libmdbx" -version = "1.1.2" -source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" +version = "1.2.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.2.0#1e965caf5fa176f244a31c0d2662ba1b590938db" dependencies = [ "bitflags 2.6.0", "byteorder", @@ -4547,8 +4415,8 @@ dependencies = [ [[package]] name = "reth-mdbx-sys" -version = "1.1.2" -source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" +version = "1.2.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.2.0#1e965caf5fa176f244a31c0d2662ba1b590938db" dependencies = [ "bindgen 0.70.1", "cc", @@ -4556,8 +4424,8 @@ dependencies = [ [[package]] name = "reth-metrics" -version = "1.1.2" -source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" +version = "1.2.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.2.0#1e965caf5fa176f244a31c0d2662ba1b590938db" dependencies = [ "metrics", "metrics-derive", @@ -4565,28 +4433,28 @@ dependencies = [ [[package]] name = "reth-net-banlist" -version = "1.1.2" -source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" +version = "1.2.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.2.0#1e965caf5fa176f244a31c0d2662ba1b590938db" dependencies = [ "alloy-primitives", ] [[package]] name = "reth-network-p2p" -version = "1.1.2" -source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" +version = "1.2.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.2.0#1e965caf5fa176f244a31c0d2662ba1b590938db" dependencies = [ - "alloy-consensus 0.7.3", - "alloy-eips 0.7.3", + "alloy-consensus", + "alloy-eips", "alloy-primitives", "auto_impl", "derive_more", "futures", "reth-consensus", "reth-eth-wire-types", + "reth-ethereum-primitives", "reth-network-peers", "reth-network-types", - "reth-primitives", "reth-primitives-traits", "reth-storage-errors", "tokio", @@ -4595,12 +4463,11 @@ dependencies = [ [[package]] name = "reth-network-peers" -version = "1.1.2" -source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" +version = "1.2.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.2.0#1e965caf5fa176f244a31c0d2662ba1b590938db" dependencies = [ "alloy-primitives", "alloy-rlp", - "enr", "secp256k1", "serde_with", "thiserror 2.0.4", @@ -4609,10 +4476,10 @@ dependencies = [ [[package]] name = "reth-network-types" -version = "1.1.2" -source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" +version = "1.2.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.2.0#1e965caf5fa176f244a31c0d2662ba1b590938db" dependencies = [ - "reth-ethereum-forks", + "alloy-eip2124", "reth-net-banlist", "reth-network-peers", "serde_json", @@ -4621,8 +4488,8 @@ dependencies = [ [[package]] name = "reth-nippy-jar" -version = "1.1.2" -source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" +version = "1.2.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.2.0#1e965caf5fa176f244a31c0d2662ba1b590938db" dependencies = [ "anyhow", "bincode", @@ -4638,45 +4505,50 @@ dependencies = [ [[package]] name = "reth-node-types" -version = "1.1.2" -source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" +version = "1.2.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.2.0#1e965caf5fa176f244a31c0d2662ba1b590938db" dependencies = [ "reth-chainspec", "reth-db-api", "reth-engine-primitives", + "reth-payload-primitives", "reth-primitives-traits", "reth-trie-db", ] [[package]] name = "reth-optimism-chainspec" -version = "1.1.2" -source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" +version = "1.2.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.2.0#1e965caf5fa176f244a31c0d2662ba1b590938db" dependencies = [ "alloy-chains", - "alloy-consensus 0.7.3", - "alloy-eips 0.7.3", + "alloy-consensus", + "alloy-eips", "alloy-genesis", "alloy-primitives", "derive_more", "once_cell", - "op-alloy-rpc-types 0.7.3", + "op-alloy-consensus", + "op-alloy-rpc-types", "reth-chainspec", "reth-ethereum-forks", "reth-network-peers", "reth-optimism-forks", "reth-primitives-traits", "serde_json", + "thiserror 2.0.4", ] [[package]] name = "reth-optimism-consensus" -version = "1.1.2" -source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" +version = "1.2.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.2.0#1e965caf5fa176f244a31c0d2662ba1b590938db" dependencies = [ - "alloy-consensus 0.7.3", + "alloy-consensus", + "alloy-eips", "alloy-primitives", "alloy-trie", + "op-alloy-consensus", "reth-chainspec", "reth-consensus", "reth-consensus-common", @@ -4684,20 +4556,20 @@ dependencies = [ "reth-optimism-forks", "reth-optimism-primitives", "reth-primitives", - "reth-trie-common", + "reth-primitives-traits", "tracing", ] [[package]] name = "reth-optimism-evm" -version = "1.1.2" -source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" +version = "1.2.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.2.0#1e965caf5fa176f244a31c0d2662ba1b590938db" dependencies = [ - "alloy-consensus 0.7.3", - "alloy-eips 0.7.3", + "alloy-consensus", + "alloy-eips", "alloy-primitives", "derive_more", - "op-alloy-consensus 0.7.3", + "op-alloy-consensus", "reth-chainspec", "reth-consensus", "reth-consensus-common", @@ -4709,21 +4581,21 @@ dependencies = [ "reth-optimism-consensus", "reth-optimism-forks", "reth-optimism-primitives", - "reth-primitives", - "reth-prune-types", - "reth-revm", + "reth-primitives-traits", "revm", "revm-primitives", + "thiserror 2.0.4", "tracing", ] [[package]] name = "reth-optimism-forks" -version = "1.1.2" -source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" +version = "1.2.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.2.0#1e965caf5fa176f244a31c0d2662ba1b590938db" dependencies = [ "alloy-chains", "alloy-primitives", + "auto_impl", "once_cell", "reth-ethereum-forks", "serde", @@ -4731,34 +4603,35 @@ dependencies = [ [[package]] name = "reth-optimism-payload-builder" -version = "1.1.2" -source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" +version = "1.2.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.2.0#1e965caf5fa176f244a31c0d2662ba1b590938db" dependencies = [ - "alloy-consensus 0.7.3", - "alloy-eips 0.7.3", + "alloy-consensus", + "alloy-eips", "alloy-primitives", "alloy-rlp", "alloy-rpc-types-debug", - "alloy-rpc-types-engine 0.7.3", - "op-alloy-consensus 0.7.3", - "op-alloy-rpc-types-engine 0.7.3", + "alloy-rpc-types-engine", + "derive_more", + "op-alloy-consensus", + "op-alloy-rpc-types-engine", "reth-basic-payload-builder", "reth-chain-state", "reth-chainspec", "reth-evm", "reth-execution-types", - "reth-optimism-chainspec", "reth-optimism-consensus", "reth-optimism-evm", "reth-optimism-forks", + "reth-optimism-primitives", "reth-payload-builder", "reth-payload-builder-primitives", "reth-payload-primitives", "reth-payload-util", "reth-primitives", + "reth-primitives-traits", "reth-provider", "reth-revm", - "reth-rpc-types-compat", "reth-transaction-pool", "revm", "sha2", @@ -4768,20 +4641,24 @@ dependencies = [ [[package]] name = "reth-optimism-primitives" -version = "1.1.2" -source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" +version = "1.2.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.2.0#1e965caf5fa176f244a31c0d2662ba1b590938db" dependencies = [ - "alloy-consensus 0.7.3", - "alloy-eips 0.7.3", + "alloy-consensus", + "alloy-eips", "alloy-primitives", "alloy-rlp", + "alloy-rpc-types-eth", + "alloy-serde", "bytes", "derive_more", - "op-alloy-consensus 0.7.3", + "modular-bitfield", + "op-alloy-consensus", + "proptest", "rand", "reth-codecs", - "reth-primitives", "reth-primitives-traits", + "reth-zstd-compressors", "revm-primitives", "secp256k1", "serde", @@ -4789,11 +4666,11 @@ dependencies = [ [[package]] name = "reth-payload-builder" -version = "1.1.2" -source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" +version = "1.2.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.2.0#1e965caf5fa176f244a31c0d2662ba1b590938db" dependencies = [ + "alloy-consensus", "alloy-rpc-types", - "async-trait", "futures-util", "metrics", "reth-chain-state", @@ -4801,6 +4678,7 @@ dependencies = [ "reth-metrics", "reth-payload-builder-primitives", "reth-payload-primitives", + "reth-primitives-traits", "tokio", "tokio-stream", "tracing", @@ -4808,11 +4686,9 @@ dependencies = [ [[package]] name = "reth-payload-builder-primitives" -version = "1.1.2" -source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" +version = "1.2.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.2.0#1e965caf5fa176f244a31c0d2662ba1b590938db" dependencies = [ - "alloy-rpc-types-engine 0.7.3", - "async-trait", "pin-project", "reth-payload-primitives", "tokio", @@ -4822,18 +4698,18 @@ dependencies = [ [[package]] name = "reth-payload-primitives" -version = "1.1.2" -source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" +version = "1.2.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.2.0#1e965caf5fa176f244a31c0d2662ba1b590938db" dependencies = [ - "alloy-eips 0.7.3", + "alloy-eips", "alloy-primitives", - "alloy-rpc-types-engine 0.7.3", - "op-alloy-rpc-types-engine 0.7.3", + "alloy-rpc-types-engine", + "auto_impl", + "op-alloy-rpc-types-engine", "reth-chain-state", "reth-chainspec", "reth-errors", "reth-primitives", - "revm-primitives", "serde", "thiserror 2.0.4", "tokio", @@ -4841,94 +4717,84 @@ dependencies = [ [[package]] name = "reth-payload-util" -version = "1.1.2" -source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" +version = "1.2.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.2.0#1e965caf5fa176f244a31c0d2662ba1b590938db" dependencies = [ - "alloy-consensus 0.7.3", + "alloy-consensus", "alloy-primitives", - "reth-primitives", + "reth-transaction-pool", ] [[package]] name = "reth-payload-validator" -version = "1.1.2" -source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" +version = "1.2.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.2.0#1e965caf5fa176f244a31c0d2662ba1b590938db" dependencies = [ "alloy-rpc-types", "reth-chainspec", + "reth-engine-primitives", "reth-primitives", - "reth-rpc-types-compat", + "reth-primitives-traits", ] [[package]] name = "reth-primitives" -version = "1.1.2" -source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" +version = "1.2.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.2.0#1e965caf5fa176f244a31c0d2662ba1b590938db" dependencies = [ - "alloy-consensus 0.7.3", - "alloy-eips 0.7.3", - "alloy-primitives", - "alloy-rlp", - "alloy-serde 0.7.3", - "alloy-trie", - "bytes", + "alloy-consensus", "c-kzg", - "derive_more", - "k256", - "modular-bitfield", "once_cell", - "op-alloy-consensus 0.7.3", - "rayon", - "reth-codecs", "reth-ethereum-forks", + "reth-ethereum-primitives", "reth-primitives-traits", "reth-static-file-types", - "revm-primitives", - "secp256k1", - "serde", - "serde_with", - "zstd", ] [[package]] name = "reth-primitives-traits" -version = "1.1.2" -source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" +version = "1.2.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.2.0#1e965caf5fa176f244a31c0d2662ba1b590938db" dependencies = [ - "alloy-consensus 0.7.3", - "alloy-eips 0.7.3", + "alloy-consensus", + "alloy-eips", "alloy-genesis", "alloy-primitives", "alloy-rlp", + "alloy-trie", "auto_impl", "byteorder", "bytes", "derive_more", + "k256", "modular-bitfield", - "op-alloy-consensus 0.7.3", + "once_cell", + "op-alloy-consensus", "reth-codecs", "revm-primitives", + "secp256k1", "serde", "serde_with", + "thiserror 2.0.4", ] [[package]] name = "reth-provider" -version = "1.1.2" -source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" +version = "1.2.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.2.0#1e965caf5fa176f244a31c0d2662ba1b590938db" dependencies = [ - "alloy-consensus 0.7.3", - "alloy-eips 0.7.3", + "alloy-consensus", + "alloy-eips", "alloy-primitives", - "alloy-rpc-types-engine 0.7.3", + "alloy-rpc-types-engine", "auto_impl", "dashmap", + "eyre", "itertools 0.13.0", "metrics", "notify", "parking_lot", "rayon", - "reth-blockchain-tree-api", "reth-chain-state", "reth-chainspec", "reth-codecs", @@ -4942,7 +4808,6 @@ dependencies = [ "reth-network-p2p", "reth-nippy-jar", "reth-node-types", - "reth-optimism-primitives", "reth-primitives", "reth-primitives-traits", "reth-prune-types", @@ -4959,11 +4824,10 @@ dependencies = [ [[package]] name = "reth-prune-types" -version = "1.1.2" -source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" +version = "1.2.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.2.0#1e965caf5fa176f244a31c0d2662ba1b590938db" dependencies = [ "alloy-primitives", - "bytes", "derive_more", "modular-bitfield", "reth-codecs", @@ -4973,15 +4837,11 @@ dependencies = [ [[package]] name = "reth-revm" -version = "1.1.2" -source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" +version = "1.2.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.2.0#1e965caf5fa176f244a31c0d2662ba1b590938db" dependencies = [ - "alloy-eips 0.7.3", "alloy-primitives", - "reth-execution-errors", - "reth-primitives", "reth-primitives-traits", - "reth-prune-types", "reth-storage-api", "reth-storage-errors", "reth-trie", @@ -4990,10 +4850,10 @@ dependencies = [ [[package]] name = "reth-rpc-layer" -version = "1.1.2" -source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" +version = "1.2.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.2.0#1e965caf5fa176f244a31c0d2662ba1b590938db" dependencies = [ - "alloy-rpc-types-engine 0.7.3", + "alloy-rpc-types-engine", "http 1.1.0", "jsonrpsee-http-client", "pin-project", @@ -5002,26 +4862,10 @@ dependencies = [ "tracing", ] -[[package]] -name = "reth-rpc-types-compat" -version = "1.1.2" -source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" -dependencies = [ - "alloy-consensus 0.7.3", - "alloy-eips 0.7.3", - "alloy-primitives", - "alloy-rlp", - "alloy-rpc-types-engine 0.7.3", - "alloy-rpc-types-eth 0.7.3", - "jsonrpsee-types", - "reth-primitives", - "serde", -] - [[package]] name = "reth-stages-types" -version = "1.1.2" -source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" +version = "1.2.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.2.0#1e965caf5fa176f244a31c0d2662ba1b590938db" dependencies = [ "alloy-primitives", "bytes", @@ -5033,8 +4877,8 @@ dependencies = [ [[package]] name = "reth-static-file-types" -version = "1.1.2" -source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" +version = "1.2.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.2.0#1e965caf5fa176f244a31c0d2662ba1b590938db" dependencies = [ "alloy-primitives", "derive_more", @@ -5044,13 +4888,13 @@ dependencies = [ [[package]] name = "reth-storage-api" -version = "1.1.2" -source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" +version = "1.2.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.2.0#1e965caf5fa176f244a31c0d2662ba1b590938db" dependencies = [ - "alloy-consensus 0.7.3", - "alloy-eips 0.7.3", + "alloy-consensus", + "alloy-eips", "alloy-primitives", - "alloy-rpc-types-engine 0.7.3", + "alloy-rpc-types-engine", "auto_impl", "reth-chainspec", "reth-db", @@ -5069,22 +4913,23 @@ dependencies = [ [[package]] name = "reth-storage-errors" -version = "1.1.2" -source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" +version = "1.2.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.2.0#1e965caf5fa176f244a31c0d2662ba1b590938db" dependencies = [ - "alloy-eips 0.7.3", + "alloy-eips", "alloy-primitives", "alloy-rlp", "derive_more", - "reth-fs-util", "reth-primitives-traits", + "reth-prune-types", "reth-static-file-types", + "thiserror 2.0.4", ] [[package]] name = "reth-tasks" -version = "1.1.2" -source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" +version = "1.2.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.2.0#1e965caf5fa176f244a31c0d2662ba1b590938db" dependencies = [ "auto_impl", "dyn-clone", @@ -5099,8 +4944,8 @@ dependencies = [ [[package]] name = "reth-tracing" -version = "1.1.2" -source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" +version = "1.2.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.2.0#1e965caf5fa176f244a31c0d2662ba1b590938db" dependencies = [ "clap", "eyre", @@ -5114,11 +4959,11 @@ dependencies = [ [[package]] name = "reth-transaction-pool" -version = "1.1.2" -source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" +version = "1.2.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.2.0#1e965caf5fa176f244a31c0d2662ba1b590938db" dependencies = [ - "alloy-consensus 0.7.3", - "alloy-eips 0.7.3", + "alloy-consensus", + "alloy-eips", "alloy-primitives", "alloy-rlp", "aquamarine", @@ -5134,12 +4979,12 @@ dependencies = [ "reth-execution-types", "reth-fs-util", "reth-metrics", - "reth-payload-util", "reth-primitives", "reth-primitives-traits", "reth-storage-api", "reth-tasks", - "revm", + "revm-interpreter", + "revm-primitives", "rustc-hash 2.1.1", "schnellru", "serde", @@ -5152,20 +4997,20 @@ dependencies = [ [[package]] name = "reth-trie" -version = "1.1.2" -source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" +version = "1.2.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.2.0#1e965caf5fa176f244a31c0d2662ba1b590938db" dependencies = [ - "alloy-consensus 0.7.3", + "alloy-consensus", + "alloy-eips", "alloy-primitives", "alloy-rlp", "alloy-trie", "auto_impl", "itertools 0.13.0", "metrics", - "rayon", "reth-execution-errors", "reth-metrics", - "reth-primitives", + "reth-primitives-traits", "reth-stages-types", "reth-storage-errors", "reth-trie-common", @@ -5176,29 +5021,31 @@ dependencies = [ [[package]] name = "reth-trie-common" -version = "1.1.2" -source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" +version = "1.2.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.2.0#1e965caf5fa176f244a31c0d2662ba1b590938db" dependencies = [ - "alloy-consensus 0.7.3", - "alloy-genesis", + "alloy-consensus", "alloy-primitives", "alloy-rlp", - "alloy-rpc-types-eth 0.7.3", + "alloy-rpc-types-eth", + "alloy-serde", "alloy-trie", "bytes", "derive_more", "itertools 0.13.0", "nybbles", + "rayon", "reth-codecs", "reth-primitives-traits", - "revm-primitives", + "revm", "serde", + "serde_with", ] [[package]] name = "reth-trie-db" -version = "1.1.2" -source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" +version = "1.2.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.2.0#1e965caf5fa176f244a31c0d2662ba1b590938db" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -5208,7 +5055,7 @@ dependencies = [ "reth-db-api", "reth-execution-errors", "reth-metrics", - "reth-primitives", + "reth-primitives-traits", "reth-storage-errors", "reth-trie", "revm", @@ -5217,8 +5064,8 @@ dependencies = [ [[package]] name = "reth-trie-sparse" -version = "1.1.2" -source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" +version = "1.2.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.2.0#1e965caf5fa176f244a31c0d2662ba1b590938db" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -5230,15 +5077,24 @@ dependencies = [ "thiserror 2.0.4", ] +[[package]] +name = "reth-zstd-compressors" +version = "1.2.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.2.0#1e965caf5fa176f244a31c0d2662ba1b590938db" +dependencies = [ + "zstd", +] + [[package]] name = "revm" -version = "18.0.0" +version = "19.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15689a3c6a8d14b647b4666f2e236ef47b5a5133cdfd423f545947986fff7013" +checksum = "dfc5bef3c95fadf3b6a24a253600348380c169ef285f9780a793bb7090c8990d" dependencies = [ "auto_impl", "cfg-if 1.0.0", "dyn-clone", + "once_cell", "revm-interpreter", "revm-precompile", "serde", @@ -5247,9 +5103,9 @@ dependencies = [ [[package]] name = "revm-interpreter" -version = "14.0.0" +version = "15.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74e3f11d0fed049a4a10f79820c59113a79b38aed4ebec786a79d5c667bfeb51" +checksum = "7dcab7ef2064057acfc84731205f4bc77f4ec1b35630800b26ff6a185731c5ab" dependencies = [ "revm-primitives", "serde", @@ -5257,9 +5113,9 @@ dependencies = [ [[package]] name = "revm-precompile" -version = "15.0.0" +version = "16.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e381060af24b750069a2b2d2c54bba273d84e8f5f9e8026fc9262298e26cc336" +checksum = "6caa1a7ff2cc4a09a263fcf9de99151706f323d30f33d519ed329f017a02b046" dependencies = [ "aurora-engine-modexp", "c-kzg", @@ -5276,12 +5132,12 @@ dependencies = [ [[package]] name = "revm-primitives" -version = "14.0.0" +version = "15.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3702f132bb484f4f0d0ca4f6fbde3c82cfd745041abbedd6eda67730e1868ef0" +checksum = "f0f987564210317706def498421dfba2ae1af64a8edce82c6102758b48133fcb" dependencies = [ "alloy-eip2930", - "alloy-eip7702 0.4.2", + "alloy-eip7702", "alloy-primitives", "auto_impl", "bitflags 2.6.0", @@ -5370,10 +5226,11 @@ dependencies = [ name = "rollup-boost" version = "0.1.0" dependencies = [ - "alloy-eips 0.11.1", + "alloy-eips", "alloy-primitives", - "alloy-rpc-types-engine 0.11.1", - "alloy-rpc-types-eth 0.11.1", + "alloy-rlp", + "alloy-rpc-types-engine", + "alloy-rpc-types-eth", "anyhow", "assert_cmd", "clap", @@ -5396,8 +5253,8 @@ dependencies = [ "metrics-util", "nix", "op-alloy-rpc-jsonrpsee", - "op-alloy-rpc-types 0.10.5", - "op-alloy-rpc-types-engine 0.10.5", + "op-alloy-rpc-types", + "op-alloy-rpc-types-engine", "opentelemetry", "opentelemetry-http", "opentelemetry-otlp", @@ -5406,6 +5263,7 @@ dependencies = [ "predicates", "reqwest", "reth-optimism-payload-builder", + "reth-optimism-primitives", "reth-payload-primitives", "reth-rpc-layer", "serde", @@ -5418,6 +5276,7 @@ dependencies = [ "tracing", "tracing-opentelemetry", "tracing-subscriber", + "url", ] [[package]] @@ -5433,7 +5292,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2c3cc4c2511671f327125da14133d0c5c5d137f006a1017a16f557bc85b16286" dependencies = [ "alloy-rlp", - "arbitrary", "ark-ff 0.3.0", "ark-ff 0.4.2", "bytes", @@ -5474,9 +5332,6 @@ name = "rustc-hash" version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" -dependencies = [ - "rand", -] [[package]] name = "rustc-hex" @@ -5680,6 +5535,7 @@ dependencies = [ "der", "generic-array", "pkcs8", + "serdect", "subtle", "zeroize", ] @@ -5791,17 +5647,6 @@ dependencies = [ "serde", ] -[[package]] -name = "serde_repr" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.90", -] - [[package]] name = "serde_urlencoded" version = "0.7.1" @@ -5844,6 +5689,16 @@ dependencies = [ "syn 2.0.90", ] +[[package]] +name = "serdect" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a84f14a19e9a014bb9f4512488d9829a68e04ecabffb0f9904cd1ace94598177" +dependencies = [ + "base16ct", + "serde", +] + [[package]] name = "sha1" version = "0.10.6" @@ -6004,6 +5859,12 @@ dependencies = [ "der", ] +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + [[package]] name = "static_assertions" version = "1.1.0" @@ -6106,6 +5967,17 @@ dependencies = [ "futures-core", ] +[[package]] +name = "synstructure" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + [[package]] name = "sysinfo" version = "0.32.0" @@ -6265,20 +6137,15 @@ dependencies = [ ] [[package]] -name = "tinyvec" -version = "1.8.0" +name = "tinystr" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" +checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" dependencies = [ - "tinyvec_macros", + "displaydoc", + "zerovec", ] -[[package]] -name = "tinyvec_macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" - [[package]] name = "tokio" version = "1.41.0" @@ -6659,27 +6526,12 @@ version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7e51b68083f157f853b6379db119d1c1be0e6e4dec98101079dec41f6f5cf6df" -[[package]] -name = "unicode-bidi" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ab17db44d7388991a428b2ee655ce0c212e862eff1768a455c58f9aad6e7893" - [[package]] name = "unicode-ident" version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" -[[package]] -name = "unicode-normalization" -version = "0.1.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" -dependencies = [ - "tinyvec", -] - [[package]] name = "unicode-segmentation" version = "1.12.0" @@ -6692,12 +6544,6 @@ version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" -[[package]] -name = "unsigned-varint" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb066959b24b5196ae73cb057f45598450d2c5f71460e98c49b738086eff9c06" - [[package]] name = "untrusted" version = "0.9.0" @@ -6706,15 +6552,27 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.2" +version = "2.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" dependencies = [ "form_urlencoded", "idna", "percent-encoding", ] +[[package]] +name = "utf16_iter" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + [[package]] name = "utf8parse" version = "0.2.2" @@ -6918,7 +6776,7 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.48.0", ] [[package]] @@ -7221,6 +7079,18 @@ dependencies = [ "memchr", ] +[[package]] +name = "write16" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" + +[[package]] +name = "writeable" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" + [[package]] name = "wyz" version = "0.5.1" @@ -7230,6 +7100,30 @@ dependencies = [ "tap", ] +[[package]] +name = "yoke" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", + "synstructure", +] + [[package]] name = "zerocopy" version = "0.7.35" @@ -7251,6 +7145,27 @@ dependencies = [ "syn 2.0.90", ] +[[package]] +name = "zerofrom" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", + "synstructure", +] + [[package]] name = "zeroize" version = "1.8.1" @@ -7271,6 +7186,28 @@ dependencies = [ "syn 2.0.90", ] +[[package]] +name = "zerovec" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + [[package]] name = "zstd" version = "0.13.2" diff --git a/Cargo.toml b/Cargo.toml index 48f4405e..14299359 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,9 +7,10 @@ edition = "2021" op-alloy-rpc-types-engine = "0.10.5" op-alloy-rpc-types = "0.10.5" op-alloy-rpc-jsonrpsee = { version = "0.10.5", features = ["client"] } +alloy-rlp = "0.3.10" alloy-rpc-types-engine = "0.11.1" alloy-rpc-types-eth = "0.11.1" -alloy-primitives = "0.8.21" +alloy-primitives = { version = "0.8.21", features = [ "getrandom" ] } alloy-eips = { version = "0.11.1", features = ["serde"] } tokio = { version = "1", features = ["full"] } tracing = "0.1.4" @@ -28,11 +29,15 @@ http-body-util = "0.1.2" hyper = { version = "1.4.1", features = ["full"] } hyper-util = { version = "0.1", features = ["full"] } serde_json = "1.0.96" -reth-rpc-layer = { git = "https://github.com/paradigmxyz/reth.git", rev = "e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" } -reth-optimism-payload-builder = { git = "https://github.com/paradigmxyz/reth.git", rev = "e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222", features = [ +reth-rpc-layer = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.2.0" } +reth-optimism-payload-builder = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.2.0", features = [ + "optimism", +] } +reth-payload-primitives = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.2.0" } +reth-optimism-primitives = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.2.0", features = [ + "reth-codec", "optimism", ] } -reth-payload-primitives = { git = "https://github.com/paradigmxyz/reth.git", rev = "e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" } opentelemetry = { version = "0.26.0", features = ["trace"] } opentelemetry-http = "0.26.0" opentelemetry-otlp = { version = "0.26.0", features = [ @@ -51,6 +56,7 @@ metrics-process = "2.3.1" metrics-util = "0.18.0" eyre = "0.6.12" paste = "1.0.15" +url = { version = "2.3", default-features = false } # dev dependencies for integration tests time = { version = "0.3.36", features = ["macros", "formatting", "parsing"] } diff --git a/src/integration/mod.rs b/src/integration/mod.rs index e497139d..5d6c5270 100644 --- a/src/integration/mod.rs +++ b/src/integration/mod.rs @@ -663,8 +663,6 @@ impl SimpleBlockGenerator { timestamp: self.timestamp + 1000, // 1 second later prev_randao: B256::ZERO, suggested_fee_recipient: Default::default(), - target_blobs_per_block: None, - max_blobs_per_block: None, }, transactions: None, no_tx_pool: Some(empty_blocks), diff --git a/src/server.rs b/src/server.rs index 979b5675..1f380f60 100644 --- a/src/server.rs +++ b/src/server.rs @@ -22,6 +22,7 @@ use opentelemetry::trace::{Span, TraceContextExt, Tracer}; use opentelemetry::{Context, KeyValue}; use reth_optimism_payload_builder::{OpPayloadAttributes, OpPayloadBuilderAttributes}; use reth_payload_primitives::PayloadBuilderAttributes; +use reth_optimism_primitives::OpTransactionSigned; use tokio::sync::Mutex; use tracing::{error, info}; @@ -412,7 +413,7 @@ impl RollupBoostServer { .payload_trace_context .tracer .start_with_context("build-block", &Context::current()); - let builder_attrs = OpPayloadBuilderAttributes::try_new( + let builder_attrs = OpPayloadBuilderAttributes::::try_new( fork_choice_state.head_block_hash, payload_attributes, 3, From 33e95c5cdbc4fdb40f54c789e55018680db3f72b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Muhammed=20Kadir=20Y=C3=BCcel?= Date: Fri, 28 Feb 2025 12:20:53 +0300 Subject: [PATCH 07/10] chore: formatting --- src/client.rs | 11 ++++- src/server.rs | 120 +++++++++++++++++++++++++++++++++++++++----------- 2 files changed, 104 insertions(+), 27 deletions(-) diff --git a/src/client.rs b/src/client.rs index 53abfafd..32cc1f36 100644 --- a/src/client.rs +++ b/src/client.rs @@ -12,7 +12,9 @@ use jsonrpsee::core::{ClientError, RpcResult}; use jsonrpsee::http_client::transport::HttpBackend; use jsonrpsee::http_client::{HttpClient, HttpClientBuilder}; use jsonrpsee::types::ErrorCode; -use op_alloy_rpc_types_engine::{OpExecutionPayloadEnvelopeV3, OpExecutionPayloadEnvelopeV4, OpPayloadAttributes}; +use op_alloy_rpc_types_engine::{ + OpExecutionPayloadEnvelopeV3, OpExecutionPayloadEnvelopeV4, OpPayloadAttributes, +}; use paste::paste; use std::path::PathBuf; use std::sync::Arc; @@ -195,7 +197,12 @@ impl ExecutionClient { let start = Instant::now(); let response = self .auth_client - .new_payload_v4(payload, versioned_hashes, parent_beacon_block_root, execution_requests) + .new_payload_v4( + payload, + versioned_hashes, + parent_beacon_block_root, + execution_requests, + ) .await .map_err(|e| match e { ClientError::Call(err) => err, diff --git a/src/server.rs b/src/server.rs index 4d2475ba..a0e76595 100644 --- a/src/server.rs +++ b/src/server.rs @@ -16,7 +16,9 @@ use jsonrpsee::types::error::INVALID_REQUEST_CODE; use jsonrpsee::types::{ErrorCode, ErrorObject}; use jsonrpsee::RpcModule; use lru::LruCache; -use op_alloy_rpc_types_engine::{OpExecutionPayloadEnvelopeV3, OpExecutionPayloadEnvelopeV4, OpPayloadAttributes}; +use op_alloy_rpc_types_engine::{ + OpExecutionPayloadEnvelopeV3, OpExecutionPayloadEnvelopeV4, OpPayloadAttributes, +}; use opentelemetry::global::{self, BoxedSpan, BoxedTracer}; use opentelemetry::trace::{Span, TraceContextExt, Tracer}; use opentelemetry::{Context, KeyValue}; @@ -54,7 +56,9 @@ impl Clone for PayloadVersion { fn clone(&self) -> Self { match self { PayloadVersion::V3 => PayloadVersion::V3, - PayloadVersion::V4(execution_requests) => PayloadVersion::V4(execution_requests.clone()) + PayloadVersion::V4(execution_requests) => { + PayloadVersion::V4(execution_requests.clone()) + } } } } @@ -83,8 +87,12 @@ impl OpExecutionPayloadEnvelope { impl Clone for OpExecutionPayloadEnvelope { fn clone(&self) -> Self { match self { - OpExecutionPayloadEnvelope::V3(envelope) => OpExecutionPayloadEnvelope::V3(envelope.clone()), - OpExecutionPayloadEnvelope::V4(envelope) => OpExecutionPayloadEnvelope::V4(envelope.clone()), + OpExecutionPayloadEnvelope::V3(envelope) => { + OpExecutionPayloadEnvelope::V3(envelope.clone()) + } + OpExecutionPayloadEnvelope::V4(envelope) => { + OpExecutionPayloadEnvelope::V4(envelope.clone()) + } } } } @@ -333,7 +341,9 @@ impl EngineApiServer for RollupBoostServer { payload_id: PayloadId, ) -> RpcResult { let start = Instant::now(); - let res = self.get_payload(PayloadVersion::V4(vec![]), payload_id).await; + let res = self + .get_payload(PayloadVersion::V4(vec![]), payload_id) + .await; let elapsed = start.elapsed(); if let Some(metrics) = &self.metrics { metrics.get_payload_v4_total.record(elapsed); @@ -352,7 +362,12 @@ impl EngineApiServer for RollupBoostServer { ) -> RpcResult { let start = Instant::now(); let res = self - .new_payload(PayloadVersion::V3, payload, versioned_hashes, parent_beacon_block_root) + .new_payload( + PayloadVersion::V3, + payload, + versioned_hashes, + parent_beacon_block_root, + ) .await; let elapsed = start.elapsed(); if let Some(metrics) = &self.metrics { @@ -370,7 +385,12 @@ impl EngineApiServer for RollupBoostServer { ) -> RpcResult { let start = Instant::now(); let res = self - .new_payload(PayloadVersion::V4(execution_requests), payload, versioned_hashes, parent_beacon_block_root) + .new_payload( + PayloadVersion::V4(execution_requests), + payload, + versioned_hashes, + parent_beacon_block_root, + ) .await; let elapsed = start.elapsed(); if let Some(metrics) = &self.metrics { @@ -538,12 +558,20 @@ impl RollupBoostServer { ) -> RpcResult { let label = version.as_str(); info!(message = format!("received get_payload_{}", label), "payload_id" = %payload_id); - + let l2_version = version.clone(); let l2_client_future = async move { match l2_version { - PayloadVersion::V3 => self.l2_client.get_payload_v3(payload_id).await.map(|(payload, source)| (OpExecutionPayloadEnvelope::V3(payload), source)), - PayloadVersion::V4(_) => self.l2_client.get_payload_v4(payload_id).await.map(|(payload, source)| (OpExecutionPayloadEnvelope::V4(payload), source)), + PayloadVersion::V3 => self + .l2_client + .get_payload_v3(payload_id) + .await + .map(|(payload, source)| (OpExecutionPayloadEnvelope::V3(payload), source)), + PayloadVersion::V4(_) => self + .l2_client + .get_payload_v4(payload_id) + .await + .map(|(payload, source)| (OpExecutionPayloadEnvelope::V4(payload), source)), } }; @@ -604,25 +632,37 @@ impl RollupBoostServer { e })?; (OpExecutionPayloadEnvelope::V3(payload), source) - }, + } PayloadVersion::V4(_) => { let (payload, source) = builder.get_payload_v4(external_payload_id).await.map_err(|e| { error!(message = "error calling get_payload_v4 from builder", "url" = ?builder.auth_rpc, "error" = %e, "local_payload_id" = %payload_id, "external_payload_id" = %external_payload_id); e })?; (OpExecutionPayloadEnvelope::V4(payload), source) - }, + } }; - let block_hash = ExecutionPayload::from(payload.clone().execution_payload()).block_hash(); + let block_hash = + ExecutionPayload::from(payload.clone().execution_payload()).block_hash(); info!(message = "received payload from builder", "local_payload_id" = %payload_id, "external_payload_id" = %external_payload_id, "block_hash" = %block_hash); // Send the payload to the local execution engine with engine_newPayload to validate the block from the builder. // Otherwise, we do not want to risk the network to a halt since op-node will not be able to propose the block. // If validation fails, return the local block since that one has already been validated. let l2_call = match version { - PayloadVersion::V3 => self.l2_client.auth_client.new_payload_v3(payload.execution_payload(), vec![], payload.parent_beacon_block_root()), - PayloadVersion::V4(execution_requests) => self.l2_client.auth_client.new_payload_v4(payload.execution_payload(), vec![], payload.parent_beacon_block_root(), execution_requests) + PayloadVersion::V3 => self.l2_client.auth_client.new_payload_v3( + payload.execution_payload(), + vec![], + payload.parent_beacon_block_root(), + ), + PayloadVersion::V4(execution_requests) => { + self.l2_client.auth_client.new_payload_v4( + payload.execution_payload(), + vec![], + payload.parent_beacon_block_root(), + execution_requests, + ) + } }; let payload_status = l2_call.await.map_err(|e| { error!(message = format!("error calling new_payload_{} to validate builder payload", label), "url" = ?self.l2_client.auth_rpc, "error" = %e, "local_payload_id" = %payload_id, "external_payload_id" = %external_payload_id); @@ -722,8 +762,25 @@ impl RollupBoostServer { let builder_versioned_hashes = versioned_hashes.clone(); tokio::spawn(async move { let new_payload_response = match builder_version { - PayloadVersion::V3 => builder.new_payload_v3(builder_payload, builder_versioned_hashes, parent_beacon_block_root).await, - PayloadVersion::V4(execution_requests) => builder.new_payload_v4(builder_payload, builder_versioned_hashes, parent_beacon_block_root, execution_requests).await, + PayloadVersion::V3 => { + builder + .new_payload_v3( + builder_payload, + builder_versioned_hashes, + parent_beacon_block_root, + ) + .await + } + PayloadVersion::V4(execution_requests) => { + builder + .new_payload_v4( + builder_payload, + builder_versioned_hashes, + parent_beacon_block_root, + execution_requests, + ) + .await + } }; let _ = new_payload_response .map(|response: PayloadStatus| { @@ -741,12 +798,23 @@ impl RollupBoostServer { }; }); } - + match version { - PayloadVersion::V3 => self.l2_client - .new_payload_v3(payload, versioned_hashes, parent_beacon_block_root).await, - PayloadVersion::V4(execution_requests) => self.l2_client - .new_payload_v4(payload, versioned_hashes, parent_beacon_block_root, execution_requests).await, + PayloadVersion::V3 => { + self.l2_client + .new_payload_v3(payload, versioned_hashes, parent_beacon_block_root) + .await + } + PayloadVersion::V4(execution_requests) => { + self.l2_client + .new_payload_v4( + payload, + versioned_hashes, + parent_beacon_block_root, + execution_requests, + ) + .await + } } } } @@ -1037,7 +1105,8 @@ mod tests { assert!(new_payload_response.is_ok()); let new_payload_requests = test_harness.l2_mock.new_payload_v4_requests.clone(); let new_payload_requests_mu = new_payload_requests.lock().unwrap(); - let new_payload_requests_builder = test_harness.builder_mock.new_payload_v4_requests.clone(); + let new_payload_requests_builder = + test_harness.builder_mock.new_payload_v4_requests.clone(); let new_payload_requests_builder_mu = new_payload_requests_builder.lock().unwrap(); assert_eq!(new_payload_requests_mu.len(), 1); assert_eq!(new_payload_requests_builder_mu.len(), 0); @@ -1075,7 +1144,7 @@ mod tests { assert_eq!(new_payload_requests_mu.len(), 2); let req: &PayloadId = get_payload_requests_mu.first().unwrap(); assert_eq!(*req, PayloadId::new([0, 0, 0, 0, 0, 0, 0, 1])); - + // test get_payload_v4 success let get_payload_response = test_harness .client @@ -1084,7 +1153,8 @@ mod tests { assert!(get_payload_response.is_ok()); let get_payload_requests = test_harness.l2_mock.get_payload_v4_requests.clone(); let get_payload_requests_mu = get_payload_requests.lock().unwrap(); - let get_payload_requests_builder = test_harness.builder_mock.get_payload_v4_requests.clone(); + let get_payload_requests_builder = + test_harness.builder_mock.get_payload_v4_requests.clone(); let get_payload_requests_builder_mu = get_payload_requests_builder.lock().unwrap(); let new_payload_requests = test_harness.l2_mock.new_payload_v4_requests.clone(); let new_payload_requests_mu = new_payload_requests.lock().unwrap(); From 2663591b06403397ce6f6089ee37cdd2eb76e6bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Muhammed=20Kadir=20Y=C3=BCcel?= Date: Thu, 6 Mar 2025 14:44:14 +0300 Subject: [PATCH 08/10] refactor: reduce code duplication in test --- src/server.rs | 106 ++++++++++++++++++++------------------------------ 1 file changed, 42 insertions(+), 64 deletions(-) diff --git a/src/server.rs b/src/server.rs index fdf077e8..52c01993 100644 --- a/src/server.rs +++ b/src/server.rs @@ -864,6 +864,42 @@ mod tests { impl MockEngineServer { pub fn new() -> Self { + let execution_payload = ExecutionPayloadV3 { + payload_inner: ExecutionPayloadV2 { + payload_inner: ExecutionPayloadV1 { + base_fee_per_gas: U256::from(7u64), + block_number: 0xa946u64, + block_hash: hex!("a5ddd3f286f429458a39cafc13ffe89295a7efa8eb363cf89a1a4887dbcf272b").into(), + logs_bloom: hex!("00200004000000000000000080000000000200000000000000000000000000000000200000000000000000000000000000000000800000000200000000000000000000000000000000000008000000200000000000000000000001000000000000000000000000000000800000000000000000000100000000000030000000000000000040000000000000000000000000000000000800080080404000000000000008000000000008200000000000200000000000000000000000000000000000000002000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000100000000000000000000").into(), + extra_data: hex!("d883010d03846765746888676f312e32312e31856c696e7578").into(), + gas_limit: 0x1c9c380, + gas_used: 0x1f4a9, + timestamp: 0x651f35b8, + fee_recipient: hex!("f97e180c050e5ab072211ad2c213eb5aee4df134").into(), + parent_hash: hex!("d829192799c73ef28a7332313b3c03af1f2d5da2c36f8ecfafe7a83a3bfb8d1e").into(), + prev_randao: hex!("753888cc4adfbeb9e24e01c84233f9d204f4a9e1273f0e29b43c4c148b2b8b7e").into(), + receipts_root: hex!("4cbc48e87389399a0ea0b382b1c46962c4b8e398014bf0cc610f9c672bee3155").into(), + state_root: hex!("017d7fa2b5adb480f5e05b2c95cb4186e12062eed893fc8822798eed134329d1").into(), + transactions: vec![], + }, + withdrawals: vec![], + }, + blob_gas_used: 0xc0000, + excess_blob_gas: 0x580000, + }; + + let base_payload_envelope = OpExecutionPayloadEnvelopeV3{ + execution_payload: execution_payload.clone(), + block_value: U256::from(0), + blobs_bundle: BlobsBundleV1{ + commitments: vec![], + proofs: vec![], + blobs: vec![], + }, + should_override_builder: false, + parent_beacon_block_root: B256::ZERO, + }; + Self { fcu_requests: Arc::new(Mutex::new(vec![])), get_payload_requests: Arc::new(Mutex::new(vec![])), @@ -871,71 +907,13 @@ mod tests { new_payload_requests: Arc::new(Mutex::new(vec![])), new_payload_v4_requests: Arc::new(Mutex::new(vec![])), fcu_response: Ok(ForkchoiceUpdated::new(PayloadStatus::from_status(PayloadStatusEnum::Valid))), - get_payload_response: Ok(OpExecutionPayloadEnvelopeV3{ - execution_payload: ExecutionPayloadV3 { - payload_inner: ExecutionPayloadV2 { - payload_inner: ExecutionPayloadV1 { - base_fee_per_gas: U256::from(7u64), - block_number: 0xa946u64, - block_hash: hex!("a5ddd3f286f429458a39cafc13ffe89295a7efa8eb363cf89a1a4887dbcf272b").into(), - logs_bloom: hex!("00200004000000000000000080000000000200000000000000000000000000000000200000000000000000000000000000000000800000000200000000000000000000000000000000000008000000200000000000000000000001000000000000000000000000000000800000000000000000000100000000000030000000000000000040000000000000000000000000000000000800080080404000000000000008000000000008200000000000200000000000000000000000000000000000000002000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000100000000000000000000").into(), - extra_data: hex!("d883010d03846765746888676f312e32312e31856c696e7578").into(), - gas_limit: 0x1c9c380, - gas_used: 0x1f4a9, - timestamp: 0x651f35b8, - fee_recipient: hex!("f97e180c050e5ab072211ad2c213eb5aee4df134").into(), - parent_hash: hex!("d829192799c73ef28a7332313b3c03af1f2d5da2c36f8ecfafe7a83a3bfb8d1e").into(), - prev_randao: hex!("753888cc4adfbeb9e24e01c84233f9d204f4a9e1273f0e29b43c4c148b2b8b7e").into(), - receipts_root: hex!("4cbc48e87389399a0ea0b382b1c46962c4b8e398014bf0cc610f9c672bee3155").into(), - state_root: hex!("017d7fa2b5adb480f5e05b2c95cb4186e12062eed893fc8822798eed134329d1").into(), - transactions: vec![], - }, - withdrawals: vec![], - }, - blob_gas_used: 0xc0000, - excess_blob_gas: 0x580000, - }, - block_value: U256::from(0), - blobs_bundle: BlobsBundleV1{ - commitments: vec![], - proofs: vec![], - blobs: vec![], - }, - should_override_builder: false, - parent_beacon_block_root: B256::ZERO, - }), + get_payload_response: Ok(base_payload_envelope.clone()), get_payload_v4_response: Ok(OpExecutionPayloadEnvelopeV4{ - execution_payload: ExecutionPayloadV3 { - payload_inner: ExecutionPayloadV2 { - payload_inner: ExecutionPayloadV1 { - base_fee_per_gas: U256::from(7u64), - block_number: 0xa946u64, - block_hash: hex!("a5ddd3f286f429458a39cafc13ffe89295a7efa8eb363cf89a1a4887dbcf272b").into(), - logs_bloom: hex!("00200004000000000000000080000000000200000000000000000000000000000000200000000000000000000000000000000000800000000200000000000000000000000000000000000008000000200000000000000000000001000000000000000000000000000000800000000000000000000100000000000030000000000000000040000000000000000000000000000000000800080080404000000000000008000000000008200000000000200000000000000000000000000000000000000002000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000100000000000000000000").into(), - extra_data: hex!("d883010d03846765746888676f312e32312e31856c696e7578").into(), - gas_limit: 0x1c9c380, - gas_used: 0x1f4a9, - timestamp: 0x651f35b8, - fee_recipient: hex!("f97e180c050e5ab072211ad2c213eb5aee4df134").into(), - parent_hash: hex!("d829192799c73ef28a7332313b3c03af1f2d5da2c36f8ecfafe7a83a3bfb8d1e").into(), - prev_randao: hex!("753888cc4adfbeb9e24e01c84233f9d204f4a9e1273f0e29b43c4c148b2b8b7e").into(), - receipts_root: hex!("4cbc48e87389399a0ea0b382b1c46962c4b8e398014bf0cc610f9c672bee3155").into(), - state_root: hex!("017d7fa2b5adb480f5e05b2c95cb4186e12062eed893fc8822798eed134329d1").into(), - transactions: vec![], - }, - withdrawals: vec![], - }, - blob_gas_used: 0xc0000, - excess_blob_gas: 0x580000, - }, - block_value: U256::from(0), - blobs_bundle: BlobsBundleV1{ - commitments: vec![], - proofs: vec![], - blobs: vec![], - }, - should_override_builder: false, - parent_beacon_block_root: B256::ZERO, + execution_payload: base_payload_envelope.execution_payload.clone(), + block_value: base_payload_envelope.block_value, + blobs_bundle: base_payload_envelope.blobs_bundle.clone(), + should_override_builder: base_payload_envelope.should_override_builder, + parent_beacon_block_root: base_payload_envelope.parent_beacon_block_root, execution_requests: vec![], }), override_payload_id: None, From 4eb5e5187722ecaa7c7e43bff7e74f3eaa429738 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Muhammed=20Kadir=20Y=C3=BCcel?= Date: Fri, 7 Mar 2025 21:55:53 +0300 Subject: [PATCH 09/10] refactor: versioned enums --- src/server.rs | 253 ++++++++++++++++++++++++++++---------------------- 1 file changed, 142 insertions(+), 111 deletions(-) diff --git a/src/server.rs b/src/server.rs index 52c01993..e85f86b9 100644 --- a/src/server.rs +++ b/src/server.rs @@ -38,31 +38,133 @@ pub struct PayloadTraceContext { local_to_external_payload_ids: Arc>>, } -enum PayloadVersion { +enum GetPayloadVersion { V3, - V4(Vec), + V4, } -impl PayloadVersion { +impl GetPayloadVersion { pub fn as_str(&self) -> &'static str { match self { - PayloadVersion::V3 => "v3", - PayloadVersion::V4(_) => "v4", + GetPayloadVersion::V3 => "v3", + GetPayloadVersion::V4 => "v4", + } + } + + pub async fn get_payload( + &self, + client: &ExecutionClient, + payload_id: PayloadId, + ) -> RpcResult<(OpExecutionPayloadEnvelope, PayloadSource)> { + match self { + GetPayloadVersion::V3 => client + .get_payload_v3(payload_id) + .await + .map(|(payload, source)| (OpExecutionPayloadEnvelope::V3(payload), source)), + GetPayloadVersion::V4 => client + .get_payload_v4(payload_id) + .await + .map(|(payload, source)| (OpExecutionPayloadEnvelope::V4(payload), source)), + } + } +} + +impl Clone for GetPayloadVersion { + fn clone(&self) -> Self { + match self { + GetPayloadVersion::V3 => GetPayloadVersion::V3, + GetPayloadVersion::V4 => GetPayloadVersion::V4, + } + } +} + +struct NewPayloadV3 { + payload: ExecutionPayloadV3, + versioned_hashes: Vec, + parent_beacon_block_root: B256, +} + +impl Clone for NewPayloadV3 { + fn clone(&self) -> Self { + NewPayloadV3 { + payload: self.payload.clone(), + versioned_hashes: self.versioned_hashes.clone(), + parent_beacon_block_root: self.parent_beacon_block_root, } } } -impl Clone for PayloadVersion { +struct NewPayloadV4 { + payload: ExecutionPayloadV3, + versioned_hashes: Vec, + parent_beacon_block_root: B256, + execution_requests: Vec, +} + +impl Clone for NewPayloadV4 { fn clone(&self) -> Self { + NewPayloadV4 { + payload: self.payload.clone(), + versioned_hashes: self.versioned_hashes.clone(), + parent_beacon_block_root: self.parent_beacon_block_root, + execution_requests: self.execution_requests.clone(), + } + } +} +enum NewPayloadVersion { + V3(NewPayloadV3), + V4(NewPayloadV4), +} + +impl NewPayloadVersion { + pub fn as_str(&self) -> &'static str { match self { - PayloadVersion::V3 => PayloadVersion::V3, - PayloadVersion::V4(execution_requests) => { - PayloadVersion::V4(execution_requests.clone()) + NewPayloadVersion::V3(_) => "v3", + NewPayloadVersion::V4(_) => "v4", + } + } + + pub fn execution_payload(&self) -> ExecutionPayloadV3 { + match self { + NewPayloadVersion::V3(payload) => payload.payload.clone(), + NewPayloadVersion::V4(payload) => payload.payload.clone(), + } + } + + pub async fn new_payload(&self, client: &ExecutionClient) -> RpcResult { + match self { + NewPayloadVersion::V3(payload) => { + client + .new_payload_v3( + payload.payload.clone(), + payload.versioned_hashes.clone(), + payload.parent_beacon_block_root, + ) + .await + } + NewPayloadVersion::V4(payload) => { + client + .new_payload_v4( + payload.payload.clone(), + payload.versioned_hashes.clone(), + payload.parent_beacon_block_root, + payload.execution_requests.clone(), + ) + .await } } } } +impl Clone for NewPayloadVersion { + fn clone(&self) -> Self { + match self { + NewPayloadVersion::V3(payload) => NewPayloadVersion::V3(payload.clone()), + NewPayloadVersion::V4(payload) => NewPayloadVersion::V4(payload.clone()), + } + } +} + enum OpExecutionPayloadEnvelope { V3(OpExecutionPayloadEnvelopeV3), V4(OpExecutionPayloadEnvelopeV4), @@ -325,7 +427,7 @@ impl EngineApiServer for RollupBoostServer { payload_id: PayloadId, ) -> RpcResult { let start = Instant::now(); - let res = self.get_payload(PayloadVersion::V3, payload_id).await; + let res = self.get_payload(GetPayloadVersion::V3, payload_id).await; let elapsed = start.elapsed(); if let Some(metrics) = &self.metrics { metrics.get_payload_v3_total.record(elapsed); @@ -341,9 +443,7 @@ impl EngineApiServer for RollupBoostServer { payload_id: PayloadId, ) -> RpcResult { let start = Instant::now(); - let res = self - .get_payload(PayloadVersion::V4(vec![]), payload_id) - .await; + let res = self.get_payload(GetPayloadVersion::V4, payload_id).await; let elapsed = start.elapsed(); if let Some(metrics) = &self.metrics { metrics.get_payload_v4_total.record(elapsed); @@ -362,12 +462,11 @@ impl EngineApiServer for RollupBoostServer { ) -> RpcResult { let start = Instant::now(); let res = self - .new_payload( - PayloadVersion::V3, + .new_payload(NewPayloadVersion::V3(NewPayloadV3 { payload, versioned_hashes, parent_beacon_block_root, - ) + })) .await; let elapsed = start.elapsed(); if let Some(metrics) = &self.metrics { @@ -385,12 +484,12 @@ impl EngineApiServer for RollupBoostServer { ) -> RpcResult { let start = Instant::now(); let res = self - .new_payload( - PayloadVersion::V4(execution_requests), + .new_payload(NewPayloadVersion::V4(NewPayloadV4 { payload, versioned_hashes, parent_beacon_block_root, - ) + execution_requests, + })) .await; let elapsed = start.elapsed(); if let Some(metrics) = &self.metrics { @@ -552,27 +651,15 @@ impl RollupBoostServer { async fn get_payload( &self, - version: PayloadVersion, + version: GetPayloadVersion, payload_id: PayloadId, ) -> RpcResult { let label = version.as_str(); info!(message = format!("received get_payload_{}", label), "payload_id" = %payload_id); let l2_version = version.clone(); - let l2_client_future = async move { - match l2_version { - PayloadVersion::V3 => self - .l2_client - .get_payload_v3(payload_id) - .await - .map(|(payload, source)| (OpExecutionPayloadEnvelope::V3(payload), source)), - PayloadVersion::V4(_) => self - .l2_client - .get_payload_v4(payload_id) - .await - .map(|(payload, source)| (OpExecutionPayloadEnvelope::V4(payload), source)), - } - }; + let l2_client_future = + async move { l2_version.get_payload(&self.l2_client, payload_id).await }; let builder_client_future = Box::pin(async move { let execution_mode = self.execution_mode.lock().await; @@ -624,22 +711,10 @@ impl RollupBoostServer { } let builder = self.builder_client.clone(); - let (payload, source) = match version { - PayloadVersion::V3 => { - let (payload, source) = builder.get_payload_v3(external_payload_id).await.map_err(|e| { - error!(message = "error calling get_payload_v3 from builder", "url" = ?builder.auth_rpc, "error" = %e, "local_payload_id" = %payload_id, "external_payload_id" = %external_payload_id); - e - })?; - (OpExecutionPayloadEnvelope::V3(payload), source) - } - PayloadVersion::V4(_) => { - let (payload, source) = builder.get_payload_v4(external_payload_id).await.map_err(|e| { - error!(message = "error calling get_payload_v4 from builder", "url" = ?builder.auth_rpc, "error" = %e, "local_payload_id" = %payload_id, "external_payload_id" = %external_payload_id); - e - })?; - (OpExecutionPayloadEnvelope::V4(payload), source) - } - }; + let (payload, source) = version.get_payload(&builder, external_payload_id).await.map_err(|e| { + error!(message = "error calling get_payload from builder", "url" = ?builder.auth_rpc, "error" = %e, "local_payload_id" = %payload_id, "external_payload_id" = %external_payload_id); + e + })?; let block_hash = ExecutionPayload::from(payload.clone().execution_payload()).block_hash(); @@ -649,19 +724,17 @@ impl RollupBoostServer { // Otherwise, we do not want to risk the network to a halt since op-node will not be able to propose the block. // If validation fails, return the local block since that one has already been validated. let l2_call = match version { - PayloadVersion::V3 => self.l2_client.auth_client.new_payload_v3( + GetPayloadVersion::V3 => self.l2_client.auth_client.new_payload_v3( payload.execution_payload(), vec![], payload.parent_beacon_block_root(), ), - PayloadVersion::V4(execution_requests) => { - self.l2_client.auth_client.new_payload_v4( - payload.execution_payload(), - vec![], - payload.parent_beacon_block_root(), - execution_requests, - ) - } + GetPayloadVersion::V4 => self.l2_client.auth_client.new_payload_v4( + payload.execution_payload(), + vec![], + payload.parent_beacon_block_root(), + vec![], + ), }; let payload_status = l2_call.await.map_err(|e| { error!(message = format!("error calling new_payload_{} to validate builder payload", label), "url" = ?self.l2_client.auth_rpc, "error" = %e, "local_payload_id" = %payload_id, "external_payload_id" = %external_payload_id); @@ -720,15 +793,9 @@ impl RollupBoostServer { }) } - async fn new_payload( - &self, - version: PayloadVersion, - payload: ExecutionPayloadV3, - versioned_hashes: Vec, - parent_beacon_block_root: B256, - ) -> RpcResult { + async fn new_payload(&self, version: NewPayloadVersion) -> RpcResult { let label = version.as_str(); - let execution_payload = ExecutionPayload::from(payload.clone()); + let execution_payload = ExecutionPayload::from(version.execution_payload()); let block_hash = execution_payload.block_hash(); let parent_hash = execution_payload.parent_hash(); info!(message = format!("received new_payload_{}", label), "block_hash" = %block_hash); @@ -757,30 +824,8 @@ impl RollupBoostServer { let builder = self.builder_client.clone(); let builder_version = version.clone(); - let builder_payload = payload.clone(); - let builder_versioned_hashes = versioned_hashes.clone(); tokio::spawn(async move { - let new_payload_response = match builder_version { - PayloadVersion::V3 => { - builder - .new_payload_v3( - builder_payload, - builder_versioned_hashes, - parent_beacon_block_root, - ) - .await - } - PayloadVersion::V4(execution_requests) => { - builder - .new_payload_v4( - builder_payload, - builder_versioned_hashes, - parent_beacon_block_root, - execution_requests, - ) - .await - } - }; + let new_payload_response = builder_version.new_payload(&builder).await; let _ = new_payload_response .map(|response: PayloadStatus| { if response.is_invalid() { @@ -798,23 +843,7 @@ impl RollupBoostServer { }); } - match version { - PayloadVersion::V3 => { - self.l2_client - .new_payload_v3(payload, versioned_hashes, parent_beacon_block_root) - .await - } - PayloadVersion::V4(execution_requests) => { - self.l2_client - .new_payload_v4( - payload, - versioned_hashes, - parent_beacon_block_root, - execution_requests, - ) - .await - } - } + version.new_payload(&self.l2_client).await } } @@ -888,10 +917,10 @@ mod tests { excess_blob_gas: 0x580000, }; - let base_payload_envelope = OpExecutionPayloadEnvelopeV3{ + let base_payload_envelope = OpExecutionPayloadEnvelopeV3 { execution_payload: execution_payload.clone(), block_value: U256::from(0), - blobs_bundle: BlobsBundleV1{ + blobs_bundle: BlobsBundleV1 { commitments: vec![], proofs: vec![], blobs: vec![], @@ -906,9 +935,11 @@ mod tests { get_payload_v4_requests: Arc::new(Mutex::new(vec![])), new_payload_requests: Arc::new(Mutex::new(vec![])), new_payload_v4_requests: Arc::new(Mutex::new(vec![])), - fcu_response: Ok(ForkchoiceUpdated::new(PayloadStatus::from_status(PayloadStatusEnum::Valid))), + fcu_response: Ok(ForkchoiceUpdated::new(PayloadStatus::from_status( + PayloadStatusEnum::Valid, + ))), get_payload_response: Ok(base_payload_envelope.clone()), - get_payload_v4_response: Ok(OpExecutionPayloadEnvelopeV4{ + get_payload_v4_response: Ok(OpExecutionPayloadEnvelopeV4 { execution_payload: base_payload_envelope.execution_payload.clone(), block_value: base_payload_envelope.block_value, blobs_bundle: base_payload_envelope.blobs_bundle.clone(), From 16e9a4bc209be397198e98e7502f8ce58f002fbc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Muhammed=20Kadir=20Y=C3=BCcel?= Date: Fri, 7 Mar 2025 22:13:09 +0300 Subject: [PATCH 10/10] feat: add isthmus support `OpExecutionPayloadV4` for `new_payload_v4` --- Cargo.lock | 390 +++++++++++++++++++++++++++++++++++--------------- Cargo.toml | 14 +- src/client.rs | 7 +- src/server.rs | 33 +++-- 4 files changed, 306 insertions(+), 138 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 17289c7d..9e53b962 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -55,9 +55,9 @@ dependencies = [ [[package]] name = "alloy-consensus" -version = "0.7.3" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a101d4d016f47f13890a74290fdd17b05dd175191d9337bc600791fb96e4dea8" +checksum = "5758065889c3e6c7ba7bf0a2b02d0f635747074a5527e2a77ba2615ccf06748f" dependencies = [ "alloy-eips", "alloy-primitives", @@ -66,20 +66,41 @@ dependencies = [ "alloy-trie", "auto_impl", "c-kzg", - "derive_more", + "derive_more 2.0.1", + "either", + "k256", + "once_cell", + "rand", "serde", + "serde_with", + "thiserror 2.0.4", ] [[package]] name = "alloy-consensus-any" -version = "0.7.3" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa60357dda9a3d0f738f18844bd6d0f4a5924cc5cf00bfad2ff1369897966123" +checksum = "1b34df6de2299d703ce4686717e60831aa7c47648fa2b07bf4dfa00508e4ec81" dependencies = [ "alloy-consensus", "alloy-eips", "alloy-primitives", "alloy-rlp", + "alloy-serde", + "serde", +] + +[[package]] +name = "alloy-eip2124" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "675264c957689f0fd75f5993a73123c2cc3b5c235a38f5b9037fe6c826bfb2c0" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "crc", + "serde", + "thiserror 2.0.4", ] [[package]] @@ -95,29 +116,32 @@ dependencies = [ [[package]] name = "alloy-eip7702" -version = "0.4.2" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c986539255fb839d1533c128e190e557e52ff652c9ef62939e233a81dd93f7e" +checksum = "9b15b13d38b366d01e818fe8e710d4d702ef7499eacd44926a06171dd9585d0c" dependencies = [ "alloy-primitives", "alloy-rlp", - "derive_more", "serde", + "thiserror 2.0.4", ] [[package]] name = "alloy-eips" -version = "0.7.3" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b6755b093afef5925f25079dd5a7c8d096398b804ba60cb5275397b06b31689" +checksum = "44ddbb31b8112866c5db62f61fb3bc4b990d4fecd018bd5449102ebabd1d73fd" dependencies = [ + "alloy-eip2124", "alloy-eip2930", "alloy-eip7702", "alloy-primitives", "alloy-rlp", "alloy-serde", + "auto_impl", "c-kzg", - "derive_more", + "derive_more 2.0.1", + "either", "ethereum_ssz", "ethereum_ssz_derive", "once_cell", @@ -125,11 +149,23 @@ dependencies = [ "sha2", ] +[[package]] +name = "alloy-json-abi" +version = "0.8.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "125601804507fef5ae7debcbf800906b12741f19800c1c05b953d0f1b990131a" +dependencies = [ + "alloy-primitives", + "alloy-sol-type-parser", + "serde", + "serde_json", +] + [[package]] name = "alloy-network-primitives" -version = "0.7.3" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c20219d1ad261da7a6331c16367214ee7ded41d001fabbbd656fbf71898b2773" +checksum = "7117a8abeb3b5b764beb228b2f2c45e991864533d9cb6a0f2e4896a55b968e7c" dependencies = [ "alloy-consensus", "alloy-eips", @@ -140,15 +176,15 @@ dependencies = [ [[package]] name = "alloy-primitives" -version = "0.8.21" +version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "478bedf4d24e71ea48428d1bc278553bd7c6ae07c30ca063beb0b09fe58a9e74" +checksum = "8c66bb6715b7499ea755bde4c96223ae8eb74e05c014ab38b9db602879ffb825" dependencies = [ "alloy-rlp", "bytes", "cfg-if 1.0.0", "const-hex", - "derive_more", + "derive_more 2.0.1", "foldhash", "getrandom 0.2.15", "hashbrown 0.15.0", @@ -190,16 +226,16 @@ dependencies = [ [[package]] name = "alloy-rpc-types-engine" -version = "0.7.3" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d297268357e3eae834ddd6888b15f764cbc0f4b3be9265f5f6ec239013f3d68" +checksum = "a05fbb14c707f1000b013dc842f7acc00ab856b28bdc1ffeb8aacf9f31118d70" dependencies = [ "alloy-consensus", "alloy-eips", "alloy-primitives", "alloy-rlp", "alloy-serde", - "derive_more", + "derive_more 2.0.1", "ethereum_ssz", "ethereum_ssz_derive", "jsonwebtoken", @@ -210,9 +246,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-eth" -version = "0.7.3" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0600b8b5e2dc0cab12cbf91b5a885c35871789fb7b3a57b434bd4fced5b7a8b" +checksum = "8b444e5a081bbc8e06dd1a524a3edfe2218490b5c57278cf6f22ab0956793306" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -222,17 +258,17 @@ dependencies = [ "alloy-rlp", "alloy-serde", "alloy-sol-types", - "derive_more", "itertools 0.13.0", "serde", "serde_json", + "thiserror 2.0.4", ] [[package]] name = "alloy-serde" -version = "0.7.3" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9afa753a97002a33b2ccb707d9f15f31c81b8c1b786c95b73cc62bb1d1fd0c3f" +checksum = "c35fd0010ad1e00a8214e92739b3560037bf970f33437a432743062af8af6271" dependencies = [ "alloy-primitives", "serde", @@ -241,9 +277,9 @@ dependencies = [ [[package]] name = "alloy-sol-macro" -version = "0.8.21" +version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2708e27f58d747423ae21d31b7a6625159bd8d867470ddd0256f396a68efa11" +checksum = "c7f9c3c7bc1f4e334e5c5fc59ec8dac894973a71b11da09065affc6094025049" dependencies = [ "alloy-sol-macro-expander", "alloy-sol-macro-input", @@ -255,9 +291,9 @@ dependencies = [ [[package]] name = "alloy-sol-macro-expander" -version = "0.8.21" +version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6b7984d7e085dec382d2c5ef022b533fcdb1fe6129200af30ebf5afddb6a361" +checksum = "46ff7aa715eb2404cb87fa94390d2c5d5addd70d9617e20b2398ee6f48cb21f0" dependencies = [ "alloy-sol-macro-input", "const-hex", @@ -273,9 +309,9 @@ dependencies = [ [[package]] name = "alloy-sol-macro-input" -version = "0.8.21" +version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33d6a9fc4ed1a3c70bdb2357bec3924551c1a59f24e5a04a74472c755b37f87d" +checksum = "6f105fa700140c0cc6e2c3377adef650c389ac57b8ead8318a2e6bd52f1ae841" dependencies = [ "const-hex", "dunce", @@ -286,15 +322,27 @@ dependencies = [ "syn-solidity", ] +[[package]] +name = "alloy-sol-type-parser" +version = "0.8.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c649acc6c9d3893e392c737faeadce30b4a1751eed148ae43bc2f27f29c4480c" +dependencies = [ + "serde", + "winnow 0.7.3", +] + [[package]] name = "alloy-sol-types" -version = "0.8.15" +version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1174cafd6c6d810711b4e00383037bdb458efc4fe3dbafafa16567e0320c54d8" +checksum = "5f819635439ebb06aa13c96beac9b2e7360c259e90f5160a6848ae0d94d10452" dependencies = [ + "alloy-json-abi", "alloy-primitives", "alloy-sol-macro", "const-hex", + "serde", ] [[package]] @@ -306,13 +354,28 @@ dependencies = [ "alloy-primitives", "alloy-rlp", "arrayvec", - "derive_more", + "derive_more 1.0.0", "nybbles", "serde", "smallvec", "tracing", ] +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + [[package]] name = "anstream" version = "0.6.17" @@ -913,6 +976,19 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "chrono" +version = "0.4.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a7964611d71df112cb1730f2ee67324fcf4d0fc6606acbbe9bfe06df124637c" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "num-traits", + "serde", + "windows-link", +] + [[package]] name = "clang-sys" version = "1.8.1" @@ -1033,6 +1109,21 @@ dependencies = [ "libc", ] +[[package]] +name = "crc" +version = "3.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69e6e4d7b33a94f0991c26729976b10ebde1d34c3ee82408fb536164fa10d636" +dependencies = [ + "crc-catalog", +] + +[[package]] +name = "crc-catalog" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" + [[package]] name = "crc32fast" version = "1.4.2" @@ -1042,6 +1133,12 @@ dependencies = [ "cfg-if 1.0.0", ] +[[package]] +name = "critical-section" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" + [[package]] name = "crossbeam-epoch" version = "0.9.18" @@ -1152,6 +1249,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" dependencies = [ "powerfmt", + "serde", ] [[package]] @@ -1171,7 +1269,16 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" dependencies = [ - "derive_more-impl", + "derive_more-impl 1.0.0", +] + +[[package]] +name = "derive_more" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678" +dependencies = [ + "derive_more-impl 2.0.1", ] [[package]] @@ -1186,6 +1293,18 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "derive_more-impl" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", + "unicode-xid", +] + [[package]] name = "difflib" version = "0.4.0" @@ -1252,15 +1371,19 @@ dependencies = [ "digest 0.10.7", "elliptic-curve", "rfc6979", + "serdect", "signature", "spki", ] [[package]] name = "either" -version = "1.13.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" +dependencies = [ + "serde", +] [[package]] name = "elliptic-curve" @@ -1277,6 +1400,7 @@ dependencies = [ "pkcs8", "rand_core", "sec1", + "serdect", "subtle", "zeroize", ] @@ -1918,6 +2042,29 @@ dependencies = [ "tracing", ] +[[package]] +name = "iana-time-zone" +version = "0.1.61" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows-core 0.52.0", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + [[package]] name = "icu_collections" version = "1.5.0" @@ -2097,6 +2244,7 @@ checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ "autocfg", "hashbrown 0.12.3", + "serde", ] [[package]] @@ -2399,6 +2547,7 @@ dependencies = [ "ecdsa", "elliptic-curve", "once_cell", + "serdect", "sha2", ] @@ -2769,7 +2918,9 @@ version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8983bb634df7248924ee0c4c3a749609b5abcb082c28fffe3254b3eb3602b307" dependencies = [ + "alloy-rlp", "const-hex", + "proptest", "serde", "smallvec", ] @@ -2788,80 +2939,42 @@ name = "once_cell" version = "1.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" - -[[package]] -name = "op-alloy-consensus" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78f0daa0d0936d436a21b57571b1e27c5663aa2ab62f6edae5ba5be999f9f93e" dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-primitives", - "alloy-rlp", - "alloy-serde", - "derive_more", - "serde", - "thiserror 2.0.4", -] - -[[package]] -name = "op-alloy-genesis" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3eb0964932faa7050b74689f017aca66ffa3e52501080278a81bb0a43836c8dd" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-primitives", - "alloy-sol-types", - "serde", - "serde_repr", - "thiserror 2.0.4", + "critical-section", + "portable-atomic", ] [[package]] -name = "op-alloy-protocol" -version = "0.7.3" +name = "op-alloy-consensus" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d8c057c1a5bdf72d1f86c470a4d90f2d2ad1b273caa547c04cd6affe45b466d" +checksum = "d297150146a63778a29400320700e804ec6e1e4d6ec99857cdbbaf17b3de9241" dependencies = [ - "alloc-no-stdlib", "alloy-consensus", "alloy-eips", "alloy-primitives", "alloy-rlp", "alloy-serde", - "async-trait", - "brotli", - "cfg-if 1.0.0", - "miniz_oxide", - "op-alloy-consensus", - "op-alloy-genesis", + "derive_more 1.0.0", "serde", "thiserror 2.0.4", - "tracing", - "unsigned-varint", ] [[package]] name = "op-alloy-rpc-jsonrpsee" -version = "0.7.3" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a98debc5266443e64e03195cd1a3b6cdbe8d8679e9d8c4b76a3670d24b2e267a" +checksum = "2c20026058b49704e52fcb2f24b106880a0f5d0d99d086778cf9810fc52859e7" dependencies = [ - "alloy-eips", "alloy-primitives", "jsonrpsee", - "op-alloy-rpc-types", - "op-alloy-rpc-types-engine", ] [[package]] name = "op-alloy-rpc-types" -version = "0.7.3" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73741855ffaa2041b33cb616d7db7180c1149b648c68c23bee9e15501073fb32" +checksum = "7095f87d34fc814e3de06a7af8ffff9121993f322231647f84df304821cc0275" dependencies = [ "alloy-consensus", "alloy-eips", @@ -2869,7 +2982,7 @@ dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", "alloy-serde", - "derive_more", + "derive_more 1.0.0", "op-alloy-consensus", "serde", "serde_json", @@ -2877,19 +2990,18 @@ dependencies = [ [[package]] name = "op-alloy-rpc-types-engine" -version = "0.7.3" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebedc32e24013c8b3faea62d091bccbb90f871286fe2238c6f7e2ff29974df8e" +checksum = "955a7d0ef9161f4a2a8461ef5d784526741c325410103d654706863cf4a32736" dependencies = [ + "alloy-consensus", "alloy-eips", "alloy-primitives", "alloy-rpc-types-engine", "alloy-serde", - "derive_more", + "derive_more 1.0.0", "ethereum_ssz", "op-alloy-consensus", - "op-alloy-genesis", - "op-alloy-protocol", "serde", "snap", "thiserror 2.0.4", @@ -3538,8 +3650,8 @@ dependencies = [ [[package]] name = "reth-rpc-layer" -version = "1.1.2" -source = "git+https://github.com/paradigmxyz/reth.git?rev=e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222#e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" +version = "1.2.2" +source = "git+https://github.com/paradigmxyz/reth.git?rev=c1a255a8322d86a2735b847cd88a8f74acd733c5#c1a255a8322d86a2735b847cd88a8f74acd733c5" dependencies = [ "alloy-rpc-types-engine", "http 1.1.0", @@ -3897,6 +4009,7 @@ dependencies = [ "der", "generic-array", "pkcs8", + "serdect", "subtle", "zeroize", ] @@ -3988,25 +4101,54 @@ dependencies = [ ] [[package]] -name = "serde_repr" -version = "0.1.19" +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_with" +version = "3.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" +checksum = "d6b6f7f2fcb69f747921f79f3926bd1e203fce4fef62c268dd3abfb6d86029aa" dependencies = [ + "base64 0.22.1", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.6.0", + "serde", + "serde_derive", + "serde_json", + "serde_with_macros", + "time", +] + +[[package]] +name = "serde_with_macros" +version = "3.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d00caa5193a3c8362ac2b73be6b9e768aa5a4b2f721d8f4b339600c3cb51f8e" +dependencies = [ + "darling", "proc-macro2", "quote", "syn 2.0.90", ] [[package]] -name = "serde_urlencoded" -version = "0.7.1" +name = "serdect" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +checksum = "a84f14a19e9a014bb9f4512488d9829a68e04ecabffb0f9904cd1ace94598177" dependencies = [ - "form_urlencoded", - "itoa", - "ryu", + "base16ct", "serde", ] @@ -4190,18 +4332,18 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "strum" -version = "0.26.3" +version = "0.27.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" +checksum = "f64def088c51c9510a8579e3c5d67c65349dcf755e5479ad3d010aa6454e2c32" dependencies = [ "strum_macros", ] [[package]] name = "strum_macros" -version = "0.26.4" +version = "0.27.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" +checksum = "c77a8c5abcaf0f9ce05d62342b7d298c346515365c36b673df4ebe3ced01fde8" dependencies = [ "heck", "proc-macro2", @@ -4240,9 +4382,9 @@ dependencies = [ [[package]] name = "syn-solidity" -version = "0.8.21" +version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c2de690018098e367beeb793991c7d4dc7270f42c9d2ac4ccc876c1368ca430" +checksum = "ac9f9798a84bca5cd4d1760db691075fda8f2c3a5d9647e8bfd29eb9b3fabb87" dependencies = [ "paste", "proc-macro2", @@ -4521,7 +4663,7 @@ checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" dependencies = [ "indexmap 2.6.0", "toml_datetime", - "winnow", + "winnow 0.6.20", ] [[package]] @@ -4778,12 +4920,6 @@ version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" -[[package]] -name = "unsigned-varint" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb066959b24b5196ae73cb057f45598450d2c5f71460e98c49b738086eff9c06" - [[package]] name = "untrusted" version = "0.9.0" @@ -5040,7 +5176,16 @@ version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" dependencies = [ - "windows-core", + "windows-core 0.58.0", + "windows-targets", +] + +[[package]] +name = "windows-core" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +dependencies = [ "windows-targets", ] @@ -5079,6 +5224,12 @@ dependencies = [ "syn 2.0.90", ] +[[package]] +name = "windows-link" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dccfd733ce2b1753b03b6d3c65edf020262ea35e20ccdf3e288043e6dd620e3" + [[package]] name = "windows-registry" version = "0.2.0" @@ -5200,6 +5351,15 @@ dependencies = [ "memchr", ] +[[package]] +name = "winnow" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e7f4ea97f6f78012141bcdb6a216b2609f0979ada50b20ca5b52dde2eac2bb1" +dependencies = [ + "memchr", +] + [[package]] name = "wit-bindgen-rt" version = "0.33.0" diff --git a/Cargo.toml b/Cargo.toml index 98440e47..b035c410 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,14 +4,14 @@ version = "0.1.0" edition = "2021" [dependencies] -op-alloy-rpc-types-engine = "0.7.3" -op-alloy-rpc-types = "0.7.3" -op-alloy-rpc-jsonrpsee = { version = "0.7.3", features = ["client"] } +op-alloy-rpc-types-engine = "0.11.0" +op-alloy-rpc-types = "0.11.0" +op-alloy-rpc-jsonrpsee = { version = "0.11.0", features = ["client"] } alloy-rlp = "0.3.10" -alloy-rpc-types-engine = "0.7.3" -alloy-rpc-types-eth = "0.7.3" +alloy-rpc-types-engine = "0.12.3" +alloy-rpc-types-eth = "0.12.3" alloy-primitives = { version = "0.8.21", features = [ "getrandom" ] } -alloy-eips = { version = "0.7.3", features = ["serde"] } +alloy-eips = { version = "0.12.3", features = ["serde"] } tokio = { version = "1", features = ["full"] } tracing = "0.1.4" tracing-subscriber = { version = "0.3.11", features = ["env-filter", "json"] } @@ -63,7 +63,7 @@ predicates = "3.1.2" tokio-util = { version = "0.7.13" } nix = "0.15.0" bytes = "1.2" -reth-rpc-layer = { git = "https://github.com/paradigmxyz/reth.git", rev = "e022b6fd92a33cd44e3ae51ee2fc2ecc0f773222" } +reth-rpc-layer = { git = "https://github.com/paradigmxyz/reth.git", rev = "c1a255a8322d86a2735b847cd88a8f74acd733c5" } ctor = "0.3.5" [features] diff --git a/src/client.rs b/src/client.rs index 32cc1f36..ba73d468 100644 --- a/src/client.rs +++ b/src/client.rs @@ -13,7 +13,8 @@ use jsonrpsee::http_client::transport::HttpBackend; use jsonrpsee::http_client::{HttpClient, HttpClientBuilder}; use jsonrpsee::types::ErrorCode; use op_alloy_rpc_types_engine::{ - OpExecutionPayloadEnvelopeV3, OpExecutionPayloadEnvelopeV4, OpPayloadAttributes, + OpExecutionPayloadEnvelopeV3, OpExecutionPayloadEnvelopeV4, OpExecutionPayloadV4, + OpPayloadAttributes, }; use paste::paste; use std::path::PathBuf; @@ -187,12 +188,12 @@ impl ExecutionClient { pub async fn new_payload_v4( &self, - payload: ExecutionPayloadV3, + payload: OpExecutionPayloadV4, versioned_hashes: Vec, parent_beacon_block_root: B256, execution_requests: Vec, ) -> RpcResult { - let execution_payload = ExecutionPayload::from(payload.clone()); + let execution_payload = ExecutionPayload::from(payload.payload_inner.clone()); let block_hash = execution_payload.block_hash(); let start = Instant::now(); let response = self diff --git a/src/server.rs b/src/server.rs index e85f86b9..8dbbbaee 100644 --- a/src/server.rs +++ b/src/server.rs @@ -17,7 +17,8 @@ use jsonrpsee::types::{ErrorCode, ErrorObject}; use jsonrpsee::RpcModule; use lru::LruCache; use op_alloy_rpc_types_engine::{ - OpExecutionPayloadEnvelopeV3, OpExecutionPayloadEnvelopeV4, OpPayloadAttributes, + OpExecutionPayloadEnvelopeV3, OpExecutionPayloadEnvelopeV4, OpExecutionPayloadV4, + OpPayloadAttributes, }; use opentelemetry::global::{self, BoxedSpan, BoxedTracer}; use opentelemetry::trace::{Span, TraceContextExt, Tracer}; @@ -95,7 +96,7 @@ impl Clone for NewPayloadV3 { } struct NewPayloadV4 { - payload: ExecutionPayloadV3, + payload: OpExecutionPayloadV4, versioned_hashes: Vec, parent_beacon_block_root: B256, execution_requests: Vec, @@ -127,7 +128,7 @@ impl NewPayloadVersion { pub fn execution_payload(&self) -> ExecutionPayloadV3 { match self { NewPayloadVersion::V3(payload) => payload.payload.clone(), - NewPayloadVersion::V4(payload) => payload.payload.clone(), + NewPayloadVersion::V4(payload) => payload.payload.payload_inner.clone(), } } @@ -397,7 +398,7 @@ pub trait EngineApi { #[method(name = "newPayloadV4")] async fn new_payload_v4( &self, - payload: ExecutionPayloadV3, + payload: OpExecutionPayloadV4, versioned_hashes: Vec, parent_beacon_block_root: B256, execution_requests: Vec, @@ -477,7 +478,7 @@ impl EngineApiServer for RollupBoostServer { async fn new_payload_v4( &self, - payload: ExecutionPayloadV3, + payload: OpExecutionPayloadV4, versioned_hashes: Vec, parent_beacon_block_root: B256, execution_requests: Vec, @@ -730,7 +731,10 @@ impl RollupBoostServer { payload.parent_beacon_block_root(), ), GetPayloadVersion::V4 => self.l2_client.auth_client.new_payload_v4( - payload.execution_payload(), + OpExecutionPayloadV4 { + payload_inner: payload.execution_payload(), + withdrawals_root: B256::ZERO, + }, vec![], payload.parent_beacon_block_root(), vec![], @@ -1100,13 +1104,16 @@ mod tests { let new_payload_response = test_harness .client .new_payload_v4( - test_harness - .l2_mock - .get_payload_v4_response - .clone() - .unwrap() - .execution_payload - .clone(), + OpExecutionPayloadV4 { + payload_inner: test_harness + .l2_mock + .get_payload_v4_response + .clone() + .unwrap() + .execution_payload + .clone(), + withdrawals_root: B256::ZERO, + }, vec![], B256::ZERO, vec![],