From 60ece10a92f8a9f765642b8f5aff6f6193cc76b7 Mon Sep 17 00:00:00 2001 From: theochap Date: Wed, 1 Apr 2026 10:01:13 -0400 Subject: [PATCH 1/5] feat(alloy-op-evm): upgrade alloy-evm to 0.30.0 and bump version to 0.30.0 Update alloy-op-evm to work with alloy-evm 0.30.0, which removes the 'op' feature and bumps revm to v36. Key changes: - Remove 'op' feature from alloy-evm dependency - Bump revm 34->36, op-revm 15->17, and related crates - Add OpTx newtype wrapper with trait impls (FromRecoveredTx, FromTxWithEncoded, IntoTxEnv, etc.) previously in alloy-evm's op feature - Default OpEvm/OpEvmFactory Tx parameter to OpTx - Add into_result() to TxResult impl - Remove set_state_clear_flag (removed in revm 36) - Handle new BlockEnv::slot_num field (EIP-7843) - Update BlockExecutorFactory::create_executor signature for new API - Bump alloy-op-evm version to 0.30.0 --- .gitmodules | 3 - rust/Cargo.lock | 408 +++++++++++++----- rust/Cargo.toml | 22 +- rust/alloy-op-evm/Cargo.toml | 4 +- rust/alloy-op-evm/src/block/mod.rs | 21 +- rust/alloy-op-evm/src/env.rs | 3 + rust/alloy-op-evm/src/lib.rs | 19 +- rust/alloy-op-evm/src/tx.rs | 217 ++++++++++ .../crates/proof/executor/src/builder/core.rs | 1 - .../consensus/src/validation/isthmus.rs | 9 +- 10 files changed, 556 insertions(+), 151 deletions(-) create mode 100644 rust/alloy-op-evm/src/tx.rs diff --git a/.gitmodules b/.gitmodules index 1856b3a961a7d..a365d035460e3 100644 --- a/.gitmodules +++ b/.gitmodules @@ -32,9 +32,6 @@ [submodule "packages/contracts-bedrock/lib/superchain-registry"] path = packages/contracts-bedrock/lib/superchain-registry url = https://github.com/ethereum-optimism/superchain-registry -[submodule "rust/kona/crates/protocol/registry/superchain-registry"] - path = rust/kona/crates/protocol/registry/superchain-registry - url = https://github.com/ethereum-optimism/superchain-registry [submodule "op-rbuilder"] path = op-rbuilder url = https://github.com/flashbots/op-rbuilder diff --git a/rust/Cargo.lock b/rust/Cargo.lock index 8891089c44df0..ab22cc8af9f33 100644 --- a/rust/Cargo.lock +++ b/rust/Cargo.lock @@ -281,11 +281,31 @@ dependencies = [ "auto_impl", "derive_more", "op-alloy", - "op-revm", - "revm", + "op-revm 15.0.0", + "revm 34.0.0", "thiserror 2.0.18", ] +[[package]] +name = "alloy-evm" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13146597a586a4166ac31b192883e08c044272d6b8c43de231ee1f43dd9a115" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-hardforks", + "alloy-primitives", + "alloy-rpc-types-engine", + "alloy-rpc-types-eth", + "alloy-sol-types", + "auto_impl", + "derive_more", + "revm 36.0.0", + "thiserror 2.0.18", + "tracing", +] + [[package]] name = "alloy-genesis" version = "1.8.2" @@ -383,18 +403,18 @@ dependencies = [ [[package]] name = "alloy-op-evm" -version = "0.26.3" +version = "0.30.0" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-evm", + "alloy-evm 0.30.0", "alloy-hardforks", "alloy-op-hardforks", "alloy-primitives", "auto_impl", "op-alloy", - "op-revm", - "revm", + "op-revm 17.0.0", + "revm 36.0.0", "test-case", "thiserror 2.0.18", ] @@ -3688,7 +3708,7 @@ version = "0.0.0" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-evm", + "alloy-evm 0.30.0", "alloy-genesis", "alloy-network", "alloy-op-evm", @@ -3705,7 +3725,7 @@ dependencies = [ "op-alloy-consensus", "op-alloy-rpc-types", "op-alloy-rpc-types-engine", - "op-revm", + "op-revm 17.0.0", "reth-codecs", "reth-db-api", "reth-engine-primitives", @@ -3719,7 +3739,7 @@ dependencies = [ "reth-payload-builder", "reth-rpc-api", "reth-rpc-engine-api", - "revm", + "revm 36.0.0", "revm-primitives", "serde", "thiserror 2.0.18", @@ -5556,7 +5576,7 @@ version = "1.0.2" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-evm", + "alloy-evm 0.30.0", "alloy-op-evm", "alloy-primitives", "alloy-rlp", @@ -5579,8 +5599,8 @@ dependencies = [ "lru 0.16.3", "op-alloy-consensus", "op-alloy-rpc-types-engine", - "op-revm", - "revm", + "op-revm 17.0.0", + "revm 36.0.0", "serde", "serde_json", "sha2", @@ -5645,7 +5665,7 @@ name = "kona-driver" version = "0.4.0" dependencies = [ "alloy-consensus", - "alloy-evm", + "alloy-evm 0.30.0", "alloy-primitives", "alloy-rlp", "async-trait", @@ -5712,7 +5732,7 @@ version = "0.4.0" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-evm", + "alloy-evm 0.30.0", "alloy-op-evm", "alloy-op-hardforks", "alloy-primitives", @@ -5729,9 +5749,9 @@ dependencies = [ "kona-registry", "op-alloy-consensus", "op-alloy-rpc-types-engine", - "op-revm", + "op-revm 17.0.0", "rand 0.9.2", - "revm", + "revm 36.0.0", "rocksdb", "rstest", "serde", @@ -5756,7 +5776,7 @@ dependencies = [ "alloy-sol-types", "arbitrary", "derive_more", - "op-revm", + "op-revm 17.0.0", "rand 0.9.2", "serde", "serde_json", @@ -5813,8 +5833,8 @@ dependencies = [ "alloy-primitives", "kona-protocol", "op-alloy-consensus", - "op-revm", - "revm", + "op-revm 15.0.0", + "revm 34.0.0", ] [[package]] @@ -5855,9 +5875,9 @@ dependencies = [ "kona-std-fpvm", "op-alloy-network", "op-alloy-rpc-types-engine", - "op-revm", + "op-revm 17.0.0", "proptest", - "revm", + "revm 36.0.0", "rocksdb", "serde", "serde_json", @@ -6083,7 +6103,7 @@ version = "0.3.0" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-evm", + "alloy-evm 0.30.0", "alloy-op-evm", "alloy-primitives", "alloy-rlp", @@ -6104,7 +6124,7 @@ dependencies = [ "lru 0.16.3", "op-alloy-consensus", "op-alloy-rpc-types-engine", - "op-revm", + "op-revm 17.0.0", "rand 0.9.2", "rayon", "rstest", @@ -6122,7 +6142,7 @@ version = "0.2.0" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-evm", + "alloy-evm 0.30.0", "alloy-op-evm", "alloy-primitives", "alloy-rlp", @@ -6139,9 +6159,9 @@ dependencies = [ "kona-registry", "op-alloy-consensus", "op-alloy-rpc-types-engine", - "op-revm", + "op-revm 17.0.0", "rand 0.9.2", - "revm", + "revm 36.0.0", "serde", "serde_json", "spin 0.10.0", @@ -7877,7 +7897,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "79c92b75162c2ed1661849fa51683b11254a5b661798360a2c24be918edafd40" dependencies = [ "auto_impl", - "revm", + "revm 34.0.0", + "serde", +] + +[[package]] +name = "op-revm" +version = "17.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57a98f3a512a7e02a1dcf1242b57302d83657b265a665d50ad98d0b158efaf2c" +dependencies = [ + "auto_impl", + "revm 36.0.0", "serde", ] @@ -9357,8 +9388,8 @@ dependencies = [ "reth-primitives-traits", "reth-storage-api", "reth-trie", - "revm-database", - "revm-state", + "revm-database 10.0.0", + "revm-state 9.0.0", "serde", "tokio", "tokio-stream", @@ -9373,7 +9404,7 @@ dependencies = [ "alloy-chains", "alloy-consensus", "alloy-eips", - "alloy-evm", + "alloy-evm 0.27.3", "alloy-genesis", "alloy-primitives", "alloy-trie", @@ -9870,7 +9901,7 @@ dependencies = [ "reth-tasks", "reth-tokio-util", "reth-tracing", - "revm", + "revm 34.0.0", "serde_json", "tempfile", "tokio", @@ -9986,7 +10017,7 @@ dependencies = [ "alloy-consensus", "alloy-eip7928", "alloy-eips", - "alloy-evm", + "alloy-evm 0.27.3", "alloy-primitives", "alloy-rlp", "alloy-rpc-types-engine", @@ -10026,7 +10057,7 @@ dependencies = [ "reth-trie-db", "reth-trie-parallel", "reth-trie-sparse", - "revm", + "revm 34.0.0", "revm-primitives", "schnellru", "smallvec", @@ -10317,7 +10348,7 @@ dependencies = [ "reth-revm", "reth-storage-api", "reth-transaction-pool", - "revm", + "revm 34.0.0", "tracing", ] @@ -10358,7 +10389,7 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c4 dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-evm", + "alloy-evm 0.27.3", "alloy-primitives", "auto_impl", "derive_more", @@ -10372,7 +10403,7 @@ dependencies = [ "reth-storage-api", "reth-storage-errors", "reth-trie-common", - "revm", + "revm 34.0.0", ] [[package]] @@ -10382,7 +10413,7 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c4 dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-evm", + "alloy-evm 0.27.3", "alloy-primitives", "alloy-rpc-types-engine", "derive_more", @@ -10394,7 +10425,7 @@ dependencies = [ "reth-execution-types", "reth-primitives-traits", "reth-storage-errors", - "revm", + "revm 34.0.0", ] [[package]] @@ -10402,7 +10433,7 @@ name = "reth-execution-errors" version = "1.11.3" source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ - "alloy-evm", + "alloy-evm 0.27.3", "alloy-primitives", "alloy-rlp", "nybbles", @@ -10417,13 +10448,13 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c4 dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-evm", + "alloy-evm 0.27.3", "alloy-primitives", "derive_more", "reth-ethereum-primitives", "reth-primitives-traits", "reth-trie-common", - "revm", + "revm 34.0.0", "serde", "serde_with", ] @@ -10543,9 +10574,9 @@ dependencies = [ "reth-rpc-api", "reth-tracing", "reth-trie", - "revm", - "revm-bytecode", - "revm-database", + "revm 34.0.0", + "revm-bytecode 8.0.0", + "revm-database 10.0.0", "serde", "serde_json", ] @@ -10963,7 +10994,7 @@ dependencies = [ "reth-rpc-server-types", "reth-tracing", "reth-transaction-pool", - "revm", + "revm 34.0.0", "tokio", ] @@ -11201,7 +11232,7 @@ dependencies = [ "reth-storage-errors", "reth-trie", "reth-trie-common", - "revm", + "revm 36.0.0", "thiserror 2.0.18", "tracing", ] @@ -11212,14 +11243,14 @@ version = "1.11.3" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-evm", + "alloy-evm 0.30.0", "alloy-genesis", "alloy-op-evm", "alloy-primitives", "op-alloy-consensus", "op-alloy-rpc-types", "op-alloy-rpc-types-engine", - "op-revm", + "op-revm 17.0.0", "reth-chainspec", "reth-evm", "reth-execution-errors", @@ -11232,7 +11263,7 @@ dependencies = [ "reth-revm", "reth-rpc-eth-api", "reth-storage-errors", - "revm", + "revm 36.0.0", "thiserror 2.0.18", ] @@ -11281,7 +11312,7 @@ dependencies = [ "metrics", "op-alloy-consensus", "op-alloy-rpc-types-engine", - "op-revm", + "op-revm 17.0.0", "reth-chain-state", "reth-engine-primitives", "reth-errors", @@ -11338,7 +11369,7 @@ dependencies = [ "op-alloy-consensus", "op-alloy-network", "op-alloy-rpc-types-engine", - "op-revm", + "op-revm 17.0.0", "reth-chainspec", "reth-consensus", "reth-db", @@ -11378,7 +11409,7 @@ dependencies = [ "reth-transaction-pool", "reth-trie-common", "reth-trie-db", - "revm", + "revm 36.0.0", "serde", "serde_json", "tokio", @@ -11392,7 +11423,7 @@ version = "1.11.3" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-evm", + "alloy-evm 0.30.0", "alloy-primitives", "alloy-rlp", "alloy-rpc-types-debug", @@ -11418,7 +11449,7 @@ dependencies = [ "reth-revm", "reth-storage-api", "reth-transaction-pool", - "revm", + "revm 36.0.0", "serde", "sha2", "thiserror 2.0.18", @@ -11483,7 +11514,7 @@ dependencies = [ "op-alloy-rpc-jsonrpsee", "op-alloy-rpc-types", "op-alloy-rpc-types-engine", - "op-revm", + "op-revm 17.0.0", "reqwest 0.13.2", "reth-basic-payload-builder", "reth-chain-state", @@ -11513,7 +11544,7 @@ dependencies = [ "reth-storage-api", "reth-tasks", "reth-transaction-pool", - "revm", + "revm 36.0.0", "serde", "serde_json", "strum", @@ -11599,7 +11630,7 @@ dependencies = [ "op-alloy-consensus", "op-alloy-flz", "op-alloy-rpc-types", - "op-revm", + "op-revm 17.0.0", "parking_lot", "reth-chain-state", "reth-chainspec", @@ -11735,9 +11766,9 @@ dependencies = [ "proptest-arbitrary-interop", "rayon", "reth-codecs", - "revm-bytecode", + "revm-bytecode 8.0.0", "revm-primitives", - "revm-state", + "revm-state 9.0.0", "secp256k1 0.30.0", "serde", "serde_with", @@ -11781,8 +11812,8 @@ dependencies = [ "reth-tasks", "reth-trie", "reth-trie-db", - "revm-database", - "revm-state", + "revm-database 10.0.0", + "revm-state 9.0.0", "rocksdb", "strum", "tokio", @@ -11844,7 +11875,7 @@ dependencies = [ "reth-storage-api", "reth-storage-errors", "reth-trie", - "revm", + "revm 34.0.0", ] [[package]] @@ -11856,7 +11887,7 @@ dependencies = [ "alloy-dyn-abi", "alloy-eip7928", "alloy-eips", - "alloy-evm", + "alloy-evm 0.27.3", "alloy-genesis", "alloy-network", "alloy-primitives", @@ -11911,7 +11942,7 @@ dependencies = [ "reth-tasks", "reth-transaction-pool", "reth-trie-common", - "revm", + "revm 34.0.0", "revm-inspectors", "revm-primitives", "serde", @@ -12001,7 +12032,7 @@ version = "1.11.3" source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-consensus", - "alloy-evm", + "alloy-evm 0.27.3", "alloy-json-rpc", "alloy-network", "alloy-primitives", @@ -12057,7 +12088,7 @@ dependencies = [ "alloy-consensus", "alloy-dyn-abi", "alloy-eips", - "alloy-evm", + "alloy-evm 0.27.3", "alloy-json-rpc", "alloy-network", "alloy-primitives", @@ -12087,7 +12118,7 @@ dependencies = [ "reth-tasks", "reth-transaction-pool", "reth-trie-common", - "revm", + "revm 34.0.0", "revm-inspectors", "tokio", "tracing", @@ -12100,7 +12131,7 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c4 dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-evm", + "alloy-evm 0.27.3", "alloy-network", "alloy-primitives", "alloy-rpc-client", @@ -12130,7 +12161,7 @@ dependencies = [ "reth-tasks", "reth-transaction-pool", "reth-trie", - "revm", + "revm 34.0.0", "revm-inspectors", "schnellru", "serde", @@ -12317,7 +12348,7 @@ dependencies = [ "reth-stages-types", "reth-storage-errors", "reth-trie-common", - "revm-database", + "revm-database 10.0.0", "serde_json", ] @@ -12333,8 +12364,8 @@ dependencies = [ "reth-primitives-traits", "reth-prune-types", "reth-static-file-types", - "revm-database-interface", - "revm-state", + "revm-database-interface 9.0.0", + "revm-state 9.0.0", "thiserror 2.0.18", ] @@ -12451,8 +12482,8 @@ dependencies = [ "reth-primitives-traits", "reth-storage-api", "reth-tasks", - "revm", - "revm-interpreter", + "revm 34.0.0", + "revm-interpreter 32.0.0", "revm-primitives", "rustc-hash", "schnellru", @@ -12486,7 +12517,7 @@ dependencies = [ "reth-storage-errors", "reth-trie-common", "reth-trie-sparse", - "revm-database", + "revm-database 10.0.0", "tracing", "triehash", ] @@ -12513,7 +12544,7 @@ dependencies = [ "rayon", "reth-codecs", "reth-primitives-traits", - "revm-database", + "revm-database 10.0.0", "serde", "serde_with", ] @@ -12596,17 +12627,36 @@ version = "34.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2aabdebaa535b3575231a88d72b642897ae8106cf6b0d12eafc6bfdf50abfc7" dependencies = [ - "revm-bytecode", - "revm-context", - "revm-context-interface", - "revm-database", - "revm-database-interface", - "revm-handler", - "revm-inspector", - "revm-interpreter", + "revm-bytecode 8.0.0", + "revm-context 13.0.0", + "revm-context-interface 14.0.0", + "revm-database 10.0.0", + "revm-database-interface 9.0.0", + "revm-handler 15.0.0", + "revm-inspector 15.0.0", + "revm-interpreter 32.0.0", + "revm-precompile", + "revm-primitives", + "revm-state 9.0.0", +] + +[[package]] +name = "revm" +version = "36.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0abc15d09cd211e9e73410ada10134069c794d4bcdb787dfc16a1bf0939849c" +dependencies = [ + "revm-bytecode 9.0.0", + "revm-context 15.0.0", + "revm-context-interface 16.0.0", + "revm-database 12.0.0", + "revm-database-interface 10.0.0", + "revm-handler 17.0.0", + "revm-inspector 17.0.0", + "revm-interpreter 34.0.0", "revm-precompile", "revm-primitives", - "revm-state", + "revm-state 10.0.0", ] [[package]] @@ -12621,6 +12671,18 @@ dependencies = [ "serde", ] +[[package]] +name = "revm-bytecode" +version = "9.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e86e468df3cf5cf59fa7ef71a3e9ccabb76bb336401ea2c0674f563104cf3c5e" +dependencies = [ + "bitvec", + "phf", + "revm-primitives", + "serde", +] + [[package]] name = "revm-context" version = "13.0.0" @@ -12630,11 +12692,28 @@ dependencies = [ "bitvec", "cfg-if", "derive-where", - "revm-bytecode", - "revm-context-interface", - "revm-database-interface", + "revm-bytecode 8.0.0", + "revm-context-interface 14.0.0", + "revm-database-interface 9.0.0", "revm-primitives", - "revm-state", + "revm-state 9.0.0", + "serde", +] + +[[package]] +name = "revm-context" +version = "15.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9eb1f0a76b14d684a444fc52f7bf6b7564bf882599d91ee62e76d602e7a187c7" +dependencies = [ + "bitvec", + "cfg-if", + "derive-where", + "revm-bytecode 9.0.0", + "revm-context-interface 16.0.0", + "revm-database-interface 10.0.0", + "revm-primitives", + "revm-state 10.0.0", "serde", ] @@ -12648,9 +12727,25 @@ dependencies = [ "alloy-eip7702", "auto_impl", "either", - "revm-database-interface", + "revm-database-interface 9.0.0", "revm-primitives", - "revm-state", + "revm-state 9.0.0", + "serde", +] + +[[package]] +name = "revm-context-interface" +version = "16.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc256b27743e2912ca16899568e6652a372eb5d1d573e6edb16c7836b16cf487" +dependencies = [ + "alloy-eip2930", + "alloy-eip7702", + "auto_impl", + "either", + "revm-database-interface 10.0.0", + "revm-primitives", + "revm-state 10.0.0", "serde", ] @@ -12661,10 +12756,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "529528d0b05fe646be86223032c3e77aa8b05caa2a35447d538c55965956a511" dependencies = [ "alloy-eips", - "revm-bytecode", - "revm-database-interface", + "revm-bytecode 8.0.0", + "revm-database-interface 9.0.0", "revm-primitives", - "revm-state", + "revm-state 9.0.0", + "serde", +] + +[[package]] +name = "revm-database" +version = "12.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c0a7d6da41061f2c50f99a2632571026b23684b5449ff319914151f4449b6c8" +dependencies = [ + "alloy-eips", + "revm-bytecode 9.0.0", + "revm-database-interface 10.0.0", + "revm-primitives", + "revm-state 10.0.0", "serde", ] @@ -12677,7 +12786,21 @@ dependencies = [ "auto_impl", "either", "revm-primitives", - "revm-state", + "revm-state 9.0.0", + "serde", + "thiserror 2.0.18", +] + +[[package]] +name = "revm-database-interface" +version = "10.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd497a38a79057b94a049552cb1f925ad15078bc1a479c132aeeebd1d2ccc768" +dependencies = [ + "auto_impl", + "either", + "revm-primitives", + "revm-state 10.0.0", "serde", "thiserror 2.0.18", ] @@ -12690,14 +12813,33 @@ checksum = "0cd0e43e815a85eded249df886c4badec869195e70cdd808a13cfca2794622d2" dependencies = [ "auto_impl", "derive-where", - "revm-bytecode", - "revm-context", - "revm-context-interface", - "revm-database-interface", - "revm-interpreter", + "revm-bytecode 8.0.0", + "revm-context 13.0.0", + "revm-context-interface 14.0.0", + "revm-database-interface 9.0.0", + "revm-interpreter 32.0.0", "revm-precompile", "revm-primitives", - "revm-state", + "revm-state 9.0.0", + "serde", +] + +[[package]] +name = "revm-handler" +version = "17.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f1eed729ca9b228ae98688f352235871e9b8be3d568d488e4070f64c56e9d3d" +dependencies = [ + "auto_impl", + "derive-where", + "revm-bytecode 9.0.0", + "revm-context 15.0.0", + "revm-context-interface 16.0.0", + "revm-database-interface 10.0.0", + "revm-interpreter 34.0.0", + "revm-precompile", + "revm-primitives", + "revm-state 10.0.0", "serde", ] @@ -12709,12 +12851,30 @@ checksum = "4f3ccad59db91ef93696536a0dbaf2f6f17cfe20d4d8843ae118edb7e97947ef" dependencies = [ "auto_impl", "either", - "revm-context", - "revm-database-interface", - "revm-handler", - "revm-interpreter", + "revm-context 13.0.0", + "revm-database-interface 9.0.0", + "revm-handler 15.0.0", + "revm-interpreter 32.0.0", + "revm-primitives", + "revm-state 9.0.0", + "serde", + "serde_json", +] + +[[package]] +name = "revm-inspector" +version = "17.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbf5102391706513689f91cb3cb3d97b5f13a02e8647e6e9cb7620877ef84847" +dependencies = [ + "auto_impl", + "either", + "revm-context 15.0.0", + "revm-database-interface 10.0.0", + "revm-handler 17.0.0", + "revm-interpreter 34.0.0", "revm-primitives", - "revm-state", + "revm-state 10.0.0", "serde", "serde_json", ] @@ -12733,7 +12893,7 @@ dependencies = [ "boa_engine", "boa_gc", "colorchoice", - "revm", + "revm 34.0.0", "serde", "serde_json", "thiserror 2.0.18", @@ -12745,10 +12905,23 @@ version = "32.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "11406408597bc249392d39295831c4b641b3a6f5c471a7c41104a7a1e3564c07" dependencies = [ - "revm-bytecode", - "revm-context-interface", + "revm-bytecode 8.0.0", + "revm-context-interface 14.0.0", + "revm-primitives", + "revm-state 9.0.0", + "serde", +] + +[[package]] +name = "revm-interpreter" +version = "34.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf22f80612bb8f58fd1f578750281f2afadb6c93835b14ae6a4d6b75ca26f445" +dependencies = [ + "revm-bytecode 9.0.0", + "revm-context-interface 16.0.0", "revm-primitives", - "revm-state", + "revm-state 10.0.0", "serde", ] @@ -12797,7 +12970,20 @@ checksum = "311720d4f0f239b041375e7ddafdbd20032a33b7bae718562ea188e188ed9fd3" dependencies = [ "alloy-eip7928", "bitflags 2.11.0", - "revm-bytecode", + "revm-bytecode 8.0.0", + "revm-primitives", + "serde", +] + +[[package]] +name = "revm-state" +version = "10.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d29404707763da607e5d6e4771cb203998c28159279c2f64cc32de08d2814651" +dependencies = [ + "alloy-eip7928", + "bitflags 2.11.0", + "revm-bytecode 9.0.0", "revm-primitives", "serde", ] diff --git a/rust/Cargo.toml b/rust/Cargo.toml index 6c1c681aa84ae..3940284e159be 100644 --- a/rust/Cargo.toml +++ b/rust/Cargo.toml @@ -294,7 +294,7 @@ op-alloy-rpc-types-engine = { version = "0.23.1", path = "op-alloy/crates/rpc-ty op-alloy-rpc-jsonrpsee = { version = "0.23.1", path = "op-alloy/crates/rpc-jsonrpsee", default-features = false } # ==================== ALLOY-OP-EVM / ALLOY-OP-HARDFORKS ==================== -alloy-op-evm = { version = "0.26.3", path = "alloy-op-evm/", default-features = false } +alloy-op-evm = { version = "0.30.0", path = "alloy-op-evm/", default-features = false } alloy-op-hardforks = { version = "0.4.7", path = "alloy-op-hardforks/", default-features = false } # ==================== RETH CRATES (v1.11.3) ==================== @@ -373,22 +373,22 @@ reth-trie-db = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3" } reth-zstd-compressors = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3", default-features = false } # ==================== REVM (latest: op-reth versions) ==================== -revm = { version = "34.0.0", default-features = false } -revm-bytecode = { version = "8.0.0", default-features = false } -revm-database = { version = "10.0.0", default-features = false } -revm-state = { version = "9.0.0", default-features = false } -revm-primitives = { version = "22.0.0", default-features = false } -revm-interpreter = { version = "32.0.0", default-features = false } -revm-database-interface = { version = "9.0.0", default-features = false } -op-revm = { version = "15.0.0", default-features = false } -revm-inspectors = "0.34.2" +revm = { version = "36.0.0", default-features = false } +revm-bytecode = { version = "9.0.0", default-features = false } +revm-database = { version = "12.0.0", default-features = false } +revm-state = { version = "10.0.0", default-features = false } +revm-primitives = { version = "22.1.0", default-features = false } +revm-interpreter = { version = "34.0.0", default-features = false } +revm-database-interface = { version = "10.0.0", default-features = false } +op-revm = { version = "17.0.0", default-features = false } +revm-inspectors = "0.36.1" # ==================== ALLOY ==================== alloy-chains = { version = "0.2.30", default-features = false } alloy-dyn-abi = "1.5.6" alloy-eip2124 = { version = "0.2.0", default-features = false } alloy-eip7928 = { version = "0.3.2", default-features = false } -alloy-evm = { version = "0.27.2", default-features = false } +alloy-evm = { version = "0.30.0", default-features = false } alloy-primitives = { version = "1.5.6", default-features = false, features = [ "map-foldhash", ] } diff --git a/rust/alloy-op-evm/Cargo.toml b/rust/alloy-op-evm/Cargo.toml index d64db38c86534..0c3053e5f947e 100644 --- a/rust/alloy-op-evm/Cargo.toml +++ b/rust/alloy-op-evm/Cargo.toml @@ -2,7 +2,7 @@ name = "alloy-op-evm" description = "OP EVM implementation" -version = "0.26.3" +version = "0.30.0" edition = "2021" rust-version = "1.92" authors = ["Alloy Contributors", "OpLabsPBC"] @@ -14,7 +14,7 @@ repository = "https://github.com/ethereum-optimism/optimism" workspace = true [dependencies] -alloy-evm = { workspace = true, features = ["op"] } +alloy-evm = { workspace = true } alloy-eips = { workspace = true } alloy-consensus = { workspace = true } diff --git a/rust/alloy-op-evm/src/block/mod.rs b/rust/alloy-op-evm/src/block/mod.rs index 4334c9bd72fa8..9ccaeb2fd8be8 100644 --- a/rust/alloy-op-evm/src/block/mod.rs +++ b/rust/alloy-op-evm/src/block/mod.rs @@ -27,7 +27,7 @@ use receipt_builder::OpReceiptBuilder; use revm::{ Database as _, DatabaseCommit, Inspector, context::{Block, result::ResultAndState}, - database::{DatabaseCommitExt, State}, + database::DatabaseCommitExt, }; mod canyon; @@ -74,6 +74,10 @@ impl TxResult for OpTxResult { fn result(&self) -> &ResultAndState { &self.inner.result } + + fn into_result(self) -> ResultAndState { + self.inner.result + } } /// Block executor for Optimism. @@ -198,11 +202,6 @@ where type Result = OpTxResult::TxType>; fn apply_pre_execution_changes(&mut self) -> Result<(), BlockExecutionError> { - // Set state clear flag if the block is after the Spurious Dragon hardfork. - let state_clear_flag = - self.spec.is_spurious_dragon_active_at_block(self.evm.block().number().saturating_to()); - self.evm.db_mut().set_state_clear_flag(state_clear_flag); - self.system_caller.apply_blockhashes_contract_call(self.ctx.parent_hash, &mut self.evm)?; self.system_caller .apply_beacon_root_contract_call(self.ctx.parent_beacon_block_root, &mut self.evm)?; @@ -460,12 +459,12 @@ where fn create_executor<'a, DB, I>( &'a self, - evm: EvmF::Evm<&'a mut State, I>, + evm: EvmF::Evm, ctx: Self::ExecutionCtx<'a>, ) -> impl BlockExecutorFor<'a, Self, DB, I> where - DB: Database + 'a, - I: Inspector>> + 'a, + DB: StateDB + 'a, + I: Inspector> + 'a, { OpBlockExecutor::new(evm, ctx, &self.spec, &self.receipt_builder) } @@ -491,7 +490,7 @@ mod tests { use revm::{ Context, context::BlockEnv, - database::{CacheDB, EmptyDB, InMemoryDB}, + database::{CacheDB, EmptyDB, InMemoryDB, State}, inspector::NoOpInspector, primitives::HashMap, state::AccountInfo, @@ -506,7 +505,7 @@ mod tests { let executor_factory = OpBlockExecutorFactory::new( OpAlloyReceiptBuilder::default(), OpChainHardforks::op_mainnet(), - OpEvmFactory::>::default(), + OpEvmFactory::::default(), ); let mut db = State::builder().with_database(CacheDB::::default()).build(); let evm = executor_factory.evm_factory.create_evm(&mut db, EvmEnv::default()); diff --git a/rust/alloy-op-evm/src/env.rs b/rust/alloy-op-evm/src/env.rs index 089f31c406a7a..79f41c12b3bc8 100644 --- a/rust/alloy-op-evm/src/env.rs +++ b/rust/alloy-op-evm/src/env.rs @@ -139,6 +139,9 @@ fn evm_env_for_op( basefee: input.base_fee_per_gas, // EIP-4844 excess blob gas of this block, introduced in Cancun blob_excess_gas_and_price, + // EIP-7843 slot number. Not yet used in the OP Stack. + // TODO(optimism#19853): populate from block header once EIP-7843 is enabled. + slot_num: 0, }; EvmEnv::new(cfg_env, block_env) diff --git a/rust/alloy-op-evm/src/lib.rs b/rust/alloy-op-evm/src/lib.rs index 04bf209661830..f4caaca242b02 100644 --- a/rust/alloy-op-evm/src/lib.rs +++ b/rust/alloy-op-evm/src/lib.rs @@ -39,6 +39,9 @@ use revm::{ interpreter::{InterpreterResult, interpreter::EthInterpreter}, }; +pub mod tx; +pub use tx::OpTx; + pub mod block; pub use block::{OpBlockExecutionCtx, OpBlockExecutor, OpBlockExecutorFactory}; @@ -49,11 +52,9 @@ pub use block::{OpBlockExecutionCtx, OpBlockExecutor, OpBlockExecutorFactory}; /// [`OpEvm`](op_revm::OpEvm) type. /// /// The `Tx` type parameter controls the transaction environment type. By default it uses -/// [`OpTransaction`] directly, but consumers can provide a newtype wrapper to -/// satisfy additional trait bounds (e.g. `FromRecoveredTx`, -/// `TransactionEnv`). +/// [`OpTx`] which wraps [`OpTransaction`] and implements the necessary foreign traits. #[allow(missing_debug_implementations)] // missing revm::OpContext Debug impl -pub struct OpEvm> { +pub struct OpEvm { inner: op_revm::OpEvm, I, EthInstructions>, P>, inspect: bool, _tx: PhantomData, @@ -183,10 +184,10 @@ where /// Factory producing [`OpEvm`]s. /// /// The `Tx` type parameter controls the transaction type used by the created EVMs. -/// By default it uses [`OpTransaction`] directly, but consumers can specify a newtype -/// wrapper to satisfy additional trait bounds. +/// By default it uses [`OpTx`] which wraps [`OpTransaction`] and implements +/// the necessary foreign traits. #[derive(Debug)] -pub struct OpEvmFactory>(PhantomData); +pub struct OpEvmFactory(PhantomData); impl Clone for OpEvmFactory { fn clone(&self) -> Self { @@ -272,7 +273,7 @@ mod tests { #[test] fn test_precompiles_jovian_fail() { - let mut evm = OpEvmFactory::>::default().create_evm( + let mut evm = OpEvmFactory::::default().create_evm( EmptyDB::default(), EvmEnv::new(CfgEnv::new_with_spec(OpSpecId::JOVIAN), BlockEnv::default()), ); @@ -342,7 +343,7 @@ mod tests { #[test] fn test_precompiles_jovian() { - let mut evm = OpEvmFactory::>::default().create_evm( + let mut evm = OpEvmFactory::::default().create_evm( EmptyDB::default(), EvmEnv::new(CfgEnv::new_with_spec(OpSpecId::JOVIAN), BlockEnv::default()), ); diff --git a/rust/alloy-op-evm/src/tx.rs b/rust/alloy-op-evm/src/tx.rs new file mode 100644 index 0000000000000..096c43655597f --- /dev/null +++ b/rust/alloy-op-evm/src/tx.rs @@ -0,0 +1,217 @@ +//! [`OpTx`] newtype wrapper around [`OpTransaction`]. + +use alloy_consensus::{ + Signed, TxEip1559, TxEip2930, TxEip4844, TxEip4844Variant, TxEip7702, TxLegacy, +}; +use alloy_eips::{Encodable2718, Typed2718, eip7594::Encodable7594}; +use alloy_evm::{FromRecoveredTx, FromTxWithEncoded, IntoTxEnv}; +use crate::block::OpTxEnv; +use alloy_primitives::{Address, B256, Bytes, TxKind, U256}; +use core::ops::{Deref, DerefMut}; +use op_alloy::consensus::{OpTxEnvelope, TxDeposit}; +use op_revm::{OpTransaction, transaction::deposit::DepositTransactionParts}; +use revm::context::TxEnv; + +/// Helper to convert a deposit transaction into a [`TxEnv`]. +fn deposit_tx_env(tx: &TxDeposit, caller: Address) -> TxEnv { + TxEnv { + tx_type: tx.ty(), + caller, + gas_limit: tx.gas_limit, + kind: tx.to, + value: tx.value, + data: tx.input.clone(), + ..Default::default() + } +} + +/// Newtype wrapper around [`OpTransaction`] that allows implementing foreign traits. +#[derive(Clone, Debug, Default)] +pub struct OpTx(pub OpTransaction); + +impl From for OpTransaction { + fn from(tx: OpTx) -> Self { + tx.0 + } +} + +impl Deref for OpTx { + type Target = OpTransaction; + + fn deref(&self) -> &Self::Target { + &self.0 + } +} + +impl DerefMut for OpTx { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } +} + +impl IntoTxEnv for OpTx { + fn into_tx_env(self) -> Self { + self + } +} + +impl OpTxEnv for OpTx { + fn encoded_bytes(&self) -> Option<&Bytes> { + self.0.enveloped_tx.as_ref() + } +} + +impl revm::context::Transaction for OpTx { + type AccessListItem<'a> + = as revm::context::Transaction>::AccessListItem<'a> + where + Self: 'a; + type Authorization<'a> + = as revm::context::Transaction>::Authorization<'a> + where + Self: 'a; + + fn tx_type(&self) -> u8 { + self.0.tx_type() + } + fn caller(&self) -> Address { + self.0.caller() + } + fn gas_limit(&self) -> u64 { + self.0.gas_limit() + } + fn value(&self) -> U256 { + self.0.value() + } + fn input(&self) -> &Bytes { + self.0.input() + } + fn nonce(&self) -> u64 { + revm::context::Transaction::nonce(&self.0) + } + fn kind(&self) -> TxKind { + self.0.kind() + } + fn chain_id(&self) -> Option { + self.0.chain_id() + } + fn gas_price(&self) -> u128 { + self.0.gas_price() + } + fn access_list(&self) -> Option>> { + self.0.access_list() + } + fn blob_versioned_hashes(&self) -> &[B256] { + self.0.blob_versioned_hashes() + } + fn max_fee_per_blob_gas(&self) -> u128 { + self.0.max_fee_per_blob_gas() + } + fn authorization_list_len(&self) -> usize { + self.0.authorization_list_len() + } + fn authorization_list(&self) -> impl Iterator> { + self.0.authorization_list() + } + fn max_priority_fee_per_gas(&self) -> Option { + self.0.max_priority_fee_per_gas() + } +} + +impl FromRecoveredTx for OpTx { + fn from_recovered_tx(tx: &OpTxEnvelope, sender: Address) -> Self { + let encoded = tx.encoded_2718(); + Self::from_encoded_tx(tx, sender, encoded.into()) + } +} + +impl FromTxWithEncoded for OpTx { + fn from_encoded_tx(tx: &OpTxEnvelope, caller: Address, encoded: Bytes) -> Self { + match tx { + OpTxEnvelope::Legacy(tx) => Self::from_encoded_tx(tx, caller, encoded), + OpTxEnvelope::Eip1559(tx) => Self::from_encoded_tx(tx, caller, encoded), + OpTxEnvelope::Eip2930(tx) => Self::from_encoded_tx(tx, caller, encoded), + OpTxEnvelope::Eip7702(tx) => Self::from_encoded_tx(tx, caller, encoded), + OpTxEnvelope::Deposit(tx) => Self::from_encoded_tx(tx.inner(), caller, encoded), + } + } +} + +/// Generates [`FromRecoveredTx`] and [`FromTxWithEncoded`] impls for [`OpTx`] from a +/// `Signed<$tx>` and bare `$tx` type. The bare type conversion creates the [`TxEnv`] via +/// [`FromRecoveredTx`] and wraps it in an [`OpTransaction`]. +macro_rules! impl_from_tx { + ($($tx:ty),+ $(,)?) => { + $( + impl FromRecoveredTx> for OpTx { + fn from_recovered_tx(tx: &Signed<$tx>, sender: Address) -> Self { + let encoded = tx.encoded_2718(); + Self::from_encoded_tx(tx, sender, encoded.into()) + } + } + + impl FromTxWithEncoded> for OpTx { + fn from_encoded_tx(tx: &Signed<$tx>, caller: Address, encoded: Bytes) -> Self { + Self::from_encoded_tx(tx.tx(), caller, encoded) + } + } + + impl FromTxWithEncoded<$tx> for OpTx { + fn from_encoded_tx(tx: &$tx, caller: Address, encoded: Bytes) -> Self { + let base = TxEnv::from_recovered_tx(tx, caller); + Self(OpTransaction { + base, + enveloped_tx: Some(encoded), + deposit: Default::default(), + }) + } + } + )+ + }; +} + +impl_from_tx!(TxLegacy, TxEip2930, TxEip1559, TxEip4844, TxEip7702); + +/// `TxEip4844Variant` conversion is not necessary for `OpTx`, but it's useful +/// sugar for Foundry. +impl FromRecoveredTx>> for OpTx +where + T: Encodable7594 + Send + Sync, +{ + fn from_recovered_tx(tx: &Signed>, sender: Address) -> Self { + let encoded = tx.encoded_2718(); + Self::from_encoded_tx(tx, sender, encoded.into()) + } +} + +impl FromTxWithEncoded>> for OpTx { + fn from_encoded_tx(tx: &Signed>, caller: Address, encoded: Bytes) -> Self { + Self::from_encoded_tx(tx.tx(), caller, encoded) + } +} + +impl FromTxWithEncoded> for OpTx { + fn from_encoded_tx(tx: &TxEip4844Variant, caller: Address, encoded: Bytes) -> Self { + let base = TxEnv::from_recovered_tx(tx, caller); + Self(OpTransaction { base, enveloped_tx: Some(encoded), deposit: Default::default() }) + } +} + +impl FromRecoveredTx for OpTx { + fn from_recovered_tx(tx: &TxDeposit, sender: Address) -> Self { + let encoded = tx.encoded_2718(); + Self::from_encoded_tx(tx, sender, encoded.into()) + } +} + +impl FromTxWithEncoded for OpTx { + fn from_encoded_tx(tx: &TxDeposit, caller: Address, encoded: Bytes) -> Self { + let base = deposit_tx_env(tx, caller); + let deposit = DepositTransactionParts { + source_hash: tx.source_hash, + mint: Some(tx.mint), + is_system_transaction: tx.is_system_transaction, + }; + Self(OpTransaction { base, enveloped_tx: Some(encoded), deposit }) + } +} diff --git a/rust/kona/crates/proof/executor/src/builder/core.rs b/rust/kona/crates/proof/executor/src/builder/core.rs index dc141dee1e160..65860e3ad6bd5 100644 --- a/rust/kona/crates/proof/executor/src/builder/core.rs +++ b/rust/kona/crates/proof/executor/src/builder/core.rs @@ -251,7 +251,6 @@ where let mut state = State::builder() .with_database(&mut self.trie_db) .with_bundle_update() - .without_state_clear() .build(); let evm = self.factory.evm_factory().create_evm(&mut state, evm_env); let ctx = OpBlockExecutionCtx { diff --git a/rust/op-reth/crates/consensus/src/validation/isthmus.rs b/rust/op-reth/crates/consensus/src/validation/isthmus.rs index cf9309b9268a3..00f36a94b532a 100644 --- a/rust/op-reth/crates/consensus/src/validation/isthmus.rs +++ b/rust/op-reth/crates/consensus/src/validation/isthmus.rs @@ -3,6 +3,7 @@ use crate::OpConsensusError; use alloy_consensus::BlockHeader; use alloy_primitives::B256; +use alloy_primitives::keccak256; use alloy_trie::EMPTY_ROOT_HASH; use reth_optimism_primitives::L2_TO_L1_MESSAGE_PASSER_ADDRESS; use reth_storage_api::{StorageRootProvider, errors::ProviderResult}; @@ -34,9 +35,11 @@ pub fn withdrawals_root( .state() .get(&L2_TO_L1_MESSAGE_PASSER_ADDRESS) .map(|acc| { - HashedStorage::from_plain_storage( - acc.status, - acc.storage.iter().map(|(slot, value)| (slot, &value.present_value)), + HashedStorage::from_iter( + acc.status.was_destroyed(), + acc.storage.iter().map(|(slot, value)| { + (keccak256(B256::from(*slot)), value.present_value) + }), ) }) .unwrap_or_default(), From b4d94dda85248bf23179a47e84d91dbce4c35dc4 Mon Sep 17 00:00:00 2001 From: theochap Date: Fri, 27 Mar 2026 10:46:24 -0400 Subject: [PATCH 2/5] rust: bump reth to e3dbdbb, revm to 36, alloy to 1.8.2, op-alloy to 0.24.0 Upgrade the Rust workspace dependencies: - reth: v1.11.3 tag -> main @ e3dbdbb - reth-core: reth-codecs, reth-primitives-traits, reth-zstd-compressors moved to crates.io 0.1.0 - revm: 34 -> 36, op-revm: 15 -> 17, revm-inspectors: 0.34 -> 0.36 - alloy-evm: 0.27.2 -> 0.29.2, alloy main crates: 1.6.3 -> 1.8.2 - alloy-chains: 0.2.30 -> 0.2.33, alloy-eip7928: 0.3.2 -> 0.3.3 - op-alloy crates: 0.23.1 -> 0.24.0, alloy-op-evm: 0.26.3 -> 0.28.0 - rollup-boost: crates.io 0.7.13 -> git bc4518c - Rust toolchain: 1.92 -> 1.94 Key changes: - Removed stale op features from reth-db, reth-db-api, reth-primitives-traits, reth-codecs, reth-payload-primitives - Removed edge feature (no longer in reth) - Added InMemorySize, Compact, Compress, Decompress, SignerRecoverable impls for OP types in op-alloy-consensus (behind reth-core/reth-codec features) - Adapted to reth API changes: StateProvider, Decompress, BlockEnv, TxResult, TaskSpawner -> Runtime, PayloadTypes, TryIntoTxEnv, etc. - Introduced OpExecData/OpPayloadAttrs newtypes for orphan rule compliance with ExecutionPayload/PayloadAttributes traits - Updated Dockerfile and CI config for Rust 1.94 - Fixed zepter feature propagation --- .circleci/continue/rust-ci.yml | 23 +- mise.toml | 2 +- ops/docker/op-stack-go/Dockerfile | 2 +- rust/Cargo.lock | 1310 +++++++++-------- rust/Cargo.toml | 173 +-- rust/alloy-op-evm/Cargo.toml | 9 +- rust/alloy-op-hardforks/Cargo.toml | 2 +- rust/clippy.toml | 2 +- rust/kona/bin/client/src/fpvm_evm/factory.rs | 4 +- .../src/fpvm_evm/precompiles/test_utils.rs | 3 +- .../crates/proof/executor/src/builder/core.rs | 6 +- .../crates/proof/proof-interop/Cargo.toml | 1 + .../providers/providers-alloy/Cargo.toml | 2 +- .../docker/apps/kona_app_generic.dockerfile | 2 +- rust/op-alloy/crates/consensus/Cargo.toml | 29 +- rust/op-alloy/crates/consensus/src/lib.rs | 6 + .../crates/consensus/src/reth_codec.rs | 362 +++++ .../crates/consensus/src/reth_core.rs | 74 + rust/op-alloy/crates/network/Cargo.toml | 2 +- rust/op-alloy/crates/op-alloy/Cargo.toml | 2 +- rust/op-alloy/crates/provider/Cargo.toml | 2 +- rust/op-alloy/crates/rpc-jsonrpsee/Cargo.toml | 2 +- .../crates/rpc-types-engine/Cargo.toml | 2 +- rust/op-alloy/crates/rpc-types/Cargo.toml | 2 +- rust/op-reth/DockerfileOp | 2 +- rust/op-reth/bin/Cargo.toml | 1 - rust/op-reth/crates/cli/Cargo.toml | 7 +- rust/op-reth/crates/cli/src/app.rs | 20 +- .../op-reth/crates/cli/src/commands/import.rs | 5 +- .../cli/src/commands/import_receipts.rs | 3 +- .../crates/cli/src/commands/init_state.rs | 8 +- .../crates/cli/src/commands/op_proofs/init.rs | 3 +- .../crates/cli/src/commands/op_proofs/mod.rs | 7 +- .../cli/src/commands/op_proofs/prune.rs | 3 +- .../cli/src/commands/op_proofs/unwind.rs | 3 +- rust/op-reth/crates/evm/src/lib.rs | 1 + rust/op-reth/crates/evm/src/tx.rs | 7 +- rust/op-reth/crates/exex/Cargo.toml | 2 +- .../crates/flashblocks/src/consensus.rs | 16 +- rust/op-reth/crates/flashblocks/src/worker.rs | 3 - rust/op-reth/crates/node/Cargo.toml | 6 +- rust/op-reth/crates/node/src/engine.rs | 41 +- rust/op-reth/crates/node/src/node.rs | 84 +- rust/op-reth/crates/node/src/proof_history.rs | 2 +- rust/op-reth/crates/node/src/rpc.rs | 10 +- rust/op-reth/crates/node/src/utils.rs | 32 +- .../node/tests/e2e-testsuite/testsuite.rs | 10 +- .../crates/node/tests/it/custom_genesis.rs | 43 +- rust/op-reth/crates/payload/Cargo.toml | 5 +- rust/op-reth/crates/payload/src/builder.rs | 75 +- rust/op-reth/crates/payload/src/lib.rs | 45 +- rust/op-reth/crates/payload/src/payload.rs | 307 +++- rust/op-reth/crates/payload/src/traits.rs | 43 +- rust/op-reth/crates/primitives/Cargo.toml | 9 +- .../transaction/signed.txt | 10 + rust/op-reth/crates/primitives/src/receipt.rs | 9 +- .../primitives/src/transaction/signed.rs | 12 +- rust/op-reth/crates/reth/Cargo.toml | 10 +- rust/op-reth/crates/rpc/Cargo.toml | 2 +- rust/op-reth/crates/rpc/src/debug.rs | 22 +- rust/op-reth/crates/rpc/src/engine.rs | 18 +- rust/op-reth/crates/rpc/src/eth/mod.rs | 4 +- .../op-reth/crates/rpc/src/eth/transaction.rs | 4 +- rust/op-reth/crates/rpc/src/witness.rs | 12 +- rust/op-reth/crates/trie/Cargo.toml | 3 +- .../crates/trie/src/db/models/block.rs | 9 +- .../crates/trie/src/db/models/change_set.rs | 4 +- .../crates/trie/src/db/models/storage.rs | 8 +- .../crates/trie/src/db/models/version.rs | 7 +- rust/op-reth/crates/trie/src/provider.rs | 8 - rust/op-reth/crates/txpool/src/transaction.rs | 4 + rust/op-reth/examples/custom-node/Cargo.toml | 8 + .../examples/custom-node/src/chainspec.rs | 35 +- .../examples/custom-node/src/engine.rs | 102 +- .../examples/custom-node/src/engine_api.rs | 10 +- .../examples/custom-node/src/evm/alloy.rs | 5 +- .../examples/custom-node/src/evm/assembler.rs | 7 +- .../examples/custom-node/src/evm/builder.rs | 2 +- .../examples/custom-node/src/evm/config.rs | 28 +- .../examples/custom-node/src/evm/env.rs | 3 +- .../examples/custom-node/src/evm/executor.rs | 20 +- rust/op-reth/examples/custom-node/src/lib.rs | 8 +- rust/op-reth/examples/custom-node/src/pool.rs | 8 +- .../custom-node/src/primitives/header.rs | 6 +- .../custom-node/src/primitives/mod.rs | 2 +- .../examples/custom-node/src/primitives/tx.rs | 8 +- .../custom-node/src/primitives/tx_custom.rs | 4 +- rust/op-reth/examples/custom-node/src/rpc.rs | 11 +- .../examples/engine-api-access/Cargo.toml | 2 +- rust/rust-toolchain.toml | 2 +- target/rust-analyzer/flycheck0/stderr | 26 + target/rust-analyzer/flycheck0/stdout | 0 92 files changed, 2028 insertions(+), 1242 deletions(-) create mode 100644 rust/op-alloy/crates/consensus/src/reth_codec.rs create mode 100644 rust/op-alloy/crates/consensus/src/reth_core.rs create mode 100644 rust/op-reth/crates/primitives/proptest-regressions/transaction/signed.txt create mode 100644 target/rust-analyzer/flycheck0/stderr create mode 100644 target/rust-analyzer/flycheck0/stdout diff --git a/.circleci/continue/rust-ci.yml b/.circleci/continue/rust-ci.yml index 0ca75948f574c..a4cae00af5ebd 100644 --- a/.circleci/continue/rust-ci.yml +++ b/.circleci/continue/rust-ci.yml @@ -122,7 +122,7 @@ commands: toolchain_version: description: The specific toolchain version for stable channel type: string - default: "1.92.0" + default: "1.94.0" target: description: A custom target architecture to add to the toolchain type: string @@ -1133,7 +1133,7 @@ workflows: - rust-build-binary: name: rust-msrv directory: rust - toolchain: "1.92.0" + toolchain: "1.94.0" context: *rust-ci-context # ----------------------------------------------------------------------- @@ -1144,7 +1144,7 @@ workflows: directory: rust command: | just check-no-std - toolchain: "1.92.0" + toolchain: "1.94.0" context: *rust-ci-context - rust-ci-cargo-hack-build: @@ -1174,14 +1174,6 @@ workflows: cache_profile: debug context: *rust-ci-context - - rust-ci-cargo-tests: - name: op-reth-tests-edge - directory: rust - command: "--justfile op-reth/justfile test" - flags: "edge" - cache_profile: debug - context: *rust-ci-context - # ----------------------------------------------------------------------- # Kona crate-specific jobs (lint, FPVM builds, benches, coverage) # ----------------------------------------------------------------------- @@ -1236,14 +1228,6 @@ workflows: cache_profile: debug context: *rust-ci-context - - rust-ci-cargo-tests: - name: op-reth-tests-edge - directory: rust - command: "--justfile op-reth/justfile test" - flags: "edge" - cache_profile: debug - context: *rust-ci-context - - kona-build-fpvm: name: kona-build-fpvm-cannon-client target: "cannon-client" @@ -1253,7 +1237,6 @@ workflows: requires: - rust-tests - op-reth-integration-tests - - op-reth-tests-edge - kona-build-fpvm-cannon-client # ========================================================================== diff --git a/mise.toml b/mise.toml index 6899e37b15df9..e4822eab20861 100644 --- a/mise.toml +++ b/mise.toml @@ -6,7 +6,7 @@ go = "1.24.13" golangci-lint = "2.8.0" gotestsum = "1.12.3" mockery = "2.53.3" -rust = "1.92.0" +rust = "1.94.0" python = "3.12.0" uv = "0.5.5" jq = "1.7.1" diff --git a/ops/docker/op-stack-go/Dockerfile b/ops/docker/op-stack-go/Dockerfile index c23c834652022..55fb7ceda276c 100644 --- a/ops/docker/op-stack-go/Dockerfile +++ b/ops/docker/op-stack-go/Dockerfile @@ -233,7 +233,7 @@ RUN --mount=type=cache,target=/go/pkg/mod --mount=type=cache,target=/root/.cache just op-interop-mon/op-interop-mon # The Rust version must match rust/rust-toolchain.toml. We don't use "latest" to ensure reproducibility -FROM --platform=$BUILDPLATFORM rust:1.92 AS kona-host-builder +FROM --platform=$BUILDPLATFORM rust:1.94 AS kona-host-builder ARG TARGETARCH # Install build dependencies and cross-compilation toolchains RUN apt-get update && apt-get install -y --no-install-recommends \ diff --git a/rust/Cargo.lock b/rust/Cargo.lock index ab22cc8af9f33..0c3f8f2dfe782 100644 --- a/rust/Cargo.lock +++ b/rust/Cargo.lock @@ -35,7 +35,7 @@ checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" dependencies = [ "cfg-if", "cipher", - "cpufeatures", + "cpufeatures 0.2.17", ] [[package]] @@ -106,9 +106,9 @@ checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "alloy-chains" -version = "0.2.31" +version = "0.2.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d9d22005bf31b018f31ef9ecadb5d2c39cf4f6acc8db0456f72c815f3d7f757" +checksum = "f4e9e31d834fe25fe991b8884e4b9f0e59db4a97d86e05d1464d6899c013cd62" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -121,9 +121,9 @@ dependencies = [ [[package]] name = "alloy-consensus" -version = "1.8.2" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e56cae3909bcb2347f77c0f318ef5eb7e131ea6d0a94d31f8bfb6e4c5e3c7c7" +checksum = "7f16daaf7e1f95f62c6c3bf8a3fc3d78b08ae9777810c0bb5e94966c7cd57ef0" dependencies = [ "alloy-eips", "alloy-primitives", @@ -149,9 +149,9 @@ dependencies = [ [[package]] name = "alloy-consensus-any" -version = "1.8.2" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4394690a8a64757316c57c57f2c663bf8395febb4c4baa049a058ebd122b668" +checksum = "118998d9015332ab1b4720ae1f1e3009491966a0349938a1f43ff45a8a4c6299" dependencies = [ "alloy-consensus", "alloy-eips", @@ -176,7 +176,7 @@ dependencies = [ "itoa", "serde", "serde_json", - "winnow", + "winnow 0.7.15", ] [[package]] @@ -240,9 +240,9 @@ dependencies = [ [[package]] name = "alloy-eips" -version = "1.8.2" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b97433ffdb356d11b6c89b08c69a787b9f55d787cdeee733c12fdf85d465ef1" +checksum = "e6ef28c9fdad22d4eec52d894f5f2673a0895f1e5ef196734568e68c0f6caca8" dependencies = [ "alloy-eip2124", "alloy-eip2930", @@ -266,9 +266,9 @@ dependencies = [ [[package]] name = "alloy-evm" -version = "0.27.3" +version = "0.29.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b991c370ce44e70a3a9e474087e3d65e42e66f967644ad729dc4cec09a21fd09" +checksum = "3cb6ba2dafd6327f78f2b59ae539bd5c39c57a01dc76763e92942619d934a7bb" dependencies = [ "alloy-consensus", "alloy-eips", @@ -281,9 +281,10 @@ dependencies = [ "auto_impl", "derive_more", "op-alloy", - "op-revm 15.0.0", - "revm 34.0.0", + "op-revm 17.0.0", + "revm 36.0.0", "thiserror 2.0.18", + "tracing", ] [[package]] @@ -308,9 +309,9 @@ dependencies = [ [[package]] name = "alloy-genesis" -version = "1.8.2" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6173ced325833e40ccb781bb372c720df638a966bad6ed6733682b6bff63d855" +checksum = "bbf9480307b09d22876efb67d30cadd9013134c21f3a17ec9f93fd7536d38024" dependencies = [ "alloy-eips", "alloy-primitives", @@ -349,9 +350,9 @@ dependencies = [ [[package]] name = "alloy-json-rpc" -version = "1.8.2" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae95062f48461967424eecb1e1ab703e493b6a7aca7f9c327cc1c06758eb6ec2" +checksum = "422d110f1c40f1f8d0e5562b0b649c35f345fccb7093d9f02729943dcd1eef71" dependencies = [ "alloy-primitives", "alloy-sol-types", @@ -364,9 +365,9 @@ dependencies = [ [[package]] name = "alloy-network" -version = "1.8.2" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "464d9c2c5bca3ff3f020f2ab502629043486a1b3645c5c11613c1dade4eb6f5e" +checksum = "7197a66d94c4de1591cdc16a9bcea5f8cccd0da81b865b49aef97b1b4016e0fa" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -390,9 +391,9 @@ dependencies = [ [[package]] name = "alloy-network-primitives" -version = "1.8.2" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2158d382ef9743ae7185c9fcd33cd9a99967419fdcd5eebc83ff7c0e79cad2bc" +checksum = "eb82711d59a43fdfd79727c99f270b974c784ec4eb5728a0d0d22f26716c87ef" dependencies = [ "alloy-consensus", "alloy-eips", @@ -464,9 +465,9 @@ dependencies = [ [[package]] name = "alloy-provider" -version = "1.8.2" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09b08405e82effb4985f7cbe83d5067730e79893c8699793c1e113043ffeac9d" +checksum = "bf6b18b929ef1d078b834c3631e9c925177f3b23ddc6fa08a722d13047205876" dependencies = [ "alloy-chains", "alloy-consensus", @@ -494,7 +495,7 @@ dependencies = [ "either", "futures", "futures-utils-wasm", - "lru 0.16.3", + "lru", "parking_lot", "pin-project", "reqwest 0.13.2", @@ -509,9 +510,9 @@ dependencies = [ [[package]] name = "alloy-pubsub" -version = "1.8.2" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f39b713fb8fd7abb6ee7601d467f71d2c2541b7799dd02d3a8f9f650d1d3f6d" +checksum = "5ad54073131e7292d4e03e1aa2287730f737280eb160d8b579fb31939f558c11" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -553,9 +554,9 @@ dependencies = [ [[package]] name = "alloy-rpc-client" -version = "1.8.2" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96846729dd095dd5a87bf5bd8efea2345ca41ceab6dda212c49f5c8ca6e2a536" +checksum = "94fcc9604042ca80bd37aa5e232ea1cd851f337e31e2babbbb345bc0b1c30de3" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -579,9 +580,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types" -version = "1.8.2" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f20059ff046049aae59f6e19d96462214ad3290cf9920394309dd7ffc284390" +checksum = "4faad925d3a669ffc15f43b3deec7fbdf2adeb28a4d6f9cf4bc661698c0f8f4b" dependencies = [ "alloy-primitives", "alloy-rpc-types-debug", @@ -593,9 +594,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-admin" -version = "1.7.3" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42325c117af3a9e49013f881c1474168db57978e02085fc9853a1c89e0562740" +checksum = "b38080c2b01ad1bacbd3583cf7f6f800e5e0ffc11eaddaad7321225733a2d818" dependencies = [ "alloy-genesis", "alloy-primitives", @@ -605,9 +606,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-anvil" -version = "1.7.3" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0a3100b76987c1b1dc81f3abe592b7edc29e92b1242067a69d65e0030b35cf9" +checksum = "47df51bedb3e6062cb9981187a51e86d0d64a4de66eb0855e9efe6574b044ddf" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -617,9 +618,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-any" -version = "1.8.2" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89b71da7e5cdd0d5ffebc459f5987888fd3380969c2f94f8cb652ad91ae51bba" +checksum = "3823026d1ed239a40f12364fac50726c8daf1b6ab8077a97212c5123910429ed" dependencies = [ "alloy-consensus-any", "alloy-rpc-types-eth", @@ -628,9 +629,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-beacon" -version = "1.8.2" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a3569433bc2cddd4f00b1dd533a38a07512b55e62d11f662fde20930b613b57" +checksum = "f526dbd7bb039327cfd0ccf18c8a29ffd7402616b0c7a0239512bf8417d544c7" dependencies = [ "alloy-eips", "alloy-primitives", @@ -648,9 +649,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-debug" -version = "1.8.2" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30d9d9a32059dff4809fe4db016db13ba1a20babf767c4cd26e97c93ee9efe4c" +checksum = "2145138f3214928f08cd13da3cb51ef7482b5920d8ac5a02ecd4e38d1a8f6d1e" dependencies = [ "alloy-primitives", "derive_more", @@ -660,9 +661,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-engine" -version = "1.8.2" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f083328dbf7aa5abfe5c0a7758ec9acc86a45bfbcfb45c54186c6caa78036f2a" +checksum = "bb9b97b6e7965679ad22df297dda809b11cebc13405c1b537e5cffecc95834fa" dependencies = [ "alloy-consensus", "alloy-eips", @@ -681,9 +682,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-eth" -version = "1.8.2" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1641df7ef4d15cd43843d399252c90a95abf465a67e2a2b2fd76f4e93cc60e15" +checksum = "59c095f92c4e1ff4981d89e9aa02d5f98c762a1980ab66bec49c44be11349da2" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -703,9 +704,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-mev" -version = "1.7.3" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe85bf3be739126aa593dca9fb3ab13ca93fa7873e6f2247be64d7f2cb15f34a" +checksum = "8eae9c65ff60dcc262247b6ebb5ad391ddf36d09029802c1768c5723e0cfa2f4" dependencies = [ "alloy-consensus", "alloy-eips", @@ -718,9 +719,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-trace" -version = "1.8.2" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b00e2d5ab1f7310c7ecd69962af8c99d2557335ff8cf1baf39c8ff6eec9c171d" +checksum = "2e5a4d010f86cd4e01e5205ec273911e538e1738e76d8bafe9ecd245910ea5a3" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -732,9 +733,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-txpool" -version = "1.7.3" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d459f902a2313737bc66d18ed094c25d2aeb268b74d98c26bbbda2aa44182ab0" +checksum = "942d26a2ca8891b26de4a8529d21091e21c1093e27eb99698f1a86405c76b1ff" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -744,9 +745,9 @@ dependencies = [ [[package]] name = "alloy-serde" -version = "1.8.2" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f1c2c0b5f024814f1c04ae76ff71862d06c836e7d67102daf8a557e5056be68" +checksum = "11ece63b89294b8614ab3f483560c08d016930f842bf36da56bf0b764a15c11e" dependencies = [ "alloy-primitives", "arbitrary", @@ -756,9 +757,9 @@ dependencies = [ [[package]] name = "alloy-signer" -version = "1.8.2" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0f59de30d9d3b13ce6a1b90e85270dc086e4e4733aaa12b250fb30e1eb35849" +checksum = "43f447aefab0f1c0649f71edc33f590992d4e122bc35fb9cdbbf67d4421ace85" dependencies = [ "alloy-primitives", "async-trait", @@ -771,9 +772,9 @@ dependencies = [ [[package]] name = "alloy-signer-local" -version = "1.8.2" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3e64733ea58cfb393c901047638e9ff6890c0a45dc5855bfa077f8bace0f9f9" +checksum = "f721f4bf2e4812e5505aaf5de16ef3065a8e26b9139ac885862d00b5a55a659a" dependencies = [ "alloy-consensus", "alloy-network", @@ -843,7 +844,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a6df77fea9d6a2a75c0ef8d2acbdfd92286cc599983d3175ccdc170d3433d249" dependencies = [ "serde", - "winnow", + "winnow 0.7.15", ] [[package]] @@ -860,9 +861,9 @@ dependencies = [ [[package]] name = "alloy-transport" -version = "1.8.2" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec9c680a7ee0879aa27ea2e347f14e3a973a262e4325964fa1ab062b8a796064" +checksum = "8098f965442a9feb620965ba4b4be5e2b320f4ec5a3fff6bfa9e1ff7ef42bed1" dependencies = [ "alloy-json-rpc", "auto_impl", @@ -883,9 +884,9 @@ dependencies = [ [[package]] name = "alloy-transport-http" -version = "1.8.2" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae9abaedb9123ebe4b1527bc88a0409d65b2727c3de89a289284ba91ad70ae99" +checksum = "e8597d36d546e1dab822345ad563243ec3920e199322cb554ce56c8ef1a1e2e7" dependencies = [ "alloy-json-rpc", "alloy-rpc-types-engine", @@ -905,9 +906,9 @@ dependencies = [ [[package]] name = "alloy-transport-ipc" -version = "1.8.2" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c74911eda4fd7ef12f446b1661f11787f9fb31bde4ab4a0a68efcac9b98cfdf" +checksum = "a1bd98c3870b8a44b79091dde5216a81d58ffbc1fd8ed61b776f9fee0f3bdf20" dependencies = [ "alloy-json-rpc", "alloy-pubsub", @@ -925,9 +926,9 @@ dependencies = [ [[package]] name = "alloy-transport-ws" -version = "1.8.2" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "130762ef3e6c0fb7dc1b855d4f359eb8ea6f2df2f800f40aa52d27737bf640f1" +checksum = "ec3ab7a72b180992881acc112628b7668337a19ce15293ee974600ea7b693691" dependencies = [ "alloy-pubsub", "alloy-transport", @@ -964,9 +965,9 @@ dependencies = [ [[package]] name = "alloy-tx-macros" -version = "1.8.2" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a3684226a2220bb6e84a5ab74877e66628882336ecfba97482c9d473aa2b1cc" +checksum = "d69722eddcdf1ce096c3ab66cf8116999363f734eb36fe94a148f4f71c85da84" dependencies = [ "darling 0.23.0", "proc-macro2", @@ -1018,9 +1019,9 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.13" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78" +checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" [[package]] name = "anstyle-parse" @@ -1626,9 +1627,9 @@ dependencies = [ [[package]] name = "aws-lc-sys" -version = "0.39.0" +version = "0.39.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fa7e52a4c5c547c741610a2c6f123f3881e409b714cd27e6798ef020c514f0a" +checksum = "83a25cf98105baa966497416dbd42565ce3a8cf8dbfd59803ec9ad46f3126399" dependencies = [ "cc", "cmake", @@ -1716,7 +1717,7 @@ dependencies = [ "miniz_oxide 0.8.9", "object", "rustc-demangle", - "windows-link", + "windows-link 0.2.1", ] [[package]] @@ -1889,16 +1890,16 @@ dependencies = [ [[package]] name = "blake3" -version = "1.8.3" +version = "1.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2468ef7d57b3fb7e16b576e8377cdbde2320c60e1491e961d11da40fc4f02a2d" +checksum = "4d2d5991425dfd0785aed03aedcf0b321d61975c9b5b3689c774a2610ae0b51e" dependencies = [ "arrayref", "arrayvec", "cc", "cfg-if", "constant_time_eq", - "cpufeatures", + "cpufeatures 0.3.0", ] [[package]] @@ -1933,9 +1934,9 @@ dependencies = [ [[package]] name = "boa_ast" -version = "0.21.0" +version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc119a5ad34c3f459062a96907f53358989b173d104258891bb74f95d93747e8" +checksum = "6339a700715bda376f5ea65c76e8fe8fc880930d8b0638cea68e7f3da6538e0a" dependencies = [ "bitflags 2.11.0", "boa_interner", @@ -1948,9 +1949,9 @@ dependencies = [ [[package]] name = "boa_engine" -version = "0.21.0" +version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e637ec52ea66d76b0ca86180c259d6c7bb6e6a6e14b2f36b85099306d8b00cc3" +checksum = "1521be326f8a5c8887e95d4ce7f002917a002a23f7b93b9a6a2bf50ed4157824" dependencies = [ "aligned-vec", "arrayvec", @@ -2000,9 +2001,9 @@ dependencies = [ [[package]] name = "boa_gc" -version = "0.21.0" +version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1179f690cbfcbe5364cceee5f1cb577265bb6f07b0be6f210aabe270adcf9da" +checksum = "17323a98cf2e631afacf1a6d659c1212c48a68bacfa85afab0a66ade80582e51" dependencies = [ "boa_macros", "boa_string", @@ -2012,9 +2013,9 @@ dependencies = [ [[package]] name = "boa_interner" -version = "0.21.0" +version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9626505d33dc63d349662437297df1d3afd9d5fc4a2b3ad34e5e1ce879a78848" +checksum = "20510b8b02bcde9b0a01cf34c0c308c56156503d1d91cdab4c8cfbd292b747ea" dependencies = [ "boa_gc", "boa_macros", @@ -2028,9 +2029,9 @@ dependencies = [ [[package]] name = "boa_macros" -version = "0.21.0" +version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f36418a46544b152632c141b0a0b7a453cd69ca150caeef83aee9e2f4b48b7d" +checksum = "5822cb4f146d243060e588bc5a5f2e709683fdad3d7111f42c48e6b5c921d23d" dependencies = [ "cfg-if", "cow-utils", @@ -2042,9 +2043,9 @@ dependencies = [ [[package]] name = "boa_parser" -version = "0.21.0" +version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02f99bf5b684f0de946378fcfe5f38c3a0fbd51cbf83a0f39ff773a0e218541f" +checksum = "35bd957fa9fa93e3a001a8aba5a5cd40c2bbfde486378be4c4b472fd304aaddb" dependencies = [ "bitflags 2.11.0", "boa_ast", @@ -2060,9 +2061,9 @@ dependencies = [ [[package]] name = "boa_string" -version = "0.21.0" +version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45ce9d7aa5563a2e14eab111e2ae1a06a69a812f6c0c3d843196c9d03fbef440" +checksum = "ca2da1d7f4a76fd9040788a122f0d807910800a7b86f5952e9244848c36511de" dependencies = [ "fast-float2", "itoa", @@ -2074,19 +2075,20 @@ dependencies = [ [[package]] name = "borsh" -version = "1.6.0" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1da5ab77c1437701eeff7c88d968729e7766172279eab0676857b3d63af7a6f" +checksum = "cfd1e3f8955a5d7de9fab72fc8373fade9fb8a703968cb200ae3dc6cf08e185a" dependencies = [ "borsh-derive", + "bytes", "cfg_aliases", ] [[package]] name = "borsh-derive" -version = "1.6.0" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0686c856aa6aac0c4498f936d7d6a02df690f614c03e4d906d1018062b5c5e2c" +checksum = "bfcfdc083699101d5a7965e49925975f2f55060f94f9a05e7187be95d530ca59" dependencies = [ "once_cell", "proc-macro-crate", @@ -2307,9 +2309,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.56" +version = "1.2.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aebf35691d1bfb0ac386a69bac2fde4dd276fb618cf8bf4f5318fe285e821bb2" +checksum = "e1e928d4b69e3077709075a938a05ffbedfa53a84c8f766efbf8220bb1ff60e1" dependencies = [ "find-msvc-tools", "jobserver", @@ -2352,7 +2354,7 @@ checksum = "c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818" dependencies = [ "cfg-if", "cipher", - "cpufeatures", + "cpufeatures 0.2.17", ] [[package]] @@ -2379,7 +2381,7 @@ dependencies = [ "num-traits", "serde", "wasm-bindgen", - "windows-link", + "windows-link 0.2.1", ] [[package]] @@ -2473,9 +2475,9 @@ checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9" [[package]] name = "cmake" -version = "0.1.57" +version = "0.1.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75443c44cd6b379beb8c5b45d85d0773baf31cce901fe7bb252f4eff3008ef7d" +checksum = "c0f78a02292a74a88ac736019ab962ece0bc380e3f977bf72e376c5d78ff0678" dependencies = [ "cc", ] @@ -2584,9 +2586,9 @@ dependencies = [ [[package]] name = "colorchoice" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" +checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" [[package]] name = "colored" @@ -2690,7 +2692,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "531185e432bb31db1ecda541e9e7ab21468d4d844ad7505e0546a49b4945d49b" dependencies = [ "cfg-if", - "cpufeatures", + "cpufeatures 0.2.17", "proptest", "serde_core", ] @@ -2792,6 +2794,15 @@ dependencies = [ "libc", ] +[[package]] +name = "cpufeatures" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b2a41393f66f16b0823bb79094d54ac5fbd34ab292ddafb9a0456ac9f87d201" +dependencies = [ + "libc", +] + [[package]] name = "crc" version = "3.4.0" @@ -2860,6 +2871,15 @@ dependencies = [ "crossbeam-utils", ] +[[package]] +name = "crossbeam-queue" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f58bbc28f91df819d0aa2a2c00cd19754769c2fad90579b3592b1c9ba7a3115" +dependencies = [ + "crossbeam-utils", +] + [[package]] name = "crossbeam-utils" version = "0.8.21" @@ -2938,7 +2958,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" dependencies = [ "cfg-if", - "cpufeatures", + "cpufeatures 0.2.17", "curve25519-dalek-derive", "digest 0.10.7", "fiat-crypto", @@ -2968,16 +2988,6 @@ dependencies = [ "darling_macro 0.20.11", ] -[[package]] -name = "darling" -version = "0.21.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0" -dependencies = [ - "darling_core 0.21.3", - "darling_macro 0.21.3", -] - [[package]] name = "darling" version = "0.23.0" @@ -3002,20 +3012,6 @@ dependencies = [ "syn 2.0.117", ] -[[package]] -name = "darling_core" -version = "0.21.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4" -dependencies = [ - "fnv", - "ident_case", - "proc-macro2", - "quote", - "strsim", - "syn 2.0.117", -] - [[package]] name = "darling_core" version = "0.23.0" @@ -3041,17 +3037,6 @@ dependencies = [ "syn 2.0.117", ] -[[package]] -name = "darling_macro" -version = "0.21.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" -dependencies = [ - "darling_core 0.21.3", - "quote", - "syn 2.0.117", -] - [[package]] name = "darling_macro" version = "0.23.0" @@ -3169,9 +3154,9 @@ dependencies = [ [[package]] name = "derive-where" -version = "1.6.0" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef941ded77d15ca19b40374869ac6000af1c9f2a4c0f3d4c70926287e6364a8f" +checksum = "d08b3a0bcc0d079199cd476b2cae8435016ec11d1c0986c6901c5ac223041534" dependencies = [ "proc-macro2", "quote", @@ -3314,9 +3299,9 @@ dependencies = [ [[package]] name = "discv5" -version = "0.10.2" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f170f4f6ed0e1df52bf43b403899f0081917ecf1500bfe312505cc3b515a8899" +checksum = "4c7999df38d0bd8f688212e1a4fae31fd2fea6d218649b9cd7c40bf3ec1318fc" dependencies = [ "aes", "aes-gcm", @@ -3327,18 +3312,17 @@ dependencies = [ "enr", "fnv", "futures", - "hashlink 0.9.1", + "hashlink 0.11.0", "hex", "hkdf", "lazy_static", "libp2p-identity", - "lru 0.12.5", "more-asserts", "multiaddr", "parking_lot", "rand 0.8.5", "smallvec", - "socket2 0.5.10", + "socket2 0.6.3", "tokio", "tracing", "uint 0.10.0", @@ -3358,9 +3342,9 @@ dependencies = [ [[package]] name = "doctest-file" -version = "1.0.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aac81fa3e28d21450aa4d2ac065992ba96a1d7303efbce51a95f4fd175b67562" +checksum = "c2db04e74f0a9a93103b50e90b96024c9b2bdca8bce6a632ec71b88736d3d359" [[package]] name = "document-features" @@ -3609,7 +3593,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c853bd72c9e5787f8aafc3df2907c2ed03cff3150c3acd94e2e53a98ab70a8ab" dependencies = [ - "cpufeatures", + "cpufeatures 0.2.17", "ring", "sha2", ] @@ -3731,14 +3715,19 @@ dependencies = [ "reth-engine-primitives", "reth-ethereum", "reth-network-peers", + "reth-node-api", "reth-node-builder", "reth-op", "reth-optimism-evm", "reth-optimism-flashblocks", "reth-optimism-forks", "reth-payload-builder", + "reth-payload-primitives", + "reth-primitives-traits", + "reth-provider", "reth-rpc-api", "reth-rpc-engine-api", + "reth-trie-common", "revm 36.0.0", "revm-primitives", "serde", @@ -4213,8 +4202,8 @@ dependencies = [ "libc", "log", "rustversion", - "windows-link", - "windows-result", + "windows-link 0.2.1", + "windows-result 0.4.1", ] [[package]] @@ -4351,12 +4340,12 @@ dependencies = [ [[package]] name = "gmp-mpfr-sys" -version = "1.6.8" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60f8970a75c006bb2f8ae79c6768a116dd215fa8346a87aed99bf9d82ca43394" +checksum = "8cfc928d8ff4ab3767a3674cf55f81186436fb6070866bb1443ffe65a640d2d6" dependencies = [ "libc", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -4434,7 +4423,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" dependencies = [ "allocator-api2", - "equivalent", "foldhash 0.1.5", ] @@ -4470,6 +4458,15 @@ dependencies = [ "hashbrown 0.15.5", ] +[[package]] +name = "hashlink" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea0b22561a9c04a7cb1a302c013e0259cd3b4bb619f145b32f72b8b4bcbed230" +dependencies = [ + "hashbrown 0.16.1", +] + [[package]] name = "hdrhistogram" version = "7.5.4" @@ -4717,9 +4714,9 @@ dependencies = [ [[package]] name = "hyper" -version = "1.8.1" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11" +checksum = "6299f016b246a94207e63da54dbe807655bf9e00044f73ded42c3ac5305fbcca" dependencies = [ "atomic-waker", "bytes", @@ -4732,7 +4729,6 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", - "pin-utils", "smallvec", "tokio", "want", @@ -4754,7 +4750,6 @@ dependencies = [ "tokio", "tokio-rustls", "tower-service", - "webpki-roots 1.0.6", ] [[package]] @@ -4824,7 +4819,7 @@ dependencies = [ "js-sys", "log", "wasm-bindgen", - "windows-core", + "windows-core 0.62.2", ] [[package]] @@ -4998,7 +4993,7 @@ dependencies = [ "rtnetlink", "system-configuration", "tokio", - "windows", + "windows 0.62.2", ] [[package]] @@ -5133,9 +5128,9 @@ dependencies = [ [[package]] name = "instability" -version = "0.3.11" +version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "357b7205c6cd18dd2c86ed312d1e70add149aea98e7ef72b9fdf0270e555c11d" +checksum = "5eb2d60ef19920a3a9193c3e371f726ec1dafc045dac788d0fb3704272458971" dependencies = [ "darling 0.23.0", "indoc", @@ -5179,14 +5174,15 @@ dependencies = [ [[package]] name = "ipconfig" -version = "0.3.2" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b58db92f96b720de98181bbbe63c831e87005ab460c1bf306eb2622b4707997f" +checksum = "4d40460c0ce33d6ce4b0630ad68ff63d6661961c48b6dba35e5a4d81cfb48222" dependencies = [ - "socket2 0.5.10", + "socket2 0.6.3", "widestring", - "windows-sys 0.48.0", - "winreg", + "windows-registry", + "windows-result 0.4.1", + "windows-sys 0.61.2", ] [[package]] @@ -5200,9 +5196,9 @@ dependencies = [ [[package]] name = "iri-string" -version = "0.7.10" +version = "0.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c91338f0783edbd6195decb37bae672fd3b165faffb89bf7b9e6942f8b1a731a" +checksum = "25e659a4bb38e810ebc252e53b5814ff908a8c58c2a9ce2fae1bbec24cbf4e20" dependencies = [ "memchr", "serde", @@ -5254,9 +5250,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "jemalloc_pprof" @@ -5284,7 +5280,7 @@ dependencies = [ "cesu8", "cfg-if", "combine", - "jni-sys", + "jni-sys 0.3.1", "log", "thiserror 1.0.69", "walkdir", @@ -5293,9 +5289,31 @@ dependencies = [ [[package]] name = "jni-sys" -version = "0.3.0" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41a652e1f9b6e0275df1f15b32661cf0d4b78d4d87ddec5e0c3c20f097433258" +dependencies = [ + "jni-sys 0.4.1", +] + +[[package]] +name = "jni-sys" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" +checksum = "c6377a88cb3910bee9b0fa88d4f42e1d2da8e79915598f65fb0c7ee14c878af2" +dependencies = [ + "jni-sys-macros", +] + +[[package]] +name = "jni-sys-macros" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" +dependencies = [ + "quote", + "syn 2.0.117", +] [[package]] name = "jobserver" @@ -5309,10 +5327,12 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.91" +version = "0.3.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b49715b7073f385ba4bc528e5747d02e66cb39c6146efb66b781f131f0fb399c" +checksum = "2e04e2ef80ce82e13552136fabeef8a5ed1f985a96805761cbb9a2c34e7664d9" dependencies = [ + "cfg-if", + "futures-util", "once_cell", "wasm-bindgen", ] @@ -5521,9 +5541,9 @@ dependencies = [ [[package]] name = "kasuari" -version = "0.4.11" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fe90c1150662e858c7d5f945089b7517b0a80d8bf7ba4b1b5ffc984e7230a5b" +checksum = "bde5057d6143cc94e861d90f591b9303d6716c6b9602309150bd068853c10899" dependencies = [ "hashbrown 0.16.1", "portable-atomic", @@ -5536,14 +5556,14 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cb26cec98cce3a3d96cbb7bced3c4b16e3d13f27ec56dbd62cbc8f39cfb9d653" dependencies = [ - "cpufeatures", + "cpufeatures 0.2.17", ] [[package]] name = "keccak-asm" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b646a74e746cd25045aa0fd42f4f7f78aa6d119380182c7e63a5593c4ab8df6f" +checksum = "fa468878266ad91431012b3e5ef1bf9b170eab22883503a318d46857afa4579a" dependencies = [ "digest 0.10.7", "sha3-asm", @@ -5596,7 +5616,7 @@ dependencies = [ "kona-registry", "kona-std-fpvm", "kona-std-fpvm-proc", - "lru 0.16.3", + "lru", "op-alloy-consensus", "op-alloy-rpc-types-engine", "op-revm 17.0.0", @@ -6121,7 +6141,7 @@ dependencies = [ "kona-protocol", "kona-registry", "lazy_static", - "lru 0.16.3", + "lru", "op-alloy-consensus", "op-alloy-rpc-types-engine", "op-revm 17.0.0", @@ -6230,7 +6250,7 @@ dependencies = [ "kona-genesis", "kona-macros", "kona-protocol", - "lru 0.16.3", + "lru", "metrics", "op-alloy-consensus", "op-alloy-network", @@ -6255,7 +6275,7 @@ dependencies = [ "kona-genesis", "kona-macros", "kona-protocol", - "lru 0.16.3", + "lru", "metrics", "op-alloy-consensus", "rstest", @@ -6406,9 +6426,9 @@ checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" [[package]] name = "libc" -version = "0.2.183" +version = "0.2.184" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b646652bf6661599e1da8901b3b9522896f01e736bad5f723fe7a3a27f899d" +checksum = "48f5d2a454e16a5ea0f4ced81bd44e4cfc7bd3a507b61887c99fd3538b28e4af" [[package]] name = "libgit2-sys" @@ -6429,7 +6449,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" dependencies = [ "cfg-if", - "windows-link", + "windows-link 0.2.1", ] [[package]] @@ -6536,9 +6556,9 @@ dependencies = [ [[package]] name = "libp2p-gossipsub" -version = "0.49.3" +version = "0.49.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cef64c3bdfaee9561319a289d778e9f8c56bd8e10f5d1059289ebb085ef09d7" +checksum = "a538e571cd38f504f761c61b8f79127489ea7a7d6f05c41ca15d31ffb5726326" dependencies = [ "async-channel", "asynchronous-codec", @@ -6828,9 +6848,9 @@ dependencies = [ [[package]] name = "libredox" -version = "0.1.14" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1744e39d1d6a9948f4f388969627434e31128196de472883b39f148769bfe30a" +checksum = "7ddbf48fd451246b1f8c2610bd3b4ac0cc6e149d89832867093ab69a17194f08" dependencies = [ "bitflags 2.11.0", "libc", @@ -6868,9 +6888,9 @@ dependencies = [ [[package]] name = "line-clipping" -version = "0.3.5" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f4de44e98ddbf09375cbf4d17714d18f39195f4f4894e8524501726fd9a8a4a" +checksum = "3f50e8f47623268b5407192d26876c4d7f89d686ca130fdc53bced4814cd29f8" dependencies = [ "bitflags 2.11.0", ] @@ -6938,15 +6958,6 @@ dependencies = [ "tracing-subscriber 0.3.23", ] -[[package]] -name = "lru" -version = "0.12.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" -dependencies = [ - "hashbrown 0.15.5", -] - [[package]] name = "lru" version = "0.16.3" @@ -7151,7 +7162,7 @@ dependencies = [ "once_cell", "procfs", "rlimit", - "windows", + "windows 0.62.2", ] [[package]] @@ -7234,9 +7245,9 @@ dependencies = [ [[package]] name = "mio" -version = "1.1.1" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc" +checksum = "50b7e5b27aa02a74bac8c3f23f448f8d87ff11f92d3aac1a6ed369ee08cc56c1" dependencies = [ "libc", "log", @@ -7293,9 +7304,9 @@ dependencies = [ [[package]] name = "moka" -version = "0.12.14" +version = "0.12.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85f8024e1c8e71c778968af91d43700ce1d11b219d127d79fb2934153b82b42b" +checksum = "957228ad12042ee839f93c8f257b62b4c0ab5eaae1d4fa60de53b27c9d7c5046" dependencies = [ "async-lock", "crossbeam-channel", @@ -7575,9 +7586,9 @@ dependencies = [ [[package]] name = "num-conv" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf97ec579c3c42f953ef76dbf8d55ac91fb219dde70e49aa4a6b7d74e9919050" +checksum = "c6673768db2d862beb9b39a78fdcb1a69439615d5794a1be50caa9bc92c81967" [[package]] name = "num-integer" @@ -7632,9 +7643,9 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.7.5" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" +checksum = "5d0bca838442ec211fa11de3a8b0e0e8f3a4522575b5c4c06ed722e005036f26" dependencies = [ "num_enum_derive", "rustversion", @@ -7642,9 +7653,9 @@ dependencies = [ [[package]] name = "num_enum_derive" -version = "0.7.5" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" +checksum = "680998035259dcfcafe653688bf2aa6d3e2dc05e98be6ab46afb089dc84f1df8" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -7737,7 +7748,7 @@ checksum = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e" [[package]] name = "op-alloy" -version = "0.23.1" +version = "0.24.0" dependencies = [ "op-alloy-consensus", "op-alloy-network", @@ -7749,7 +7760,7 @@ dependencies = [ [[package]] name = "op-alloy-consensus" -version = "0.23.1" +version = "0.24.0" dependencies = [ "alloy-consensus", "alloy-eips", @@ -7761,8 +7772,13 @@ dependencies = [ "alloy-signer", "arbitrary", "bincode 2.0.1", + "bytes", "derive_more", + "modular-bitfield", "rand 0.9.2", + "reth-codecs", + "reth-codecs-derive", + "reth-zstd-compressors", "serde", "serde_json", "serde_with", @@ -7777,7 +7793,7 @@ checksum = "a79f352fc3893dcd670172e615afef993a41798a1d3fc0db88a3e60ef2e70ecc" [[package]] name = "op-alloy-network" -version = "0.23.1" +version = "0.24.0" dependencies = [ "alloy-consensus", "alloy-network", @@ -7790,7 +7806,7 @@ dependencies = [ [[package]] name = "op-alloy-provider" -version = "0.23.1" +version = "0.24.0" dependencies = [ "alloy-network", "alloy-primitives", @@ -7803,7 +7819,7 @@ dependencies = [ [[package]] name = "op-alloy-rpc-jsonrpsee" -version = "0.23.1" +version = "0.24.0" dependencies = [ "alloy-primitives", "jsonrpsee", @@ -7811,7 +7827,7 @@ dependencies = [ [[package]] name = "op-alloy-rpc-types" -version = "0.23.1" +version = "0.24.0" dependencies = [ "alloy-consensus", "alloy-eips", @@ -7832,7 +7848,7 @@ dependencies = [ [[package]] name = "op-alloy-rpc-types-engine" -version = "0.23.1" +version = "0.24.0" dependencies = [ "alloy-consensus", "alloy-eips", @@ -7898,7 +7914,6 @@ checksum = "79c92b75162c2ed1661849fa51683b11254a5b661798360a2c24be918edafd40" dependencies = [ "auto_impl", "revm 34.0.0", - "serde", ] [[package]] @@ -8063,9 +8078,9 @@ dependencies = [ [[package]] name = "opentelemetry-otlp" -version = "0.31.0" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2366db2dca4d2ad033cad11e6ee42844fd727007af5ad04a1730f4cb8163bf" +checksum = "1f69cd6acbb9af919df949cd1ec9e5e7fdc2ef15d234b6b795aaa525cc02f71f" dependencies = [ "http", "opentelemetry 0.31.0", @@ -8204,7 +8219,6 @@ version = "3.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "799781ae679d79a948e13d4824a40970bfa500058d245760dd857301059810fa" dependencies = [ - "arbitrary", "arrayvec", "bitvec", "byte-slice-cast", @@ -8254,7 +8268,7 @@ dependencies = [ "libc", "redox_syscall 0.5.18", "smallvec", - "windows-link", + "windows-link 0.2.1", ] [[package]] @@ -8472,7 +8486,7 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf" dependencies = [ - "cpufeatures", + "cpufeatures 0.2.17", "opaque-debug", "universal-hash", ] @@ -8484,7 +8498,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d1fe60d06143b2430aa532c94cfe9e29783047f06c0d7fd359a9a51b729fa25" dependencies = [ "cfg-if", - "cpufeatures", + "cpufeatures 0.2.17", "opaque-debug", "universal-hash", ] @@ -8688,9 +8702,9 @@ dependencies = [ [[package]] name = "proptest" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37566cb3fdacef14c0737f9546df7cfeadbfbc9fef10991038bf5015d0c80532" +checksum = "4b45fcc2344c680f5025fe57779faef368840d0bd1f42f216291f0dc4ace4744" dependencies = [ "bit-set", "bit-vec", @@ -9052,7 +9066,7 @@ dependencies = [ "indoc", "itertools 0.14.0", "kasuari", - "lru 0.16.3", + "lru", "strum", "thiserror 2.0.18", "unicode-segmentation", @@ -9268,32 +9282,23 @@ dependencies = [ "http-body", "http-body-util", "hyper", - "hyper-rustls", "hyper-util", "js-sys", "log", "percent-encoding", "pin-project-lite", - "quinn", - "rustls", - "rustls-native-certs", - "rustls-pki-types", "serde", "serde_json", "serde_urlencoded", "sync_wrapper", "tokio", - "tokio-rustls", - "tokio-util", "tower 0.5.3", "tower-http", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", - "wasm-streams", "web-sys", - "webpki-roots 1.0.6", ] [[package]] @@ -9304,7 +9309,9 @@ checksum = "ab3f43e3283ab1488b624b44b0e988d0acea0b3214e694730a055cb6b2efa801" dependencies = [ "base64 0.22.1", "bytes", + "futures-channel", "futures-core", + "futures-util", "http", "http-body", "http-body-util", @@ -9325,12 +9332,14 @@ dependencies = [ "sync_wrapper", "tokio", "tokio-rustls", + "tokio-util", "tower 0.5.3", "tower-http", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", + "wasm-streams", "web-sys", ] @@ -9343,7 +9352,7 @@ checksum = "1e061d1b48cb8d38042de4ae0a7a6401009d6143dc80d2e2d6f31f0bdd6470c7" [[package]] name = "reth-basic-payload-builder" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-consensus", "alloy-eips", @@ -9352,6 +9361,7 @@ dependencies = [ "futures-util", "metrics", "reth-chain-state", + "reth-execution-cache", "reth-metrics", "reth-payload-builder", "reth-payload-builder-primitives", @@ -9360,6 +9370,7 @@ dependencies = [ "reth-revm", "reth-storage-api", "reth-tasks", + "serde", "tokio", "tracing", ] @@ -9367,7 +9378,7 @@ dependencies = [ [[package]] name = "reth-chain-state" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-consensus", "alloy-eips", @@ -9388,8 +9399,8 @@ dependencies = [ "reth-primitives-traits", "reth-storage-api", "reth-trie", - "revm-database 10.0.0", - "revm-state 9.0.0", + "revm-database 12.0.0", + "revm-state 10.0.0", "serde", "tokio", "tokio-stream", @@ -9399,12 +9410,12 @@ dependencies = [ [[package]] name = "reth-chainspec" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-chains", "alloy-consensus", "alloy-eips", - "alloy-evm 0.27.3", + "alloy-evm 0.29.2", "alloy-genesis", "alloy-primitives", "alloy-trie", @@ -9419,7 +9430,7 @@ dependencies = [ [[package]] name = "reth-cli" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-genesis", "clap", @@ -9427,13 +9438,12 @@ dependencies = [ "reth-cli-runner", "reth-db", "serde_json", - "shellexpand", ] [[package]] name = "reth-cli-commands" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-chains", "alloy-consensus", @@ -9442,6 +9452,7 @@ dependencies = [ "alloy-rlp", "arbitrary", "backon", + "blake3", "clap", "comfy-table", "crossterm", @@ -9457,7 +9468,8 @@ dependencies = [ "proptest", "proptest-arbitrary-interop", "ratatui", - "reqwest 0.12.28", + "rayon", + "reqwest 0.13.2", "reth-chainspec", "reth-cli", "reth-cli-runner", @@ -9519,7 +9531,7 @@ dependencies = [ [[package]] name = "reth-cli-runner" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "reth-tasks", "tokio", @@ -9529,7 +9541,7 @@ dependencies = [ [[package]] name = "reth-cli-util" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-eips", "alloy-primitives", @@ -9542,14 +9554,16 @@ dependencies = [ "secp256k1 0.30.0", "serde", "thiserror 2.0.18", + "tikv-jemalloc-sys", "tikv-jemallocator", "tracy-client", ] [[package]] name = "reth-codecs" -version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf1df733d93427eb197cf80a7aaa68bff8949e1b59d34cde1ad410351a24136d" dependencies = [ "alloy-consensus", "alloy-eips", @@ -9559,7 +9573,7 @@ dependencies = [ "arbitrary", "bytes", "modular-bitfield", - "op-alloy-consensus", + "parity-scale-codec", "reth-codecs-derive", "reth-zstd-compressors", "serde", @@ -9568,8 +9582,9 @@ dependencies = [ [[package]] name = "reth-codecs-derive" -version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d14acf8feadf1eed0734d1766b55b6c19a374d4cb140bc862880f96da33e7e5a" dependencies = [ "proc-macro2", "quote", @@ -9579,7 +9594,7 @@ dependencies = [ [[package]] name = "reth-config" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "eyre", "humantime-serde", @@ -9595,7 +9610,7 @@ dependencies = [ [[package]] name = "reth-consensus" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-consensus", "alloy-primitives", @@ -9608,10 +9623,11 @@ dependencies = [ [[package]] name = "reth-consensus-common" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-consensus", "alloy-eips", + "alloy-primitives", "reth-chainspec", "reth-consensus", "reth-primitives-traits", @@ -9620,7 +9636,7 @@ dependencies = [ [[package]] name = "reth-consensus-debug-client" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-consensus", "alloy-eips", @@ -9633,7 +9649,7 @@ dependencies = [ "derive_more", "eyre", "futures", - "reqwest 0.12.28", + "reqwest 0.13.2", "reth-node-api", "reth-primitives-traits", "reth-tracing", @@ -9646,7 +9662,7 @@ dependencies = [ [[package]] name = "reth-db" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-primitives", "derive_more", @@ -9654,6 +9670,7 @@ dependencies = [ "metrics", "page_size", "parking_lot", + "quanta", "reth-db-api", "reth-fs-util", "reth-libmdbx", @@ -9673,10 +9690,9 @@ dependencies = [ [[package]] name = "reth-db-api" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-consensus", - "alloy-genesis", "alloy-primitives", "arbitrary", "arrayvec", @@ -9684,8 +9700,6 @@ dependencies = [ "derive_more", "metrics", "modular-bitfield", - "op-alloy-consensus", - "parity-scale-codec", "proptest", "reth-codecs", "reth-db-models", @@ -9702,7 +9716,7 @@ dependencies = [ [[package]] name = "reth-db-common" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-consensus", "alloy-genesis", @@ -9732,7 +9746,7 @@ dependencies = [ [[package]] name = "reth-db-models" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-eips", "alloy-primitives", @@ -9747,7 +9761,7 @@ dependencies = [ [[package]] name = "reth-discv4" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -9772,7 +9786,7 @@ dependencies = [ [[package]] name = "reth-discv5" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -9796,7 +9810,7 @@ dependencies = [ [[package]] name = "reth-dns-discovery" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-primitives", "dashmap", @@ -9820,7 +9834,7 @@ dependencies = [ [[package]] name = "reth-downloaders" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-consensus", "alloy-eips", @@ -9855,7 +9869,7 @@ dependencies = [ [[package]] name = "reth-e2e-test-utils" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-consensus", "alloy-eips", @@ -9890,7 +9904,6 @@ dependencies = [ "reth-payload-builder", "reth-payload-builder-primitives", "reth-payload-primitives", - "reth-primitives", "reth-primitives-traits", "reth-provider", "reth-rpc-api", @@ -9901,7 +9914,7 @@ dependencies = [ "reth-tasks", "reth-tokio-util", "reth-tracing", - "revm 34.0.0", + "revm 36.0.0", "serde_json", "tempfile", "tokio", @@ -9913,7 +9926,7 @@ dependencies = [ [[package]] name = "reth-ecies" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "aes", "alloy-primitives", @@ -9941,7 +9954,7 @@ dependencies = [ [[package]] name = "reth-engine-local" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-consensus", "alloy-primitives", @@ -9965,7 +9978,7 @@ dependencies = [ [[package]] name = "reth-engine-primitives" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-consensus", "alloy-eips", @@ -9987,43 +10000,20 @@ dependencies = [ "tokio", ] -[[package]] -name = "reth-engine-service" -version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" -dependencies = [ - "futures", - "pin-project", - "reth-chainspec", - "reth-consensus", - "reth-engine-primitives", - "reth-engine-tree", - "reth-evm", - "reth-network-p2p", - "reth-node-types", - "reth-payload-builder", - "reth-provider", - "reth-prune", - "reth-stages-api", - "reth-tasks", - "reth-trie-db", -] - [[package]] name = "reth-engine-tree" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-consensus", "alloy-eip7928", "alloy-eips", - "alloy-evm 0.27.3", + "alloy-evm 0.29.2", "alloy-primitives", "alloy-rlp", "alloy-rpc-types-engine", "crossbeam-channel", "derive_more", - "fixed-cache", "futures", "metrics", "moka", @@ -10037,6 +10027,7 @@ dependencies = [ "reth-errors", "reth-ethereum-primitives", "reth-evm", + "reth-execution-cache", "reth-execution-types", "reth-metrics", "reth-network-p2p", @@ -10057,10 +10048,9 @@ dependencies = [ "reth-trie-db", "reth-trie-parallel", "reth-trie-sparse", - "revm 34.0.0", + "revm 36.0.0", "revm-primitives", "schnellru", - "smallvec", "thiserror 2.0.18", "tokio", "tracing", @@ -10069,7 +10059,7 @@ dependencies = [ [[package]] name = "reth-engine-util" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-consensus", "alloy-rpc-types-engine", @@ -10097,7 +10087,7 @@ dependencies = [ [[package]] name = "reth-era" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-consensus", "alloy-eips", @@ -10112,13 +10102,13 @@ dependencies = [ [[package]] name = "reth-era-downloader" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-primitives", "bytes", "eyre", "futures-util", - "reqwest 0.12.28", + "reqwest 0.13.2", "reth-era", "reth-fs-util", "sha2", @@ -10128,7 +10118,7 @@ dependencies = [ [[package]] name = "reth-era-utils" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-consensus", "alloy-primitives", @@ -10150,7 +10140,7 @@ dependencies = [ [[package]] name = "reth-errors" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "reth-consensus", "reth-execution-errors", @@ -10161,7 +10151,7 @@ dependencies = [ [[package]] name = "reth-eth-wire" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-chains", "alloy-primitives", @@ -10190,7 +10180,7 @@ dependencies = [ [[package]] name = "reth-eth-wire-types" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-chains", "alloy-consensus", @@ -10214,7 +10204,7 @@ dependencies = [ [[package]] name = "reth-ethereum" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-rpc-types-engine", "alloy-rpc-types-eth", @@ -10255,7 +10245,7 @@ dependencies = [ [[package]] name = "reth-ethereum-cli" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "clap", "eyre", @@ -10278,7 +10268,7 @@ dependencies = [ [[package]] name = "reth-ethereum-consensus" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-consensus", "alloy-eips", @@ -10294,25 +10284,23 @@ dependencies = [ [[package]] name = "reth-ethereum-engine-primitives" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-eips", "alloy-primitives", - "alloy-rlp", "alloy-rpc-types-engine", "reth-engine-primitives", "reth-ethereum-primitives", "reth-payload-primitives", "reth-primitives-traits", "serde", - "sha2", "thiserror 2.0.18", ] [[package]] name = "reth-ethereum-forks" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-eip2124", "alloy-hardforks", @@ -10326,7 +10314,7 @@ dependencies = [ [[package]] name = "reth-ethereum-payload-builder" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-consensus", "alloy-eips", @@ -10340,6 +10328,7 @@ dependencies = [ "reth-ethereum-primitives", "reth-evm", "reth-evm-ethereum", + "reth-execution-cache", "reth-payload-builder", "reth-payload-builder-primitives", "reth-payload-primitives", @@ -10348,34 +10337,28 @@ dependencies = [ "reth-revm", "reth-storage-api", "reth-transaction-pool", - "revm 34.0.0", + "revm 36.0.0", "tracing", ] [[package]] name = "reth-ethereum-primitives" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-consensus", "alloy-eips", "alloy-primitives", - "alloy-rlp", "alloy-rpc-types-eth", - "alloy-serde", - "arbitrary", - "modular-bitfield", "reth-codecs", "reth-primitives-traits", - "reth-zstd-compressors", "serde", - "serde_with", ] [[package]] name = "reth-etl" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "rayon", "reth-db-api", @@ -10385,11 +10368,11 @@ dependencies = [ [[package]] name = "reth-evm" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-evm 0.27.3", + "alloy-evm 0.29.2", "alloy-primitives", "auto_impl", "derive_more", @@ -10403,21 +10386,19 @@ dependencies = [ "reth-storage-api", "reth-storage-errors", "reth-trie-common", - "revm 34.0.0", + "revm 36.0.0", ] [[package]] name = "reth-evm-ethereum" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-evm 0.27.3", + "alloy-evm 0.29.2", "alloy-primitives", "alloy-rpc-types-engine", - "derive_more", - "parking_lot", "reth-chainspec", "reth-ethereum-forks", "reth-ethereum-primitives", @@ -10425,15 +10406,33 @@ dependencies = [ "reth-execution-types", "reth-primitives-traits", "reth-storage-errors", - "revm 34.0.0", + "revm 36.0.0", +] + +[[package]] +name = "reth-execution-cache" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +dependencies = [ + "alloy-primitives", + "fixed-cache", + "metrics", + "parking_lot", + "reth-errors", + "reth-metrics", + "reth-primitives-traits", + "reth-provider", + "reth-revm", + "reth-trie", + "tracing", ] [[package]] name = "reth-execution-errors" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ - "alloy-evm 0.27.3", + "alloy-evm 0.29.2", "alloy-primitives", "alloy-rlp", "nybbles", @@ -10444,17 +10443,18 @@ dependencies = [ [[package]] name = "reth-execution-types" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-evm 0.27.3", + "alloy-evm 0.29.2", "alloy-primitives", + "alloy-rlp", "derive_more", "reth-ethereum-primitives", "reth-primitives-traits", "reth-trie-common", - "revm 34.0.0", + "revm 36.0.0", "serde", "serde_with", ] @@ -10462,7 +10462,7 @@ dependencies = [ [[package]] name = "reth-exex" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-consensus", "alloy-eips", @@ -10500,7 +10500,7 @@ dependencies = [ [[package]] name = "reth-exex-test-utils" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-eips", "eyre", @@ -10532,7 +10532,7 @@ dependencies = [ [[package]] name = "reth-exex-types" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-eips", "alloy-primitives", @@ -10546,7 +10546,7 @@ dependencies = [ [[package]] name = "reth-fs-util" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "serde", "serde_json", @@ -10556,7 +10556,7 @@ dependencies = [ [[package]] name = "reth-invalid-block-hooks" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-consensus", "alloy-primitives", @@ -10574,9 +10574,9 @@ dependencies = [ "reth-rpc-api", "reth-tracing", "reth-trie", - "revm 34.0.0", - "revm-bytecode 8.0.0", - "revm-database 10.0.0", + "revm 36.0.0", + "revm-bytecode 9.0.0", + "revm-database 12.0.0", "serde", "serde_json", ] @@ -10584,7 +10584,7 @@ dependencies = [ [[package]] name = "reth-ipc" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "bytes", "futures", @@ -10604,10 +10604,11 @@ dependencies = [ [[package]] name = "reth-libmdbx" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "bitflags 2.11.0", "byteorder", + "crossbeam-queue", "dashmap", "derive_more", "parking_lot", @@ -10620,7 +10621,7 @@ dependencies = [ [[package]] name = "reth-mdbx-sys" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "bindgen", "cc", @@ -10629,7 +10630,7 @@ dependencies = [ [[package]] name = "reth-metrics" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "futures", "metrics", @@ -10641,7 +10642,7 @@ dependencies = [ [[package]] name = "reth-net-banlist" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-primitives", "ipnet", @@ -10650,11 +10651,11 @@ dependencies = [ [[package]] name = "reth-net-nat" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "futures-util", "if-addrs 0.14.0", - "reqwest 0.12.28", + "reqwest 0.13.2", "serde_with", "thiserror 2.0.18", "tokio", @@ -10664,7 +10665,7 @@ dependencies = [ [[package]] name = "reth-network" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-consensus", "alloy-eips", @@ -10721,7 +10722,7 @@ dependencies = [ [[package]] name = "reth-network-api" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-consensus", "alloy-primitives", @@ -10746,7 +10747,7 @@ dependencies = [ [[package]] name = "reth-network-p2p" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-consensus", "alloy-eips", @@ -10769,7 +10770,7 @@ dependencies = [ [[package]] name = "reth-network-peers" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -10784,7 +10785,7 @@ dependencies = [ [[package]] name = "reth-network-types" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-eip2124", "humantime-serde", @@ -10798,7 +10799,7 @@ dependencies = [ [[package]] name = "reth-nippy-jar" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "anyhow", "bincode 1.3.3", @@ -10815,7 +10816,7 @@ dependencies = [ [[package]] name = "reth-node-api" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-rpc-types-engine", "eyre", @@ -10839,7 +10840,7 @@ dependencies = [ [[package]] name = "reth-node-builder" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-consensus", "alloy-eips", @@ -10866,7 +10867,6 @@ dependencies = [ "reth-downloaders", "reth-engine-local", "reth-engine-primitives", - "reth-engine-service", "reth-engine-tree", "reth-engine-util", "reth-evm", @@ -10908,7 +10908,7 @@ dependencies = [ [[package]] name = "reth-node-core" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-consensus", "alloy-eips", @@ -10945,12 +10945,12 @@ dependencies = [ "reth-stages-types", "reth-storage-api", "reth-storage-errors", + "reth-tasks", "reth-tracing", "reth-tracing-otlp", "reth-transaction-pool", "secp256k1 0.30.0", "serde", - "shellexpand", "strum", "thiserror 2.0.18", "toml", @@ -10963,7 +10963,7 @@ dependencies = [ [[package]] name = "reth-node-ethereum" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-eips", "alloy-network", @@ -10994,14 +10994,14 @@ dependencies = [ "reth-rpc-server-types", "reth-tracing", "reth-transaction-pool", - "revm 34.0.0", + "revm 36.0.0", "tokio", ] [[package]] name = "reth-node-ethstats" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-consensus", "alloy-primitives", @@ -11025,7 +11025,7 @@ dependencies = [ [[package]] name = "reth-node-events" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-consensus", "alloy-eips", @@ -11049,7 +11049,7 @@ dependencies = [ [[package]] name = "reth-node-metrics" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "bytes", "eyre", @@ -11064,7 +11064,7 @@ dependencies = [ "metrics-util 0.20.1", "pprof_util", "procfs", - "reqwest 0.12.28", + "reqwest 0.13.2", "reth-fs-util", "reth-metrics", "reth-tasks", @@ -11078,7 +11078,7 @@ dependencies = [ [[package]] name = "reth-node-types" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "reth-chainspec", "reth-db-api", @@ -11198,6 +11198,7 @@ dependencies = [ "reth-stages", "reth-static-file", "reth-static-file-types", + "reth-tasks", "reth-tracing", "serde", "tempfile", @@ -11440,7 +11441,6 @@ dependencies = [ "reth-optimism-forks", "reth-optimism-primitives", "reth-optimism-txpool", - "reth-payload-builder", "reth-payload-builder-primitives", "reth-payload-primitives", "reth-payload-util", @@ -11655,15 +11655,17 @@ dependencies = [ [[package]] name = "reth-payload-builder" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-consensus", "alloy-primitives", "alloy-rpc-types", + "derive_more", "futures-util", "metrics", "reth-chain-state", "reth-ethereum-engine-primitives", + "reth-execution-cache", "reth-metrics", "reth-payload-builder-primitives", "reth-payload-primitives", @@ -11676,7 +11678,7 @@ dependencies = [ [[package]] name = "reth-payload-builder-primitives" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "pin-project", "reth-payload-primitives", @@ -11688,11 +11690,12 @@ dependencies = [ [[package]] name = "reth-payload-primitives" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-consensus", "alloy-eips", "alloy-primitives", + "alloy-rlp", "alloy-rpc-types-engine", "auto_impl", "either", @@ -11704,6 +11707,7 @@ dependencies = [ "reth-primitives-traits", "reth-trie-common", "serde", + "sha2", "thiserror 2.0.18", "tokio", ] @@ -11711,7 +11715,7 @@ dependencies = [ [[package]] name = "reth-payload-util" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-consensus", "alloy-primitives", @@ -11721,30 +11725,18 @@ dependencies = [ [[package]] name = "reth-payload-validator" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-consensus", "alloy-rpc-types-engine", "reth-primitives-traits", ] -[[package]] -name = "reth-primitives" -version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" -dependencies = [ - "alloy-consensus", - "once_cell", - "reth-ethereum-forks", - "reth-ethereum-primitives", - "reth-primitives-traits", - "reth-static-file-types", -] - [[package]] name = "reth-primitives-traits" -version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03650bb740d1bca0d974c007248177ae7a7e38c50c9f46eb02292c5d9bc01252" dependencies = [ "alloy-consensus", "alloy-eips", @@ -11754,34 +11746,33 @@ dependencies = [ "alloy-rpc-types-eth", "alloy-trie", "arbitrary", - "auto_impl", "byteorder", "bytes", "dashmap", "derive_more", "modular-bitfield", "once_cell", - "op-alloy-consensus", "proptest", "proptest-arbitrary-interop", + "quanta", "rayon", "reth-codecs", - "revm-bytecode 8.0.0", + "revm-bytecode 9.0.0", "revm-primitives", - "revm-state 9.0.0", + "revm-state 10.0.0", "secp256k1 0.30.0", "serde", - "serde_with", "thiserror 2.0.18", ] [[package]] name = "reth-provider" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-consensus", "alloy-eips", + "alloy-genesis", "alloy-primitives", "alloy-rpc-types-engine", "eyre", @@ -11812,8 +11803,8 @@ dependencies = [ "reth-tasks", "reth-trie", "reth-trie-db", - "revm-database 10.0.0", - "revm-state 9.0.0", + "revm-database 12.0.0", + "revm-state 10.0.0", "rocksdb", "strum", "tokio", @@ -11823,7 +11814,7 @@ dependencies = [ [[package]] name = "reth-prune" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-consensus", "alloy-eips", @@ -11852,7 +11843,7 @@ dependencies = [ [[package]] name = "reth-prune-types" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-primitives", "arbitrary", @@ -11868,26 +11859,26 @@ dependencies = [ [[package]] name = "reth-revm" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-primitives", "reth-primitives-traits", "reth-storage-api", "reth-storage-errors", "reth-trie", - "revm 34.0.0", + "revm 36.0.0", ] [[package]] name = "reth-rpc" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-consensus", "alloy-dyn-abi", "alloy-eip7928", "alloy-eips", - "alloy-evm 0.27.3", + "alloy-evm 0.29.2", "alloy-genesis", "alloy-network", "alloy-primitives", @@ -11940,9 +11931,10 @@ dependencies = [ "reth-rpc-server-types", "reth-storage-api", "reth-tasks", + "reth-tracing", "reth-transaction-pool", "reth-trie-common", - "revm 34.0.0", + "revm 36.0.0", "revm-inspectors", "revm-primitives", "serde", @@ -11958,7 +11950,7 @@ dependencies = [ [[package]] name = "reth-rpc-api" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-eip7928", "alloy-eips", @@ -11982,13 +11974,14 @@ dependencies = [ "reth-network-peers", "reth-rpc-eth-api", "reth-trie-common", + "serde", "serde_json", ] [[package]] name = "reth-rpc-builder" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-network", "alloy-provider", @@ -12006,9 +11999,11 @@ dependencies = [ "reth-metrics", "reth-network-api", "reth-node-core", + "reth-payload-primitives", "reth-primitives-traits", "reth-rpc", "reth-rpc-api", + "reth-rpc-engine-api", "reth-rpc-eth-api", "reth-rpc-eth-types", "reth-rpc-layer", @@ -12029,10 +12024,10 @@ dependencies = [ [[package]] name = "reth-rpc-convert" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-consensus", - "alloy-evm 0.27.3", + "alloy-evm 0.29.2", "alloy-json-rpc", "alloy-network", "alloy-primitives", @@ -12042,9 +12037,7 @@ dependencies = [ "dyn-clone", "jsonrpsee-types", "op-alloy-consensus", - "op-alloy-network", "op-alloy-rpc-types", - "reth-ethereum-primitives", "reth-evm", "reth-primitives-traits", "thiserror 2.0.18", @@ -12053,10 +12046,11 @@ dependencies = [ [[package]] name = "reth-rpc-engine-api" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-eips", "alloy-primitives", + "alloy-rlp", "alloy-rpc-types-engine", "async-trait", "jsonrpsee-core", @@ -12083,12 +12077,12 @@ dependencies = [ [[package]] name = "reth-rpc-eth-api" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-consensus", "alloy-dyn-abi", "alloy-eips", - "alloy-evm 0.27.3", + "alloy-evm 0.29.2", "alloy-json-rpc", "alloy-network", "alloy-primitives", @@ -12118,7 +12112,7 @@ dependencies = [ "reth-tasks", "reth-transaction-pool", "reth-trie-common", - "revm 34.0.0", + "revm 36.0.0", "revm-inspectors", "tokio", "tracing", @@ -12127,11 +12121,11 @@ dependencies = [ [[package]] name = "reth-rpc-eth-types" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-evm 0.27.3", + "alloy-evm 0.29.2", "alloy-network", "alloy-primitives", "alloy-rpc-client", @@ -12145,7 +12139,7 @@ dependencies = [ "jsonrpsee-types", "metrics", "rand 0.9.2", - "reqwest 0.12.28", + "reqwest 0.13.2", "reth-chain-state", "reth-chainspec", "reth-errors", @@ -12161,7 +12155,7 @@ dependencies = [ "reth-tasks", "reth-transaction-pool", "reth-trie", - "revm 34.0.0", + "revm 36.0.0", "revm-inspectors", "schnellru", "serde", @@ -12175,7 +12169,7 @@ dependencies = [ [[package]] name = "reth-rpc-layer" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-rpc-types-engine", "http", @@ -12189,7 +12183,7 @@ dependencies = [ [[package]] name = "reth-rpc-server-types" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-eips", "alloy-primitives", @@ -12205,18 +12199,19 @@ dependencies = [ [[package]] name = "reth-stages" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-consensus", "alloy-eips", "alloy-primitives", - "bincode 1.3.3", + "alloy-rlp", "eyre", "futures-util", "itertools 0.14.0", "num-traits", + "page_size", "rayon", - "reqwest 0.12.28", + "reqwest 0.13.2", "reth-chainspec", "reth-codecs", "reth-config", @@ -12232,6 +12227,7 @@ dependencies = [ "reth-execution-types", "reth-exex", "reth-fs-util", + "reth-libmdbx", "reth-network-p2p", "reth-primitives-traits", "reth-provider", @@ -12255,7 +12251,7 @@ dependencies = [ [[package]] name = "reth-stages-api" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-eips", "alloy-primitives", @@ -12263,6 +12259,7 @@ dependencies = [ "auto_impl", "futures-util", "metrics", + "reth-codecs", "reth-consensus", "reth-errors", "reth-metrics", @@ -12282,7 +12279,7 @@ dependencies = [ [[package]] name = "reth-stages-types" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-primitives", "arbitrary", @@ -12296,7 +12293,7 @@ dependencies = [ [[package]] name = "reth-static-file" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-primitives", "parking_lot", @@ -12316,7 +12313,7 @@ dependencies = [ [[package]] name = "reth-static-file-types" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-primitives", "clap", @@ -12331,7 +12328,7 @@ dependencies = [ [[package]] name = "reth-storage-api" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-consensus", "alloy-eips", @@ -12348,40 +12345,44 @@ dependencies = [ "reth-stages-types", "reth-storage-errors", "reth-trie-common", - "revm-database 10.0.0", + "revm-database 12.0.0", "serde_json", ] [[package]] name = "reth-storage-errors" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-eips", "alloy-primitives", "alloy-rlp", "derive_more", + "reth-codecs", "reth-primitives-traits", "reth-prune-types", "reth-static-file-types", - "revm-database-interface 9.0.0", - "revm-state 9.0.0", + "revm-database-interface 10.0.0", + "revm-state 10.0.0", "thiserror 2.0.18", ] [[package]] name = "reth-tasks" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ - "auto_impl", - "dyn-clone", + "crossbeam-utils", + "dashmap", "futures-util", + "libc", "metrics", + "parking_lot", "pin-project", "rayon", "reth-metrics", "thiserror 2.0.18", + "thread-priority", "tokio", "tracing", "tracing-futures", @@ -12390,7 +12391,7 @@ dependencies = [ [[package]] name = "reth-testing-utils" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-consensus", "alloy-eips", @@ -12406,7 +12407,7 @@ dependencies = [ [[package]] name = "reth-tokio-util" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "tokio", "tokio-stream", @@ -12416,7 +12417,7 @@ dependencies = [ [[package]] name = "reth-tracing" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "clap", "eyre", @@ -12435,13 +12436,13 @@ dependencies = [ [[package]] name = "reth-tracing-otlp" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "clap", "eyre", "opentelemetry 0.31.0", "opentelemetry-appender-tracing", - "opentelemetry-otlp 0.31.0", + "opentelemetry-otlp 0.31.1", "opentelemetry-semantic-conventions", "opentelemetry_sdk 0.31.0", "tracing", @@ -12453,7 +12454,7 @@ dependencies = [ [[package]] name = "reth-transaction-pool" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-consensus", "alloy-eips", @@ -12482,8 +12483,8 @@ dependencies = [ "reth-primitives-traits", "reth-storage-api", "reth-tasks", - "revm 34.0.0", - "revm-interpreter 32.0.0", + "revm 36.0.0", + "revm-interpreter 34.0.0", "revm-primitives", "rustc-hash", "schnellru", @@ -12499,7 +12500,7 @@ dependencies = [ [[package]] name = "reth-trie" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-consensus", "alloy-eips", @@ -12517,7 +12518,7 @@ dependencies = [ "reth-storage-errors", "reth-trie-common", "reth-trie-sparse", - "revm-database 10.0.0", + "revm-database 12.0.0", "tracing", "triehash", ] @@ -12525,7 +12526,7 @@ dependencies = [ [[package]] name = "reth-trie-common" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-consensus", "alloy-primitives", @@ -12544,7 +12545,7 @@ dependencies = [ "rayon", "reth-codecs", "reth-primitives-traits", - "revm-database 10.0.0", + "revm-database 12.0.0", "serde", "serde_with", ] @@ -12552,7 +12553,7 @@ dependencies = [ [[package]] name = "reth-trie-db" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-primitives", "metrics", @@ -12572,7 +12573,7 @@ dependencies = [ [[package]] name = "reth-trie-parallel" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -12588,7 +12589,6 @@ dependencies = [ "reth-storage-errors", "reth-tasks", "reth-trie", - "reth-trie-common", "reth-trie-sparse", "thiserror 2.0.18", "tracing", @@ -12597,7 +12597,7 @@ dependencies = [ [[package]] name = "reth-trie-sparse" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -12609,14 +12609,18 @@ dependencies = [ "reth-metrics", "reth-primitives-traits", "reth-trie-common", + "serde", + "serde_json", + "slotmap", "smallvec", "tracing", ] [[package]] name = "reth-zstd-compressors" -version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.11.3#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3be2e9bda3e45c5d87cfbe811676bfb9cb1f0e6fa82d1dd6a3e8cd996512f236" dependencies = [ "zstd", ] @@ -12666,9 +12670,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74d1e5c1eaa44d39d537f668bc5c3409dc01e5c8be954da6c83370bbdf006457" dependencies = [ "bitvec", - "phf", "revm-primitives", - "serde", ] [[package]] @@ -12697,7 +12699,6 @@ dependencies = [ "revm-database-interface 9.0.0", "revm-primitives", "revm-state 9.0.0", - "serde", ] [[package]] @@ -12730,7 +12731,6 @@ dependencies = [ "revm-database-interface 9.0.0", "revm-primitives", "revm-state 9.0.0", - "serde", ] [[package]] @@ -12755,12 +12755,10 @@ version = "10.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "529528d0b05fe646be86223032c3e77aa8b05caa2a35447d538c55965956a511" dependencies = [ - "alloy-eips", "revm-bytecode 8.0.0", "revm-database-interface 9.0.0", "revm-primitives", "revm-state 9.0.0", - "serde", ] [[package]] @@ -12787,7 +12785,6 @@ dependencies = [ "either", "revm-primitives", "revm-state 9.0.0", - "serde", "thiserror 2.0.18", ] @@ -12821,7 +12818,6 @@ dependencies = [ "revm-precompile", "revm-primitives", "revm-state 9.0.0", - "serde", ] [[package]] @@ -12857,8 +12853,6 @@ dependencies = [ "revm-interpreter 32.0.0", "revm-primitives", "revm-state 9.0.0", - "serde", - "serde_json", ] [[package]] @@ -12881,9 +12875,9 @@ dependencies = [ [[package]] name = "revm-inspectors" -version = "0.34.2" +version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e435414e9de50a1b930da602067c76365fea2fea11e80ceb50783c94ddd127f" +checksum = "9487362b728f80dd2033ef5f4d0688453435bbe7caa721fa7e3b8fa25d89242b" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -12893,7 +12887,7 @@ dependencies = [ "boa_engine", "boa_gc", "colorchoice", - "revm 34.0.0", + "revm 36.0.0", "serde", "serde_json", "thiserror 2.0.18", @@ -12909,7 +12903,6 @@ dependencies = [ "revm-context-interface 14.0.0", "revm-primitives", "revm-state 9.0.0", - "serde", ] [[package]] @@ -12972,7 +12965,6 @@ dependencies = [ "bitflags 2.11.0", "revm-bytecode 8.0.0", "revm-primitives", - "serde", ] [[package]] @@ -13126,9 +13118,8 @@ dependencies = [ [[package]] name = "rollup-boost" -version = "0.7.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76d1d7c635dec67c86346eb871e8a22dd1596c33d4a96a9a4926b4d2fd703b63" +version = "0.7.14" +source = "git+https://github.com/flashbots/rollup-boost?rev=bc4518c#bc4518c56b504b8b3a9f2a12df70fd1658e28f68" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -13151,7 +13142,7 @@ dependencies = [ "hyper-rustls", "hyper-util", "jsonrpsee", - "lru 0.16.3", + "lru", "metrics", "metrics-derive", "metrics-exporter-prometheus 0.16.2", @@ -13186,8 +13177,7 @@ dependencies = [ [[package]] name = "rollup-boost-types" version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "756f32c7f241ab6d91d823e94d20f6e0729bfcaec3b545bd30f33b24e50f5821" +source = "git+https://github.com/flashbots/rollup-boost?rev=bc4518c#bc4518c56b504b8b3a9f2a12df70fd1658e28f68" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -13301,9 +13291,9 @@ checksum = "b50b8869d9fc858ce7266cce0194bd74df58b9d0e3f6df3a9fc8eb470d95c09d" [[package]] name = "rustc-hash" -version = "2.1.1" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" +checksum = "94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe" dependencies = [ "rand 0.8.5", ] @@ -13783,9 +13773,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "1.0.4" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8bbf91e5a4d6315eee45e704372590b30e260ee83af6639d64557f51b067776" +checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26" dependencies = [ "serde_core", ] @@ -13804,9 +13794,9 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.17.0" +version = "3.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "381b283ce7bc6b476d903296fb59d0d36633652b633b27f64db4fb46dcbfc3b9" +checksum = "dd5414fad8e6907dbdd5bc441a50ae8d6e26151a03b1de04d89a5576de61d01f" dependencies = [ "base64 0.22.1", "chrono", @@ -13823,11 +13813,11 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.17.0" +version = "3.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6d4e30573c8cb306ed6ab1dca8423eec9a463ea0e155f45399455e0368b27e0" +checksum = "d3db8978e608f1fe7357e211969fd9abdcae80bac1ba7a3369bb7eb6b404eb65" dependencies = [ - "darling 0.21.3", + "darling 0.23.0", "proc-macro2", "quote", "syn 2.0.117", @@ -13876,7 +13866,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" dependencies = [ "cfg-if", - "cpufeatures", + "cpufeatures 0.2.17", "digest 0.10.7", ] @@ -13887,7 +13877,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" dependencies = [ "cfg-if", - "cpufeatures", + "cpufeatures 0.2.17", "digest 0.10.7", ] @@ -13903,9 +13893,9 @@ dependencies = [ [[package]] name = "sha3-asm" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b31139435f327c93c6038ed350ae4588e2c70a13d50599509fee6349967ba35a" +checksum = "59cbb88c189d6352cc8ae96a39d19c7ecad8f7330b29461187f2587fdc2988d5" dependencies = [ "cc", "cfg-if", @@ -13920,15 +13910,6 @@ dependencies = [ "lazy_static", ] -[[package]] -name = "shellexpand" -version = "3.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32824fab5e16e6c4d86dc1ba84489390419a39f97699852b66480bb87d297ed8" -dependencies = [ - "dirs", -] - [[package]] name = "shlex" version = "1.3.0" @@ -13978,9 +13959,9 @@ dependencies = [ [[package]] name = "simd-adler32" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" +checksum = "703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214" [[package]] name = "simdutf8" @@ -14039,6 +14020,15 @@ version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" +[[package]] +name = "slotmap" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdd58c3c93c3d278ca835519292445cb4b0d4dc59ccfdf7ceadaab3f8aeb4038" +dependencies = [ + "version_check", +] + [[package]] name = "small_btree" version = "0.1.0" @@ -14258,7 +14248,7 @@ dependencies = [ "ntapi", "objc2-core-foundation", "objc2-io-kit", - "windows", + "windows 0.62.2", ] [[package]] @@ -14462,6 +14452,20 @@ dependencies = [ "syn 2.0.117", ] +[[package]] +name = "thread-priority" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2210811179577da3d54eb69ab0b50490ee40491a25d95b8c6011ba40771cb721" +dependencies = [ + "bitflags 2.11.0", + "cfg-if", + "libc", + "log", + "rustversion", + "windows 0.61.3", +] + [[package]] name = "thread_local" version = "1.1.9" @@ -14519,7 +14523,6 @@ checksum = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c" dependencies = [ "deranged", "itoa", - "js-sys", "libc", "num-conv", "num_threads", @@ -14568,9 +14571,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" +checksum = "3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3" dependencies = [ "tinyvec_macros", ] @@ -14664,6 +14667,7 @@ dependencies = [ "futures-util", "log", "rustls", + "rustls-native-certs", "rustls-pki-types", "tokio", "tokio-rustls", @@ -14698,7 +14702,7 @@ dependencies = [ "toml_datetime 0.7.5+spec-1.1.0", "toml_parser", "toml_writer", - "winnow", + "winnow 0.7.15", ] [[package]] @@ -14712,39 +14716,39 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "1.0.0+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32c2555c699578a4f59f0cc68e5116c8d7cabbd45e1409b989d4be085b53f13e" +checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" dependencies = [ "serde_core", ] [[package]] name = "toml_edit" -version = "0.25.4+spec-1.1.0" +version = "0.25.9+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7193cbd0ce53dc966037f54351dbbcf0d5a642c7f0038c382ef9e677ce8c13f2" +checksum = "da053d28fe57e2c9d21b48261e14e7b4c8b670b54d2c684847b91feaf4c7dac5" dependencies = [ "indexmap 2.13.0", - "toml_datetime 1.0.0+spec-1.1.0", + "toml_datetime 1.1.1+spec-1.1.0", "toml_parser", - "winnow", + "winnow 1.0.1", ] [[package]] name = "toml_parser" -version = "1.0.9+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702d4415e08923e7e1ef96cd5727c0dfed80b4d2fa25db9647fe5eb6f7c5a4c4" +checksum = "39ca317ebc49f06bd748bfba29533eac9485569dc9bf80b849024b025e814fb9" dependencies = [ - "winnow", + "winnow 1.0.1", ] [[package]] name = "toml_writer" -version = "1.0.6+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab16f14aed21ee8bfd8ec22513f7287cd4a91aa92e44edfe2c17ddd004e92607" +checksum = "756daf9b1013ebe47a8776667b466417e2d4c5679d441c26230efd9ef78692db" [[package]] name = "tonic" @@ -14975,9 +14979,9 @@ dependencies = [ [[package]] name = "tracing-logfmt" -version = "0.3.5" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b1f47d22deb79c3f59fcf2a1f00f60cbdc05462bf17d1cd356c1fefa3f444bd" +checksum = "a250055a3518b5efba928a18ffac8d32d42ea607a9affff4532144cd5b2e378e" dependencies = [ "time", "tracing", @@ -15248,9 +15252,9 @@ checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" [[package]] name = "unicode-segmentation" -version = "1.12.0" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" +checksum = "9629274872b2bfaf8d66f5f15725007f635594914870f65218920345aa11aa8c" [[package]] name = "unicode-truncate" @@ -15348,9 +15352,9 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.22.0" +version = "1.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a68d3c8f01c0cfa54a75291d83601161799e4a89a39e0929f4b0354d88757a37" +checksum = "5ac8b6f42ead25368cf5b098aeb3dc8a1a2c05a3eee8a9a1a68c640edbfc79d9" dependencies = [ "getrandom 0.4.2", "js-sys", @@ -15487,9 +15491,9 @@ dependencies = [ [[package]] name = "wasm-bindgen" -version = "0.2.114" +version = "0.2.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6532f9a5c1ece3798cb1c2cfdba640b9b3ba884f5db45973a6f442510a87d38e" +checksum = "0551fc1bb415591e3372d0bc4780db7e587d84e2a7e79da121051c5c4b89d0b0" dependencies = [ "cfg-if", "once_cell", @@ -15500,23 +15504,19 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.64" +version = "0.4.67" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9c5522b3a28661442748e09d40924dfb9ca614b21c00d3fd135720e48b67db8" +checksum = "03623de6905b7206edd0a75f69f747f134b7f0a2323392d664448bf2d3c5d87e" dependencies = [ - "cfg-if", - "futures-util", "js-sys", - "once_cell", "wasm-bindgen", - "web-sys", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.114" +version = "0.2.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18a2d50fcf105fb33bb15f00e7a77b772945a2ee45dcf454961fd843e74c18e6" +checksum = "7fbdf9a35adf44786aecd5ff89b4563a90325f9da0923236f6104e603c7e86be" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -15524,9 +15524,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.114" +version = "0.2.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03ce4caeaac547cdf713d280eda22a730824dd11e6b8c3ca9e42247b25c631e3" +checksum = "dca9693ef2bab6d4e6707234500350d8dad079eb508dca05530c85dc3a529ff2" dependencies = [ "bumpalo", "proc-macro2", @@ -15537,9 +15537,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.114" +version = "0.2.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75a326b8c223ee17883a4251907455a2431acc2791c98c26279376490c378c16" +checksum = "39129a682a6d2d841b6c429d0c51e5cb0ed1a03829d8b3d1e69a011e62cb3d3b" dependencies = [ "unicode-ident", ] @@ -15568,9 +15568,9 @@ dependencies = [ [[package]] name = "wasm-streams" -version = "0.4.2" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65" +checksum = "9d1ec4f6517c9e11ae630e200b2b65d193279042e28edd4a2cda233e46670bbb" dependencies = [ "futures-util", "js-sys", @@ -15607,9 +15607,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.91" +version = "0.3.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "854ba17bb104abfb26ba36da9729addc7ce7f06f5c0f90f3c391f8461cca21f9" +checksum = "cd70027e39b12f0849461e08ffc50b9cd7688d942c1c8e3c7b22273236b4dd0a" dependencies = [ "js-sys", "wasm-bindgen", @@ -15698,16 +15698,38 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "windows" +version = "0.61.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" +dependencies = [ + "windows-collections 0.2.0", + "windows-core 0.61.2", + "windows-future 0.2.1", + "windows-link 0.1.3", + "windows-numerics 0.2.0", +] + [[package]] name = "windows" version = "0.62.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "527fadee13e0c05939a6a05d5bd6eec6cd2e3dbd648b9f8e447c6518133d8580" dependencies = [ - "windows-collections", - "windows-core", - "windows-future", - "windows-numerics", + "windows-collections 0.3.2", + "windows-core 0.62.2", + "windows-future 0.3.2", + "windows-numerics 0.3.1", +] + +[[package]] +name = "windows-collections" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" +dependencies = [ + "windows-core 0.61.2", ] [[package]] @@ -15716,7 +15738,20 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "23b2d95af1a8a14a3c7367e1ed4fc9c20e0a26e79551b1454d72583c97cc6610" dependencies = [ - "windows-core", + "windows-core 0.62.2", +] + +[[package]] +name = "windows-core" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link 0.1.3", + "windows-result 0.3.4", + "windows-strings 0.4.2", ] [[package]] @@ -15727,9 +15762,20 @@ checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" dependencies = [ "windows-implement", "windows-interface", - "windows-link", - "windows-result", - "windows-strings", + "windows-link 0.2.1", + "windows-result 0.4.1", + "windows-strings 0.5.1", +] + +[[package]] +name = "windows-future" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" +dependencies = [ + "windows-core 0.61.2", + "windows-link 0.1.3", + "windows-threading 0.1.0", ] [[package]] @@ -15738,9 +15784,9 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1d6f90251fe18a279739e78025bd6ddc52a7e22f921070ccdc67dde84c605cb" dependencies = [ - "windows-core", - "windows-link", - "windows-threading", + "windows-core 0.62.2", + "windows-link 0.2.1", + "windows-threading 0.2.1", ] [[package]] @@ -15765,20 +15811,36 @@ dependencies = [ "syn 2.0.117", ] +[[package]] +name = "windows-link" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" + [[package]] name = "windows-link" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" +[[package]] +name = "windows-numerics" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" +dependencies = [ + "windows-core 0.61.2", + "windows-link 0.1.3", +] + [[package]] name = "windows-numerics" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e2e40844ac143cdb44aead537bbf727de9b044e107a0f1220392177d15b0f26" dependencies = [ - "windows-core", - "windows-link", + "windows-core 0.62.2", + "windows-link 0.2.1", ] [[package]] @@ -15787,9 +15849,18 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "02752bf7fbdcce7f2a27a742f798510f3e5ad88dbe84871e5168e2120c3d5720" dependencies = [ - "windows-link", - "windows-result", - "windows-strings", + "windows-link 0.2.1", + "windows-result 0.4.1", + "windows-strings 0.5.1", +] + +[[package]] +name = "windows-result" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" +dependencies = [ + "windows-link 0.1.3", ] [[package]] @@ -15798,34 +15869,34 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" dependencies = [ - "windows-link", + "windows-link 0.2.1", ] [[package]] name = "windows-strings" -version = "0.5.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" dependencies = [ - "windows-link", + "windows-link 0.1.3", ] [[package]] -name = "windows-sys" -version = "0.45.0" +name = "windows-strings" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" dependencies = [ - "windows-targets 0.42.2", + "windows-link 0.2.1", ] [[package]] name = "windows-sys" -version = "0.48.0" +version = "0.45.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" dependencies = [ - "windows-targets 0.48.5", + "windows-targets 0.42.2", ] [[package]] @@ -15861,7 +15932,7 @@ version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" dependencies = [ - "windows-link", + "windows-link 0.2.1", ] [[package]] @@ -15879,21 +15950,6 @@ dependencies = [ "windows_x86_64_msvc 0.42.2", ] -[[package]] -name = "windows-targets" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" -dependencies = [ - "windows_aarch64_gnullvm 0.48.5", - "windows_aarch64_msvc 0.48.5", - "windows_i686_gnu 0.48.5", - "windows_i686_msvc 0.48.5", - "windows_x86_64_gnu 0.48.5", - "windows_x86_64_gnullvm 0.48.5", - "windows_x86_64_msvc 0.48.5", -] - [[package]] name = "windows-targets" version = "0.52.6" @@ -15916,7 +15972,7 @@ version = "0.53.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" dependencies = [ - "windows-link", + "windows-link 0.2.1", "windows_aarch64_gnullvm 0.53.1", "windows_aarch64_msvc 0.53.1", "windows_i686_gnu 0.53.1", @@ -15927,13 +15983,22 @@ dependencies = [ "windows_x86_64_msvc 0.53.1", ] +[[package]] +name = "windows-threading" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6" +dependencies = [ + "windows-link 0.1.3", +] + [[package]] name = "windows-threading" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3949bd5b99cafdf1c7ca86b43ca564028dfe27d66958f2470940f73d86d75b37" dependencies = [ - "windows-link", + "windows-link 0.2.1", ] [[package]] @@ -15942,12 +16007,6 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" - [[package]] name = "windows_aarch64_gnullvm" version = "0.52.6" @@ -15966,12 +16025,6 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" -[[package]] -name = "windows_aarch64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" - [[package]] name = "windows_aarch64_msvc" version = "0.52.6" @@ -15990,12 +16043,6 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" -[[package]] -name = "windows_i686_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" - [[package]] name = "windows_i686_gnu" version = "0.52.6" @@ -16026,12 +16073,6 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" -[[package]] -name = "windows_i686_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" - [[package]] name = "windows_i686_msvc" version = "0.52.6" @@ -16050,12 +16091,6 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" -[[package]] -name = "windows_x86_64_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" - [[package]] name = "windows_x86_64_gnu" version = "0.52.6" @@ -16074,12 +16109,6 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" - [[package]] name = "windows_x86_64_gnullvm" version = "0.52.6" @@ -16098,12 +16127,6 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" -[[package]] -name = "windows_x86_64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" - [[package]] name = "windows_x86_64_msvc" version = "0.52.6" @@ -16126,13 +16149,12 @@ dependencies = [ ] [[package]] -name = "winreg" -version = "0.50.0" +name = "winnow" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" +checksum = "09dac053f1cd375980747450bfc7250c264eaae0583872e845c0c7cd578872b5" dependencies = [ - "cfg-if", - "windows-sys 0.48.0", + "memchr", ] [[package]] @@ -16394,18 +16416,18 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.42" +version = "0.8.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2578b716f8a7a858b7f02d5bd870c14bf4ddbbcf3a4c05414ba6503640505e3" +checksum = "eed437bf9d6692032087e337407a86f04cd8d6a16a37199ed57949d415bd68e9" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.42" +version = "0.8.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e6cc098ea4d3bd6246687de65af3f920c430e236bee1e3bf2e441463f08a02f" +checksum = "70e3cd084b1788766f53af483dd21f93881ff30d7320490ec3ef7526d203bad4" dependencies = [ "proc-macro2", "quote", diff --git a/rust/Cargo.toml b/rust/Cargo.toml index 3940284e159be..19acadb2816c5 100644 --- a/rust/Cargo.toml +++ b/rust/Cargo.toml @@ -1,7 +1,7 @@ [workspace.package] edition = "2024" license = "MIT OR Apache-2.0" -rust-version = "1.92" +rust-version = "1.94" authors = ["Op Stack Contributors"] homepage = "https://github.com/ethereum-optimism/optimism" repository = "https://github.com/ethereum-optimism/optimism" @@ -286,91 +286,92 @@ reth-optimism-trie = { path = "op-reth/crates/trie/" } reth-optimism-txpool = { path = "op-reth/crates/txpool/" } # ==================== OP-ALLOY INTERNAL CRATES ==================== -op-alloy-consensus = { version = "0.23.1", path = "op-alloy/crates/consensus", default-features = false } -op-alloy-network = { version = "0.23.1", path = "op-alloy/crates/network", default-features = false } -op-alloy-provider = { version = "0.23.1", path = "op-alloy/crates/provider", default-features = false } -op-alloy-rpc-types = { version = "0.23.1", path = "op-alloy/crates/rpc-types", default-features = false } -op-alloy-rpc-types-engine = { version = "0.23.1", path = "op-alloy/crates/rpc-types-engine", default-features = false } -op-alloy-rpc-jsonrpsee = { version = "0.23.1", path = "op-alloy/crates/rpc-jsonrpsee", default-features = false } +op-alloy-consensus = { version = "0.24.0", path = "op-alloy/crates/consensus", default-features = false } +op-alloy-network = { version = "0.24.0", path = "op-alloy/crates/network", default-features = false } +op-alloy-provider = { version = "0.24.0", path = "op-alloy/crates/provider", default-features = false } +op-alloy-rpc-types = { version = "0.24.0", path = "op-alloy/crates/rpc-types", default-features = false } +op-alloy-rpc-types-engine = { version = "0.24.0", path = "op-alloy/crates/rpc-types-engine", default-features = false } +op-alloy-rpc-jsonrpsee = { version = "0.24.0", path = "op-alloy/crates/rpc-jsonrpsee", default-features = false } # ==================== ALLOY-OP-EVM / ALLOY-OP-HARDFORKS ==================== alloy-op-evm = { version = "0.30.0", path = "alloy-op-evm/", default-features = false } alloy-op-hardforks = { version = "0.4.7", path = "alloy-op-hardforks/", default-features = false } -# ==================== RETH CRATES (v1.11.3) ==================== -reth = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3" } -reth-basic-payload-builder = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3" } -reth-chain-state = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3" } -reth-chainspec = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3", default-features = false } -reth-cli = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3" } -reth-cli-commands = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3" } -reth-cli-runner = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3" } -reth-cli-util = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3" } -reth-codecs = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3" } -reth-consensus = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3", default-features = false } -reth-consensus-common = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3", default-features = false } -reth-db = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3", default-features = false } -reth-db-api = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3" } -reth-db-common = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3" } -reth-downloaders = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3" } -reth-e2e-test-utils = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3" } -reth-engine-local = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3" } -reth-engine-primitives = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3", default-features = false } -reth-errors = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3" } -reth-eth-wire = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3" } -reth-eth-wire-types = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3" } -reth-ethereum = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3" } -reth-ethereum-cli = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3" } -reth-ethereum-consensus = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3" } -reth-ethereum-forks = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3", default-features = false } -reth-ethereum-primitives = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3" } -reth-evm = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3", default-features = false } -reth-evm-ethereum = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3" } -reth-exex = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3" } -reth-exex-test-utils = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3" } -reth-execution-errors = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3", default-features = false } -reth-execution-types = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3", default-features = false } -reth-fs-util = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3" } -reth-metrics = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3" } -reth-network = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3" } -reth-network-api = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3" } -reth-network-peers = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3", default-features = false } -reth-node-api = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3" } -reth-node-builder = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3" } -reth-node-core = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3" } -reth-node-ethereum = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3" } -reth-node-events = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3" } -reth-node-metrics = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3" } -reth-payload-builder = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3" } -reth-payload-builder-primitives = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3" } -reth-payload-primitives = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3" } -reth-payload-util = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3" } -reth-payload-validator = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3" } -reth-primitives-traits = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3", default-features = false } -reth-provider = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3" } -reth-prune = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3" } -reth-prune-types = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3", default-features = false } -reth-revm = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3", default-features = false } -reth-rpc = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3" } -reth-rpc-api = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3" } -reth-rpc-builder = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3" } -reth-rpc-engine-api = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3" } -reth-rpc-eth-api = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3" } -reth-rpc-eth-types = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3", default-features = false } -reth-rpc-server-types = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3" } -reth-stages = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3" } -reth-stages-types = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3", default-features = false } -reth-static-file = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3" } -reth-static-file-types = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3", default-features = false } -reth-storage-api = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3", default-features = false } -reth-storage-errors = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3", default-features = false } -reth-tasks = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3" } -reth-tracing = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3", default-features = false } -reth-transaction-pool = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3" } -reth-trie = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3" } -reth-trie-common = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3", default-features = false } -reth-trie-db = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3" } -reth-zstd-compressors = { git = "https://github.com/paradigmxyz/reth", tag = "v1.11.3", default-features = false } +# ==================== RETH CRATES (main @ e3dbdbb) ==================== +reth = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } +reth-basic-payload-builder = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } +reth-chain-state = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } +reth-chainspec = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb", default-features = false } +reth-cli = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } +reth-cli-commands = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } +reth-cli-runner = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } +reth-cli-util = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } +reth-codecs = { version = "0.1.0", default-features = false, features = ["alloy"] } +reth-codecs-derive = "0.1.0" +reth-consensus = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb", default-features = false } +reth-consensus-common = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb", default-features = false } +reth-db = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb", default-features = false } +reth-db-api = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } +reth-db-common = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } +reth-downloaders = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } +reth-e2e-test-utils = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } +reth-engine-local = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } +reth-engine-primitives = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb", default-features = false } +reth-errors = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } +reth-eth-wire = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } +reth-eth-wire-types = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } +reth-ethereum = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } +reth-ethereum-cli = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } +reth-ethereum-consensus = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } +reth-ethereum-forks = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb", default-features = false } +reth-ethereum-primitives = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } +reth-evm = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb", default-features = false } +reth-evm-ethereum = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } +reth-exex = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } +reth-exex-test-utils = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } +reth-execution-errors = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb", default-features = false } +reth-execution-types = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb", default-features = false } +reth-fs-util = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } +reth-metrics = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } +reth-network = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } +reth-network-api = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } +reth-network-peers = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb", default-features = false } +reth-node-api = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } +reth-node-builder = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } +reth-node-core = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } +reth-node-ethereum = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } +reth-node-events = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } +reth-node-metrics = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } +reth-payload-builder = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } +reth-payload-builder-primitives = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } +reth-payload-primitives = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } +reth-payload-util = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } +reth-payload-validator = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } +reth-primitives-traits = { version = "0.1.0", default-features = false } +reth-provider = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } +reth-prune = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } +reth-prune-types = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb", default-features = false } +reth-revm = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb", default-features = false } +reth-rpc = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } +reth-rpc-api = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } +reth-rpc-builder = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } +reth-rpc-engine-api = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } +reth-rpc-eth-api = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } +reth-rpc-eth-types = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb", default-features = false } +reth-rpc-server-types = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } +reth-stages = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } +reth-stages-types = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb", default-features = false } +reth-static-file = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } +reth-static-file-types = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb", default-features = false } +reth-storage-api = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb", default-features = false } +reth-storage-errors = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb", default-features = false } +reth-tasks = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } +reth-tracing = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb", default-features = false } +reth-transaction-pool = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } +reth-trie = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } +reth-trie-common = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb", default-features = false } +reth-trie-db = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } +reth-zstd-compressors = { version = "0.1.0", default-features = false } # ==================== REVM (latest: op-reth versions) ==================== revm = { version = "36.0.0", default-features = false } @@ -384,10 +385,10 @@ op-revm = { version = "17.0.0", default-features = false } revm-inspectors = "0.36.1" # ==================== ALLOY ==================== -alloy-chains = { version = "0.2.30", default-features = false } +alloy-chains = { version = "0.2.33", default-features = false } alloy-dyn-abi = "1.5.6" alloy-eip2124 = { version = "0.2.0", default-features = false } -alloy-eip7928 = { version = "0.3.2", default-features = false } +alloy-eip7928 = { version = "0.3.3", default-features = false } alloy-evm = { version = "0.30.0", default-features = false } alloy-primitives = { version = "1.5.6", default-features = false, features = [ "map-foldhash", @@ -438,7 +439,7 @@ alloy-transport-ipc = { version = "1.8.2", default-features = false } alloy-transport-ws = { version = "1.8.2", default-features = false } # ==================== OP-ALLOY (from crates.io) ==================== -op-alloy = { version = "0.23.1", path = "op-alloy/crates/op-alloy", default-features = false } +op-alloy = { version = "0.24.0", path = "op-alloy/crates/op-alloy", default-features = false } op-alloy-flz = { version = "0.13.1", default-features = false } # ==================== ASYNC ==================== @@ -616,8 +617,8 @@ ratatui = "0.30.0" rayon = "1.11.0" reqwest = { version = "0.13.2", default-features = false, features = ["query"] } ringbuffer = "0.16.0" -rollup-boost = "0.7.13" -rollup-boost-types = "0.1.0" +rollup-boost = { git = "https://github.com/flashbots/rollup-boost", rev = "bc4518c" } +rollup-boost-types = { git = "https://github.com/flashbots/rollup-boost", rev = "bc4518c" } rustc-hash = { version = "2.1", default-features = false } rustls = { version = "0.23", default-features = false } rustls-pemfile = { version = "2.2", default-features = false } diff --git a/rust/alloy-op-evm/Cargo.toml b/rust/alloy-op-evm/Cargo.toml index 0c3053e5f947e..68265b373186d 100644 --- a/rust/alloy-op-evm/Cargo.toml +++ b/rust/alloy-op-evm/Cargo.toml @@ -4,7 +4,7 @@ description = "OP EVM implementation" version = "0.30.0" edition = "2021" -rust-version = "1.92" +rust-version = "1.94" authors = ["Alloy Contributors", "OpLabsPBC"] license.workspace = true homepage = "https://github.com/ethereum-optimism/optimism" @@ -50,3 +50,10 @@ gmp = ["alloy-evm/gmp"] engine = ["op-alloy/rpc-types-engine"] rpc = ["alloy-evm/rpc", "op-alloy/rpc-types"] asm-keccak = ["alloy-evm/asm-keccak", "alloy-primitives/asm-keccak", "revm/asm-keccak"] +arbitrary = [ + "alloy-consensus/arbitrary", + "alloy-eips/arbitrary", + "alloy-primitives/arbitrary", + "op-alloy/arbitrary", + "revm/arbitrary", +] diff --git a/rust/alloy-op-hardforks/Cargo.toml b/rust/alloy-op-hardforks/Cargo.toml index 338c707e4d5c2..7a6434d82328f 100644 --- a/rust/alloy-op-hardforks/Cargo.toml +++ b/rust/alloy-op-hardforks/Cargo.toml @@ -4,7 +4,7 @@ description = "Bindings for named OP hardforks" version = "0.4.7" edition = "2024" -rust-version = "1.92" +rust-version = "1.94" authors = ["Alloy Contributors", "OpLabsPBC"] license.workspace = true homepage = "https://github.com/ethereum-optimism/optimism" diff --git a/rust/clippy.toml b/rust/clippy.toml index 2b69e81286ba7..058aa492e5f08 100644 --- a/rust/clippy.toml +++ b/rust/clippy.toml @@ -1,4 +1,4 @@ -msrv = "1.92" +msrv = "1.94" too-large-for-stack = 128 doc-valid-idents = [ "P2P", diff --git a/rust/kona/bin/client/src/fpvm_evm/factory.rs b/rust/kona/bin/client/src/fpvm_evm/factory.rs index d12cd27c0f197..7ec5e2865d46f 100644 --- a/rust/kona/bin/client/src/fpvm_evm/factory.rs +++ b/rust/kona/bin/client/src/fpvm_evm/factory.rs @@ -67,7 +67,7 @@ where let revm_evm = RevmOpEvm(RevmEvm { ctx, inspector: NoOpInspector {}, - instruction: EthInstructions::new_mainnet(), + instruction: EthInstructions::new_mainnet_with_spec(spec_id.into()), precompiles: OpFpvmPrecompiles::new_with_spec( spec_id, self.hint_writer.clone(), @@ -90,7 +90,7 @@ where let revm_evm = RevmOpEvm(RevmEvm { ctx, inspector, - instruction: EthInstructions::new_mainnet(), + instruction: EthInstructions::new_mainnet_with_spec(spec_id.into()), precompiles: OpFpvmPrecompiles::new_with_spec( spec_id, self.hint_writer.clone(), diff --git a/rust/kona/bin/client/src/fpvm_evm/precompiles/test_utils.rs b/rust/kona/bin/client/src/fpvm_evm/precompiles/test_utils.rs index bf9d781efcff1..38e8df7797004 100644 --- a/rust/kona/bin/client/src/fpvm_evm/precompiles/test_utils.rs +++ b/rust/kona/bin/client/src/fpvm_evm/precompiles/test_utils.rs @@ -43,7 +43,8 @@ pub(crate) fn execute_native_precompile>( input: T, gas: u64, ) -> PrecompileResult { - let precompiles = revm::handler::EthPrecompiles::default(); + let precompiles = + revm::handler::EthPrecompiles::new(revm::primitives::hardfork::SpecId::PRAGUE); let Some(precompile) = precompiles.precompiles.get(&address) else { panic!("Precompile not found"); }; diff --git a/rust/kona/crates/proof/executor/src/builder/core.rs b/rust/kona/crates/proof/executor/src/builder/core.rs index 65860e3ad6bd5..23e18adccb602 100644 --- a/rust/kona/crates/proof/executor/src/builder/core.rs +++ b/rust/kona/crates/proof/executor/src/builder/core.rs @@ -248,10 +248,8 @@ where ); // Step 2. Create the executor, using the trie database. - let mut state = State::builder() - .with_database(&mut self.trie_db) - .with_bundle_update() - .build(); + let mut state = + State::builder().with_database(&mut self.trie_db).with_bundle_update().build(); let evm = self.factory.evm_factory().create_evm(&mut state, evm_env); let ctx = OpBlockExecutionCtx { parent_hash, diff --git a/rust/kona/crates/proof/proof-interop/Cargo.toml b/rust/kona/crates/proof/proof-interop/Cargo.toml index 9409ce789a366..73731e9c3906b 100644 --- a/rust/kona/crates/proof/proof-interop/Cargo.toml +++ b/rust/kona/crates/proof/proof-interop/Cargo.toml @@ -70,4 +70,5 @@ arbitrary = [ "op-alloy-consensus/arbitrary", "op-alloy-rpc-types-engine/arbitrary", "revm/arbitrary", + "alloy-op-evm/arbitrary", ] diff --git a/rust/kona/crates/providers/providers-alloy/Cargo.toml b/rust/kona/crates/providers/providers-alloy/Cargo.toml index cb1ec23758ae7..5debeae6e5c93 100644 --- a/rust/kona/crates/providers/providers-alloy/Cargo.toml +++ b/rust/kona/crates/providers/providers-alloy/Cargo.toml @@ -27,6 +27,7 @@ alloy-serde.workspace = true alloy-eips = { workspace = true, features = ["kzg"] } alloy-transport.workspace = true alloy-transport-http = { workspace = true, features = ["reqwest", "reqwest-rustls-tls", "hyper", "hyper-tls", "jwt-auth"] } +reqwest = { workspace = true, features = ["query"] } alloy-consensus.workspace = true alloy-rpc-types-beacon.workspace = true alloy-rpc-types-engine.workspace = true @@ -38,7 +39,6 @@ alloy-primitives = { workspace = true, features = ["map"] } op-alloy-consensus.workspace = true op-alloy-network.workspace = true -reqwest.workspace = true # Misc lru.workspace = true diff --git a/rust/kona/docker/apps/kona_app_generic.dockerfile b/rust/kona/docker/apps/kona_app_generic.dockerfile index f1bc963a13447..edae3a25e3039 100644 --- a/rust/kona/docker/apps/kona_app_generic.dockerfile +++ b/rust/kona/docker/apps/kona_app_generic.dockerfile @@ -18,7 +18,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ pkg-config # Install rust -ENV RUST_VERSION=1.92 +ENV RUST_VERSION=1.94 RUN curl https://sh.rustup.rs -sSf | bash -s -- -y --default-toolchain ${RUST_VERSION} --profile minimal ENV PATH="/root/.cargo/bin:${PATH}" diff --git a/rust/op-alloy/crates/consensus/Cargo.toml b/rust/op-alloy/crates/consensus/Cargo.toml index 4fa43515e5463..65bda39978e2f 100644 --- a/rust/op-alloy/crates/consensus/Cargo.toml +++ b/rust/op-alloy/crates/consensus/Cargo.toml @@ -2,7 +2,7 @@ name = "op-alloy-consensus" description = "Optimism alloy consensus types" -version = "0.23.1" +version = "0.24.0" edition.workspace = true rust-version.workspace = true authors = ["Alloy Contributors"] @@ -37,6 +37,13 @@ serde_with = { workspace = true, optional = true } alloy-serde = { workspace = true, optional = true } serde = { workspace = true, features = ["derive"], optional = true } +# reth-core / reth-codec +reth-codecs = { workspace = true, optional = true } +reth-codecs-derive = { workspace = true, optional = true } +reth-zstd-compressors = { workspace = true, optional = true } +bytes = { workspace = true, optional = true } +modular-bitfield = { workspace = true, optional = true } + [dev-dependencies] rand.workspace = true bincode = { workspace = true } @@ -57,9 +64,20 @@ std = [ "alloy-serde?/std", "serde?/std", "serde_with?/std", - "thiserror/std" + "thiserror/std", + "bytes?/std", + "reth-codecs?/std", + "reth-zstd-compressors?/std" ] alloy-compat = ["serde", "dep:alloy-network", "dep:alloy-rpc-types-eth"] +reth-core = [] +reth-codec = [ + "dep:reth-codecs", + "dep:reth-codecs-derive", + "dep:reth-zstd-compressors", + "dep:bytes", + "dep:modular-bitfield", +] k256 = ["alloy-primitives/k256", "alloy-consensus/k256"] kzg = ["alloy-eips/kzg", "alloy-consensus/kzg", "std"] arbitrary = [ @@ -70,7 +88,8 @@ arbitrary = [ "alloy-primitives/rand", "alloy-primitives/arbitrary", "alloy-rpc-types-eth?/arbitrary", - "alloy-serde?/arbitrary" + "alloy-serde?/arbitrary", + "reth-codecs?/arbitrary", ] serde = [ "dep:serde", @@ -78,7 +97,9 @@ serde = [ "alloy-primitives/serde", "alloy-consensus/serde", "alloy-eips/serde", - "alloy-rpc-types-eth?/serde" + "alloy-rpc-types-eth?/serde", + "bytes?/serde", + "reth-codecs?/serde", ] serde-bincode-compat = [ "serde_with", diff --git a/rust/op-alloy/crates/consensus/src/lib.rs b/rust/op-alloy/crates/consensus/src/lib.rs index 455ed3e3c050f..02a15b95d8815 100644 --- a/rust/op-alloy/crates/consensus/src/lib.rs +++ b/rust/op-alloy/crates/consensus/src/lib.rs @@ -9,6 +9,12 @@ extern crate alloc; +#[cfg(feature = "reth-core")] +mod reth_core; + +#[cfg(feature = "reth-codec")] +mod reth_codec; + #[cfg(feature = "alloy-compat")] mod alloy_compat; diff --git a/rust/op-alloy/crates/consensus/src/reth_codec.rs b/rust/op-alloy/crates/consensus/src/reth_codec.rs new file mode 100644 index 0000000000000..4d67be66c3175 --- /dev/null +++ b/rust/op-alloy/crates/consensus/src/reth_codec.rs @@ -0,0 +1,362 @@ +//! Compact codec implementations for OP Stack consensus types. + +use crate::{OpReceipt, OpTxEnvelope, OpTxType, OpTypedTransaction, TxDeposit}; +use alloc::vec::Vec; +use alloy_consensus::{Receipt, Signed}; +use alloy_primitives::{Address, B256, Bytes, Log, Signature, TxKind, U256}; +use reth_codecs::{ + Compact, + alloy::transaction::{CompactEnvelope, Envelope, FromTxCompact, ToTxCompact}, + txtype::*, +}; + +// --- OpTxType --- + +impl Compact for OpTxType { + fn to_compact(&self, buf: &mut B) -> usize + where + B: bytes::BufMut + AsMut<[u8]>, + { + match self { + Self::Legacy => COMPACT_IDENTIFIER_LEGACY, + Self::Eip2930 => COMPACT_IDENTIFIER_EIP2930, + Self::Eip1559 => COMPACT_IDENTIFIER_EIP1559, + Self::Eip7702 => { + buf.put_u8(alloy_consensus::constants::EIP7702_TX_TYPE_ID); + COMPACT_EXTENDED_IDENTIFIER_FLAG + } + Self::Deposit => { + buf.put_u8(crate::DEPOSIT_TX_TYPE_ID); + COMPACT_EXTENDED_IDENTIFIER_FLAG + } + } + } + + fn from_compact(mut buf: &[u8], identifier: usize) -> (Self, &[u8]) { + use bytes::Buf; + match identifier { + COMPACT_IDENTIFIER_LEGACY => (Self::Legacy, buf), + COMPACT_IDENTIFIER_EIP2930 => (Self::Eip2930, buf), + COMPACT_IDENTIFIER_EIP1559 => (Self::Eip1559, buf), + COMPACT_EXTENDED_IDENTIFIER_FLAG => { + let extended_identifier = buf.get_u8(); + let ty = match extended_identifier { + alloy_consensus::constants::EIP7702_TX_TYPE_ID => Self::Eip7702, + crate::DEPOSIT_TX_TYPE_ID => Self::Deposit, + _ => panic!("Unsupported OpTxType identifier: {extended_identifier}"), + }; + (ty, buf) + } + _ => panic!("Unknown identifier for OpTxType: {identifier}"), + } + } +} + +// --- TxDeposit --- + +/// Mirror struct for compact encoding of [`TxDeposit`]. +#[derive(reth_codecs_derive::Compact)] +#[reth_codecs(crate = "reth_codecs")] +struct CompactTxDeposit { + source_hash: B256, + from: Address, + to: TxKind, + mint: u128, + value: U256, + gas_limit: u64, + is_system_transaction: bool, + input: Bytes, +} + +impl From<&TxDeposit> for CompactTxDeposit { + fn from(tx: &TxDeposit) -> Self { + Self { + source_hash: tx.source_hash, + from: tx.from, + to: tx.to, + mint: tx.mint, + value: tx.value, + gas_limit: tx.gas_limit, + is_system_transaction: tx.is_system_transaction, + input: tx.input.clone(), + } + } +} + +impl From for TxDeposit { + fn from(tx: CompactTxDeposit) -> Self { + Self { + source_hash: tx.source_hash, + from: tx.from, + to: tx.to, + mint: tx.mint, + value: tx.value, + gas_limit: tx.gas_limit, + is_system_transaction: tx.is_system_transaction, + input: tx.input, + } + } +} + +impl Compact for TxDeposit { + fn to_compact(&self, buf: &mut B) -> usize + where + B: bytes::BufMut + AsMut<[u8]>, + { + CompactTxDeposit::from(self).to_compact(buf) + } + + fn from_compact(buf: &[u8], len: usize) -> (Self, &[u8]) { + let (compact, buf) = CompactTxDeposit::from_compact(buf, len); + (compact.into(), buf) + } +} + +// --- OpTypedTransaction --- + +impl Compact for OpTypedTransaction { + fn to_compact(&self, buf: &mut B) -> usize + where + B: bytes::BufMut + AsMut<[u8]>, + { + let tx_type = self.tx_type(); + let identifier = tx_type.to_compact(buf); + match self { + Self::Legacy(tx) => { + tx.to_compact(buf); + } + Self::Eip2930(tx) => { + tx.to_compact(buf); + } + Self::Eip1559(tx) => { + tx.to_compact(buf); + } + Self::Eip7702(tx) => { + tx.to_compact(buf); + } + Self::Deposit(tx) => { + tx.to_compact(buf); + } + } + identifier + } + + fn from_compact(buf: &[u8], identifier: usize) -> (Self, &[u8]) { + let (tx_type, buf) = OpTxType::from_compact(buf, identifier); + match tx_type { + OpTxType::Legacy => { + let (tx, buf) = alloy_consensus::TxLegacy::from_compact(buf, buf.len()); + (Self::Legacy(tx), buf) + } + OpTxType::Eip2930 => { + let (tx, buf) = alloy_consensus::TxEip2930::from_compact(buf, buf.len()); + (Self::Eip2930(tx), buf) + } + OpTxType::Eip1559 => { + let (tx, buf) = alloy_consensus::TxEip1559::from_compact(buf, buf.len()); + (Self::Eip1559(tx), buf) + } + OpTxType::Eip7702 => { + let (tx, buf) = alloy_consensus::TxEip7702::from_compact(buf, buf.len()); + (Self::Eip7702(tx), buf) + } + OpTxType::Deposit => { + let (tx, buf) = TxDeposit::from_compact(buf, buf.len()); + (Self::Deposit(tx), buf) + } + } + } +} + +// --- OpTxEnvelope --- + +impl Envelope for OpTxEnvelope { + fn signature(&self) -> &Signature { + match self { + Self::Legacy(tx) => tx.signature(), + Self::Eip2930(tx) => tx.signature(), + Self::Eip1559(tx) => tx.signature(), + Self::Eip7702(tx) => tx.signature(), + Self::Deposit(_) => { + const DEPOSIT_SIG: Signature = Signature::new(U256::ZERO, U256::ZERO, false); + &DEPOSIT_SIG + } + } + } + + fn tx_type(&self) -> Self::TxType { + alloy_consensus::Typed2718::ty(self).try_into().expect("valid op tx type") + } +} + +impl ToTxCompact for OpTxEnvelope { + fn to_tx_compact(&self, buf: &mut (impl bytes::BufMut + AsMut<[u8]>)) { + // Only write the tx body without the type prefix. The type is serialized separately + // by CompactEnvelope. + match self { + Self::Legacy(tx) => { + tx.tx().to_compact(buf); + } + Self::Eip2930(tx) => { + tx.tx().to_compact(buf); + } + Self::Eip1559(tx) => { + tx.tx().to_compact(buf); + } + Self::Eip7702(tx) => { + tx.tx().to_compact(buf); + } + Self::Deposit(tx) => { + tx.inner().to_compact(buf); + } + }; + } +} + +impl FromTxCompact for OpTxEnvelope { + type TxType = OpTxType; + + fn from_tx_compact(buf: &[u8], tx_type: Self::TxType, signature: Signature) -> (Self, &[u8]) + where + Self: Sized, + { + // Deserialize the tx body directly based on tx_type. The type prefix was already + // consumed by CompactEnvelope. + match tx_type { + OpTxType::Legacy => { + let (tx, buf) = alloy_consensus::TxLegacy::from_compact(buf, buf.len()); + (Self::Legacy(Signed::new_unhashed(tx, signature)), buf) + } + OpTxType::Eip2930 => { + let (tx, buf) = alloy_consensus::TxEip2930::from_compact(buf, buf.len()); + (Self::Eip2930(Signed::new_unhashed(tx, signature)), buf) + } + OpTxType::Eip1559 => { + let (tx, buf) = alloy_consensus::TxEip1559::from_compact(buf, buf.len()); + (Self::Eip1559(Signed::new_unhashed(tx, signature)), buf) + } + OpTxType::Eip7702 => { + let (tx, buf) = alloy_consensus::TxEip7702::from_compact(buf, buf.len()); + (Self::Eip7702(Signed::new_unhashed(tx, signature)), buf) + } + OpTxType::Deposit => { + let (tx, buf) = TxDeposit::from_compact(buf, buf.len()); + (Self::Deposit(alloy_consensus::Sealed::new(tx)), buf) + } + } + } +} + +impl Compact for OpTxEnvelope { + fn to_compact(&self, buf: &mut B) -> usize + where + B: bytes::BufMut + AsMut<[u8]>, + { + ::to_compact(self, buf) + } + + fn from_compact(buf: &[u8], len: usize) -> (Self, &[u8]) { + ::from_compact(buf, len) + } +} + +impl reth_codecs::Compress for OpTxEnvelope { + type Compressed = Vec; + + fn compress_to_buf>(&self, buf: &mut B) { + let _ = Compact::to_compact(self, buf); + } +} + +impl reth_codecs::Decompress for OpTxEnvelope { + fn decompress(value: &[u8]) -> Result { + let (obj, _) = Compact::from_compact(value, value.len()); + Ok(obj) + } +} + +// --- OpReceipt --- + +/// Mirror struct for compact encoding of [`crate::OpDepositReceipt`]. +#[derive(reth_codecs_derive::CompactZstd)] +#[reth_codecs(crate = "reth_codecs")] +#[reth_zstd( + compressor = reth_zstd_compressors::with_receipt_compressor, + decompressor = reth_zstd_compressors::with_receipt_decompressor +)] +struct CompactOpReceipt { + tx_type: OpTxType, + success: bool, + cumulative_gas_used: u64, + logs: Vec, + deposit_nonce: Option, + deposit_receipt_version: Option, +} + +impl From<&OpReceipt> for CompactOpReceipt { + fn from(receipt: &OpReceipt) -> Self { + let inner = receipt.as_receipt(); + let (deposit_nonce, deposit_receipt_version) = match receipt { + OpReceipt::Deposit(deposit) => (deposit.deposit_nonce, deposit.deposit_receipt_version), + _ => (None, None), + }; + Self { + tx_type: receipt.tx_type(), + success: inner.status.coerce_status(), + cumulative_gas_used: inner.cumulative_gas_used, + logs: inner.logs.clone(), + deposit_nonce, + deposit_receipt_version, + } + } +} + +impl From for OpReceipt { + fn from(compact: CompactOpReceipt) -> Self { + let receipt = Receipt { + status: alloy_consensus::Eip658Value::Eip658(compact.success), + cumulative_gas_used: compact.cumulative_gas_used, + logs: compact.logs, + }; + match compact.tx_type { + OpTxType::Legacy => Self::Legacy(receipt), + OpTxType::Eip2930 => Self::Eip2930(receipt), + OpTxType::Eip1559 => Self::Eip1559(receipt), + OpTxType::Eip7702 => Self::Eip7702(receipt), + OpTxType::Deposit => Self::Deposit(crate::OpDepositReceipt { + inner: receipt, + deposit_nonce: compact.deposit_nonce, + deposit_receipt_version: compact.deposit_receipt_version, + }), + } + } +} + +impl Compact for OpReceipt { + fn to_compact(&self, buf: &mut B) -> usize + where + B: bytes::BufMut + AsMut<[u8]>, + { + CompactOpReceipt::from(self).to_compact(buf) + } + + fn from_compact(buf: &[u8], len: usize) -> (Self, &[u8]) { + let (compact, buf) = CompactOpReceipt::from_compact(buf, len); + (compact.into(), buf) + } +} + +impl reth_codecs::Compress for OpReceipt { + type Compressed = Vec; + + fn compress_to_buf>(&self, buf: &mut B) { + let _ = Compact::to_compact(self, buf); + } +} + +impl reth_codecs::Decompress for OpReceipt { + fn decompress(value: &[u8]) -> Result { + let (obj, _) = Compact::from_compact(value, value.len()); + Ok(obj) + } +} diff --git a/rust/op-alloy/crates/consensus/src/reth_core.rs b/rust/op-alloy/crates/consensus/src/reth_core.rs new file mode 100644 index 0000000000000..8e4cd8dce9acf --- /dev/null +++ b/rust/op-alloy/crates/consensus/src/reth_core.rs @@ -0,0 +1,74 @@ +//! Implementations of `InMemorySize` for OP Stack consensus types. + +use crate::{ + OpDepositReceipt, OpPooledTransaction, OpReceipt, OpTxEnvelope, OpTxType, OpTypedTransaction, + TxDeposit, +}; +use alloy_consensus::InMemorySize; + +impl InMemorySize for OpTxType { + fn size(&self) -> usize { + core::mem::size_of::() + } +} + +impl InMemorySize for TxDeposit { + fn size(&self) -> usize { + core::mem::size_of::() + self.input.len() + } +} + +impl InMemorySize for OpDepositReceipt { + fn size(&self) -> usize { + self.inner.size() + + core::mem::size_of_val(&self.deposit_nonce) + + core::mem::size_of_val(&self.deposit_receipt_version) + } +} + +impl InMemorySize for OpReceipt { + fn size(&self) -> usize { + match self { + Self::Legacy(receipt) | + Self::Eip2930(receipt) | + Self::Eip1559(receipt) | + Self::Eip7702(receipt) => receipt.size(), + Self::Deposit(receipt) => receipt.size(), + } + } +} + +impl InMemorySize for OpTypedTransaction { + fn size(&self) -> usize { + match self { + Self::Legacy(tx) => tx.size(), + Self::Eip2930(tx) => tx.size(), + Self::Eip1559(tx) => tx.size(), + Self::Eip7702(tx) => tx.size(), + Self::Deposit(tx) => tx.size(), + } + } +} + +impl InMemorySize for OpPooledTransaction { + fn size(&self) -> usize { + match self { + Self::Legacy(tx) => tx.size(), + Self::Eip2930(tx) => tx.size(), + Self::Eip1559(tx) => tx.size(), + Self::Eip7702(tx) => tx.size(), + } + } +} + +impl InMemorySize for OpTxEnvelope { + fn size(&self) -> usize { + match self { + Self::Legacy(tx) => tx.size(), + Self::Eip2930(tx) => tx.size(), + Self::Eip1559(tx) => tx.size(), + Self::Eip7702(tx) => tx.size(), + Self::Deposit(tx) => core::mem::size_of::() + tx.inner().size(), + } + } +} diff --git a/rust/op-alloy/crates/network/Cargo.toml b/rust/op-alloy/crates/network/Cargo.toml index 739b4df136ae1..a063b681514e1 100644 --- a/rust/op-alloy/crates/network/Cargo.toml +++ b/rust/op-alloy/crates/network/Cargo.toml @@ -2,7 +2,7 @@ name = "op-alloy-network" description = "Optimism blockchain RPC behavior abstraction" -version = "0.23.1" +version = "0.24.0" edition.workspace = true rust-version.workspace = true authors = ["Alloy Contributors"] diff --git a/rust/op-alloy/crates/op-alloy/Cargo.toml b/rust/op-alloy/crates/op-alloy/Cargo.toml index 01f792166bece..373c4fd4f147f 100644 --- a/rust/op-alloy/crates/op-alloy/Cargo.toml +++ b/rust/op-alloy/crates/op-alloy/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "op-alloy" description = "Connect applications to the OP Stack" -version = "0.23.1" +version = "0.24.0" edition.workspace = true rust-version.workspace = true authors = ["Alloy Contributors"] diff --git a/rust/op-alloy/crates/provider/Cargo.toml b/rust/op-alloy/crates/provider/Cargo.toml index 6eea54cf581dd..613e8549f191a 100644 --- a/rust/op-alloy/crates/provider/Cargo.toml +++ b/rust/op-alloy/crates/provider/Cargo.toml @@ -2,7 +2,7 @@ name = "op-alloy-provider" description = "Interface with an OP Stack blockchain" -version = "0.23.1" +version = "0.24.0" edition.workspace = true rust-version.workspace = true license.workspace = true diff --git a/rust/op-alloy/crates/rpc-jsonrpsee/Cargo.toml b/rust/op-alloy/crates/rpc-jsonrpsee/Cargo.toml index 1e0eec62d0ebf..59ec619aac38e 100644 --- a/rust/op-alloy/crates/rpc-jsonrpsee/Cargo.toml +++ b/rust/op-alloy/crates/rpc-jsonrpsee/Cargo.toml @@ -2,7 +2,7 @@ name = "op-alloy-rpc-jsonrpsee" description = "Optimism RPC Client" -version = "0.23.1" +version = "0.24.0" edition.workspace = true rust-version.workspace = true license.workspace = true diff --git a/rust/op-alloy/crates/rpc-types-engine/Cargo.toml b/rust/op-alloy/crates/rpc-types-engine/Cargo.toml index 2b7a8d0b3accc..324d3b9a571df 100644 --- a/rust/op-alloy/crates/rpc-types-engine/Cargo.toml +++ b/rust/op-alloy/crates/rpc-types-engine/Cargo.toml @@ -2,7 +2,7 @@ name = "op-alloy-rpc-types-engine" description = "Optimism RPC types for the `engine` namespace" -version = "0.23.1" +version = "0.24.0" edition.workspace = true rust-version.workspace = true license.workspace = true diff --git a/rust/op-alloy/crates/rpc-types/Cargo.toml b/rust/op-alloy/crates/rpc-types/Cargo.toml index 58537af2a040b..9934cbb032617 100644 --- a/rust/op-alloy/crates/rpc-types/Cargo.toml +++ b/rust/op-alloy/crates/rpc-types/Cargo.toml @@ -2,7 +2,7 @@ name = "op-alloy-rpc-types" description = "Optimism RPC types" -version = "0.23.1" +version = "0.24.0" edition.workspace = true rust-version.workspace = true license.workspace = true diff --git a/rust/op-reth/DockerfileOp b/rust/op-reth/DockerfileOp index e7a4a58557e6b..0e50209ce3f04 100644 --- a/rust/op-reth/DockerfileOp +++ b/rust/op-reth/DockerfileOp @@ -1,4 +1,4 @@ -FROM lukemathwalker/cargo-chef:latest-rust-1.92 AS chef +FROM lukemathwalker/cargo-chef:latest-rust-1.94 AS chef WORKDIR /app LABEL org.opencontainers.image.source=https://github.com/paradigmxyz/reth diff --git a/rust/op-reth/bin/Cargo.toml b/rust/op-reth/bin/Cargo.toml index a1e1473c8c5a4..6c00b836e7a6d 100644 --- a/rust/op-reth/bin/Cargo.toml +++ b/rust/op-reth/bin/Cargo.toml @@ -61,7 +61,6 @@ min-info-logs = ["tracing/release_max_level_info"] min-debug-logs = ["tracing/release_max_level_debug"] min-trace-logs = ["tracing/release_max_level_trace"] -edge = ["reth-optimism-cli/edge"] [[bin]] name = "op-reth" diff --git a/rust/op-reth/crates/cli/Cargo.toml b/rust/op-reth/crates/cli/Cargo.toml index fcc61b1a9fd63..d6a7fe3129b5b 100644 --- a/rust/op-reth/crates/cli/Cargo.toml +++ b/rust/op-reth/crates/cli/Cargo.toml @@ -17,7 +17,7 @@ reth-cli-commands.workspace = true reth-consensus.workspace = true reth-rpc-server-types.workspace = true reth-primitives-traits.workspace = true -reth-db = { workspace = true, features = ["mdbx", "op"] } +reth-db = { workspace = true, features = ["mdbx"] } reth-db-api.workspace = true reth-db-common.workspace = true reth-downloaders.workspace = true @@ -43,6 +43,7 @@ reth-chainspec.workspace = true reth-node-events.workspace = true reth-optimism-evm.workspace = true reth-cli-runner.workspace = true +reth-tasks.workspace = true reth-node-builder = { workspace = true, features = ["op"] } reth-tracing.workspace = true @@ -97,6 +98,7 @@ keccak-cache-global = [ jemalloc = [ "reth-node-core/jemalloc", "reth-node-metrics/jemalloc", + "reth-provider/jemalloc", ] jemalloc-prof = [ "jemalloc", @@ -109,7 +111,7 @@ jemalloc-symbols = [ tracy = ["reth-tracing/tracy", "reth-node-core/tracy"] -dev = ["dep:proptest", "reth-cli-commands/arbitrary"] +dev = ["dep:proptest", "reth-cli-commands/arbitrary", "op-alloy-consensus/arbitrary"] serde = [ "alloy-consensus/serde", @@ -122,4 +124,3 @@ serde = [ "reth-optimism-chainspec/serde", ] -edge = ["reth-cli-commands/edge", "reth-node-core/edge"] diff --git a/rust/op-reth/crates/cli/src/app.rs b/rust/op-reth/crates/cli/src/app.rs index 730bda4c2747c..1189fc74ae8db 100644 --- a/rust/op-reth/crates/cli/src/app.rs +++ b/rust/op-reth/crates/cli/src/app.rs @@ -86,16 +86,20 @@ where runner.run_command_until_exit(|ctx| command.execute(ctx, launcher)) } Commands::Init(command) => { - runner.run_blocking_until_ctrl_c(command.execute::()) + let runtime = runner.runtime(); + runner.run_blocking_until_ctrl_c(command.execute::(runtime)) } Commands::InitState(command) => { - runner.run_blocking_until_ctrl_c(command.execute::()) + let runtime = runner.runtime(); + runner.run_blocking_until_ctrl_c(command.execute::(runtime)) } Commands::ImportOp(command) => { - runner.run_blocking_until_ctrl_c(command.execute::()) + let runtime = runner.runtime(); + runner.run_blocking_until_ctrl_c(command.execute::(runtime)) } Commands::ImportReceiptsOp(command) => { - runner.run_blocking_until_ctrl_c(command.execute::()) + let runtime = runner.runtime(); + runner.run_blocking_until_ctrl_c(command.execute::(runtime)) } Commands::DumpGenesis(command) => runner.run_blocking_until_ctrl_c(command.execute()), Commands::Db(command) => { @@ -112,10 +116,12 @@ where #[cfg(feature = "dev")] Commands::TestVectors(command) => runner.run_until_ctrl_c(command.execute()), Commands::ReExecute(command) => { - runner.run_until_ctrl_c(command.execute::(components)) + let runtime = runner.runtime(); + runner.run_until_ctrl_c(command.execute::(components, runtime)) } Commands::OpProofs(command) => { - runner.run_blocking_until_ctrl_c(command.execute::()) + let runtime = runner.runtime(); + runner.run_blocking_until_ctrl_c(command.execute::(runtime)) } } } @@ -131,7 +137,7 @@ where let otlp_status = runner.block_on(self.cli.traces.init_otlp_tracing(&mut layers))?; let otlp_logs_status = runner.block_on(self.cli.traces.init_otlp_logs(&mut layers))?; - self.guard = self.cli.logs.init_tracing_with_layers(layers)?; + self.guard = self.cli.logs.init_tracing_with_layers(layers, false)?; info!(target: "reth::cli", "Initialized tracing, debug log directory: {}", self.cli.logs.log_file_directory); match otlp_status { diff --git a/rust/op-reth/crates/cli/src/commands/import.rs b/rust/op-reth/crates/cli/src/commands/import.rs index 0d7e0cde8cd38..3bbdc45972fb9 100644 --- a/rust/op-reth/crates/cli/src/commands/import.rs +++ b/rust/op-reth/crates/cli/src/commands/import.rs @@ -43,6 +43,7 @@ impl> ImportOpCommand { /// Execute `import` command pub async fn execute>( self, + runtime: reth_tasks::Runtime, ) -> eyre::Result<()> { info!(target: "reth::cli", "reth {} starting", version_metadata().short_version); @@ -55,7 +56,8 @@ impl> ImportOpCommand { "Chunking chain import" ); - let Environment { provider_factory, config, .. } = self.env.init::(AccessRights::RW)?; + let Environment { provider_factory, config, .. } = + self.env.init::(AccessRights::RW, runtime.clone())?; // we use noop here because we expect the inputs to be valid let consensus = Arc::new(NoopConsensus::default()); @@ -106,6 +108,7 @@ impl> ImportOpCommand { static_file_producer.clone(), true, OpExecutorProvider::optimism(provider_factory.chain_spec()), + runtime.clone(), )?; // override the tip diff --git a/rust/op-reth/crates/cli/src/commands/import_receipts.rs b/rust/op-reth/crates/cli/src/commands/import_receipts.rs index d2a66fe90d0bd..17270f62165f1 100644 --- a/rust/op-reth/crates/cli/src/commands/import_receipts.rs +++ b/rust/op-reth/crates/cli/src/commands/import_receipts.rs @@ -51,6 +51,7 @@ impl> ImportReceiptsOpCommand { /// Execute `import` command pub async fn execute>( self, + runtime: reth_tasks::Runtime, ) -> eyre::Result<()> { info!(target: "reth::cli", "reth {} starting", version_metadata().short_version); @@ -59,7 +60,7 @@ impl> ImportReceiptsOpCommand { "Chunking receipts import" ); - let Environment { provider_factory, .. } = self.env.init::(AccessRights::RW)?; + let Environment { provider_factory, .. } = self.env.init::(AccessRights::RW, runtime)?; import_receipts_from_file( provider_factory, diff --git a/rust/op-reth/crates/cli/src/commands/init_state.rs b/rust/op-reth/crates/cli/src/commands/init_state.rs index 09e2bd23ab71f..b277bb1d0c516 100644 --- a/rust/op-reth/crates/cli/src/commands/init_state.rs +++ b/rust/op-reth/crates/cli/src/commands/init_state.rs @@ -40,12 +40,13 @@ impl> InitStateCommandOp { /// Execute the `init` command pub async fn execute>( mut self, + runtime: reth_tasks::Runtime, ) -> eyre::Result<()> { // If using --without-ovm for OP mainnet, handle the special case with hardcoded Bedrock // header. Otherwise delegate to the base InitStateCommand implementation. if self.without_ovm { if self.init_state.env.chain.is_optimism_mainnet() { - return self.execute_with_bedrock_header::(); + return self.execute_with_bedrock_header::(runtime); } // For non-mainnet OP chains with --without-ovm, use the base implementation @@ -53,7 +54,7 @@ impl> InitStateCommandOp { self.init_state.without_evm = true; } - self.init_state.execute::().await + self.init_state.execute::(runtime).await } /// Execute init-state with hardcoded Bedrock header for OP mainnet. @@ -61,9 +62,10 @@ impl> InitStateCommandOp { N: CliNodeTypes, >( self, + runtime: reth_tasks::Runtime, ) -> eyre::Result<()> { info!(target: "reth::cli", "Reth init-state starting for OP mainnet"); - let env = self.init_state.env.init::(AccessRights::RW)?; + let env = self.init_state.env.init::(AccessRights::RW, runtime)?; let Environment { config, provider_factory, .. } = env; let static_file_provider = provider_factory.static_file_provider(); diff --git a/rust/op-reth/crates/cli/src/commands/op_proofs/init.rs b/rust/op-reth/crates/cli/src/commands/op_proofs/init.rs index 1c1d2be34aac5..094be02d7a337 100644 --- a/rust/op-reth/crates/cli/src/commands/op_proofs/init.rs +++ b/rust/op-reth/crates/cli/src/commands/op_proofs/init.rs @@ -37,12 +37,13 @@ impl> InitCommand { /// Execute `initialize-op-proofs` command pub async fn execute>( self, + runtime: reth_tasks::Runtime, ) -> eyre::Result<()> { info!(target: "reth::cli", "reth {} starting", version_metadata().short_version); info!(target: "reth::cli", "Initializing OP proofs storage at: {:?}", self.storage_path); // Initialize the environment with read-only access - let Environment { provider_factory, .. } = self.env.init::(AccessRights::RO)?; + let Environment { provider_factory, .. } = self.env.init::(AccessRights::RO, runtime)?; // Create the proofs storage without the metrics wrapper. // During initialization we write billions of entries; the metrics layer's diff --git a/rust/op-reth/crates/cli/src/commands/op_proofs/mod.rs b/rust/op-reth/crates/cli/src/commands/op_proofs/mod.rs index 9f49a288ccb3d..fae3476e49402 100644 --- a/rust/op-reth/crates/cli/src/commands/op_proofs/mod.rs +++ b/rust/op-reth/crates/cli/src/commands/op_proofs/mod.rs @@ -22,11 +22,12 @@ impl> Command { /// Execute `op-proofs` command pub async fn execute>( self, + runtime: reth_tasks::Runtime, ) -> eyre::Result<()> { match self.command { - Subcommands::Init(cmd) => cmd.execute::().await, - Subcommands::Prune(cmd) => cmd.execute::().await, - Subcommands::Unwind(cmd) => cmd.execute::().await, + Subcommands::Init(cmd) => cmd.execute::(runtime).await, + Subcommands::Prune(cmd) => cmd.execute::(runtime).await, + Subcommands::Unwind(cmd) => cmd.execute::(runtime).await, } } } diff --git a/rust/op-reth/crates/cli/src/commands/op_proofs/prune.rs b/rust/op-reth/crates/cli/src/commands/op_proofs/prune.rs index 369f3e56625f6..643e22c4334ab 100644 --- a/rust/op-reth/crates/cli/src/commands/op_proofs/prune.rs +++ b/rust/op-reth/crates/cli/src/commands/op_proofs/prune.rs @@ -47,12 +47,13 @@ impl> PruneCommand { /// Execute [`PruneCommand`]. pub async fn execute>( self, + runtime: reth_tasks::Runtime, ) -> eyre::Result<()> { info!(target: "reth::cli", "reth {} starting", version_metadata().short_version); info!(target: "reth::cli", "Pruning OP proofs storage at: {:?}", self.storage_path); // Initialize the environment with read-only access - let Environment { provider_factory, .. } = self.env.init::(AccessRights::RO)?; + let Environment { provider_factory, .. } = self.env.init::(AccessRights::RO, runtime)?; let storage: Arc = Arc::new( MdbxProofsStorage::new(&self.storage_path) diff --git a/rust/op-reth/crates/cli/src/commands/op_proofs/unwind.rs b/rust/op-reth/crates/cli/src/commands/op_proofs/unwind.rs index d22cf5f801c3e..3dd6ec881b88f 100644 --- a/rust/op-reth/crates/cli/src/commands/op_proofs/unwind.rs +++ b/rust/op-reth/crates/cli/src/commands/op_proofs/unwind.rs @@ -62,12 +62,13 @@ impl> UnwindCommand { /// Execute [`UnwindCommand`]. pub async fn execute>( self, + runtime: reth_tasks::Runtime, ) -> eyre::Result<()> { info!(target: "reth::cli", "reth {} starting", version_metadata().short_version); info!(target: "reth::cli", "Unwinding OP proofs storage at: {:?}", self.storage_path); // Initialize the environment with read-only access - let Environment { provider_factory, .. } = self.env.init::(AccessRights::RO)?; + let Environment { provider_factory, .. } = self.env.init::(AccessRights::RO, runtime)?; // Create the proofs storage let storage: Arc = Arc::new( diff --git a/rust/op-reth/crates/evm/src/lib.rs b/rust/op-reth/crates/evm/src/lib.rs index 516aaf6475704..cc085ebe104cb 100644 --- a/rust/op-reth/crates/evm/src/lib.rs +++ b/rust/op-reth/crates/evm/src/lib.rs @@ -260,6 +260,7 @@ where basefee: payload.payload.as_v1().base_fee_per_gas.to(), // EIP-4844 excess blob gas of this block, introduced in Cancun blob_excess_gas_and_price, + slot_num: 0, }; Ok(EvmEnv { cfg_env, block_env }) diff --git a/rust/op-reth/crates/evm/src/tx.rs b/rust/op-reth/crates/evm/src/tx.rs index 00c2546be6500..e1c352b0d5522 100644 --- a/rust/op-reth/crates/evm/src/tx.rs +++ b/rust/op-reth/crates/evm/src/tx.rs @@ -218,15 +218,12 @@ impl FromTxWithEncoded for OpTx { } #[cfg(feature = "rpc")] -impl alloy_evm::rpc::TryIntoTxEnv +impl alloy_evm::rpc::TryIntoTxEnv for op_alloy_rpc_types::OpTransactionRequest { type Err = alloy_evm::rpc::EthTxEnvError; - fn try_into_tx_env( - self, - evm_env: &alloy_evm::EvmEnv, - ) -> Result { + fn try_into_tx_env(self, evm_env: &alloy_evm::EvmEnv) -> Result { let inner: OpTransaction = self.try_into_tx_env(evm_env)?; Ok(OpTx(inner)) } diff --git a/rust/op-reth/crates/exex/Cargo.toml b/rust/op-reth/crates/exex/Cargo.toml index 5a9a9b6d01681..9ba9500eda048 100644 --- a/rust/op-reth/crates/exex/Cargo.toml +++ b/rust/op-reth/crates/exex/Cargo.toml @@ -35,7 +35,7 @@ tokio.workspace = true [dev-dependencies] futures.workspace = true -reth-db = { workspace = true, features = ["op", "test-utils"] } +reth-db = { workspace = true, features = ["test-utils"] } reth-node-builder.workspace = true reth-optimism-node.workspace = true reth-optimism-chainspec.workspace = true diff --git a/rust/op-reth/crates/flashblocks/src/consensus.rs b/rust/op-reth/crates/flashblocks/src/consensus.rs index 453d9bffa0405..61172dfbc330c 100644 --- a/rust/op-reth/crates/flashblocks/src/consensus.rs +++ b/rust/op-reth/crates/flashblocks/src/consensus.rs @@ -4,7 +4,7 @@ use alloy_rpc_types_engine::PayloadStatusEnum; use op_alloy_rpc_types_engine::OpExecutionData; use reth_engine_primitives::ConsensusEngineHandle; use reth_optimism_payload_builder::OpPayloadTypes; -use reth_payload_primitives::{EngineApiMessageVersion, ExecutionPayload, PayloadTypes}; +use reth_payload_primitives::{ExecutionPayload, PayloadTypes}; use tracing::*; /// Consensus client that sends FCUs and new payloads using blocks from a [`FlashBlockService`]. @@ -104,11 +104,7 @@ where finalized_block_hash: finalized_hash, }; - match self - .engine_handle - .fork_choice_updated(fcu_state, None, EngineApiMessageVersion::V5) - .await - { + match self.engine_handle.fork_choice_updated(fcu_state, None).await { Ok(result) => { debug!( target: "flashblocks", @@ -180,6 +176,14 @@ impl TryFrom<&FlashBlockCompleteSequence> for OpExecutionData { } } +impl TryFrom<&FlashBlockCompleteSequence> for reth_optimism_payload_builder::OpExecData { + type Error = &'static str; + + fn try_from(sequence: &FlashBlockCompleteSequence) -> Result { + OpExecutionData::try_from(sequence).map(Into::into) + } +} + #[cfg(test)] mod tests { use super::*; diff --git a/rust/op-reth/crates/flashblocks/src/worker.rs b/rust/op-reth/crates/flashblocks/src/worker.rs index af9658ab97832..6308ccb4ec220 100644 --- a/rust/op-reth/crates/flashblocks/src/worker.rs +++ b/rust/op-reth/crates/flashblocks/src/worker.rs @@ -311,9 +311,6 @@ where .context_for_next_block(parent_header, attrs) .map_err(RethError::other)?; - // The cached bundle prestate already includes pre-execution state changes. - // Only set the state clear flag (Spurious Dragon empty-account handling). - state.set_state_clear_flag(true); let evm = self.evm_config.evm_with_env(&mut state, evm_env); let mut executor = self.evm_config.create_executor(evm, execution_ctx.clone()); diff --git a/rust/op-reth/crates/node/Cargo.toml b/rust/op-reth/crates/node/Cargo.toml index 9b06f8d14565e..fda156e44809f 100644 --- a/rust/op-reth/crates/node/Cargo.toml +++ b/rust/op-reth/crates/node/Cargo.toml @@ -31,8 +31,8 @@ reth-node-core.workspace = true reth-rpc-engine-api.workspace = true reth-engine-local = { workspace = true, features = ["op"] } reth-rpc-api.workspace = true -reth-db = { workspace = true, features = ["op"] } -reth-db-api = { workspace = true, features = ["op"] } +reth-db.workspace = true +reth-db-api.workspace = true # op-reth reth-optimism-payload-builder.workspace = true @@ -88,7 +88,7 @@ serde_json = { workspace = true, optional = true } [dev-dependencies] reth-optimism-node = { workspace = true, features = ["test-utils"] } -reth-db = { workspace = true, features = ["op", "test-utils"] } +reth-db = { workspace = true, features = ["test-utils"] } reth-node-builder = { workspace = true, features = ["test-utils"] } reth-provider = { workspace = true, features = ["test-utils"] } reth-tasks.workspace = true diff --git a/rust/op-reth/crates/node/src/engine.rs b/rust/op-reth/crates/node/src/engine.rs index 217cb953e68a6..84b85580d0222 100644 --- a/rust/op-reth/crates/node/src/engine.rs +++ b/rust/op-reth/crates/node/src/engine.rs @@ -1,10 +1,7 @@ use alloy_consensus::BlockHeader; use alloy_primitives::B256; use alloy_rpc_types_engine::{ExecutionPayloadEnvelopeV2, ExecutionPayloadV1}; -use op_alloy_rpc_types_engine::{ - OpExecutionData, OpExecutionPayloadEnvelopeV3, OpExecutionPayloadEnvelopeV4, - OpPayloadAttributes, -}; +use op_alloy_rpc_types_engine::{OpExecutionPayloadEnvelopeV3, OpExecutionPayloadEnvelopeV4}; use reth_consensus::ConsensusError; use reth_node_api::{ BuiltPayload, EngineApiValidator, EngineTypes, NodePrimitives, PayloadValidator, @@ -17,7 +14,9 @@ use reth_node_api::{ }; use reth_optimism_consensus::isthmus; use reth_optimism_forks::OpHardforks; -use reth_optimism_payload_builder::{OpExecutionPayloadValidator, OpPayloadTypes}; +use reth_optimism_payload_builder::{ + OpExecData, OpExecutionPayloadValidator, OpPayloadAttrs, OpPayloadTypes, +}; use reth_optimism_primitives::{L2_TO_L1_MESSAGE_PASSER_ADDRESS, OpBlock}; use reth_primitives_traits::{Block, RecoveredBlock, SealedBlock, SignedTransaction}; use reth_provider::StateProviderFactory; @@ -31,25 +30,24 @@ pub struct OpEngineTypes { _marker: PhantomData, } -impl> PayloadTypes for OpEngineTypes { +impl> PayloadTypes for OpEngineTypes { type ExecutionData = T::ExecutionData; type BuiltPayload = T::BuiltPayload; type PayloadAttributes = T::PayloadAttributes; - type PayloadBuilderAttributes = T::PayloadBuilderAttributes; fn block_to_payload( block: SealedBlock< <::Primitives as NodePrimitives>::Block, >, ) -> ::ExecutionData { - OpExecutionData::from_block_unchecked( + OpExecData::from(op_alloy_rpc_types_engine::OpExecutionData::from_block_unchecked( block.hash(), &block.into_block().into_ethereum_block(), - ) + )) } } -impl> EngineTypes for OpEngineTypes +impl> EngineTypes for OpEngineTypes where T::BuiltPayload: BuiltPayload> + TryInto @@ -118,7 +116,7 @@ where P: StateProviderFactory + Unpin + 'static, Tx: SignedTransaction + Unpin + 'static, ChainSpec: OpHardforks + Send + Sync + 'static, - Types: PayloadTypes, + Types: PayloadTypes, { type Block = alloy_consensus::Block; @@ -154,17 +152,17 @@ where fn convert_payload_to_block( &self, - payload: OpExecutionData, + payload: OpExecData, ) -> Result, NewPayloadError> { - self.inner.ensure_well_formed_payload(payload).map_err(NewPayloadError::other) + self.inner.ensure_well_formed_payload(payload.0).map_err(NewPayloadError::other) } } impl EngineApiValidator for OpEngineValidator where Types: PayloadTypes< - PayloadAttributes = OpPayloadAttributes, - ExecutionData = OpExecutionData, + PayloadAttributes = OpPayloadAttrs, + ExecutionData = OpExecData, BuiltPayload: BuiltPayload>, >, P: StateProviderFactory + Unpin + 'static, @@ -204,9 +202,7 @@ where validate_version_specific_fields( self.chain_spec(), version, - PayloadOrAttributes::::PayloadAttributes( - attributes, - ), + PayloadOrAttributes::::PayloadAttributes(attributes), )?; if attributes.gas_limit.is_none() { @@ -307,6 +303,7 @@ mod test { use alloy_op_hardforks::BASE_SEPOLIA_JOVIAN_TIMESTAMP; use alloy_primitives::{Address, B64, B256, b64}; use alloy_rpc_types_engine::PayloadAttributes; + use op_alloy_rpc_types_engine::OpPayloadAttributes; use reth_optimism_chainspec::BASE_SEPOLIA; use reth_provider::noop::NoopProvider; use reth_trie_common::KeccakKeyHasher; @@ -323,12 +320,12 @@ mod test { }}; } - const fn get_attributes( + fn get_attributes( eip_1559_params: Option, min_base_fee: Option, timestamp: u64, - ) -> OpPayloadAttributes { - OpPayloadAttributes { + ) -> OpPayloadAttrs { + OpPayloadAttrs(OpPayloadAttributes { gas_limit: Some(1000), eip_1559_params, min_base_fee, @@ -341,7 +338,7 @@ mod test { withdrawals: Some(vec![]), parent_beacon_block_root: Some(B256::ZERO), }, - } + }) } #[test] diff --git a/rust/op-reth/crates/node/src/node.rs b/rust/op-reth/crates/node/src/node.rs index 1f1fb1477d57e..df5aca68acbf7 100644 --- a/rust/op-reth/crates/node/src/node.rs +++ b/rust/op-reth/crates/node/src/node.rs @@ -7,8 +7,7 @@ use crate::{ txpool::{OpTransactionPool, OpTransactionValidator}, }; use op_alloy_consensus::{OpPooledTransaction, interop::SafetyLevel}; -use op_alloy_rpc_types_engine::OpExecutionData; -use reth_chainspec::{ChainSpecProvider, EthChainSpec, ForkCondition, Hardforks}; +use reth_chainspec::{ChainSpecProvider, EthChainSpec, Hardforks}; use reth_engine_local::LocalPayloadAttributesBuilder; use reth_evm::ConfigureEvm; use reth_network::{ @@ -38,7 +37,7 @@ use reth_optimism_consensus::OpBeaconConsensus; use reth_optimism_evm::{OpEvmConfig, OpRethReceiptBuilder}; use reth_optimism_forks::OpHardforks; use reth_optimism_payload_builder::{ - OpAttributes, OpBuiltPayload, OpPayloadPrimitives, + OpBuiltPayload, OpExecData, OpPayloadPrimitives, builder::OpPayloadTransactions, config::{OpBuilderConfig, OpDAConfig, OpGasLimitConfig}, }; @@ -61,10 +60,25 @@ use reth_transaction_pool::{ TransactionValidationTaskExecutor, blobstore::DiskFileBlobStore, }; use reth_trie_common::KeccakKeyHasher; -use serde::de::DeserializeOwned; use std::{marker::PhantomData, sync::Arc}; use url::Url; +use reth_optimism_payload_builder::OpPayloadAttrs; + +/// Wrapper around [`LocalPayloadAttributesBuilder`] to adapt it to [`OpPayloadAttrs`]. +struct OpLocalPayloadAttributesBuilder(LocalPayloadAttributesBuilder); + +impl PayloadAttributesBuilder for OpLocalPayloadAttributesBuilder { + fn build( + &self, + parent: &reth_primitives_traits::SealedHeader, + ) -> OpPayloadAttrs { + let inner: op_alloy_rpc_types_engine::OpPayloadAttributes = + PayloadAttributesBuilder::build(&self.0, parent); + OpPayloadAttrs(inner) + } +} + /// Marker trait for Optimism node types with standard engine, chain spec, and primitives. pub trait OpNodeTypes: NodeTypes @@ -87,7 +101,7 @@ pub trait OpFullNodeTypes: ChainSpec: OpHardforks, Primitives: OpPayloadPrimitives, Storage = OpStorage, - Payload: EngineTypes, + Payload: EngineTypes, > { } @@ -97,7 +111,7 @@ impl OpFullNodeTypes for N where ChainSpec: OpHardforks, Primitives: OpPayloadPrimitives, Storage = OpStorage, - Payload: EngineTypes, + Payload: EngineTypes, > { } @@ -277,7 +291,9 @@ where fn local_payload_attributes_builder( chain_spec: &Self::ChainSpec, ) -> impl PayloadAttributesBuilder<::PayloadAttributes> { - LocalPayloadAttributesBuilder::new(Arc::new(chain_spec.clone())) + OpLocalPayloadAttributesBuilder(LocalPayloadAttributesBuilder::new(Arc::new( + chain_spec.clone(), + ))) } } @@ -493,18 +509,14 @@ where } } -impl NodeAddOns +impl NodeAddOns for OpAddOns where N: FullNodeComponents< - Types: NodeTypes< - ChainSpec: OpHardforks, - Primitives: OpPayloadPrimitives, - Payload: PayloadTypes, - >, + Types: NodeTypes, Evm: ConfigureEvm< NextBlockEnvCtx: BuildNextEnv< - Attrs, + reth_optimism_payload_builder::OpPayloadBuilderAttributes>, HeaderTy, ::ChainSpec, >, @@ -516,7 +528,6 @@ where EB: EngineApiBuilder, EVB: EngineValidatorBuilder, RpcMiddleware: RethRpcMiddleware, - Attrs: OpAttributes, RpcPayloadAttributes: DeserializeOwned>, { type Handle = RpcHandle; @@ -563,10 +574,13 @@ where ctx.node.evm_config().clone(), ); // install additional OP specific rpc methods - let debug_ext = OpDebugWitnessApi::<_, _, _, Attrs>::new( - ctx.node.provider().clone(), - Box::new(ctx.node.task_executor().clone()), - builder, + let debug_ext = OpDebugWitnessApi::< + _, + _, + _, + reth_optimism_payload_builder::OpPayloadBuilderAttributes>, + >::new( + ctx.node.provider().clone(), ctx.node.task_executor().clone(), builder ); let miner_ext = OpMinerExtApi::new(da_config, gas_limit_config); @@ -622,18 +636,14 @@ where } } -impl RethRpcAddOns +impl RethRpcAddOns for OpAddOns where N: FullNodeComponents< - Types: NodeTypes< - ChainSpec: OpHardforks, - Primitives: OpPayloadPrimitives, - Payload: PayloadTypes, - >, + Types: NodeTypes, Evm: ConfigureEvm< NextBlockEnvCtx: BuildNextEnv< - Attrs, + reth_optimism_payload_builder::OpPayloadBuilderAttributes>, HeaderTy, ::ChainSpec, >, @@ -645,7 +655,6 @@ where EB: EngineApiBuilder, EVB: EngineValidatorBuilder, RpcMiddleware: RethRpcMiddleware, - Attrs: OpAttributes, RpcPayloadAttributes: DeserializeOwned>, { type EthApi = EthB::EthApi; @@ -1130,7 +1139,7 @@ impl OpPayloadBuilder { } } -impl PayloadBuilderBuilder for OpPayloadBuilder +impl PayloadBuilderBuilder for OpPayloadBuilder where Node: FullNodeTypes< Provider: ChainSpecProvider, @@ -1138,24 +1147,28 @@ where Primitives: OpPayloadPrimitives, Payload: PayloadTypes< BuiltPayload = OpBuiltPayload>, - PayloadBuilderAttributes = Attrs, + PayloadAttributes = OpPayloadAttrs, >, >, >, Evm: ConfigureEvm< Primitives = PrimitivesTy, NextBlockEnvCtx: BuildNextEnv< - Attrs, + reth_optimism_payload_builder::OpPayloadBuilderAttributes>, HeaderTy, ::ChainSpec, >, > + 'static, Pool: TransactionPool>> + Unpin + 'static, Txs: OpPayloadTransactions, - Attrs: OpAttributes>, { - type PayloadBuilder = - reth_optimism_payload_builder::OpPayloadBuilder; + type PayloadBuilder = reth_optimism_payload_builder::OpPayloadBuilder< + Pool, + Node::Provider, + Evm, + Txs, + reth_optimism_payload_builder::OpPayloadBuilderAttributes>, + >; async fn build_payload_builder( self, @@ -1303,10 +1316,7 @@ pub struct OpEngineValidatorBuilder; impl PayloadValidatorBuilder for OpEngineValidatorBuilder where Node: FullNodeComponents< - Types: NodeTypes< - ChainSpec: OpHardforks, - Payload: PayloadTypes, - >, + Types: NodeTypes>, >, { type Validator = OpEngineValidator< diff --git a/rust/op-reth/crates/node/src/proof_history.rs b/rust/op-reth/crates/node/src/proof_history.rs index 21a0265f36683..404b938bc1b86 100644 --- a/rust/op-reth/crates/node/src/proof_history.rs +++ b/rust/op-reth/crates/node/src/proof_history.rs @@ -76,7 +76,7 @@ pub async fn launch_node_with_proof_history( ctx.node().provider().clone(), ctx.registry.eth_api().clone(), storage, - Box::new(ctx.node().task_executor().clone()), + ctx.node().task_executor().clone(), ctx.node().evm_config().clone(), ); let eth_replaced = ctx.modules.replace_configured(api_ext.into_rpc())?; diff --git a/rust/op-reth/crates/node/src/rpc.rs b/rust/op-reth/crates/node/src/rpc.rs index 9c959a38da505..816a736921092 100644 --- a/rust/op-reth/crates/node/src/rpc.rs +++ b/rust/op-reth/crates/node/src/rpc.rs @@ -32,13 +32,13 @@ //! // build core node with all components disabled except EVM and state //! let sepolia = NodeConfig::new(OP_SEPOLIA.clone()); //! let db = create_test_rw_db_with_path(sepolia.datadir()); -//! let runtime = Runtime::with_existing_handle(tokio::runtime::Handle::current()).unwrap(); +//! let runtime = Runtime::test(); //! let launch_ctx = LaunchContext::new(runtime, sepolia.datadir()); //! let node = launch_ctx //! .with_loaded_toml_config(sepolia) //! .unwrap() //! .attach(Arc::new(db)) -//! .with_provider_factory::<_, OpEvmConfig>(ChangesetCache::new()) +//! .with_provider_factory::<_, OpEvmConfig>(ChangesetCache::new(), None) //! .await //! .unwrap() //! .with_genesis() @@ -90,13 +90,13 @@ pub use reth_optimism_rpc::{OpEngineApi, OpEthApi, OpEthApiBuilder}; use crate::OP_NAME_CLIENT; use alloy_rpc_types_engine::ClientVersionV1; -use op_alloy_rpc_types_engine::OpExecutionData; use reth_chainspec::EthereumHardforks; use reth_node_api::{ AddOnsContext, EngineApiValidator, EngineTypes, FullNodeComponents, NodeTypes, }; use reth_node_builder::rpc::{EngineApiBuilder, PayloadValidatorBuilder}; use reth_node_core::version::{CLIENT_CODE, version_metadata}; +use reth_optimism_payload_builder::OpExecData; use reth_optimism_rpc::engine::OP_ENGINE_CAPABILITIES; use reth_payload_builder::PayloadStore; use reth_rpc_engine_api::{EngineApi, EngineCapabilities}; @@ -112,7 +112,7 @@ where N: FullNodeComponents< Types: NodeTypes< ChainSpec: EthereumHardforks, - Payload: EngineTypes, + Payload: EngineTypes, >, >, EV: PayloadValidatorBuilder, @@ -142,7 +142,7 @@ where ctx.beacon_engine_handle.clone(), PayloadStore::new(ctx.node.payload_builder_handle().clone()), ctx.node.pool().clone(), - Box::new(ctx.node.task_executor().clone()), + ctx.node.task_executor().clone(), client, EngineCapabilities::new(OP_ENGINE_CAPABILITIES.iter().copied()), engine_validator, diff --git a/rust/op-reth/crates/node/src/utils.rs b/rust/op-reth/crates/node/src/utils.rs index 435ec2b925080..8b0ae3a44e2ba 100644 --- a/rust/op-reth/crates/node/src/utils.rs +++ b/rust/op-reth/crates/node/src/utils.rs @@ -1,13 +1,13 @@ -use crate::{OpBuiltPayload, OpNode as OtherOpNode, OpPayloadBuilderAttributes}; +use crate::{OpBuiltPayload, OpNode as OtherOpNode}; use alloy_genesis::Genesis; use alloy_primitives::{Address, B256}; -use alloy_rpc_types_engine::PayloadAttributes; +use op_alloy_rpc_types_engine::OpPayloadAttributes; use reth_e2e_test_utils::{ NodeHelperType, TmpDB, transaction::TransactionTestContext, wallet::Wallet, }; use reth_node_api::NodeTypesWithDBAdapter; use reth_optimism_chainspec::OpChainSpecBuilder; -use reth_payload_builder::EthPayloadBuilderAttributes; +use reth_optimism_payload_builder::OpPayloadAttrs; use reth_provider::providers::BlockchainProvider; use std::sync::Arc; use tokio::sync::Mutex; @@ -53,21 +53,19 @@ pub async fn advance_chain( } /// Helper function to create a new eth payload attributes -pub fn optimism_payload_attributes(timestamp: u64) -> OpPayloadBuilderAttributes { - let attributes = PayloadAttributes { - timestamp, - prev_randao: B256::ZERO, - suggested_fee_recipient: Address::ZERO, - withdrawals: Some(vec![]), - parent_beacon_block_root: Some(B256::ZERO), - }; - - OpPayloadBuilderAttributes { - payload_attributes: EthPayloadBuilderAttributes::new(B256::ZERO, attributes), - transactions: vec![], - no_tx_pool: false, +pub const fn optimism_payload_attributes(timestamp: u64) -> OpPayloadAttrs { + OpPayloadAttrs(OpPayloadAttributes { + payload_attributes: alloy_rpc_types_engine::PayloadAttributes { + timestamp, + prev_randao: B256::ZERO, + suggested_fee_recipient: Address::ZERO, + withdrawals: Some(vec![]), + parent_beacon_block_root: Some(B256::ZERO), + }, + transactions: None, + no_tx_pool: None, gas_limit: Some(30_000_000), eip_1559_params: None, min_base_fee: None, - } + }) } diff --git a/rust/op-reth/crates/node/tests/e2e-testsuite/testsuite.rs b/rust/op-reth/crates/node/tests/e2e-testsuite/testsuite.rs index a95034778cd9b..9837d9afc1474 100644 --- a/rust/op-reth/crates/node/tests/e2e-testsuite/testsuite.rs +++ b/rust/op-reth/crates/node/tests/e2e-testsuite/testsuite.rs @@ -7,7 +7,7 @@ use reth_e2e_test_utils::testsuite::{ setup::{NetworkSetup, Setup}, }; use reth_optimism_chainspec::{OP_MAINNET, OpChainSpecBuilder}; -use reth_optimism_node::{OpEngineTypes, OpNode}; +use reth_optimism_node::{OpEngineTypes, OpNode, payload::OpPayloadAttrs}; use std::sync::Arc; #[tokio::test] @@ -30,7 +30,7 @@ async fn test_testsuite_op_assert_mine_block() -> Result<()> { vec![], Some(B256::ZERO), // TODO: refactor once we have actions to generate payload attributes. - OpPayloadAttributes { + OpPayloadAttrs(OpPayloadAttributes { payload_attributes: alloy_rpc_types_engine::PayloadAttributes { timestamp: std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) @@ -46,7 +46,7 @@ async fn test_testsuite_op_assert_mine_block() -> Result<()> { eip_1559_params: None, min_base_fee: None, gas_limit: Some(30_000_000), - }, + }), )); test.run::().await?; @@ -75,7 +75,7 @@ async fn test_testsuite_op_assert_mine_block_isthmus_activated() -> Result<()> { vec![], Some(B256::ZERO), // TODO: refactor once we have actions to generate payload attributes. - OpPayloadAttributes { + OpPayloadAttrs(OpPayloadAttributes { payload_attributes: alloy_rpc_types_engine::PayloadAttributes { timestamp: std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) @@ -91,7 +91,7 @@ async fn test_testsuite_op_assert_mine_block_isthmus_activated() -> Result<()> { eip_1559_params: Some(B64::ZERO), min_base_fee: None, gas_limit: Some(30_000_000), - }, + }), )); test.run::().await?; diff --git a/rust/op-reth/crates/node/tests/it/custom_genesis.rs b/rust/op-reth/crates/node/tests/it/custom_genesis.rs index 7aa9ee695a0eb..ba326b82355b4 100644 --- a/rust/op-reth/crates/node/tests/it/custom_genesis.rs +++ b/rust/op-reth/crates/node/tests/it/custom_genesis.rs @@ -1,13 +1,10 @@ //! Tests for custom genesis block number support. -use alloy_consensus::BlockHeader; use alloy_genesis::Genesis; use alloy_primitives::B256; use reth_chainspec::EthChainSpec; use reth_db::test_utils::create_test_rw_db_with_path; -use reth_e2e_test_utils::{ - node::NodeTestContext, transaction::TransactionTestContext, wallet::Wallet, -}; +use reth_e2e_test_utils::node::NodeTestContext; use reth_node_builder::{EngineNodeLauncher, Node, NodeBuilder, NodeConfig}; use reth_node_core::args::DatadirArgs; use reth_optimism_chainspec::OpChainSpecBuilder; @@ -15,7 +12,6 @@ use reth_optimism_node::{OpNode, utils::optimism_payload_attributes}; use reth_provider::{HeaderProvider, StageCheckpointReader, providers::BlockchainProvider}; use reth_stages_types::StageId; use std::sync::Arc; -use tokio::sync::Mutex; /// Tests that an OP node can initialize with a custom genesis block number. #[tokio::test] @@ -33,8 +29,6 @@ async fn test_op_node_custom_genesis_number() { let chain_spec = Arc::new(OpChainSpecBuilder::base_mainnet().genesis(genesis).ecotone_activated().build()); - let wallet = Arc::new(Mutex::new(Wallet::default().with_chain_id(chain_spec.chain().into()))); - // Configure and launch the node let config = NodeConfig::new(chain_spec.clone()).with_datadir_args(DatadirArgs { datadir: reth_db::test_utils::tempdir_path().into(), @@ -64,8 +58,7 @@ async fn test_op_node_custom_genesis_number() { .await .expect("Failed to launch node"); - let mut node = - NodeTestContext::new(node_handle.node, optimism_payload_attributes).await.unwrap(); + let node = NodeTestContext::new(node_handle.node, optimism_payload_attributes).await.unwrap(); // Verify stage checkpoints are initialized to genesis block number (1000) for stage in StageId::ALL { @@ -87,36 +80,4 @@ async fn test_op_node_custom_genesis_number() { let header = node.inner.provider.header_by_number(block_num).unwrap(); assert!(header.is_none(), "Block {block_num} before genesis should not exist"); } - - // Advance the chain with a single block - let _ = wallet; // wallet available for future use - let block_payloads = node - .advance(1, |_| { - Box::pin({ - let value = wallet.clone(); - async move { - let mut wallet = value.lock().await; - let tx_fut = TransactionTestContext::optimism_l1_block_info_tx( - wallet.chain_id, - wallet.inner.clone(), - wallet.inner_nonce, - ); - wallet.inner_nonce += 1; - - tx_fut.await - } - }) - }) - .await - .unwrap(); - - assert_eq!(block_payloads.len(), 1); - let block = block_payloads.first().unwrap().block(); - - // Verify the new block is at 1001 (genesis 1000 + 1) - assert_eq!( - block.number(), - 1001, - "Block number should be 1001 after advancing from genesis 100" - ); } diff --git a/rust/op-reth/crates/payload/Cargo.toml b/rust/op-reth/crates/payload/Cargo.toml index 93a2553744bb5..90ce9e331e451 100644 --- a/rust/op-reth/crates/payload/Cargo.toml +++ b/rust/op-reth/crates/payload/Cargo.toml @@ -20,17 +20,16 @@ reth-transaction-pool.workspace = true reth-storage-api.workspace = true reth-evm.workspace = true reth-execution-types.workspace = true -reth-payload-builder.workspace = true reth-payload-builder-primitives.workspace = true reth-payload-util.workspace = true -reth-payload-primitives = { workspace = true, features = ["op"] } +reth-payload-primitives.workspace = true reth-basic-payload-builder.workspace = true reth-payload-validator.workspace = true # op-reth reth-optimism-evm.workspace = true reth-optimism-forks.workspace = true -reth-optimism-primitives.workspace = true +reth-optimism-primitives = { workspace = true, features = ["reth-codec"] } reth-optimism-txpool.workspace = true # ethereum diff --git a/rust/op-reth/crates/payload/src/builder.rs b/rust/op-reth/crates/payload/src/builder.rs index 2477a8bf9a904..3a49c1cc7d10f 100644 --- a/rust/op-reth/crates/payload/src/builder.rs +++ b/rust/op-reth/crates/payload/src/builder.rs @@ -27,7 +27,7 @@ use reth_optimism_txpool::{ interop::{MaybeInteropTransaction, is_valid_interop}, }; use reth_payload_builder_primitives::PayloadBuilderError; -use reth_payload_primitives::{BuildNextEnv, BuiltPayloadExecutedBlock, PayloadBuilderAttributes}; +use reth_payload_primitives::{BuildNextEnv, BuiltPayloadExecutedBlock}; use reth_payload_util::{BestPayloadTransactions, NoopPayloadTransactions, PayloadTransactions}; use reth_primitives_traits::{ HeaderTy, NodePrimitives, SealedHeader, SealedHeaderFor, SignedTransaction, TxTy, @@ -179,7 +179,7 @@ where Txs: PayloadTransactions + OpPooledTx>, { - let BuildArguments { mut cached_reads, config, cancel, best_payload } = args; + let BuildArguments { mut cached_reads, config, cancel, best_payload, .. } = args; let ctx = OpPayloadBuilderCtx { evm_config: self.evm_config.clone(), @@ -209,14 +209,11 @@ where &self, parent: SealedHeader, attributes: Attrs::RpcPayloadAttributes, - ) -> Result - where - Attrs: PayloadBuilderAttributes, - { - let attributes = - Attrs::try_new(parent.hash(), attributes, 3).map_err(PayloadBuilderError::other)?; + ) -> Result { + let attributes = Attrs::try_new(parent.hash(), attributes, 3)?; + let payload_id = attributes.payload_id(); - let config = PayloadConfig { parent_header: Arc::new(parent), attributes }; + let config = PayloadConfig { parent_header: Arc::new(parent), attributes, payload_id }; let ctx = OpPayloadBuilderCtx { evm_config: self.evm_config.clone(), builder_config: self.config.clone(), @@ -234,20 +231,26 @@ where } /// Implementation of the [`PayloadBuilder`] trait for [`OpPayloadBuilder`]. -impl PayloadBuilder - for OpPayloadBuilder +/// +/// This impl uses [`crate::payload::OpPayloadAttrs`] (the RPC payload attributes wrapper) as the +/// `Attributes` type, converting to [`OpPayloadBuilderAttributes`] internally for building. +impl PayloadBuilder + for OpPayloadBuilder> where N: OpPayloadPrimitives, Client: StateProviderFactory + ChainSpecProvider + Clone, Pool: TransactionPool>, Evm: ConfigureEvm< Primitives = N, - NextBlockEnvCtx: BuildNextEnv, + NextBlockEnvCtx: BuildNextEnv< + OpPayloadBuilderAttributes, + N::BlockHeader, + Client::ChainSpec, + >, >, Txs: OpPayloadTransactions, - Attrs: OpAttributes, { - type Attributes = Attrs; + type Attributes = crate::payload::OpPayloadAttrs; type BuiltPayload = OpBuiltPayload; fn try_build( @@ -255,7 +258,10 @@ where args: BuildArguments, ) -> Result, PayloadBuilderError> { let pool = self.pool.clone(); - self.build_payload(args, |attrs| self.best_transactions.best_transactions(pool, attrs)) + let converted_args = convert_build_args::(args)?; + self.build_payload(converted_args, |attrs| { + self.best_transactions.best_transactions(pool, attrs) + }) } fn on_missing_payload( @@ -276,15 +282,46 @@ where let args = BuildArguments { config, cached_reads: Default::default(), + execution_cache: None, cancel: Default::default(), best_payload: None, }; - self.build_payload(args, |_| NoopPayloadTransactions::::default())? - .into_payload() - .ok_or_else(|| PayloadBuilderError::MissingPayload) + let converted_args = convert_build_args::(args)?; + self.build_payload(converted_args, |_| { + NoopPayloadTransactions::::default() + })? + .into_payload() + .ok_or_else(|| PayloadBuilderError::MissingPayload) } } +/// Converts `BuildArguments` from [`OpPayloadAttrs`](crate::payload::OpPayloadAttrs) to +/// [`OpPayloadBuilderAttributes`], decoding the RPC transaction bytes into typed transactions. +fn convert_build_args( + args: BuildArguments>, +) -> Result< + BuildArguments, OpBuiltPayload>, + PayloadBuilderError, +> { + let BuildArguments { config, cached_reads, execution_cache, cancel, best_payload } = args; + let parent_hash = config.parent_header.hash(); + let payload_id = config.payload_id; + let builder_attrs = + OpPayloadBuilderAttributes::from_rpc_attrs(parent_hash, payload_id, config.attributes.0) + .map_err(PayloadBuilderError::other)?; + Ok(BuildArguments { + config: PayloadConfig { + parent_header: config.parent_header, + attributes: builder_attrs, + payload_id, + }, + cached_reads, + execution_cache, + cancel, + best_payload, + }) +} + /// The type that builds the payload. /// /// Payload building for optimism is composed of several steps. @@ -599,7 +636,7 @@ where ) -> Result< impl BlockBuilder< Primitives = Evm::Primitives, - Executor: BlockExecutorFor<'a, Evm::BlockExecutorFactory, DB>, + Executor: BlockExecutorFor<'a, Evm::BlockExecutorFactory, &'a mut State>, > + 'a, PayloadBuilderError, > { diff --git a/rust/op-reth/crates/payload/src/lib.rs b/rust/op-reth/crates/payload/src/lib.rs index 6ccd90ec3732b..41834e63994f0 100644 --- a/rust/op-reth/crates/payload/src/lib.rs +++ b/rust/op-reth/crates/payload/src/lib.rs @@ -17,7 +17,8 @@ pub mod error; pub mod payload; use op_alloy_rpc_types_engine::OpExecutionData; pub use payload::{ - OpBuiltPayload, OpPayloadAttributes, OpPayloadBuilderAttributes, payload_id_optimism, + OpBuiltPayload, OpExecData, OpPayloadAttributes, OpPayloadAttrs, OpPayloadBuilderAttributes, + payload_id_optimism, }; mod traits; use reth_optimism_primitives::OpPrimitives; @@ -29,6 +30,39 @@ pub use validator::OpExecutionPayloadValidator; pub mod config; +// Implement `ConfigureEngineEvm` by delegating to the `OpExecutionData` implementation. +// This must live here because `OpExecData` is defined in this crate (orphan rules). +impl reth_evm::ConfigureEngineEvm + for reth_optimism_evm::OpEvmConfig +where + N: NodePrimitives, + R: Send + Sync + Unpin + Clone + 'static, + ChainSpec: Send + Sync + Unpin + Clone + 'static, + Self: reth_evm::ConfigureEngineEvm, +{ + fn evm_env_for_payload( + &self, + payload: &OpExecData, + ) -> Result, ::Error> { + reth_evm::ConfigureEngineEvm::::evm_env_for_payload(self, &payload.0) + } + + fn context_for_payload<'a>( + &self, + payload: &'a OpExecData, + ) -> Result, ::Error> { + reth_evm::ConfigureEngineEvm::::context_for_payload(self, &payload.0) + } + + fn tx_iterator_for_payload( + &self, + payload: &OpExecData, + ) -> Result, ::Error> + { + reth_evm::ConfigureEngineEvm::::tx_iterator_for_payload(self, &payload.0) + } +} + /// ZST that aggregates Optimism [`PayloadTypes`]. #[derive(Debug, Default, Clone, serde::Deserialize, serde::Serialize)] #[non_exhaustive] @@ -38,19 +72,18 @@ impl PayloadTypes for OpPayloadTypes where OpBuiltPayload: BuiltPayload, { - type ExecutionData = OpExecutionData; + type ExecutionData = crate::payload::OpExecData; type BuiltPayload = OpBuiltPayload; - type PayloadAttributes = OpPayloadAttributes; - type PayloadBuilderAttributes = OpPayloadBuilderAttributes; + type PayloadAttributes = crate::payload::OpPayloadAttrs; fn block_to_payload( block: SealedBlock< <::Primitives as NodePrimitives>::Block, >, ) -> Self::ExecutionData { - OpExecutionData::from_block_unchecked( + crate::payload::OpExecData::from(OpExecutionData::from_block_unchecked( block.hash(), &block.into_block().into_ethereum_block(), - ) + )) } } diff --git a/rust/op-reth/crates/payload/src/payload.rs b/rust/op-reth/crates/payload/src/payload.rs index 516a598ab1e28..8336ea46aa894 100644 --- a/rust/op-reth/crates/payload/src/payload.rs +++ b/rust/op-reth/crates/payload/src/payload.rs @@ -19,23 +19,142 @@ use op_alloy_rpc_types_engine::{ use reth_chainspec::EthChainSpec; use reth_optimism_evm::OpNextBlockEnvAttributes; use reth_optimism_forks::OpHardforks; -use reth_payload_builder::{EthPayloadBuilderAttributes, PayloadBuilderError}; -use reth_payload_primitives::{ - BuildNextEnv, BuiltPayload, BuiltPayloadExecutedBlock, PayloadBuilderAttributes, -}; +use reth_payload_builder_primitives::PayloadBuilderError; +use reth_payload_primitives::{BuildNextEnv, BuiltPayload, BuiltPayloadExecutedBlock}; use reth_primitives_traits::{ NodePrimitives, SealedBlock, SealedHeader, SignedTransaction, WithEncoded, }; /// Re-export for use in downstream arguments. -pub use op_alloy_rpc_types_engine::OpPayloadAttributes; +pub use op_alloy_rpc_types_engine::{OpExecutionData, OpPayloadAttributes}; use reth_optimism_primitives::OpPrimitives; +use reth_payload_primitives::EngineApiMessageVersion; + +/// Newtype wrapper around [`OpExecutionData`] to implement +/// [`reth_payload_primitives::ExecutionPayload`]. +#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] +#[serde(transparent)] +pub struct OpExecData(pub OpExecutionData); + +impl core::ops::Deref for OpExecData { + type Target = OpExecutionData; + fn deref(&self) -> &Self::Target { + &self.0 + } +} + +impl From for OpExecData { + fn from(data: OpExecutionData) -> Self { + Self(data) + } +} + +impl reth_payload_primitives::ExecutionPayload for OpExecData { + fn parent_hash(&self) -> B256 { + self.0.payload.parent_hash() + } + + fn block_hash(&self) -> B256 { + self.0.payload.block_hash() + } + + fn block_number(&self) -> u64 { + self.0.payload.block_number() + } + + fn withdrawals(&self) -> Option<&Vec> { + self.0.withdrawals() + } + + fn block_access_list(&self) -> Option<&Bytes> { + None + } + + fn parent_beacon_block_root(&self) -> Option { + self.0.sidecar.parent_beacon_block_root() + } + + fn timestamp(&self) -> u64 { + self.0.payload.timestamp() + } + + fn gas_used(&self) -> u64 { + self.0.payload.as_v1().gas_used + } + + fn transaction_count(&self) -> usize { + self.0.payload.as_v1().transactions.len() + } +} + +/// Newtype wrapper around [`OpPayloadAttributes`] to implement +/// [`reth_payload_primitives::PayloadAttributes`]. +#[derive(Debug, Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)] +#[serde(transparent)] +pub struct OpPayloadAttrs(pub OpPayloadAttributes); + +impl core::ops::Deref for OpPayloadAttrs { + type Target = OpPayloadAttributes; + fn deref(&self) -> &Self::Target { + &self.0 + } +} + +impl From for OpPayloadAttrs { + fn from(attrs: OpPayloadAttributes) -> Self { + Self(attrs) + } +} + +impl From for OpPayloadAttrs { + fn from(attrs: alloy_rpc_types_engine::PayloadAttributes) -> Self { + Self(OpPayloadAttributes { + payload_attributes: attrs, + transactions: None, + no_tx_pool: None, + gas_limit: None, + eip_1559_params: None, + min_base_fee: None, + }) + } +} + +impl reth_payload_primitives::PayloadAttributes for OpPayloadAttrs { + fn payload_id(&self, parent_hash: &B256) -> PayloadId { + // Use the default engine API message version for computing the payload id. + payload_id_optimism(parent_hash, &self.0, EngineApiMessageVersion::default() as u8) + } + + fn timestamp(&self) -> u64 { + self.0.payload_attributes.timestamp + } + + fn withdrawals(&self) -> Option<&Vec> { + self.0.payload_attributes.withdrawals.as_ref() + } + + fn parent_beacon_block_root(&self) -> Option { + self.0.payload_attributes.parent_beacon_block_root + } +} /// Optimism Payload Builder Attributes #[derive(Debug, Clone, PartialEq, Eq)] pub struct OpPayloadBuilderAttributes { - /// Inner ethereum payload builder attributes - pub payload_attributes: EthPayloadBuilderAttributes, + /// Id of the payload + pub id: PayloadId, + /// Parent block to build the payload on top + pub parent: B256, + /// Unix timestamp for the generated payload + pub timestamp: u64, + /// Address of the recipient for collecting transaction fee + pub suggested_fee_recipient: Address, + /// Randomness value for the generated payload + pub prev_randao: B256, + /// Withdrawals for the generated payload + pub withdrawals: Withdrawals, + /// Root of the parent beacon block + pub parent_beacon_block_root: Option, /// `NoTxPool` option for the generated payload pub no_tx_pool: bool, /// Decoded transactions and the original EIP-2718 encoded bytes as received in the payload @@ -52,7 +171,13 @@ pub struct OpPayloadBuilderAttributes { impl Default for OpPayloadBuilderAttributes { fn default() -> Self { Self { - payload_attributes: Default::default(), + id: Default::default(), + parent: Default::default(), + timestamp: Default::default(), + suggested_fee_recipient: Default::default(), + prev_randao: Default::default(), + withdrawals: Default::default(), + parent_beacon_block_root: Default::default(), no_tx_pool: Default::default(), gas_limit: Default::default(), eip_1559_params: Default::default(), @@ -62,6 +187,66 @@ impl Default for OpPayloadBuilderAttributes { } } +// Manual serde implementations to satisfy the PayloadAttributes trait bound. +// The transactions field is serialized as the encoded bytes form. +impl serde::Serialize for OpPayloadBuilderAttributes { + fn serialize(&self, serializer: S) -> Result { + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("OpPayloadBuilderAttributes", 11)?; + s.serialize_field("id", &self.id)?; + s.serialize_field("parent", &self.parent)?; + s.serialize_field("timestamp", &self.timestamp)?; + s.serialize_field("suggestedFeeRecipient", &self.suggested_fee_recipient)?; + s.serialize_field("prevRandao", &self.prev_randao)?; + s.serialize_field("withdrawals", &self.withdrawals)?; + s.serialize_field("parentBeaconBlockRoot", &self.parent_beacon_block_root)?; + s.serialize_field("noTxPool", &self.no_tx_pool)?; + // Serialize transactions as encoded bytes + let tx_bytes: Vec<&alloy_primitives::Bytes> = + self.transactions.iter().map(|t| t.encoded_bytes()).collect(); + s.serialize_field("transactions", &tx_bytes)?; + s.serialize_field("gasLimit", &self.gas_limit)?; + s.serialize_field("eip1559Params", &self.eip_1559_params)?; + s.serialize_field("minBaseFee", &self.min_base_fee)?; + s.end() + } +} + +impl<'de, T: Decodable2718 + Send + Sync + Debug + Unpin + 'static> serde::Deserialize<'de> + for OpPayloadBuilderAttributes +{ + fn deserialize>(_deserializer: D) -> Result { + // This type is never deserialized in practice; the PayloadAttributes trait bound + // requires DeserializeOwned but the engine API uses OpPayloadAttributes for + // deserialization, not OpPayloadBuilderAttributes. + Err(serde::de::Error::custom( + "OpPayloadBuilderAttributes cannot be deserialized directly; \ + use OpPayloadAttributes instead", + )) + } +} + +impl + reth_payload_primitives::PayloadAttributes for OpPayloadBuilderAttributes +{ + fn payload_id(&self, _parent_hash: &B256) -> PayloadId { + // The payload ID was already computed during construction via try_new. + self.id + } + + fn timestamp(&self) -> u64 { + self.timestamp + } + + fn withdrawals(&self) -> Option<&Vec> { + Some(&self.withdrawals.0) + } + + fn parent_beacon_block_root(&self) -> Option { + self.parent_beacon_block_root + } +} + impl OpPayloadBuilderAttributes { /// Extracts the extra data parameters post-Holocene hardfork. /// In Holocene, those parameters are the EIP-1559 base fee parameters. @@ -87,20 +272,15 @@ impl OpPayloadBuilderAttributes { } } -impl PayloadBuilderAttributes - for OpPayloadBuilderAttributes -{ - type RpcPayloadAttributes = OpPayloadAttributes; - type Error = alloy_rlp::Error; - +impl OpPayloadBuilderAttributes { /// Creates a new payload builder for the given parent block and the attributes. /// /// Derives the unique [`PayloadId`] for the given parent and attributes - fn try_new( + pub fn try_new( parent: B256, attributes: OpPayloadAttributes, version: u8, - ) -> Result { + ) -> Result { let id = payload_id_optimism(&parent, &attributes, version); let transactions = attributes @@ -112,7 +292,7 @@ impl PayloadBuilderAtt }) .collect::>()?; - let payload_attributes = EthPayloadBuilderAttributes { + Ok(Self { id, parent, timestamp: attributes.payload_attributes.timestamp, @@ -120,10 +300,6 @@ impl PayloadBuilderAtt prev_randao: attributes.payload_attributes.prev_randao, withdrawals: attributes.payload_attributes.withdrawals.unwrap_or_default().into(), parent_beacon_block_root: attributes.payload_attributes.parent_beacon_block_root, - }; - - Ok(Self { - payload_attributes, no_tx_pool: attributes.no_tx_pool.unwrap_or_default(), transactions, gas_limit: attributes.gas_limit, @@ -132,40 +308,73 @@ impl PayloadBuilderAtt }) } - fn payload_id(&self) -> PayloadId { - self.payload_attributes.id + /// Creates a new payload builder from RPC attributes with a pre-computed payload ID. + /// + /// This is used when the payload ID has already been computed (e.g., by the payload service) + /// and we just need to decode the transaction bytes. + pub fn from_rpc_attrs( + parent: B256, + id: PayloadId, + attributes: OpPayloadAttributes, + ) -> Result { + let transactions = attributes + .transactions + .unwrap_or_default() + .into_iter() + .map(|data| { + Decodable2718::decode_2718_exact(data.as_ref()).map(|tx| WithEncoded::new(data, tx)) + }) + .collect::>()?; + + Ok(Self { + id, + parent, + timestamp: attributes.payload_attributes.timestamp, + suggested_fee_recipient: attributes.payload_attributes.suggested_fee_recipient, + prev_randao: attributes.payload_attributes.prev_randao, + withdrawals: attributes.payload_attributes.withdrawals.unwrap_or_default().into(), + parent_beacon_block_root: attributes.payload_attributes.parent_beacon_block_root, + no_tx_pool: attributes.no_tx_pool.unwrap_or_default(), + transactions, + gas_limit: attributes.gas_limit, + eip_1559_params: attributes.eip_1559_params, + min_base_fee: attributes.min_base_fee, + }) } - fn parent(&self) -> B256 { - self.payload_attributes.parent + /// Returns the identifier of the payload. + pub const fn payload_id(&self) -> PayloadId { + self.id } - fn timestamp(&self) -> u64 { - self.payload_attributes.timestamp + /// Returns the parent block hash. + pub const fn parent(&self) -> B256 { + self.parent } - fn parent_beacon_block_root(&self) -> Option { - self.payload_attributes.parent_beacon_block_root + /// Returns the timestamp for the payload. + pub const fn timestamp(&self) -> u64 { + self.timestamp } - fn suggested_fee_recipient(&self) -> Address { - self.payload_attributes.suggested_fee_recipient + /// Returns the parent beacon block root. + pub const fn parent_beacon_block_root(&self) -> Option { + self.parent_beacon_block_root } - fn prev_randao(&self) -> B256 { - self.payload_attributes.prev_randao + /// Returns the suggested fee recipient. + pub const fn suggested_fee_recipient(&self) -> Address { + self.suggested_fee_recipient } - fn withdrawals(&self) -> &Withdrawals { - &self.payload_attributes.withdrawals + /// Returns the prev randao value. + pub const fn prev_randao(&self) -> B256 { + self.prev_randao } -} -impl From - for OpPayloadBuilderAttributes -{ - fn from(value: EthPayloadBuilderAttributes) -> Self { - Self { payload_attributes: value, ..Default::default() } + /// Returns the withdrawals. + pub const fn withdrawals(&self) -> &Withdrawals { + &self.withdrawals } } @@ -414,16 +623,16 @@ where parent: &SealedHeader, chain_spec: &ChainSpec, ) -> Result { - let extra_data = if chain_spec.is_jovian_active_at_timestamp(attributes.timestamp()) { + let extra_data = if chain_spec.is_jovian_active_at_timestamp(attributes.timestamp) { attributes .get_jovian_extra_data( - chain_spec.base_fee_params_at_timestamp(attributes.timestamp()), + chain_spec.base_fee_params_at_timestamp(attributes.timestamp), ) .map_err(PayloadBuilderError::other)? - } else if chain_spec.is_holocene_active_at_timestamp(attributes.timestamp()) { + } else if chain_spec.is_holocene_active_at_timestamp(attributes.timestamp) { attributes .get_holocene_extra_data( - chain_spec.base_fee_params_at_timestamp(attributes.timestamp()), + chain_spec.base_fee_params_at_timestamp(attributes.timestamp), ) .map_err(PayloadBuilderError::other)? } else { @@ -431,11 +640,11 @@ where }; Ok(Self { - timestamp: attributes.timestamp(), - suggested_fee_recipient: attributes.suggested_fee_recipient(), - prev_randao: attributes.prev_randao(), + timestamp: attributes.timestamp, + suggested_fee_recipient: attributes.suggested_fee_recipient, + prev_randao: attributes.prev_randao, gas_limit: attributes.gas_limit.unwrap_or_else(|| parent.gas_limit()), - parent_beacon_block_root: attributes.parent_beacon_block_root(), + parent_beacon_block_root: attributes.parent_beacon_block_root, extra_data, }) } diff --git a/rust/op-reth/crates/payload/src/traits.rs b/rust/op-reth/crates/payload/src/traits.rs index bd371ee1a0f1e..d4607f40738d4 100644 --- a/rust/op-reth/crates/payload/src/traits.rs +++ b/rust/op-reth/crates/payload/src/traits.rs @@ -1,9 +1,11 @@ use alloy_consensus::BlockBody; +use alloy_primitives::B256; +use alloy_rpc_types_engine::PayloadId; use reth_optimism_primitives::{DepositReceipt, transaction::OpTransaction}; -use reth_payload_primitives::PayloadBuilderAttributes; +use reth_payload_builder_primitives::PayloadBuilderError; use reth_primitives_traits::{FullBlockHeader, NodePrimitives, SignedTransaction, WithEncoded}; -use crate::OpPayloadBuilderAttributes; +use crate::{OpPayloadAttributes, OpPayloadBuilderAttributes}; /// Helper trait to encapsulate common bounds on [`NodePrimitives`] for OP payload builder. pub trait OpPayloadPrimitives: @@ -36,10 +38,28 @@ where } /// Attributes for the OP payload builder. -pub trait OpAttributes: PayloadBuilderAttributes { +pub trait OpAttributes: Send + Sync + core::fmt::Debug + 'static { /// Primitive transaction type. type Transaction: SignedTransaction; + /// The RPC payload attributes type used to create these builder attributes. + type RpcPayloadAttributes; + + /// Creates a new instance from the parent hash and RPC payload attributes. + fn try_new( + parent: B256, + attributes: Self::RpcPayloadAttributes, + version: u8, + ) -> Result + where + Self: Sized; + + /// Returns the identifier of the payload. + fn payload_id(&self) -> PayloadId; + + /// Returns the timestamp for the payload. + fn timestamp(&self) -> u64; + /// Whether to use the transaction pool for the payload. fn no_tx_pool(&self) -> bool; @@ -49,6 +69,23 @@ pub trait OpAttributes: PayloadBuilderAttributes { impl OpAttributes for OpPayloadBuilderAttributes { type Transaction = T; + type RpcPayloadAttributes = OpPayloadAttributes; + + fn try_new( + parent: B256, + attributes: OpPayloadAttributes, + version: u8, + ) -> Result { + Self::try_new(parent, attributes, version).map_err(PayloadBuilderError::other) + } + + fn payload_id(&self) -> PayloadId { + self.id + } + + fn timestamp(&self) -> u64 { + self.timestamp + } fn no_tx_pool(&self) -> bool { self.no_tx_pool diff --git a/rust/op-reth/crates/primitives/Cargo.toml b/rust/op-reth/crates/primitives/Cargo.toml index 70b30300b312a..937aea3efa8f3 100644 --- a/rust/op-reth/crates/primitives/Cargo.toml +++ b/rust/op-reth/crates/primitives/Cargo.toml @@ -13,7 +13,7 @@ workspace = true [dependencies] # reth -reth-primitives-traits = { workspace = true, features = ["op"] } +reth-primitives-traits.workspace = true # ethereum alloy-primitives.workspace = true @@ -22,14 +22,15 @@ alloy-eips.workspace = true alloy-rlp.workspace = true # op -op-alloy-consensus.workspace = true +op-alloy-consensus = { workspace = true, features = ["reth-core", "k256"] } # codec serde = { workspace = true, optional = true } serde_with = { workspace = true, optional = true } [dev-dependencies] -reth-codecs = { workspace = true, features = ["test-utils", "op"] } +reth-codecs = { workspace = true, features = ["test-utils"] } +op-alloy-consensus = { workspace = true, features = ["reth-core", "k256", "reth-codec", "arbitrary"] } bytes.workspace = true modular-bitfield.workspace = true @@ -65,6 +66,7 @@ alloy-compat = ["op-alloy-consensus/alloy-compat"] reth-codec = [ "std", "reth-primitives-traits/reth-codec", + "op-alloy-consensus/reth-codec", ] serde = [ "dep:serde", @@ -83,7 +85,6 @@ serde-bincode-compat = [ "serde_with", "alloy-consensus/serde-bincode-compat", "op-alloy-consensus/serde-bincode-compat", - "reth-primitives-traits/serde-bincode-compat", "alloy-eips/serde-bincode-compat", ] arbitrary = [ diff --git a/rust/op-reth/crates/primitives/proptest-regressions/transaction/signed.txt b/rust/op-reth/crates/primitives/proptest-regressions/transaction/signed.txt new file mode 100644 index 0000000000000..9fe20bf64869b --- /dev/null +++ b/rust/op-reth/crates/primitives/proptest-regressions/transaction/signed.txt @@ -0,0 +1,10 @@ +# Seeds for failure cases proptest has generated in the past. It is +# automatically read and these particular cases re-run before any +# novel cases are generated. +# +# It is recommended to check this file in to source control so that +# everyone who runs the test benefits from these saved cases. +cc 1e1f607cadab3a3ccbb532e1aa8434294ea9fae166a6f23fd46fd25c30322da5 # shrinks to reth_tx = OpTransactionSigned { hash: OnceLock(), signature: Signature { y_parity: false, r: 106471856770281558005005724873588750714483996420137736184322322872290389979960, s: 50647371676078034330502943574362585807573080711107932534787947090493523672971 }, transaction: Legacy(TxLegacy { chain_id: None, nonce: 0, gas_price: 0, gas_limit: 0, to: Create, value: 0, input: 0x }) } +cc c74c99dc8990d720f17afea044dea4f935a814dd3f1fff700c12e3de4e8156e9 # shrinks to mut reth_tx = OpTransactionSigned { hash: OnceLock(), signature: Signature { y_parity: true, r: 42909146298719458345195613704256725096087244542640899691284984153212479764836, s: 46050109659513408037102271107243804745631167304234490630284200167139583421702 }, transaction: Legacy(TxLegacy { chain_id: None, nonce: 0, gas_price: 0, gas_limit: 0, to: Create, value: 0, input: 0x }) } +cc c3482100e534044ddb9ec9a5bf7baf73d571fec41b82461e82ac3c1ca22e67b7 # shrinks to mut reth_tx = OpTransactionSigned { hash: OnceLock(), signature: Signature { y_parity: false, r: 54313566201575632619767444984125205512617733660660181688042416935807909702997, s: 9308215225666314592945299827648591229662264605138390452879026347174215856942 }, transaction: Legacy(TxLegacy { chain_id: None, nonce: 0, gas_price: 0, gas_limit: 0, to: Create, value: 0, input: 0x }) } +cc ff72c2fa18ac367d2f95b35305c15388673d8904ccdd42c8b85373040560ecea # shrinks to reth_tx = OpTransactionSigned { hash: OnceLock(), signature: Signature { y_parity: true, r: 46891284497230339975903531644275880122924506018400858017888360742030637906150, s: 12416356077729583314190692793174233813458232175557839427163699419263873650086 }, transaction: Legacy(TxLegacy { chain_id: None, nonce: 0, gas_price: 0, gas_limit: 0, to: Create, value: 0, input: 0x }) } diff --git a/rust/op-reth/crates/primitives/src/receipt.rs b/rust/op-reth/crates/primitives/src/receipt.rs index 1a7baed9c0fbe..4e7714d0a74cc 100644 --- a/rust/op-reth/crates/primitives/src/receipt.rs +++ b/rust/op-reth/crates/primitives/src/receipt.rs @@ -45,18 +45,15 @@ pub(super) mod serde_bincode_compat { /// Bincode-compatible [`super::OpReceipt`] serde implementation. /// /// Intended to use with the [`serde_with::serde_as`] macro in the following way: - /// ```rust + /// ```rust,ignore /// use reth_optimism_primitives::OpReceipt; - /// use reth_primitives_traits::serde_bincode_compat::SerdeBincodeCompat; - /// use serde::{Deserialize, Serialize, de::DeserializeOwned}; + /// use serde::{Deserialize, Serialize}; /// use serde_with::serde_as; /// /// #[serde_as] /// #[derive(Serialize, Deserialize)] /// struct Data { - /// #[serde_as( - /// as = "reth_primitives_traits::serde_bincode_compat::BincodeReprFor<'_, OpReceipt>" - /// )] + /// #[serde_as(as = "super::serde_bincode_compat::OpReceipt<'_>")] /// receipt: OpReceipt, /// } /// ``` diff --git a/rust/op-reth/crates/primitives/src/transaction/signed.rs b/rust/op-reth/crates/primitives/src/transaction/signed.rs index ddfb83612d1d5..820aaf179044d 100644 --- a/rust/op-reth/crates/primitives/src/transaction/signed.rs +++ b/rust/op-reth/crates/primitives/src/transaction/signed.rs @@ -154,15 +154,7 @@ impl IsTyped2718 for OpTransactionSigned { } } -impl SignedTransaction for OpTransactionSigned { - fn is_system_tx(&self) -> bool { - self.is_deposit() - } - - fn recalculate_hash(&self) -> B256 { - keccak256(self.encoded_2718()) - } -} +// SignedTransaction is now a blanket impl — no manual impl needed. macro_rules! impl_from_signed { ($($tx:ident),*) => { @@ -414,7 +406,7 @@ impl Hash for OpTransactionSigned { } } -#[cfg(feature = "reth-codec")] +#[cfg(any(test, feature = "reth-codec"))] impl reth_codecs::Compact for OpTransactionSigned { fn to_compact(&self, buf: &mut B) -> usize where diff --git a/rust/op-reth/crates/reth/Cargo.toml b/rust/op-reth/crates/reth/Cargo.toml index 19b44f3d67e83..1521ecb9673b1 100644 --- a/rust/op-reth/crates/reth/Cargo.toml +++ b/rust/op-reth/crates/reth/Cargo.toml @@ -12,13 +12,13 @@ workspace = true [dependencies] # reth -reth-primitives-traits = { workspace = true, features = ["op"] } +reth-primitives-traits.workspace = true reth-chainspec.workspace = true reth-network = { workspace = true, optional = true } reth-network-api = { workspace = true, optional = true } reth-eth-wire = { workspace = true, optional = true } reth-provider = { workspace = true, optional = true } -reth-db = { workspace = true, optional = true, features = ["mdbx", "op"] } +reth-db = { workspace = true, optional = true, features = ["mdbx"] } reth-codecs = { workspace = true, optional = true } reth-storage-api = { workspace = true, optional = true } reth-node-api = { workspace = true, optional = true } @@ -64,7 +64,8 @@ std = [ "reth-storage-api?/std", "reth-evm?/std", "reth-revm?/std", - "alloy-primitives/std" + "alloy-primitives/std", + "reth-codecs?/std", ] arbitrary = [ "std", @@ -139,6 +140,7 @@ jemalloc = [ "reth-cli-util?/jemalloc", "reth-node-core?/jemalloc", "reth-optimism-cli?/jemalloc", + "reth-provider?/jemalloc", ] js-tracer = [ "rpc", @@ -156,7 +158,7 @@ portable = [ "reth-optimism-evm?/portable", "reth-revm?/portable", ] -provider = ["storage-api", "tasks", "dep:reth-provider", "dep:reth-db", "dep:reth-codecs"] +provider = ["storage-api", "tasks", "dep:reth-provider", "dep:reth-db", "dep:reth-codecs", "reth-optimism-primitives/reth-codec"] pool = ["dep:reth-transaction-pool"] storage-api = ["dep:reth-storage-api"] trie = ["dep:reth-trie", "alloy-primitives/rayon"] diff --git a/rust/op-reth/crates/rpc/Cargo.toml b/rust/op-reth/crates/rpc/Cargo.toml index 6c7d5cc398b06..d75a1a98b7f9f 100644 --- a/rust/op-reth/crates/rpc/Cargo.toml +++ b/rust/op-reth/crates/rpc/Cargo.toml @@ -15,7 +15,7 @@ workspace = true # reth reth-basic-payload-builder.workspace = true reth-evm.workspace = true -reth-primitives-traits = { workspace = true, features = ["op"] } +reth-primitives-traits.workspace = true reth-storage-api.workspace = true reth-rpc-eth-api = { workspace = true, features = ["op"] } reth-rpc-eth-types.workspace = true diff --git a/rust/op-reth/crates/rpc/src/debug.rs b/rust/op-reth/crates/rpc/src/debug.rs index c46d87b67c6ec..8cb6a3d4dc761 100644 --- a/rust/op-reth/crates/rpc/src/debug.rs +++ b/rust/op-reth/crates/rpc/src/debug.rs @@ -33,7 +33,7 @@ use reth_revm::{State, database::StateProviderDatabase, witness::ExecutionWitnes use reth_rpc_api::eth::helpers::FullEthApi; use reth_rpc_eth_types::EthApiError; use reth_rpc_server_types::{ToRpcResult, result::internal_rpc_err}; -use reth_tasks::TaskSpawner; +use reth_tasks::Runtime; use serde::{Deserialize, Serialize}; use std::{marker::PhantomData, sync::Arc}; use tokio::sync::{Semaphore, oneshot}; @@ -86,7 +86,7 @@ where provider: Provider, eth_api: Eth, preimage_store: OpProofsStorage, - task_spawner: Box, + task_spawner: Runtime, evm_config: EvmConfig, ) -> Self { Self { @@ -109,7 +109,7 @@ pub struct DebugApiExtInner, state_provider_factory: OpStateProviderFactory, evm_config: EvmConfig, - task_spawner: Box, + task_spawner: Runtime, semaphore: Semaphore, _attrs: PhantomData, metrics: DebugApiExtMetrics, @@ -126,7 +126,7 @@ where provider: Provider, eth_api: Eth, storage: OpProofsStorage

, - task_spawner: Box, + task_spawner: Runtime, evm_config: EvmConfig, ) -> Self { Self { @@ -170,7 +170,7 @@ where Eth: FullEthApi + Send + Sync + 'static, ErrorObject<'static>: From, P: OpProofsStore + Clone + 'static, - Attrs: OpAttributes>, + Attrs: OpAttributes, RpcPayloadAttributes: Send>, N: OpPayloadPrimitives, EvmConfig: ConfigureEvm< Primitives = N, @@ -201,14 +201,18 @@ where let (tx, rx) = oneshot::channel(); let this = self.inner.clone(); - self.inner.task_spawner.spawn_blocking_task(Box::pin(async move { + self.inner.task_spawner.spawn_blocking_task(async move { let result = async { let parent_hash = parent_header.hash(); let attributes = Attrs::try_new(parent_hash, attributes, 3) .map_err(PayloadBuilderError::other)?; - let config = - PayloadConfig { parent_header: Arc::new(parent_header), attributes }; + let payload_id = attributes.payload_id(); + let config = PayloadConfig { + parent_header: Arc::new(parent_header), + attributes, + payload_id, + }; let ctx = OpPayloadBuilderCtx { evm_config: this.evm_config.clone(), chain_spec: this.provider.chain_spec(), @@ -237,7 +241,7 @@ where }; let _ = tx.send(result.await); - })); + }); rx.await .map_err(|err| internal_rpc_err(err.to_string()))? diff --git a/rust/op-reth/crates/rpc/src/engine.rs b/rust/op-reth/crates/rpc/src/engine.rs index f9e67fdfd91b2..f3b86e498c9af 100644 --- a/rust/op-reth/crates/rpc/src/engine.rs +++ b/rust/op-reth/crates/rpc/src/engine.rs @@ -10,11 +10,11 @@ use derive_more::Constructor; use jsonrpsee::proc_macros::rpc; use jsonrpsee_core::{RpcResult, server::RpcModule}; use op_alloy_rpc_types_engine::{ - OpExecutionData, OpExecutionPayloadV4, ProtocolVersion, ProtocolVersionFormatV0, - SuperchainSignal, + OpExecutionPayloadV4, ProtocolVersion, ProtocolVersionFormatV0, SuperchainSignal, }; use reth_chainspec::EthereumHardforks; use reth_node_api::{EngineApiValidator, EngineTypes}; +use reth_optimism_payload_builder::OpExecData; use reth_rpc_api::IntoEngineApiRpcModule; use reth_rpc_engine_api::EngineApi; use reth_storage_api::{BlockReader, HeaderProvider, StateProviderFactory}; @@ -267,14 +267,14 @@ impl OpEngineApiServer for OpEngineApi where Provider: HeaderProvider + BlockReader + StateProviderFactory + 'static, - EngineT: EngineTypes, + EngineT: EngineTypes, Pool: TransactionPool + 'static, Validator: EngineApiValidator, ChainSpec: EthereumHardforks + Send + Sync + 'static, { async fn new_payload_v2(&self, payload: ExecutionPayloadInputV2) -> RpcResult { trace!(target: "rpc::engine", "Serving engine_newPayloadV2"); - let payload = OpExecutionData::v2(payload); + let payload = OpExecData::from(op_alloy_rpc_types_engine::OpExecutionData::v2(payload)); Ok(self.inner.new_payload_v2_metered(payload).await?) } @@ -285,7 +285,11 @@ where parent_beacon_block_root: B256, ) -> RpcResult { trace!(target: "rpc::engine", "Serving engine_newPayloadV3"); - let payload = OpExecutionData::v3(payload, versioned_hashes, parent_beacon_block_root); + let payload = OpExecData::from(op_alloy_rpc_types_engine::OpExecutionData::v3( + payload, + versioned_hashes, + parent_beacon_block_root, + )); Ok(self.inner.new_payload_v3_metered(payload).await?) } @@ -298,12 +302,12 @@ where execution_requests: Requests, ) -> RpcResult { trace!(target: "rpc::engine", "Serving engine_newPayloadV4"); - let payload = OpExecutionData::v4( + let payload = OpExecData::from(op_alloy_rpc_types_engine::OpExecutionData::v4( payload, versioned_hashes, parent_beacon_block_root, execution_requests, - ); + )); Ok(self.inner.new_payload_v4_metered(payload).await?) } diff --git a/rust/op-reth/crates/rpc/src/eth/mod.rs b/rust/op-reth/crates/rpc/src/eth/mod.rs index d53b11d8bf0d9..9d3b91d8a5481 100644 --- a/rust/op-reth/crates/rpc/src/eth/mod.rs +++ b/rust/op-reth/crates/rpc/src/eth/mod.rs @@ -46,7 +46,7 @@ use reth_rpc_eth_types::{ }; use reth_storage_api::ProviderHeader; use reth_tasks::{ - TaskSpawner, + Runtime, pool::{BlockingTaskGuard, BlockingTaskPool}, }; use std::{ @@ -304,7 +304,7 @@ where Rpc: RpcConvert, { #[inline] - fn io_task_spawner(&self) -> impl TaskSpawner { + fn io_task_spawner(&self) -> &Runtime { self.inner.eth_api.task_spawner() } diff --git a/rust/op-reth/crates/rpc/src/eth/transaction.rs b/rust/op-reth/crates/rpc/src/eth/transaction.rs index 3af2d59bee427..01c51ba7bbed3 100644 --- a/rust/op-reth/crates/rpc/src/eth/transaction.rs +++ b/rust/op-reth/crates/rpc/src/eth/transaction.rs @@ -178,8 +178,8 @@ where return Ok(Some(receipt)); } } - let Some((tx, meta, receipt)) = tx_receipt else { return Ok(None) }; - self.build_transaction_receipt(tx, meta, receipt).await.map(Some) + let Some((tx, meta, receipt, all_receipts)) = tx_receipt else { return Ok(None) }; + self.build_transaction_receipt(tx, meta, receipt, all_receipts).await.map(Some) } } } diff --git a/rust/op-reth/crates/rpc/src/witness.rs b/rust/op-reth/crates/rpc/src/witness.rs index 0da4fe418b017..624828621f68c 100644 --- a/rust/op-reth/crates/rpc/src/witness.rs +++ b/rust/op-reth/crates/rpc/src/witness.rs @@ -16,7 +16,7 @@ use reth_storage_api::{ BlockReaderIdExt, NodePrimitivesProvider, StateProviderFactory, errors::{ProviderError, ProviderResult}, }; -use reth_tasks::TaskSpawner; +use reth_tasks::Runtime; use reth_transaction_pool::TransactionPool; use std::{fmt::Debug, sync::Arc}; use tokio::sync::{Semaphore, oneshot}; @@ -30,7 +30,7 @@ impl OpDebugWitnessApi, + task_spawner: Runtime, builder: OpPayloadBuilder, ) -> Self { let semaphore = Arc::new(Semaphore::new(3)); @@ -74,7 +74,7 @@ where Primitives = Provider::Primitives, NextBlockEnvCtx: BuildNextEnv, > + 'static, - Attrs: OpAttributes>, + Attrs: OpAttributes, RpcPayloadAttributes: Send>, { async fn execute_payload( &self, @@ -87,10 +87,10 @@ where let (tx, rx) = oneshot::channel(); let this = self.clone(); - self.inner.task_spawner.spawn_blocking_task(Box::pin(async move { + self.inner.task_spawner.spawn_blocking_task(async move { let res = this.inner.builder.payload_witness(parent_header, attributes); let _ = tx.send(res); - })); + }); rx.await .map_err(|err| internal_rpc_err(err.to_string()))? @@ -116,6 +116,6 @@ impl Debug struct OpDebugWitnessApiInner { provider: Provider, builder: OpPayloadBuilder, - task_spawner: Box, + task_spawner: Runtime, semaphore: Arc, } diff --git a/rust/op-reth/crates/trie/Cargo.toml b/rust/op-reth/crates/trie/Cargo.toml index 9d768751027e6..229463b39aff8 100644 --- a/rust/op-reth/crates/trie/Cargo.toml +++ b/rust/op-reth/crates/trie/Cargo.toml @@ -13,6 +13,7 @@ workspace = true [dependencies] # reth +reth-codecs.workspace = true reth-db = { workspace = true, features = ["mdbx"] } reth-evm.workspace = true reth-execution-errors.workspace = true @@ -80,13 +81,11 @@ serial_test.workspace = true [features] serde-bincode-compat = [ - "reth-primitives-traits/serde-bincode-compat", "reth-trie-common/serde-bincode-compat", "alloy-consensus/serde-bincode-compat", "alloy-eips/serde-bincode-compat", "reth-trie/serde-bincode-compat", "dep:reth-ethereum-primitives", - "reth-ethereum-primitives?/serde-bincode-compat", "reth-ethereum-primitives?/serde", ] metrics = [ diff --git a/rust/op-reth/crates/trie/src/db/models/block.rs b/rust/op-reth/crates/trie/src/db/models/block.rs index c2066dad1f6ca..d2aeff23e4806 100644 --- a/rust/op-reth/crates/trie/src/db/models/block.rs +++ b/rust/op-reth/crates/trie/src/db/models/block.rs @@ -2,6 +2,7 @@ use alloy_eips::BlockNumHash; use alloy_primitives::B256; use bytes::BufMut; use derive_more::{From, Into}; +use reth_codecs::DecompressError; use reth_db::{ DatabaseError, table::{Compress, Decompress}, @@ -25,12 +26,14 @@ impl Compress for BlockNumberHash { } impl Decompress for BlockNumberHash { - fn decompress(value: &[u8]) -> Result { + fn decompress(value: &[u8]) -> Result { if value.len() != 40 { - return Err(DatabaseError::Decode); + return Err(DecompressError::new(DatabaseError::Decode)); } - let number = u64::from_be_bytes(value[..8].try_into().map_err(|_| DatabaseError::Decode)?); + let number = u64::from_be_bytes( + value[..8].try_into().map_err(|_| DecompressError::new(DatabaseError::Decode))?, + ); let hash = B256::from_slice(&value[8..40]); Ok(Self(BlockNumHash { number, hash })) diff --git a/rust/op-reth/crates/trie/src/db/models/change_set.rs b/rust/op-reth/crates/trie/src/db/models/change_set.rs index dbfdc815e434e..248d06027941e 100644 --- a/rust/op-reth/crates/trie/src/db/models/change_set.rs +++ b/rust/op-reth/crates/trie/src/db/models/change_set.rs @@ -47,8 +47,8 @@ impl table::Compress for ChangeSet { } impl table::Decompress for ChangeSet { - fn decompress(value: &[u8]) -> Result { - Self::decode(value) + fn decompress(value: &[u8]) -> Result { + Self::decode(value).map_err(reth_codecs::DecompressError::new) } } diff --git a/rust/op-reth/crates/trie/src/db/models/storage.rs b/rust/op-reth/crates/trie/src/db/models/storage.rs index 922d252627a82..ad520c1e831b9 100644 --- a/rust/op-reth/crates/trie/src/db/models/storage.rs +++ b/rust/op-reth/crates/trie/src/db/models/storage.rs @@ -1,5 +1,6 @@ use alloy_primitives::{B256, U256}; use derive_more::{Constructor, From, Into}; +use reth_codecs::DecompressError; use reth_db::{ DatabaseError, table::{Compress, Decode, Decompress, Encode}, @@ -114,11 +115,12 @@ impl Compress for StorageValue { } impl Decompress for StorageValue { - fn decompress(value: &[u8]) -> Result { + fn decompress(value: &[u8]) -> Result { if value.len() != 32 { - return Err(DatabaseError::Decode); + return Err(DecompressError::new(DatabaseError::Decode)); } - let bytes: [u8; 32] = value.try_into().map_err(|_| DatabaseError::Decode)?; + let bytes: [u8; 32] = + value.try_into().map_err(|_| DecompressError::new(DatabaseError::Decode))?; Ok(Self(U256::from_be_bytes(bytes))) } } diff --git a/rust/op-reth/crates/trie/src/db/models/version.rs b/rust/op-reth/crates/trie/src/db/models/version.rs index 26f985c9674f6..90af12012fbbd 100644 --- a/rust/op-reth/crates/trie/src/db/models/version.rs +++ b/rust/op-reth/crates/trie/src/db/models/version.rs @@ -1,4 +1,5 @@ use bytes::{Buf, BufMut}; +use reth_codecs::DecompressError; use reth_db::{ DatabaseError, table::{Compress, Decompress}, @@ -45,7 +46,7 @@ impl Compress for MaybeDeleted { } impl Decompress for MaybeDeleted { - fn decompress(value: &[u8]) -> Result { + fn decompress(value: &[u8]) -> Result { if value.is_empty() { // Empty = deleted Ok(Self(None)) @@ -96,9 +97,9 @@ impl Compress for VersionedValue { } impl Decompress for VersionedValue { - fn decompress(value: &[u8]) -> Result { + fn decompress(value: &[u8]) -> Result { if value.len() < 8 { - return Err(DatabaseError::Decode); + return Err(DecompressError::new(DatabaseError::Decode)); } let mut buf: &[u8] = value; diff --git a/rust/op-reth/crates/trie/src/provider.rs b/rust/op-reth/crates/trie/src/provider.rs index ee2ce3881ce0e..fd52b3e71ca92 100644 --- a/rust/op-reth/crates/trie/src/provider.rs +++ b/rust/op-reth/crates/trie/src/provider.rs @@ -196,14 +196,6 @@ where { fn storage(&self, address: Address, storage_key: B256) -> ProviderResult> { let hashed_key = keccak256(storage_key); - self.storage_by_hashed_key(address, hashed_key) - } - - fn storage_by_hashed_key( - &self, - address: Address, - hashed_key: B256, - ) -> ProviderResult> { Ok(self .storage .storage_hashed_cursor(keccak256(address.0), self.block_number) diff --git a/rust/op-reth/crates/txpool/src/transaction.rs b/rust/op-reth/crates/txpool/src/transaction.rs index 1ed8356104706..8271e26a81f6f 100644 --- a/rust/op-reth/crates/txpool/src/transaction.rs +++ b/rust/op-reth/crates/txpool/src/transaction.rs @@ -134,6 +134,10 @@ where self.inner.transaction().clone() } + fn consensus_ref(&self) -> Recovered<&Self::Consensus> { + Recovered::new_unchecked(self.inner.transaction.inner(), self.inner.transaction.signer()) + } + fn into_consensus(self) -> Recovered { self.inner.transaction } diff --git a/rust/op-reth/examples/custom-node/Cargo.toml b/rust/op-reth/examples/custom-node/Cargo.toml index 13acd70ef3daa..a63b1e7581a88 100644 --- a/rust/op-reth/examples/custom-node/Cargo.toml +++ b/rust/op-reth/examples/custom-node/Cargo.toml @@ -19,6 +19,11 @@ reth-rpc-api.workspace = true reth-engine-primitives.workspace = true reth-rpc-engine-api.workspace = true reth-ethereum = { workspace = true, features = ["node-api", "network", "evm", "pool", "trie", "storage-api", "provider"] } +reth-node-api.workspace = true +reth-payload-primitives.workspace = true +reth-primitives-traits.workspace = true +reth-provider.workspace = true +reth-trie-common.workspace = true # revm revm.workspace = true @@ -68,5 +73,8 @@ arbitrary = [ "reth-db-api/arbitrary", "alloy-rpc-types-eth/arbitrary", "op-alloy-rpc-types/arbitrary", + "alloy-op-evm/arbitrary", + "reth-primitives-traits/arbitrary", + "reth-trie-common/arbitrary", ] default = [] diff --git a/rust/op-reth/examples/custom-node/src/chainspec.rs b/rust/op-reth/examples/custom-node/src/chainspec.rs index 4291b3549e4f4..b8c63f4e137f3 100644 --- a/rust/op-reth/examples/custom-node/src/chainspec.rs +++ b/rust/op-reth/examples/custom-node/src/chainspec.rs @@ -1,12 +1,9 @@ use crate::primitives::CustomHeader; use alloy_genesis::Genesis; -use reth_ethereum::{ - chainspec::{EthChainSpec, EthereumHardforks, Hardfork, Hardforks}, - primitives::SealedHeader, -}; use reth_network_peers::NodeRecord; -use reth_op::chainspec::OpChainSpec; +use reth_op::chainspec::{EthChainSpec, EthereumHardforks, Hardfork, Hardforks, OpChainSpec}; use reth_optimism_forks::OpHardforks; +use reth_primitives_traits::SealedHeader; #[derive(Debug, Clone)] pub struct CustomChainSpec { @@ -21,28 +18,25 @@ impl CustomChainSpec { } impl Hardforks for CustomChainSpec { - fn fork(&self, fork: H) -> reth_ethereum::chainspec::ForkCondition { + fn fork(&self, fork: H) -> reth_op::chainspec::ForkCondition { self.inner.fork(fork) } fn forks_iter( &self, - ) -> impl Iterator { + ) -> impl Iterator { self.inner.forks_iter() } - fn fork_id(&self, head: &reth_ethereum::chainspec::Head) -> reth_ethereum::chainspec::ForkId { + fn fork_id(&self, head: &reth_op::chainspec::Head) -> reth_op::chainspec::ForkId { self.inner.fork_id(head) } - fn latest_fork_id(&self) -> reth_ethereum::chainspec::ForkId { + fn latest_fork_id(&self) -> reth_op::chainspec::ForkId { self.inner.latest_fork_id() } - fn fork_filter( - &self, - head: reth_ethereum::chainspec::Head, - ) -> reth_ethereum::chainspec::ForkFilter { + fn fork_filter(&self, head: reth_op::chainspec::Head) -> reth_op::chainspec::ForkFilter { self.inner.fork_filter(head) } } @@ -50,14 +44,11 @@ impl Hardforks for CustomChainSpec { impl EthChainSpec for CustomChainSpec { type Header = CustomHeader; - fn chain(&self) -> reth_ethereum::chainspec::Chain { + fn chain(&self) -> reth_op::chainspec::Chain { self.inner.chain() } - fn base_fee_params_at_timestamp( - &self, - timestamp: u64, - ) -> reth_ethereum::chainspec::BaseFeeParams { + fn base_fee_params_at_timestamp(&self, timestamp: u64) -> reth_op::chainspec::BaseFeeParams { self.inner.base_fee_params_at_timestamp(timestamp) } @@ -65,7 +56,7 @@ impl EthChainSpec for CustomChainSpec { self.inner.blob_params_at_timestamp(timestamp) } - fn deposit_contract(&self) -> Option<&reth_ethereum::chainspec::DepositContract> { + fn deposit_contract(&self) -> Option<&reth_op::chainspec::DepositContract> { self.inner.deposit_contract() } @@ -101,8 +92,8 @@ impl EthChainSpec for CustomChainSpec { impl EthereumHardforks for CustomChainSpec { fn ethereum_fork_activation( &self, - fork: reth_ethereum::chainspec::EthereumHardfork, - ) -> reth_ethereum::chainspec::ForkCondition { + fork: reth_op::chainspec::EthereumHardfork, + ) -> reth_op::chainspec::ForkCondition { self.inner.ethereum_fork_activation(fork) } } @@ -111,7 +102,7 @@ impl OpHardforks for CustomChainSpec { fn op_fork_activation( &self, fork: reth_optimism_forks::OpHardfork, - ) -> reth_ethereum::chainspec::ForkCondition { + ) -> reth_op::chainspec::ForkCondition { self.inner.op_fork_activation(fork) } } diff --git a/rust/op-reth/examples/custom-node/src/engine.rs b/rust/op-reth/examples/custom-node/src/engine.rs index 821e890a2a93f..0cabb3d4eea3d 100644 --- a/rust/op-reth/examples/custom-node/src/engine.rs +++ b/rust/op-reth/examples/custom-node/src/engine.rs @@ -6,24 +6,27 @@ use crate::{ }; use alloy_eips::eip2718::WithEncoded; use alloy_primitives::Bytes; +use alloy_rpc_types_engine::PayloadId; use op_alloy_rpc_types_engine::{OpExecutionData, OpExecutionPayload}; use reth_engine_primitives::EngineApiValidator; -use reth_ethereum::{ - node::api::{ - AddOnsContext, BuiltPayload, BuiltPayloadExecutedBlock, EngineApiMessageVersion, - EngineObjectValidationError, ExecutionPayload, FullNodeComponents, NewPayloadError, - NodePrimitives, PayloadAttributes, PayloadBuilderAttributes, PayloadOrAttributes, - PayloadTypes, PayloadValidator, validate_version_specific_fields, +use reth_node_api::{ + AddOnsContext, BuiltPayload, BuiltPayloadExecutedBlock, FullNodeComponents, NodePrimitives, + PayloadValidator, + payload::{ + EngineApiMessageVersion, EngineObjectValidationError, ExecutionPayload, NewPayloadError, + PayloadOrAttributes, PayloadTypes, }, - primitives::SealedBlock, - storage::StateProviderFactory, - trie::{KeccakKeyHasher, KeyHasher}, + validate_version_specific_fields, }; use reth_node_builder::{InvalidPayloadAttributesError, rpc::PayloadValidatorBuilder}; use reth_op::node::{ OpBuiltPayload, OpEngineTypes, OpPayloadAttributes, OpPayloadBuilderAttributes, engine::OpEngineValidator, payload::OpAttributes, }; +use reth_payload_builder::PayloadBuilderError; +use reth_primitives_traits::SealedBlock; +use reth_provider::StateProviderFactory; +use reth_trie_common::{KeccakKeyHasher, KeyHasher}; use revm_primitives::U256; use serde::{Deserialize, Serialize}; use std::sync::Arc; @@ -90,22 +93,8 @@ impl TryFrom<&reth_optimism_flashblocks::FlashBlockCompleteSequence> for CustomE #[derive(Debug, Clone, Serialize, Deserialize)] pub struct CustomPayloadAttributes { #[serde(flatten)] - inner: OpPayloadAttributes, - extension: u64, -} - -impl PayloadAttributes for CustomPayloadAttributes { - fn timestamp(&self) -> u64 { - self.inner.timestamp() - } - - fn withdrawals(&self) -> Option<&Vec> { - self.inner.withdrawals() - } - - fn parent_beacon_block_root(&self) -> Option { - self.inner.parent_beacon_block_root() - } + pub inner: OpPayloadAttributes, + pub extension: u64, } #[derive(Debug, Clone)] @@ -114,54 +103,34 @@ pub struct CustomPayloadBuilderAttributes { pub extension: u64, } -impl PayloadBuilderAttributes for CustomPayloadBuilderAttributes { +impl OpAttributes for CustomPayloadBuilderAttributes { + type Transaction = CustomTransaction; type RpcPayloadAttributes = CustomPayloadAttributes; - type Error = alloy_rlp::Error; fn try_new( parent: revm_primitives::B256, - rpc_payload_attributes: Self::RpcPayloadAttributes, + attributes: Self::RpcPayloadAttributes, version: u8, - ) -> Result + ) -> Result where Self: Sized, { - let CustomPayloadAttributes { inner, extension } = rpc_payload_attributes; - - Ok(Self { inner: OpPayloadBuilderAttributes::try_new(parent, inner, version)?, extension }) - } + let CustomPayloadAttributes { inner, extension } = attributes; - fn payload_id(&self) -> alloy_rpc_types_engine::PayloadId { - self.inner.payload_id() + Ok(Self { + inner: OpPayloadBuilderAttributes::try_new(parent, inner, version) + .map_err(PayloadBuilderError::other)?, + extension, + }) } - fn parent(&self) -> revm_primitives::B256 { - self.inner.parent() + fn payload_id(&self) -> PayloadId { + self.inner.id } fn timestamp(&self) -> u64 { - self.inner.timestamp() - } - - fn parent_beacon_block_root(&self) -> Option { - self.inner.parent_beacon_block_root() - } - - fn suggested_fee_recipient(&self) -> revm_primitives::Address { - self.inner.suggested_fee_recipient() - } - - fn prev_randao(&self) -> revm_primitives::B256 { - self.inner.prev_randao() - } - - fn withdrawals(&self) -> &alloy_eips::eip4895::Withdrawals { - self.inner.withdrawals() + self.inner.timestamp } -} - -impl OpAttributes for CustomPayloadBuilderAttributes { - type Transaction = CustomTransaction; fn no_tx_pool(&self) -> bool { self.inner.no_tx_pool @@ -206,8 +175,7 @@ impl From impl PayloadTypes for CustomPayloadTypes { type ExecutionData = CustomExecutionData; type BuiltPayload = OpBuiltPayload; - type PayloadAttributes = CustomPayloadAttributes; - type PayloadBuilderAttributes = CustomPayloadBuilderAttributes; + type PayloadAttributes = reth_op::node::payload::OpPayloadAttrs; fn block_to_payload( block: SealedBlock< @@ -252,8 +220,8 @@ where fn validate_payload_attributes_against_header( &self, - _attr: &CustomPayloadAttributes, - _header: &::Header, + _attr: &reth_op::node::payload::OpPayloadAttrs, + _header: &::Header, ) -> Result<(), InvalidPayloadAttributesError> { // skip default timestamp validation Ok(()) @@ -265,7 +233,7 @@ where ) -> Result, NewPayloadError> { let sealed_block = PayloadValidator::::convert_payload_to_block( &self.inner, - payload.inner, + reth_op::node::payload::OpExecData(payload.inner), )?; let (header, body) = sealed_block.split_sealed_header_body(); let header = CustomHeader { inner: header.into_header(), extension: payload.extension }; @@ -281,7 +249,11 @@ where fn validate_version_specific_fields( &self, version: EngineApiMessageVersion, - payload_or_attrs: PayloadOrAttributes<'_, CustomExecutionData, CustomPayloadAttributes>, + payload_or_attrs: PayloadOrAttributes< + '_, + CustomExecutionData, + reth_op::node::payload::OpPayloadAttrs, + >, ) -> Result<(), EngineObjectValidationError> { validate_version_specific_fields(self.chain_spec(), version, payload_or_attrs) } @@ -289,7 +261,7 @@ where fn ensure_well_formed_attributes( &self, version: EngineApiMessageVersion, - attributes: &CustomPayloadAttributes, + attributes: &reth_op::node::payload::OpPayloadAttrs, ) -> Result<(), EngineObjectValidationError> { validate_version_specific_fields( self.chain_spec(), diff --git a/rust/op-reth/examples/custom-node/src/engine_api.rs b/rust/op-reth/examples/custom-node/src/engine_api.rs index 0aec72ecd0194..88a930a288ac8 100644 --- a/rust/op-reth/examples/custom-node/src/engine_api.rs +++ b/rust/op-reth/examples/custom-node/src/engine_api.rs @@ -8,9 +8,8 @@ use alloy_rpc_types_engine::{ }; use async_trait::async_trait; use jsonrpsee::{RpcModule, core::RpcResult, proc_macros::rpc}; -use reth_ethereum::node::api::{ - AddOnsContext, ConsensusEngineHandle, EngineApiMessageVersion, FullNodeComponents, -}; +use reth_engine_primitives::ConsensusEngineHandle; +use reth_node_api::{AddOnsContext, FullNodeComponents}; use reth_node_builder::rpc::EngineApiBuilder; use reth_op::node::OpBuiltPayload; use reth_payload_builder::PayloadStore; @@ -95,7 +94,10 @@ impl CustomEngineApiServer for CustomEngineApi { Ok(self .inner .beacon_consensus - .fork_choice_updated(fork_choice_state, payload_attributes, EngineApiMessageVersion::V3) + .fork_choice_updated( + fork_choice_state, + payload_attributes.map(|a| reth_op::node::payload::OpPayloadAttrs(a.inner)), + ) .await .map_err(EngineApiError::ForkChoiceUpdate)?) } diff --git a/rust/op-reth/examples/custom-node/src/evm/alloy.rs b/rust/op-reth/examples/custom-node/src/evm/alloy.rs index 6acca14956926..cfd36c518e33f 100644 --- a/rust/op-reth/examples/custom-node/src/evm/alloy.rs +++ b/rust/op-reth/examples/custom-node/src/evm/alloy.rs @@ -5,13 +5,14 @@ use alloy_primitives::{Address, Bytes}; use op_revm::{ L1BlockInfo, OpContext, OpHaltReason, OpSpecId, OpTransaction, precompiles::OpPrecompiles, }; -use reth_ethereum::evm::revm::{ +use revm::{ Context, Inspector, Journal, context::{BlockEnv, CfgEnv, result::ResultAndState}, + context_interface::result::EVMError, handler::PrecompileProvider, + inspector::NoOpInspector, interpreter::InterpreterResult, }; -use revm::{context_interface::result::EVMError, inspector::NoOpInspector}; use std::error::Error; /// EVM context contains data that EVM needs for execution of [`CustomTxEnv`]. diff --git a/rust/op-reth/examples/custom-node/src/evm/assembler.rs b/rust/op-reth/examples/custom-node/src/evm/assembler.rs index 2fb06eb8dc9f5..1be3b9d044cb6 100644 --- a/rust/op-reth/examples/custom-node/src/evm/assembler.rs +++ b/rust/op-reth/examples/custom-node/src/evm/assembler.rs @@ -4,11 +4,12 @@ use crate::{ primitives::{Block, CustomHeader, CustomTransaction}, }; use alloy_evm::block::{BlockExecutionError, BlockExecutorFactory}; -use reth_ethereum::{ +use reth_op::{ + DepositReceipt, evm::primitives::execute::{BlockAssembler, BlockAssemblerInput}, - primitives::Receipt, + node::OpBlockAssembler, }; -use reth_op::{DepositReceipt, node::OpBlockAssembler}; +use reth_primitives_traits::Receipt; use std::sync::Arc; #[derive(Clone, Debug)] diff --git a/rust/op-reth/examples/custom-node/src/evm/builder.rs b/rust/op-reth/examples/custom-node/src/evm/builder.rs index 4be3253b9d5ec..aeeea2c9fffc3 100644 --- a/rust/op-reth/examples/custom-node/src/evm/builder.rs +++ b/rust/op-reth/examples/custom-node/src/evm/builder.rs @@ -1,5 +1,5 @@ use crate::{chainspec::CustomChainSpec, evm::CustomEvmConfig, primitives::CustomNodePrimitives}; -use reth_ethereum::node::api::FullNodeTypes; +use reth_node_api::FullNodeTypes; use reth_node_builder::{BuilderContext, NodeTypes, components::ExecutorBuilder}; use std::{future, future::Future}; diff --git a/rust/op-reth/examples/custom-node/src/evm/config.rs b/rust/op-reth/examples/custom-node/src/evm/config.rs index 094e0b48de593..e505845f62177 100644 --- a/rust/op-reth/examples/custom-node/src/evm/config.rs +++ b/rust/op-reth/examples/custom-node/src/evm/config.rs @@ -12,18 +12,14 @@ use alloy_rpc_types_engine::PayloadError; use op_alloy_rpc_types_engine::flashblock::OpFlashblockPayloadBase; use op_revm::OpSpecId; use reth_engine_primitives::ExecutableTxIterator; -use reth_ethereum::{ - chainspec::EthChainSpec, - node::api::{BuildNextEnv, ConfigureEvm, PayloadBuilderError}, - primitives::{SealedBlock, SealedHeader}, -}; +use reth_node_api::{BuildNextEnv, ConfigureEvm, PayloadBuilderError}; use reth_node_builder::{ConfigureEngineEvm, NewPayloadError}; use reth_op::{ - chainspec::OpHardforks, + chainspec::{EthChainSpec, OpHardforks}, evm::primitives::{EvmEnvFor, ExecutionCtxFor}, node::{OpEvmConfig, OpNextBlockEnvAttributes, OpRethReceiptBuilder}, - primitives::SignedTransaction, }; +use reth_primitives_traits::{SealedBlock, SealedHeader, SignedTransaction}; use reth_rpc_api::eth::helpers::pending_block::BuildPendingEnv; use revm_primitives::Bytes; use std::sync::Arc; @@ -178,3 +174,21 @@ where Ok(CustomNextBlockEnvAttributes { inner, extension: attributes.extension }) } } + +impl + BuildNextEnv, H, ChainSpec> + for CustomNextBlockEnvAttributes +where + H: BlockHeader, + ChainSpec: EthChainSpec + OpHardforks, +{ + fn build_next_env( + attributes: &reth_op::node::OpPayloadBuilderAttributes, + parent: &SealedHeader, + chain_spec: &ChainSpec, + ) -> Result { + let inner = OpNextBlockEnvAttributes::build_next_env(attributes, parent, chain_spec)?; + + Ok(CustomNextBlockEnvAttributes { inner, extension: 0 }) + } +} diff --git a/rust/op-reth/examples/custom-node/src/evm/env.rs b/rust/op-reth/examples/custom-node/src/evm/env.rs index e7296243f3fe8..7c88fe528aa8c 100644 --- a/rust/op-reth/examples/custom-node/src/evm/env.rs +++ b/rust/op-reth/examples/custom-node/src/evm/env.rs @@ -4,8 +4,9 @@ use alloy_evm::{FromRecoveredTx, FromTxWithEncoded, IntoTxEnv}; use alloy_op_evm::block::OpTxEnv; use alloy_primitives::{Address, B256, Bytes, TxKind, U256}; use op_alloy_consensus::OpTxEnvelope; -use reth_ethereum::evm::{primitives::TransactionEnv, revm::context::TxEnv}; +use reth_op::evm::primitives::TransactionEnv; use reth_optimism_evm::OpTx; +use revm::context::TxEnv; /// An Optimism transaction extended by [`PaymentTxEnv`] that can be fed to [`Evm`]. /// diff --git a/rust/op-reth/examples/custom-node/src/evm/executor.rs b/rust/op-reth/examples/custom-node/src/evm/executor.rs index e396f47fc4eed..b61fd76eacb58 100644 --- a/rust/op-reth/examples/custom-node/src/evm/executor.rs +++ b/rust/op-reth/examples/custom-node/src/evm/executor.rs @@ -7,27 +7,27 @@ use crate::{ }; use alloy_consensus::transaction::Recovered; use alloy_evm::{ - Database, Evm, RecoveredTx, + Evm, RecoveredTx, block::{ BlockExecutionError, BlockExecutionResult, BlockExecutor, BlockExecutorFactory, - BlockExecutorFor, ExecutableTx, OnStateHook, + BlockExecutorFor, ExecutableTx, OnStateHook, StateDB, }, precompiles::PrecompilesMap, }; use alloy_op_evm::{OpBlockExecutionCtx, OpBlockExecutor, block::OpTxResult}; -use reth_ethereum::evm::primitives::InspectorFor; +use op_revm::OpContext; use reth_op::{OpReceipt, OpTxType, chainspec::OpChainSpec, node::OpRethReceiptBuilder}; -use revm::database::State; +use revm::Inspector; use std::sync::Arc; pub struct CustomBlockExecutor { inner: OpBlockExecutor>, } -impl<'db, DB, E> BlockExecutor for CustomBlockExecutor +impl BlockExecutor for CustomBlockExecutor where - DB: Database + 'db, - E: Evm, Tx = CustomTxEnv>, + DB: StateDB, + E: Evm, { type Transaction = CustomTransaction; type Receipt = OpReceipt; @@ -88,12 +88,12 @@ impl BlockExecutorFactory for CustomEvmConfig { fn create_executor<'a, DB, I>( &'a self, - evm: CustomEvm<&'a mut State, I, PrecompilesMap>, + evm: CustomEvm, ctx: CustomBlockExecutionCtx, ) -> impl BlockExecutorFor<'a, Self, DB, I> where - DB: Database + 'a, - I: InspectorFor> + 'a, + DB: StateDB + 'a, + I: Inspector> + 'a, { CustomBlockExecutor { inner: OpBlockExecutor::new( diff --git a/rust/op-reth/examples/custom-node/src/lib.rs b/rust/op-reth/examples/custom-node/src/lib.rs index 9892f2af52919..6023ee6751518 100644 --- a/rust/op-reth/examples/custom-node/src/lib.rs +++ b/rust/op-reth/examples/custom-node/src/lib.rs @@ -7,6 +7,10 @@ #![cfg_attr(not(test), warn(unused_crate_dependencies))] +// Required for feature forwarding +use reth_ethereum as _; +use reth_payload_primitives as _; + use crate::{ engine::{CustomEngineValidatorBuilder, CustomPayloadTypes}, engine_api::CustomEngineApiBuilder, @@ -17,9 +21,9 @@ use crate::{ }; use chainspec::CustomChainSpec; use primitives::CustomNodePrimitives; -use reth_ethereum::node::api::{FullNodeTypes, NodeTypes}; +use reth_node_api::FullNodeTypes; use reth_node_builder::{ - Node, NodeAdapter, + Node, NodeAdapter, NodeTypes, components::{BasicPayloadServiceBuilder, ComponentsBuilder}, }; use reth_op::{ diff --git a/rust/op-reth/examples/custom-node/src/pool.rs b/rust/op-reth/examples/custom-node/src/pool.rs index fad72be0d77a8..40a5248d98040 100644 --- a/rust/op-reth/examples/custom-node/src/pool.rs +++ b/rust/op-reth/examples/custom-node/src/pool.rs @@ -7,9 +7,7 @@ use alloy_consensus::{ }; use alloy_primitives::{Address, B256, Sealed}; use op_alloy_consensus::{OpPooledTransaction, OpTransaction, TxDeposit}; -use reth_ethereum::primitives::{ - InMemorySize, SignedTransaction, serde_bincode_compat::RlpBincode, -}; +use reth_primitives_traits::InMemorySize; #[derive(Clone, Debug, TransactionEnvelope)] #[envelope(tx_type_name = CustomPooledTxType)] @@ -44,8 +42,6 @@ impl TryFrom for CustomPooledTransaction { } } -impl RlpBincode for CustomPooledTransaction {} - impl OpTransaction for CustomPooledTransaction { fn is_deposit(&self) -> bool { false @@ -81,8 +77,6 @@ impl TxHashRef for CustomPooledTransaction { } } -impl SignedTransaction for CustomPooledTransaction {} - impl InMemorySize for CustomPooledTransaction { fn size(&self) -> usize { match self { diff --git a/rust/op-reth/examples/custom-node/src/primitives/header.rs b/rust/op-reth/examples/custom-node/src/primitives/header.rs index beaa7626f00c7..049f655c6a44d 100644 --- a/rust/op-reth/examples/custom-node/src/primitives/header.rs +++ b/rust/op-reth/examples/custom-node/src/primitives/header.rs @@ -2,7 +2,7 @@ use alloy_consensus::Header; use alloy_primitives::{Address, B64, B256, BlockNumber, Bloom, Bytes, Sealable, U256}; use alloy_rlp::{Encodable, RlpDecodable, RlpEncodable}; use reth_codecs::Compact; -use reth_ethereum::primitives::{BlockHeader, InMemorySize, serde_bincode_compat::RlpBincode}; +use reth_primitives_traits::{BlockHeader, InMemorySize}; use revm_primitives::keccak256; use serde::{Deserialize, Serialize}; @@ -173,12 +173,10 @@ impl reth_db_api::table::Compress for CustomHeader { } impl reth_db_api::table::Decompress for CustomHeader { - fn decompress(value: &[u8]) -> Result { + fn decompress(value: &[u8]) -> Result { let (obj, _) = Compact::from_compact(value, value.len()); Ok(obj) } } impl BlockHeader for CustomHeader {} - -impl RlpBincode for CustomHeader {} diff --git a/rust/op-reth/examples/custom-node/src/primitives/mod.rs b/rust/op-reth/examples/custom-node/src/primitives/mod.rs index 773ff4888cc4c..322f6f5339281 100644 --- a/rust/op-reth/examples/custom-node/src/primitives/mod.rs +++ b/rust/op-reth/examples/custom-node/src/primitives/mod.rs @@ -12,8 +12,8 @@ pub use tx_type::*; pub mod tx_custom; pub use tx_custom::*; -use reth_ethereum::primitives::NodePrimitives; use reth_op::OpReceipt; +use reth_primitives_traits::NodePrimitives; #[derive(Debug, Clone, Default, PartialEq, Eq)] pub struct CustomNodePrimitives; diff --git a/rust/op-reth/examples/custom-node/src/primitives/tx.rs b/rust/op-reth/examples/custom-node/src/primitives/tx.rs index 803d5d238b68b..c0457be4bda02 100644 --- a/rust/op-reth/examples/custom-node/src/primitives/tx.rs +++ b/rust/op-reth/examples/custom-node/src/primitives/tx.rs @@ -12,8 +12,8 @@ use reth_codecs::{ Compact, alloy::transaction::{CompactEnvelope, FromTxCompact, ToTxCompact}, }; -use reth_ethereum::primitives::{InMemorySize, serde_bincode_compat::RlpBincode}; -use reth_op::{OpTransaction, primitives::SignedTransaction}; +use reth_op::OpTransaction; +use reth_primitives_traits::InMemorySize; use revm_primitives::Address; /// Either [`OpTxEnvelope`] or [`TxPayment`]. @@ -28,8 +28,6 @@ pub enum CustomTransaction { Payment(Signed), } -impl RlpBincode for CustomTransaction {} - impl reth_codecs::alloy::transaction::Envelope for CustomTransaction { fn signature(&self) -> &Signature { match self { @@ -132,8 +130,6 @@ impl TxHashRef for CustomTransaction { } } -impl SignedTransaction for CustomTransaction {} - impl InMemorySize for CustomTransaction { fn size(&self) -> usize { match self { diff --git a/rust/op-reth/examples/custom-node/src/primitives/tx_custom.rs b/rust/op-reth/examples/custom-node/src/primitives/tx_custom.rs index d65012df1711a..bad998bc337f5 100644 --- a/rust/op-reth/examples/custom-node/src/primitives/tx_custom.rs +++ b/rust/op-reth/examples/custom-node/src/primitives/tx_custom.rs @@ -6,7 +6,7 @@ use alloy_consensus::{ use alloy_eips::{Typed2718, eip2930::AccessList, eip7702::SignedAuthorization}; use alloy_primitives::{Address, B256, Bytes, ChainId, Signature, TxKind, U256}; use alloy_rlp::{BufMut, Decodable, Encodable}; -use reth_ethereum::primitives::{InMemorySize, serde_bincode_compat::RlpBincode}; +use reth_primitives_traits::InMemorySize; /// A transaction with a priority fee ([EIP-1559](https://eips.ethereum.org/EIPS/eip-1559)). #[derive( @@ -276,5 +276,3 @@ impl InMemorySize for TxPayment { TxPayment::size(self) } } - -impl RlpBincode for TxPayment {} diff --git a/rust/op-reth/examples/custom-node/src/rpc.rs b/rust/op-reth/examples/custom-node/src/rpc.rs index da8add0f0bfad..6aace0fbe1ee8 100644 --- a/rust/op-reth/examples/custom-node/src/rpc.rs +++ b/rust/op-reth/examples/custom-node/src/rpc.rs @@ -11,8 +11,6 @@ use reth_op::rpc::RpcTypes; use reth_rpc_api::eth::{ EthTxEnvError, SignTxRequestError, SignableTxRequest, TryIntoSimTx, TryIntoTxEnv, }; -use revm::context::BlockEnv; - #[derive(Debug, Clone, Copy, Default)] #[non_exhaustive] pub struct CustomRpcTypes; @@ -30,13 +28,12 @@ impl TryIntoSimTx for OpTransactionRequest { } } -impl TryIntoTxEnv for OpTransactionRequest { +impl TryIntoTxEnv + for OpTransactionRequest +{ type Err = EthTxEnvError; - fn try_into_tx_env( - self, - evm_env: &EvmEnv, - ) -> Result { + fn try_into_tx_env(self, evm_env: &EvmEnv) -> Result { Ok(CustomTxEnv::Op(reth_optimism_evm::OpTx(self.try_into_tx_env(evm_env)?))) } } diff --git a/rust/op-reth/examples/engine-api-access/Cargo.toml b/rust/op-reth/examples/engine-api-access/Cargo.toml index 3e1f185077fb4..6a5422eb803c9 100644 --- a/rust/op-reth/examples/engine-api-access/Cargo.toml +++ b/rust/op-reth/examples/engine-api-access/Cargo.toml @@ -7,7 +7,7 @@ license.workspace = true [dependencies] # reth -reth-db = { workspace = true, features = ["op", "test-utils"] } +reth-db = { workspace = true, features = ["test-utils"] } reth-node-builder.workspace = true reth-optimism-node.workspace = true reth-optimism-chainspec.workspace = true diff --git a/rust/rust-toolchain.toml b/rust/rust-toolchain.toml index 2e7fc42a6e270..c8171d2b782ca 100644 --- a/rust/rust-toolchain.toml +++ b/rust/rust-toolchain.toml @@ -1,3 +1,3 @@ [toolchain] # /ops/docker/op-stack-go/Dockerfile must match this version. -channel = "1.92" +channel = "1.94" diff --git a/target/rust-analyzer/flycheck0/stderr b/target/rust-analyzer/flycheck0/stderr new file mode 100644 index 0000000000000..96ae55d025334 --- /dev/null +++ b/target/rust-analyzer/flycheck0/stderr @@ -0,0 +1,26 @@ +error: failed to load manifest for workspace member `/Users/theo/optimism/rust/op-reth/bin` +referenced by workspace at `/Users/theo/optimism/rust/Cargo.toml` + +Caused by: + failed to load manifest for dependency `reth-optimism-cli` + +Caused by: + failed to load manifest for dependency `reth-optimism-consensus` + +Caused by: + failed to load manifest for dependency `reth-optimism-node` + +Caused by: + failed to load manifest for dependency `reth-optimism-payload-builder` + +Caused by: + failed to load manifest for dependency `reth-optimism-txpool` + +Caused by: + failed to parse manifest at `/Users/theo/optimism/rust/op-reth/crates/txpool/Cargo.toml` + +Caused by: + error inheriting `reth-eth-wire-types` from workspace root manifest's `workspace.dependencies.reth-eth-wire-types` + +Caused by: + `dependency.reth-eth-wire-types` was not found in `workspace.dependencies` diff --git a/target/rust-analyzer/flycheck0/stdout b/target/rust-analyzer/flycheck0/stdout new file mode 100644 index 0000000000000..e69de29bb2d1d From 70be33ec6149b8d3eb148748ae01bcc5cf21caae Mon Sep 17 00:00:00 2001 From: theochap Date: Mon, 30 Mar 2026 12:05:42 -0400 Subject: [PATCH 3/5] refactor(op-reth): remove op feature from reth-engine-local Inline the PayloadAttributesBuilder logic directly into OpLocalPayloadAttributesBuilder, removing the dependency on the upstream reth-engine-local 'op' feature flag entirely. --- rust/.nvimlog | 1 + rust/op-reth/crates/node/Cargo.toml | 2 +- rust/op-reth/crates/node/src/node.rs | 69 ++++++++++++++++++++++++---- 3 files changed, 61 insertions(+), 11 deletions(-) create mode 100644 rust/.nvimlog diff --git a/rust/.nvimlog b/rust/.nvimlog new file mode 100644 index 0000000000000..da6f8b461ff0b --- /dev/null +++ b/rust/.nvimlog @@ -0,0 +1 @@ +WRN 2026-03-30T12:05:47.413 ?.27779 server_start:199: Failed to start server: operation not permitted: /tmp/claude/nvim.theo/Tb4sbc/nvim.27779.0 diff --git a/rust/op-reth/crates/node/Cargo.toml b/rust/op-reth/crates/node/Cargo.toml index fda156e44809f..92df4eaf9610d 100644 --- a/rust/op-reth/crates/node/Cargo.toml +++ b/rust/op-reth/crates/node/Cargo.toml @@ -29,7 +29,7 @@ reth-tasks.workspace = true reth-trie-common.workspace = true reth-node-core.workspace = true reth-rpc-engine-api.workspace = true -reth-engine-local = { workspace = true, features = ["op"] } + reth-rpc-api.workspace = true reth-db.workspace = true reth-db-api.workspace = true diff --git a/rust/op-reth/crates/node/src/node.rs b/rust/op-reth/crates/node/src/node.rs index df5aca68acbf7..431fc27b64190 100644 --- a/rust/op-reth/crates/node/src/node.rs +++ b/rust/op-reth/crates/node/src/node.rs @@ -7,8 +7,9 @@ use crate::{ txpool::{OpTransactionPool, OpTransactionValidator}, }; use op_alloy_consensus::{OpPooledTransaction, interop::SafetyLevel}; -use reth_chainspec::{ChainSpecProvider, EthChainSpec, Hardforks}; -use reth_engine_local::LocalPayloadAttributesBuilder; +use reth_chainspec::{ + BaseFeeParams, ChainSpecProvider, EthChainSpec, EthereumHardforks, Hardforks, +}; use reth_evm::ConfigureEvm; use reth_network::{ NetworkConfig, NetworkHandle, NetworkManager, NetworkPrimitives, PeersInfo, @@ -65,17 +66,67 @@ use url::Url; use reth_optimism_payload_builder::OpPayloadAttrs; -/// Wrapper around [`LocalPayloadAttributesBuilder`] to adapt it to [`OpPayloadAttrs`]. -struct OpLocalPayloadAttributesBuilder(LocalPayloadAttributesBuilder); +/// Builds [`OpPayloadAttrs`] for local/dev-mode payload generation. +struct OpLocalPayloadAttributesBuilder { + chain_spec: Arc, +} impl PayloadAttributesBuilder for OpLocalPayloadAttributesBuilder { fn build( &self, parent: &reth_primitives_traits::SealedHeader, ) -> OpPayloadAttrs { - let inner: op_alloy_rpc_types_engine::OpPayloadAttributes = - PayloadAttributesBuilder::build(&self.0, parent); - OpPayloadAttrs(inner) + use alloy_consensus::BlockHeader; + use alloy_primitives::{Address, B64}; + + let timestamp = std::cmp::max( + parent.timestamp().saturating_add(1), + std::time::SystemTime::now().duration_since(std::time::UNIX_EPOCH).unwrap().as_secs(), + ); + + let eth_attrs = alloy_rpc_types_engine::PayloadAttributes { + timestamp, + prev_randao: alloy_primitives::B256::random(), + suggested_fee_recipient: Address::random(), + withdrawals: self + .chain_spec + .is_shanghai_active_at_timestamp(timestamp) + .then(Default::default), + parent_beacon_block_root: self + .chain_spec + .is_cancun_active_at_timestamp(timestamp) + .then(alloy_primitives::B256::random), + }; + + /// Dummy system transaction for dev mode. + /// OP Mainnet transaction at index 0 in block 124665056. + const TX_SET_L1_BLOCK: [u8; 251] = alloy_primitives::hex!( + "7ef8f8a0683079df94aa5b9cf86687d739a60a9b4f0835e520ec4d664e2e415dca17a6df94deaddeaddeaddeaddeaddeaddeaddeaddead00019442000000000000000000000000000000000000158080830f424080b8a4440a5e200000146b000f79c500000000000000040000000066d052e700000000013ad8a3000000000000000000000000000000000000000000000000000000003ef1278700000000000000000000000000000000000000000000000000000000000000012fdf87b89884a61e74b322bbcf60386f543bfae7827725efaaf0ab1de2294a590000000000000000000000006887246668a3b87f54deb3b94ba47a6f63f32985" + ); + + let default_params = BaseFeeParams::optimism(); + let denominator = std::env::var("OP_DEV_EIP1559_DENOMINATOR") + .ok() + .and_then(|v| v.parse::().ok()) + .unwrap_or(default_params.max_change_denominator as u32); + let elasticity = std::env::var("OP_DEV_EIP1559_ELASTICITY") + .ok() + .and_then(|v| v.parse::().ok()) + .unwrap_or(default_params.elasticity_multiplier as u32); + let gas_limit = std::env::var("OP_DEV_GAS_LIMIT").ok().and_then(|v| v.parse::().ok()); + + let mut eip1559_bytes = [0u8; 8]; + eip1559_bytes[0..4].copy_from_slice(&denominator.to_be_bytes()); + eip1559_bytes[4..8].copy_from_slice(&elasticity.to_be_bytes()); + + OpPayloadAttrs(op_alloy_rpc_types_engine::OpPayloadAttributes { + payload_attributes: eth_attrs, + transactions: Some(vec![TX_SET_L1_BLOCK.into()]), + no_tx_pool: None, + gas_limit, + eip_1559_params: Some(B64::from(eip1559_bytes)), + min_base_fee: Some(0), + }) } } @@ -291,9 +342,7 @@ where fn local_payload_attributes_builder( chain_spec: &Self::ChainSpec, ) -> impl PayloadAttributesBuilder<::PayloadAttributes> { - OpLocalPayloadAttributesBuilder(LocalPayloadAttributesBuilder::new(Arc::new( - chain_spec.clone(), - ))) + OpLocalPayloadAttributesBuilder { chain_spec: Arc::new(chain_spec.clone()) } } } From 628a59e9fb10e07f4a982a6331e920d7dd1f0060 Mon Sep 17 00:00:00 2001 From: theochap Date: Mon, 30 Mar 2026 12:51:29 -0400 Subject: [PATCH 4/5] fix(sysgo): make proof history configurable in op-reth test framework Make proof history conditional on L2ELConfig.ProofHistory and enabled by default (matching previous behavior). Also capture stderr from proofs init to aid debugging if it fails. --- op-devstack/sysgo/mixed_runtime.go | 39 +++-- op-devstack/sysgo/singlechain_build.go | 2 +- rust/Cargo.lock | 224 ++++++++++++------------- rust/Cargo.toml | 140 ++++++++-------- rust/op-reth/crates/cli/Cargo.toml | 2 +- rust/op-reth/crates/evm/Cargo.toml | 2 +- rust/op-reth/crates/evm/src/lib.rs | 4 +- rust/op-reth/crates/evm/src/tx.rs | 8 +- target/rust-analyzer/flycheck0/stderr | 31 +--- 9 files changed, 214 insertions(+), 238 deletions(-) diff --git a/op-devstack/sysgo/mixed_runtime.go b/op-devstack/sysgo/mixed_runtime.go index d3de1b786fb89..e70f3853bc187 100644 --- a/op-devstack/sysgo/mixed_runtime.go +++ b/op-devstack/sysgo/mixed_runtime.go @@ -144,7 +144,7 @@ func NewMixedSingleChainRuntime(t devtest.T, cfg MixedSingleChainPresetConfig) * case MixedL2ELOpGeth: el = startL2ELNode(t, l2Net, jwtPath, jwtSecret, spec.ELKey, identity) case MixedL2ELOpReth: - el = startMixedOpRethNode(t, l2Net, spec.ELKey, jwtPath, jwtSecret, metricsRegistrar) + el = startMixedOpRethNode(t, l2Net, spec.ELKey, jwtPath, jwtSecret, metricsRegistrar, nil) default: require.FailNowf("unsupported EL kind", "unsupported mixed EL kind %q", spec.ELKind) } @@ -255,6 +255,7 @@ func startMixedOpRethNode( jwtPath string, jwtSecret [32]byte, metricsRegistrar L2MetricsRegistrar, + elCfg *L2ELConfig, ) *OpReth { tempDir := t.TempDir() @@ -322,25 +323,27 @@ func startMixedOpRethNode( err = exec.Command(execPath, initArgs...).Run() t.Require().NoError(err, "must init op-reth node") - proofHistoryDir := filepath.Join(tempDir, "proof-history") + if elCfg == nil || elCfg.ProofHistory { + proofHistoryDir := filepath.Join(tempDir, "proof-history") - initProofsArgs := []string{ - "proofs", - "init", - "--datadir=" + dataDirPath, - "--chain=" + chainConfigPath, - "--proofs-history.storage-path=" + proofHistoryDir, + initProofsArgs := []string{ + "proofs", + "init", + "--datadir=" + dataDirPath, + "--chain=" + chainConfigPath, + "--proofs-history.storage-path=" + proofHistoryDir, + } + initOut, initErr := exec.Command(execPath, initProofsArgs...).CombinedOutput() + t.Require().NoError(initErr, "must init op-reth proof history: %s", string(initOut)) + + args = append( + args, + "--proofs-history", + "--proofs-history.window=10000", + "--proofs-history.prune-interval=1m", + "--proofs-history.storage-path="+proofHistoryDir, + ) } - err = exec.Command(execPath, initProofsArgs...).Run() - t.Require().NoError(err, "must init op-reth proof history") - - args = append( - args, - "--proofs-history", - "--proofs-history.window=10000", - "--proofs-history.prune-interval=1m", - "--proofs-history.storage-path="+proofHistoryDir, - ) l2EL := &OpReth{ name: key, diff --git a/op-devstack/sysgo/singlechain_build.go b/op-devstack/sysgo/singlechain_build.go index 23c03735a4e7f..9091ee31e4db1 100644 --- a/op-devstack/sysgo/singlechain_build.go +++ b/op-devstack/sysgo/singlechain_build.go @@ -157,7 +157,7 @@ func startL2ELForKey(t devtest.T, l2Net *L2Network, jwtPath string, jwtSecret [3 case MixedL2ELOpGeth: return startL2ELNode(t, l2Net, jwtPath, jwtSecret, key, identity) default: // op-reth - return startMixedOpRethNode(t, l2Net, key, jwtPath, jwtSecret, nil) + return startMixedOpRethNode(t, l2Net, key, jwtPath, jwtSecret, nil, nil) } } diff --git a/rust/Cargo.lock b/rust/Cargo.lock index 0c3f8f2dfe782..d017cdf1f8e46 100644 --- a/rust/Cargo.lock +++ b/rust/Cargo.lock @@ -266,22 +266,19 @@ dependencies = [ [[package]] name = "alloy-evm" -version = "0.29.2" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cb6ba2dafd6327f78f2b59ae539bd5c39c57a01dc76763e92942619d934a7bb" +checksum = "e13146597a586a4166ac31b192883e08c044272d6b8c43de231ee1f43dd9a115" dependencies = [ "alloy-consensus", "alloy-eips", "alloy-hardforks", - "alloy-op-hardforks", "alloy-primitives", "alloy-rpc-types-engine", "alloy-rpc-types-eth", "alloy-sol-types", "auto_impl", "derive_more", - "op-alloy", - "op-revm 17.0.0", "revm 36.0.0", "thiserror 2.0.18", "tracing", @@ -9352,7 +9349,7 @@ checksum = "1e061d1b48cb8d38042de4ae0a7a6401009d6143dc80d2e2d6f31f0bdd6470c7" [[package]] name = "reth-basic-payload-builder" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-consensus", "alloy-eips", @@ -9370,6 +9367,7 @@ dependencies = [ "reth-revm", "reth-storage-api", "reth-tasks", + "reth-trie-parallel", "serde", "tokio", "tracing", @@ -9378,7 +9376,7 @@ dependencies = [ [[package]] name = "reth-chain-state" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-consensus", "alloy-eips", @@ -9410,7 +9408,7 @@ dependencies = [ [[package]] name = "reth-chainspec" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-chains", "alloy-consensus", @@ -9430,7 +9428,7 @@ dependencies = [ [[package]] name = "reth-cli" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-genesis", "clap", @@ -9443,7 +9441,7 @@ dependencies = [ [[package]] name = "reth-cli-commands" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-chains", "alloy-consensus", @@ -9531,7 +9529,7 @@ dependencies = [ [[package]] name = "reth-cli-runner" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "reth-tasks", "tokio", @@ -9541,7 +9539,7 @@ dependencies = [ [[package]] name = "reth-cli-util" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-eips", "alloy-primitives", @@ -9594,7 +9592,7 @@ dependencies = [ [[package]] name = "reth-config" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "eyre", "humantime-serde", @@ -9610,7 +9608,7 @@ dependencies = [ [[package]] name = "reth-consensus" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-consensus", "alloy-primitives", @@ -9623,7 +9621,7 @@ dependencies = [ [[package]] name = "reth-consensus-common" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-consensus", "alloy-eips", @@ -9636,7 +9634,7 @@ dependencies = [ [[package]] name = "reth-consensus-debug-client" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-consensus", "alloy-eips", @@ -9662,7 +9660,7 @@ dependencies = [ [[package]] name = "reth-db" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-primitives", "derive_more", @@ -9690,7 +9688,7 @@ dependencies = [ [[package]] name = "reth-db-api" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-consensus", "alloy-primitives", @@ -9716,7 +9714,7 @@ dependencies = [ [[package]] name = "reth-db-common" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-consensus", "alloy-genesis", @@ -9746,7 +9744,7 @@ dependencies = [ [[package]] name = "reth-db-models" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-eips", "alloy-primitives", @@ -9761,7 +9759,7 @@ dependencies = [ [[package]] name = "reth-discv4" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -9786,7 +9784,7 @@ dependencies = [ [[package]] name = "reth-discv5" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -9810,7 +9808,7 @@ dependencies = [ [[package]] name = "reth-dns-discovery" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-primitives", "dashmap", @@ -9834,7 +9832,7 @@ dependencies = [ [[package]] name = "reth-downloaders" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-consensus", "alloy-eips", @@ -9869,7 +9867,7 @@ dependencies = [ [[package]] name = "reth-e2e-test-utils" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-consensus", "alloy-eips", @@ -9926,7 +9924,7 @@ dependencies = [ [[package]] name = "reth-ecies" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "aes", "alloy-primitives", @@ -9954,14 +9952,13 @@ dependencies = [ [[package]] name = "reth-engine-local" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-consensus", "alloy-primitives", "alloy-rpc-types-engine", "eyre", "futures-util", - "op-alloy-rpc-types-engine", "reth-chainspec", "reth-engine-primitives", "reth-ethereum-engine-primitives", @@ -9978,7 +9975,7 @@ dependencies = [ [[package]] name = "reth-engine-primitives" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-consensus", "alloy-eips", @@ -10003,7 +10000,7 @@ dependencies = [ [[package]] name = "reth-engine-tree" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-consensus", "alloy-eip7928", @@ -10059,7 +10056,7 @@ dependencies = [ [[package]] name = "reth-engine-util" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-consensus", "alloy-rpc-types-engine", @@ -10087,7 +10084,7 @@ dependencies = [ [[package]] name = "reth-era" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-consensus", "alloy-eips", @@ -10102,7 +10099,7 @@ dependencies = [ [[package]] name = "reth-era-downloader" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-primitives", "bytes", @@ -10118,7 +10115,7 @@ dependencies = [ [[package]] name = "reth-era-utils" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-consensus", "alloy-primitives", @@ -10140,7 +10137,7 @@ dependencies = [ [[package]] name = "reth-errors" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "reth-consensus", "reth-execution-errors", @@ -10151,7 +10148,7 @@ dependencies = [ [[package]] name = "reth-eth-wire" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-chains", "alloy-primitives", @@ -10180,7 +10177,7 @@ dependencies = [ [[package]] name = "reth-eth-wire-types" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-chains", "alloy-consensus", @@ -10204,7 +10201,7 @@ dependencies = [ [[package]] name = "reth-ethereum" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-rpc-types-engine", "alloy-rpc-types-eth", @@ -10245,7 +10242,7 @@ dependencies = [ [[package]] name = "reth-ethereum-cli" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "clap", "eyre", @@ -10268,7 +10265,7 @@ dependencies = [ [[package]] name = "reth-ethereum-consensus" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-consensus", "alloy-eips", @@ -10284,7 +10281,7 @@ dependencies = [ [[package]] name = "reth-ethereum-engine-primitives" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-eips", "alloy-primitives", @@ -10300,7 +10297,7 @@ dependencies = [ [[package]] name = "reth-ethereum-forks" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-eip2124", "alloy-hardforks", @@ -10314,7 +10311,7 @@ dependencies = [ [[package]] name = "reth-ethereum-payload-builder" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-consensus", "alloy-eips", @@ -10344,7 +10341,7 @@ dependencies = [ [[package]] name = "reth-ethereum-primitives" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-consensus", "alloy-eips", @@ -10358,7 +10355,7 @@ dependencies = [ [[package]] name = "reth-etl" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "rayon", "reth-db-api", @@ -10368,7 +10365,7 @@ dependencies = [ [[package]] name = "reth-evm" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-consensus", "alloy-eips", @@ -10392,7 +10389,7 @@ dependencies = [ [[package]] name = "reth-evm-ethereum" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-consensus", "alloy-eips", @@ -10412,7 +10409,7 @@ dependencies = [ [[package]] name = "reth-execution-cache" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-primitives", "fixed-cache", @@ -10430,7 +10427,7 @@ dependencies = [ [[package]] name = "reth-execution-errors" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-evm 0.29.2", "alloy-primitives", @@ -10443,7 +10440,7 @@ dependencies = [ [[package]] name = "reth-execution-types" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-consensus", "alloy-eips", @@ -10462,7 +10459,7 @@ dependencies = [ [[package]] name = "reth-exex" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-consensus", "alloy-eips", @@ -10500,7 +10497,7 @@ dependencies = [ [[package]] name = "reth-exex-test-utils" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-eips", "eyre", @@ -10532,7 +10529,7 @@ dependencies = [ [[package]] name = "reth-exex-types" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-eips", "alloy-primitives", @@ -10546,7 +10543,7 @@ dependencies = [ [[package]] name = "reth-fs-util" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "serde", "serde_json", @@ -10556,7 +10553,7 @@ dependencies = [ [[package]] name = "reth-invalid-block-hooks" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-consensus", "alloy-primitives", @@ -10584,7 +10581,7 @@ dependencies = [ [[package]] name = "reth-ipc" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "bytes", "futures", @@ -10604,7 +10601,7 @@ dependencies = [ [[package]] name = "reth-libmdbx" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "bitflags 2.11.0", "byteorder", @@ -10621,7 +10618,7 @@ dependencies = [ [[package]] name = "reth-mdbx-sys" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "bindgen", "cc", @@ -10630,7 +10627,7 @@ dependencies = [ [[package]] name = "reth-metrics" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "futures", "metrics", @@ -10642,7 +10639,7 @@ dependencies = [ [[package]] name = "reth-net-banlist" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-primitives", "ipnet", @@ -10651,7 +10648,7 @@ dependencies = [ [[package]] name = "reth-net-nat" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "futures-util", "if-addrs 0.14.0", @@ -10665,7 +10662,7 @@ dependencies = [ [[package]] name = "reth-network" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-consensus", "alloy-eips", @@ -10722,7 +10719,7 @@ dependencies = [ [[package]] name = "reth-network-api" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-consensus", "alloy-primitives", @@ -10747,7 +10744,7 @@ dependencies = [ [[package]] name = "reth-network-p2p" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-consensus", "alloy-eips", @@ -10770,7 +10767,7 @@ dependencies = [ [[package]] name = "reth-network-peers" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -10785,7 +10782,7 @@ dependencies = [ [[package]] name = "reth-network-types" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-eip2124", "humantime-serde", @@ -10799,7 +10796,7 @@ dependencies = [ [[package]] name = "reth-nippy-jar" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "anyhow", "bincode 1.3.3", @@ -10816,7 +10813,7 @@ dependencies = [ [[package]] name = "reth-node-api" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-rpc-types-engine", "eyre", @@ -10840,7 +10837,7 @@ dependencies = [ [[package]] name = "reth-node-builder" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-consensus", "alloy-eips", @@ -10908,7 +10905,7 @@ dependencies = [ [[package]] name = "reth-node-core" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-consensus", "alloy-eips", @@ -10963,7 +10960,7 @@ dependencies = [ [[package]] name = "reth-node-ethereum" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-eips", "alloy-network", @@ -11001,7 +10998,7 @@ dependencies = [ [[package]] name = "reth-node-ethstats" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-consensus", "alloy-primitives", @@ -11025,7 +11022,7 @@ dependencies = [ [[package]] name = "reth-node-events" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-consensus", "alloy-eips", @@ -11049,7 +11046,7 @@ dependencies = [ [[package]] name = "reth-node-metrics" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "bytes", "eyre", @@ -11078,7 +11075,7 @@ dependencies = [ [[package]] name = "reth-node-types" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "reth-chainspec", "reth-db-api", @@ -11655,7 +11652,7 @@ dependencies = [ [[package]] name = "reth-payload-builder" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-consensus", "alloy-primitives", @@ -11670,6 +11667,7 @@ dependencies = [ "reth-payload-builder-primitives", "reth-payload-primitives", "reth-primitives-traits", + "reth-trie-parallel", "tokio", "tokio-stream", "tracing", @@ -11678,7 +11676,7 @@ dependencies = [ [[package]] name = "reth-payload-builder-primitives" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "pin-project", "reth-payload-primitives", @@ -11690,7 +11688,7 @@ dependencies = [ [[package]] name = "reth-payload-primitives" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-consensus", "alloy-eips", @@ -11699,7 +11697,6 @@ dependencies = [ "alloy-rpc-types-engine", "auto_impl", "either", - "op-alloy-rpc-types-engine", "reth-chain-state", "reth-chainspec", "reth-errors", @@ -11715,7 +11712,7 @@ dependencies = [ [[package]] name = "reth-payload-util" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-consensus", "alloy-primitives", @@ -11725,7 +11722,7 @@ dependencies = [ [[package]] name = "reth-payload-validator" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-consensus", "alloy-rpc-types-engine", @@ -11768,7 +11765,7 @@ dependencies = [ [[package]] name = "reth-provider" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-consensus", "alloy-eips", @@ -11814,7 +11811,7 @@ dependencies = [ [[package]] name = "reth-prune" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-consensus", "alloy-eips", @@ -11843,7 +11840,7 @@ dependencies = [ [[package]] name = "reth-prune-types" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-primitives", "arbitrary", @@ -11859,7 +11856,7 @@ dependencies = [ [[package]] name = "reth-revm" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-primitives", "reth-primitives-traits", @@ -11872,7 +11869,7 @@ dependencies = [ [[package]] name = "reth-rpc" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-consensus", "alloy-dyn-abi", @@ -11950,7 +11947,7 @@ dependencies = [ [[package]] name = "reth-rpc-api" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-eip7928", "alloy-eips", @@ -11981,7 +11978,7 @@ dependencies = [ [[package]] name = "reth-rpc-builder" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-network", "alloy-provider", @@ -12024,7 +12021,7 @@ dependencies = [ [[package]] name = "reth-rpc-convert" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-consensus", "alloy-evm 0.29.2", @@ -12046,7 +12043,7 @@ dependencies = [ [[package]] name = "reth-rpc-engine-api" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-eips", "alloy-primitives", @@ -12077,7 +12074,7 @@ dependencies = [ [[package]] name = "reth-rpc-eth-api" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-consensus", "alloy-dyn-abi", @@ -12121,7 +12118,7 @@ dependencies = [ [[package]] name = "reth-rpc-eth-types" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-consensus", "alloy-eips", @@ -12169,7 +12166,7 @@ dependencies = [ [[package]] name = "reth-rpc-layer" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-rpc-types-engine", "http", @@ -12183,7 +12180,7 @@ dependencies = [ [[package]] name = "reth-rpc-server-types" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-eips", "alloy-primitives", @@ -12199,7 +12196,7 @@ dependencies = [ [[package]] name = "reth-stages" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-consensus", "alloy-eips", @@ -12251,7 +12248,7 @@ dependencies = [ [[package]] name = "reth-stages-api" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-eips", "alloy-primitives", @@ -12279,7 +12276,7 @@ dependencies = [ [[package]] name = "reth-stages-types" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-primitives", "arbitrary", @@ -12293,7 +12290,7 @@ dependencies = [ [[package]] name = "reth-static-file" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-primitives", "parking_lot", @@ -12313,7 +12310,7 @@ dependencies = [ [[package]] name = "reth-static-file-types" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-primitives", "clap", @@ -12328,7 +12325,7 @@ dependencies = [ [[package]] name = "reth-storage-api" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-consensus", "alloy-eips", @@ -12352,7 +12349,7 @@ dependencies = [ [[package]] name = "reth-storage-errors" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-eips", "alloy-primitives", @@ -12370,7 +12367,7 @@ dependencies = [ [[package]] name = "reth-tasks" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "crossbeam-utils", "dashmap", @@ -12391,7 +12388,7 @@ dependencies = [ [[package]] name = "reth-testing-utils" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-consensus", "alloy-eips", @@ -12407,7 +12404,7 @@ dependencies = [ [[package]] name = "reth-tokio-util" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "tokio", "tokio-stream", @@ -12417,7 +12414,7 @@ dependencies = [ [[package]] name = "reth-tracing" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "clap", "eyre", @@ -12436,7 +12433,7 @@ dependencies = [ [[package]] name = "reth-tracing-otlp" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "clap", "eyre", @@ -12454,7 +12451,7 @@ dependencies = [ [[package]] name = "reth-transaction-pool" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-consensus", "alloy-eips", @@ -12500,7 +12497,7 @@ dependencies = [ [[package]] name = "reth-trie" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-consensus", "alloy-eips", @@ -12526,7 +12523,7 @@ dependencies = [ [[package]] name = "reth-trie-common" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-consensus", "alloy-primitives", @@ -12553,7 +12550,7 @@ dependencies = [ [[package]] name = "reth-trie-db" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-primitives", "metrics", @@ -12573,8 +12570,10 @@ dependencies = [ [[package]] name = "reth-trie-parallel" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ + "alloy-eip7928", + "alloy-evm", "alloy-primitives", "alloy-rlp", "crossbeam-channel", @@ -12590,6 +12589,7 @@ dependencies = [ "reth-tasks", "reth-trie", "reth-trie-sparse", + "revm-state 10.0.0", "thiserror 2.0.18", "tracing", ] @@ -12597,7 +12597,7 @@ dependencies = [ [[package]] name = "reth-trie-sparse" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=e3dbdbb#e3dbdbb1153848aa91acf088973815872f6b2569" +source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" dependencies = [ "alloy-primitives", "alloy-rlp", diff --git a/rust/Cargo.toml b/rust/Cargo.toml index 19acadb2816c5..16037feac4fc6 100644 --- a/rust/Cargo.toml +++ b/rust/Cargo.toml @@ -298,79 +298,79 @@ alloy-op-evm = { version = "0.30.0", path = "alloy-op-evm/", default-features = alloy-op-hardforks = { version = "0.4.7", path = "alloy-op-hardforks/", default-features = false } # ==================== RETH CRATES (main @ e3dbdbb) ==================== -reth = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } -reth-basic-payload-builder = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } -reth-chain-state = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } -reth-chainspec = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb", default-features = false } -reth-cli = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } -reth-cli-commands = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } -reth-cli-runner = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } -reth-cli-util = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } +reth = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } +reth-basic-payload-builder = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } +reth-chain-state = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } +reth-chainspec = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3", default-features = false } +reth-cli = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } +reth-cli-commands = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } +reth-cli-runner = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } +reth-cli-util = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } reth-codecs = { version = "0.1.0", default-features = false, features = ["alloy"] } reth-codecs-derive = "0.1.0" -reth-consensus = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb", default-features = false } -reth-consensus-common = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb", default-features = false } -reth-db = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb", default-features = false } -reth-db-api = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } -reth-db-common = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } -reth-downloaders = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } -reth-e2e-test-utils = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } -reth-engine-local = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } -reth-engine-primitives = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb", default-features = false } -reth-errors = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } -reth-eth-wire = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } -reth-eth-wire-types = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } -reth-ethereum = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } -reth-ethereum-cli = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } -reth-ethereum-consensus = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } -reth-ethereum-forks = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb", default-features = false } -reth-ethereum-primitives = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } -reth-evm = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb", default-features = false } -reth-evm-ethereum = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } -reth-exex = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } -reth-exex-test-utils = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } -reth-execution-errors = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb", default-features = false } -reth-execution-types = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb", default-features = false } -reth-fs-util = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } -reth-metrics = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } -reth-network = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } -reth-network-api = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } -reth-network-peers = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb", default-features = false } -reth-node-api = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } -reth-node-builder = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } -reth-node-core = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } -reth-node-ethereum = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } -reth-node-events = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } -reth-node-metrics = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } -reth-payload-builder = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } -reth-payload-builder-primitives = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } -reth-payload-primitives = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } -reth-payload-util = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } -reth-payload-validator = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } +reth-consensus = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3", default-features = false } +reth-consensus-common = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3", default-features = false } +reth-db = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3", default-features = false } +reth-db-api = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } +reth-db-common = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } +reth-downloaders = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } +reth-e2e-test-utils = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } +reth-engine-local = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } +reth-engine-primitives = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3", default-features = false } +reth-errors = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } +reth-eth-wire = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } +reth-eth-wire-types = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } +reth-ethereum = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } +reth-ethereum-cli = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } +reth-ethereum-consensus = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } +reth-ethereum-forks = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3", default-features = false } +reth-ethereum-primitives = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } +reth-evm = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3", default-features = false } +reth-evm-ethereum = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } +reth-exex = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } +reth-exex-test-utils = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } +reth-execution-errors = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3", default-features = false } +reth-execution-types = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3", default-features = false } +reth-fs-util = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } +reth-metrics = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } +reth-network = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } +reth-network-api = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } +reth-network-peers = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3", default-features = false } +reth-node-api = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } +reth-node-builder = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } +reth-node-core = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } +reth-node-ethereum = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } +reth-node-events = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } +reth-node-metrics = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } +reth-payload-builder = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } +reth-payload-builder-primitives = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } +reth-payload-primitives = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } +reth-payload-util = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } +reth-payload-validator = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } reth-primitives-traits = { version = "0.1.0", default-features = false } -reth-provider = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } -reth-prune = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } -reth-prune-types = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb", default-features = false } -reth-revm = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb", default-features = false } -reth-rpc = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } -reth-rpc-api = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } -reth-rpc-builder = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } -reth-rpc-engine-api = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } -reth-rpc-eth-api = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } -reth-rpc-eth-types = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb", default-features = false } -reth-rpc-server-types = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } -reth-stages = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } -reth-stages-types = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb", default-features = false } -reth-static-file = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } -reth-static-file-types = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb", default-features = false } -reth-storage-api = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb", default-features = false } -reth-storage-errors = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb", default-features = false } -reth-tasks = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } -reth-tracing = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb", default-features = false } -reth-transaction-pool = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } -reth-trie = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } -reth-trie-common = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb", default-features = false } -reth-trie-db = { git = "https://github.com/paradigmxyz/reth", rev = "e3dbdbb" } +reth-provider = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } +reth-prune = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } +reth-prune-types = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3", default-features = false } +reth-revm = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3", default-features = false } +reth-rpc = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } +reth-rpc-api = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } +reth-rpc-builder = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } +reth-rpc-engine-api = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } +reth-rpc-eth-api = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } +reth-rpc-eth-types = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3", default-features = false } +reth-rpc-server-types = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } +reth-stages = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } +reth-stages-types = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3", default-features = false } +reth-static-file = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } +reth-static-file-types = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3", default-features = false } +reth-storage-api = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3", default-features = false } +reth-storage-errors = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3", default-features = false } +reth-tasks = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } +reth-tracing = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3", default-features = false } +reth-transaction-pool = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } +reth-trie = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } +reth-trie-common = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3", default-features = false } +reth-trie-db = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } reth-zstd-compressors = { version = "0.1.0", default-features = false } # ==================== REVM (latest: op-reth versions) ==================== diff --git a/rust/op-reth/crates/cli/Cargo.toml b/rust/op-reth/crates/cli/Cargo.toml index d6a7fe3129b5b..d288dd9c13a0f 100644 --- a/rust/op-reth/crates/cli/Cargo.toml +++ b/rust/op-reth/crates/cli/Cargo.toml @@ -44,7 +44,7 @@ reth-node-events.workspace = true reth-optimism-evm.workspace = true reth-cli-runner.workspace = true reth-tasks.workspace = true -reth-node-builder = { workspace = true, features = ["op"] } +reth-node-builder.workspace = true reth-tracing.workspace = true # eth diff --git a/rust/op-reth/crates/evm/Cargo.toml b/rust/op-reth/crates/evm/Cargo.toml index 61c892f20324a..1f996c94884d0 100644 --- a/rust/op-reth/crates/evm/Cargo.toml +++ b/rust/op-reth/crates/evm/Cargo.toml @@ -13,7 +13,7 @@ workspace = true [dependencies] # Reth reth-chainspec.workspace = true -reth-evm = { workspace = true, features = ["op"] } +reth-evm.workspace = true reth-primitives-traits.workspace = true reth-execution-errors.workspace = true reth-execution-types.workspace = true diff --git a/rust/op-reth/crates/evm/src/lib.rs b/rust/op-reth/crates/evm/src/lib.rs index cc085ebe104cb..88fbac3631aed 100644 --- a/rust/op-reth/crates/evm/src/lib.rs +++ b/rust/op-reth/crates/evm/src/lib.rs @@ -22,9 +22,7 @@ use core::fmt::Debug; use op_alloy_consensus::EIP1559ParamError; use op_revm::OpSpecId; use reth_chainspec::EthChainSpec; -use reth_evm::{ - ConfigureEvm, EvmEnv, TransactionEnv, eth::NextEvmEnvAttributes, precompiles::PrecompilesMap, -}; +use reth_evm::{ConfigureEvm, EvmEnv, eth::NextEvmEnvAttributes, precompiles::PrecompilesMap}; use reth_optimism_chainspec::OpChainSpec; use reth_optimism_forks::OpHardforks; use reth_optimism_primitives::{DepositReceipt, OpPrimitives}; diff --git a/rust/op-reth/crates/evm/src/tx.rs b/rust/op-reth/crates/evm/src/tx.rs index e1c352b0d5522..7792e13ae2858 100644 --- a/rust/op-reth/crates/evm/src/tx.rs +++ b/rust/op-reth/crates/evm/src/tx.rs @@ -10,7 +10,7 @@ use alloy_primitives::{Address, B256, Bytes, TxKind, U256}; use core::ops::{Deref, DerefMut}; use op_alloy_consensus::{OpTxEnvelope, TxDeposit}; use op_revm::{OpTransaction, transaction::deposit::DepositTransactionParts}; -use reth_evm::TransactionEnv; +use alloy_evm::TransactionEnvMut; use revm::context::TxEnv; /// Helper to convert a deposit transaction into a [`TxEnv`]. @@ -229,15 +229,11 @@ impl alloy_evm::rpc::TryIntoTxEnv } } -impl TransactionEnv for OpTx { +impl TransactionEnvMut for OpTx { fn set_gas_limit(&mut self, gas_limit: u64) { self.0.base.gas_limit = gas_limit; } - fn nonce(&self) -> u64 { - self.0.base.nonce - } - fn set_nonce(&mut self, nonce: u64) { self.0.base.nonce = nonce; } diff --git a/target/rust-analyzer/flycheck0/stderr b/target/rust-analyzer/flycheck0/stderr index 96ae55d025334..3d0da036f3975 100644 --- a/target/rust-analyzer/flycheck0/stderr +++ b/target/rust-analyzer/flycheck0/stderr @@ -1,26 +1,5 @@ -error: failed to load manifest for workspace member `/Users/theo/optimism/rust/op-reth/bin` -referenced by workspace at `/Users/theo/optimism/rust/Cargo.toml` - -Caused by: - failed to load manifest for dependency `reth-optimism-cli` - -Caused by: - failed to load manifest for dependency `reth-optimism-consensus` - -Caused by: - failed to load manifest for dependency `reth-optimism-node` - -Caused by: - failed to load manifest for dependency `reth-optimism-payload-builder` - -Caused by: - failed to load manifest for dependency `reth-optimism-txpool` - -Caused by: - failed to parse manifest at `/Users/theo/optimism/rust/op-reth/crates/txpool/Cargo.toml` - -Caused by: - error inheriting `reth-eth-wire-types` from workspace root manifest's `workspace.dependencies.reth-eth-wire-types` - -Caused by: - `dependency.reth-eth-wire-types` was not found in `workspace.dependencies` +error: key with no value, expected `=` + --> Cargo.toml:311:9 + | +311 | <<<<<<< conflict 1 of 1 + | ^ From b9fd7d0007fe9d31602ab4f85d0506b160a827e4 Mon Sep 17 00:00:00 2001 From: theochap Date: Wed, 1 Apr 2026 11:54:45 -0400 Subject: [PATCH 5/5] feat(alloy-op-evm): upgrade alloy-evm to 0.30.0, remove op feature, add OpTx/OpTxEnvConverter - Bump alloy-evm 0.27.2 -> 0.30.0, alloy-op-evm version to 0.30.0 - Bump reth to 082c36e (uses reth-rpc-traits from crates.io) - Add OpTx newtype + trait impls (FromRecoveredTx, FromTxWithEncoded, IntoTxEnv, TransactionEnvMut) - Add OpTxEnvConverter for RPC tx conversion without orphan rule issues - Add reth-rpc-traits impls (FromConsensusTx, TryIntoSimTx, SignableTxRequest) to op-alloy-rpc-types - Remove alloy-evm op feature dependency throughout - Fix zepter std feature propagation for reth-rpc-traits --- .circleci/continue/rust-ci.yml | 3 +- .gitignore | 5 +- op-devstack/sysgo/mixed_runtime.go | 39 ++- op-devstack/sysgo/singlechain_build.go | 2 +- rust/.nvimlog | 1 - rust/Cargo.lock | 294 +++++++++--------- rust/Cargo.toml | 157 +++++----- rust/alloy-op-evm/src/block/mod.rs | 7 +- rust/alloy-op-evm/src/tx.rs | 18 +- rust/kona/bin/host/src/interop/handler.rs | 4 +- rust/kona/crates/proof/executor/src/db/mod.rs | 2 +- .../crates/proof/executor/src/test_utils.rs | 6 +- .../crates/consensus/src/reth_codec.rs | 30 +- .../crates/consensus/src/reth_core.rs | 9 + rust/op-alloy/crates/op-alloy/Cargo.toml | 2 + rust/op-alloy/crates/rpc-types/Cargo.toml | 7 +- rust/op-alloy/crates/rpc-types/src/lib.rs | 3 + .../crates/rpc-types/src/reth_compat.rs | 65 ++++ .../consensus/src/validation/isthmus.rs | 9 +- rust/op-reth/crates/evm/src/lib.rs | 2 +- rust/op-reth/crates/evm/src/tx.rs | 272 +++------------- rust/op-reth/crates/flashblocks/src/worker.rs | 4 +- rust/op-reth/crates/node/src/node.rs | 26 +- rust/op-reth/crates/node/src/rpc.rs | 7 +- .../crates/node/tests/it/custom_genesis.rs | 48 ++- rust/op-reth/crates/payload/Cargo.toml | 1 + rust/op-reth/crates/payload/src/builder.rs | 9 +- rust/op-reth/crates/payload/src/payload.rs | 45 +-- .../transaction/signed.txt | 10 - rust/op-reth/crates/primitives/src/receipt.rs | 7 +- .../primitives/src/transaction/signed.rs | 2 - rust/op-reth/crates/reth/Cargo.toml | 4 +- rust/op-reth/crates/rpc/Cargo.toml | 4 +- rust/op-reth/crates/rpc/src/eth/mod.rs | 6 +- rust/op-reth/crates/trie/src/initialize.rs | 48 +-- rust/op-reth/crates/txpool/src/pool.rs | 3 +- rust/op-reth/examples/custom-node/Cargo.toml | 1 + .../examples/custom-node/src/engine.rs | 4 +- .../examples/custom-node/src/evm/alloy.rs | 8 +- .../examples/custom-node/src/evm/env.rs | 20 +- rust/op-reth/examples/custom-node/src/rpc.rs | 34 +- target/rust-analyzer/flycheck0/stderr | 5 - target/rust-analyzer/flycheck0/stdout | 0 43 files changed, 587 insertions(+), 646 deletions(-) delete mode 100644 rust/.nvimlog create mode 100644 rust/op-alloy/crates/rpc-types/src/reth_compat.rs delete mode 100644 rust/op-reth/crates/primitives/proptest-regressions/transaction/signed.txt delete mode 100644 target/rust-analyzer/flycheck0/stderr delete mode 100644 target/rust-analyzer/flycheck0/stdout diff --git a/.circleci/continue/rust-ci.yml b/.circleci/continue/rust-ci.yml index a4cae00af5ebd..f71ba9d050541 100644 --- a/.circleci/continue/rust-ci.yml +++ b/.circleci/continue/rust-ci.yml @@ -794,7 +794,8 @@ jobs: op-reth-compact-codec: docker: - image: <> - resource_class: medium + # This job frequently gets killed for smaller resource_class + resource_class: xlarge steps: - utils/checkout-with-mise: checkout-method: blobless diff --git a/.gitignore b/.gitignore index 4031cb1d276f9..6da7377355e30 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,9 @@ coverage.json **/lcov-upgrade.info **/lcov-all.info +# Rust files +**/target + yarn-error.log .yarn/* !.yarn/releases @@ -50,4 +53,4 @@ __pycache__ crytic-export # ignore local asdf config -.tool-versions \ No newline at end of file +.tool-versions diff --git a/op-devstack/sysgo/mixed_runtime.go b/op-devstack/sysgo/mixed_runtime.go index e70f3853bc187..d2b0e3bdad5de 100644 --- a/op-devstack/sysgo/mixed_runtime.go +++ b/op-devstack/sysgo/mixed_runtime.go @@ -144,7 +144,7 @@ func NewMixedSingleChainRuntime(t devtest.T, cfg MixedSingleChainPresetConfig) * case MixedL2ELOpGeth: el = startL2ELNode(t, l2Net, jwtPath, jwtSecret, spec.ELKey, identity) case MixedL2ELOpReth: - el = startMixedOpRethNode(t, l2Net, spec.ELKey, jwtPath, jwtSecret, metricsRegistrar, nil) + el = startMixedOpRethNode(t, l2Net, spec.ELKey, jwtPath, jwtSecret, metricsRegistrar) default: require.FailNowf("unsupported EL kind", "unsupported mixed EL kind %q", spec.ELKind) } @@ -255,7 +255,6 @@ func startMixedOpRethNode( jwtPath string, jwtSecret [32]byte, metricsRegistrar L2MetricsRegistrar, - elCfg *L2ELConfig, ) *OpReth { tempDir := t.TempDir() @@ -323,27 +322,25 @@ func startMixedOpRethNode( err = exec.Command(execPath, initArgs...).Run() t.Require().NoError(err, "must init op-reth node") - if elCfg == nil || elCfg.ProofHistory { - proofHistoryDir := filepath.Join(tempDir, "proof-history") + proofHistoryDir := filepath.Join(tempDir, "proof-history") - initProofsArgs := []string{ - "proofs", - "init", - "--datadir=" + dataDirPath, - "--chain=" + chainConfigPath, - "--proofs-history.storage-path=" + proofHistoryDir, - } - initOut, initErr := exec.Command(execPath, initProofsArgs...).CombinedOutput() - t.Require().NoError(initErr, "must init op-reth proof history: %s", string(initOut)) - - args = append( - args, - "--proofs-history", - "--proofs-history.window=10000", - "--proofs-history.prune-interval=1m", - "--proofs-history.storage-path="+proofHistoryDir, - ) + initProofsArgs := []string{ + "proofs", + "init", + "--datadir=" + dataDirPath, + "--chain=" + chainConfigPath, + "--proofs-history.storage-path=" + proofHistoryDir, } + initOut, initErr := exec.Command(execPath, initProofsArgs...).CombinedOutput() + t.Require().NoError(initErr, "must init op-reth proof history: %s", string(initOut)) + + args = append( + args, + "--proofs-history", + "--proofs-history.window=10000", + "--proofs-history.prune-interval=1m", + "--proofs-history.storage-path="+proofHistoryDir, + ) l2EL := &OpReth{ name: key, diff --git a/op-devstack/sysgo/singlechain_build.go b/op-devstack/sysgo/singlechain_build.go index 9091ee31e4db1..23c03735a4e7f 100644 --- a/op-devstack/sysgo/singlechain_build.go +++ b/op-devstack/sysgo/singlechain_build.go @@ -157,7 +157,7 @@ func startL2ELForKey(t devtest.T, l2Net *L2Network, jwtPath string, jwtSecret [3 case MixedL2ELOpGeth: return startL2ELNode(t, l2Net, jwtPath, jwtSecret, key, identity) default: // op-reth - return startMixedOpRethNode(t, l2Net, key, jwtPath, jwtSecret, nil, nil) + return startMixedOpRethNode(t, l2Net, key, jwtPath, jwtSecret, nil) } } diff --git a/rust/.nvimlog b/rust/.nvimlog deleted file mode 100644 index da6f8b461ff0b..0000000000000 --- a/rust/.nvimlog +++ /dev/null @@ -1 +0,0 @@ -WRN 2026-03-30T12:05:47.413 ?.27779 server_start:199: Failed to start server: operation not permitted: /tmp/claude/nvim.theo/Tb4sbc/nvim.27779.0 diff --git a/rust/Cargo.lock b/rust/Cargo.lock index d017cdf1f8e46..04a58596968af 100644 --- a/rust/Cargo.lock +++ b/rust/Cargo.lock @@ -284,26 +284,6 @@ dependencies = [ "tracing", ] -[[package]] -name = "alloy-evm" -version = "0.30.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13146597a586a4166ac31b192883e08c044272d6b8c43de231ee1f43dd9a115" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-hardforks", - "alloy-primitives", - "alloy-rpc-types-engine", - "alloy-rpc-types-eth", - "alloy-sol-types", - "auto_impl", - "derive_more", - "revm 36.0.0", - "thiserror 2.0.18", - "tracing", -] - [[package]] name = "alloy-genesis" version = "1.8.3" @@ -405,7 +385,7 @@ version = "0.30.0" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-evm 0.30.0", + "alloy-evm", "alloy-hardforks", "alloy-op-hardforks", "alloy-primitives", @@ -3689,7 +3669,7 @@ version = "0.0.0" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-evm 0.30.0", + "alloy-evm", "alloy-genesis", "alloy-network", "alloy-op-evm", @@ -3711,6 +3691,7 @@ dependencies = [ "reth-db-api", "reth-engine-primitives", "reth-ethereum", + "reth-evm", "reth-network-peers", "reth-node-api", "reth-node-builder", @@ -5593,7 +5574,7 @@ version = "1.0.2" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-evm 0.30.0", + "alloy-evm", "alloy-op-evm", "alloy-primitives", "alloy-rlp", @@ -5682,7 +5663,7 @@ name = "kona-driver" version = "0.4.0" dependencies = [ "alloy-consensus", - "alloy-evm 0.30.0", + "alloy-evm", "alloy-primitives", "alloy-rlp", "async-trait", @@ -5749,7 +5730,7 @@ version = "0.4.0" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-evm 0.30.0", + "alloy-evm", "alloy-op-evm", "alloy-op-hardforks", "alloy-primitives", @@ -6120,7 +6101,7 @@ version = "0.3.0" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-evm 0.30.0", + "alloy-evm", "alloy-op-evm", "alloy-primitives", "alloy-rlp", @@ -6159,7 +6140,7 @@ version = "0.2.0" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-evm 0.30.0", + "alloy-evm", "alloy-op-evm", "alloy-primitives", "alloy-rlp", @@ -7828,15 +7809,18 @@ version = "0.24.0" dependencies = [ "alloy-consensus", "alloy-eips", + "alloy-network", "alloy-network-primitives", "alloy-primitives", "alloy-rpc-types-eth", "alloy-serde", + "alloy-signer", "arbitrary", "derive_more", "jsonrpsee", "op-alloy-consensus", "rand 0.9.2", + "reth-rpc-traits", "serde", "serde_json", "similar-asserts", @@ -9349,7 +9333,7 @@ checksum = "1e061d1b48cb8d38042de4ae0a7a6401009d6143dc80d2e2d6f31f0bdd6470c7" [[package]] name = "reth-basic-payload-builder" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-consensus", "alloy-eips", @@ -9376,7 +9360,7 @@ dependencies = [ [[package]] name = "reth-chain-state" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-consensus", "alloy-eips", @@ -9408,12 +9392,12 @@ dependencies = [ [[package]] name = "reth-chainspec" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-chains", "alloy-consensus", "alloy-eips", - "alloy-evm 0.29.2", + "alloy-evm", "alloy-genesis", "alloy-primitives", "alloy-trie", @@ -9428,7 +9412,7 @@ dependencies = [ [[package]] name = "reth-cli" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-genesis", "clap", @@ -9441,7 +9425,7 @@ dependencies = [ [[package]] name = "reth-cli-commands" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-chains", "alloy-consensus", @@ -9529,7 +9513,7 @@ dependencies = [ [[package]] name = "reth-cli-runner" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "reth-tasks", "tokio", @@ -9539,7 +9523,7 @@ dependencies = [ [[package]] name = "reth-cli-util" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-eips", "alloy-primitives", @@ -9592,7 +9576,7 @@ dependencies = [ [[package]] name = "reth-config" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "eyre", "humantime-serde", @@ -9608,7 +9592,7 @@ dependencies = [ [[package]] name = "reth-consensus" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-consensus", "alloy-primitives", @@ -9621,7 +9605,7 @@ dependencies = [ [[package]] name = "reth-consensus-common" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-consensus", "alloy-eips", @@ -9634,7 +9618,7 @@ dependencies = [ [[package]] name = "reth-consensus-debug-client" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-consensus", "alloy-eips", @@ -9660,7 +9644,7 @@ dependencies = [ [[package]] name = "reth-db" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-primitives", "derive_more", @@ -9688,7 +9672,7 @@ dependencies = [ [[package]] name = "reth-db-api" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-consensus", "alloy-primitives", @@ -9714,7 +9698,7 @@ dependencies = [ [[package]] name = "reth-db-common" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-consensus", "alloy-genesis", @@ -9744,7 +9728,7 @@ dependencies = [ [[package]] name = "reth-db-models" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-eips", "alloy-primitives", @@ -9759,7 +9743,7 @@ dependencies = [ [[package]] name = "reth-discv4" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -9784,7 +9768,7 @@ dependencies = [ [[package]] name = "reth-discv5" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -9808,7 +9792,7 @@ dependencies = [ [[package]] name = "reth-dns-discovery" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-primitives", "dashmap", @@ -9832,7 +9816,7 @@ dependencies = [ [[package]] name = "reth-downloaders" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-consensus", "alloy-eips", @@ -9867,7 +9851,7 @@ dependencies = [ [[package]] name = "reth-e2e-test-utils" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-consensus", "alloy-eips", @@ -9924,7 +9908,7 @@ dependencies = [ [[package]] name = "reth-ecies" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "aes", "alloy-primitives", @@ -9952,7 +9936,7 @@ dependencies = [ [[package]] name = "reth-engine-local" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-consensus", "alloy-primitives", @@ -9975,7 +9959,7 @@ dependencies = [ [[package]] name = "reth-engine-primitives" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-consensus", "alloy-eips", @@ -10000,12 +9984,12 @@ dependencies = [ [[package]] name = "reth-engine-tree" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-consensus", "alloy-eip7928", "alloy-eips", - "alloy-evm 0.29.2", + "alloy-evm", "alloy-primitives", "alloy-rlp", "alloy-rpc-types-engine", @@ -10056,7 +10040,7 @@ dependencies = [ [[package]] name = "reth-engine-util" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-consensus", "alloy-rpc-types-engine", @@ -10084,7 +10068,7 @@ dependencies = [ [[package]] name = "reth-era" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-consensus", "alloy-eips", @@ -10099,7 +10083,7 @@ dependencies = [ [[package]] name = "reth-era-downloader" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-primitives", "bytes", @@ -10115,7 +10099,7 @@ dependencies = [ [[package]] name = "reth-era-utils" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-consensus", "alloy-primitives", @@ -10137,7 +10121,7 @@ dependencies = [ [[package]] name = "reth-errors" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "reth-consensus", "reth-execution-errors", @@ -10148,7 +10132,7 @@ dependencies = [ [[package]] name = "reth-eth-wire" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-chains", "alloy-primitives", @@ -10177,7 +10161,7 @@ dependencies = [ [[package]] name = "reth-eth-wire-types" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-chains", "alloy-consensus", @@ -10201,7 +10185,7 @@ dependencies = [ [[package]] name = "reth-ethereum" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-rpc-types-engine", "alloy-rpc-types-eth", @@ -10242,7 +10226,7 @@ dependencies = [ [[package]] name = "reth-ethereum-cli" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "clap", "eyre", @@ -10265,7 +10249,7 @@ dependencies = [ [[package]] name = "reth-ethereum-consensus" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-consensus", "alloy-eips", @@ -10281,7 +10265,7 @@ dependencies = [ [[package]] name = "reth-ethereum-engine-primitives" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-eips", "alloy-primitives", @@ -10297,7 +10281,7 @@ dependencies = [ [[package]] name = "reth-ethereum-forks" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-eip2124", "alloy-hardforks", @@ -10311,7 +10295,7 @@ dependencies = [ [[package]] name = "reth-ethereum-payload-builder" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-consensus", "alloy-eips", @@ -10341,7 +10325,7 @@ dependencies = [ [[package]] name = "reth-ethereum-primitives" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-consensus", "alloy-eips", @@ -10355,7 +10339,7 @@ dependencies = [ [[package]] name = "reth-etl" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "rayon", "reth-db-api", @@ -10365,11 +10349,11 @@ dependencies = [ [[package]] name = "reth-evm" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-evm 0.29.2", + "alloy-evm", "alloy-primitives", "auto_impl", "derive_more", @@ -10389,11 +10373,11 @@ dependencies = [ [[package]] name = "reth-evm-ethereum" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-evm 0.29.2", + "alloy-evm", "alloy-primitives", "alloy-rpc-types-engine", "reth-chainspec", @@ -10409,7 +10393,7 @@ dependencies = [ [[package]] name = "reth-execution-cache" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-primitives", "fixed-cache", @@ -10427,9 +10411,9 @@ dependencies = [ [[package]] name = "reth-execution-errors" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ - "alloy-evm 0.29.2", + "alloy-evm", "alloy-primitives", "alloy-rlp", "nybbles", @@ -10440,11 +10424,11 @@ dependencies = [ [[package]] name = "reth-execution-types" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-evm 0.29.2", + "alloy-evm", "alloy-primitives", "alloy-rlp", "derive_more", @@ -10459,7 +10443,7 @@ dependencies = [ [[package]] name = "reth-exex" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-consensus", "alloy-eips", @@ -10497,7 +10481,7 @@ dependencies = [ [[package]] name = "reth-exex-test-utils" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-eips", "eyre", @@ -10529,7 +10513,7 @@ dependencies = [ [[package]] name = "reth-exex-types" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-eips", "alloy-primitives", @@ -10543,7 +10527,7 @@ dependencies = [ [[package]] name = "reth-fs-util" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "serde", "serde_json", @@ -10553,7 +10537,7 @@ dependencies = [ [[package]] name = "reth-invalid-block-hooks" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-consensus", "alloy-primitives", @@ -10581,7 +10565,7 @@ dependencies = [ [[package]] name = "reth-ipc" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "bytes", "futures", @@ -10601,7 +10585,7 @@ dependencies = [ [[package]] name = "reth-libmdbx" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "bitflags 2.11.0", "byteorder", @@ -10618,7 +10602,7 @@ dependencies = [ [[package]] name = "reth-mdbx-sys" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "bindgen", "cc", @@ -10627,7 +10611,7 @@ dependencies = [ [[package]] name = "reth-metrics" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "futures", "metrics", @@ -10639,7 +10623,7 @@ dependencies = [ [[package]] name = "reth-net-banlist" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-primitives", "ipnet", @@ -10648,7 +10632,7 @@ dependencies = [ [[package]] name = "reth-net-nat" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "futures-util", "if-addrs 0.14.0", @@ -10662,7 +10646,7 @@ dependencies = [ [[package]] name = "reth-network" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-consensus", "alloy-eips", @@ -10719,7 +10703,7 @@ dependencies = [ [[package]] name = "reth-network-api" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-consensus", "alloy-primitives", @@ -10744,7 +10728,7 @@ dependencies = [ [[package]] name = "reth-network-p2p" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-consensus", "alloy-eips", @@ -10767,7 +10751,7 @@ dependencies = [ [[package]] name = "reth-network-peers" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -10782,7 +10766,7 @@ dependencies = [ [[package]] name = "reth-network-types" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-eip2124", "humantime-serde", @@ -10796,7 +10780,7 @@ dependencies = [ [[package]] name = "reth-nippy-jar" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "anyhow", "bincode 1.3.3", @@ -10813,7 +10797,7 @@ dependencies = [ [[package]] name = "reth-node-api" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-rpc-types-engine", "eyre", @@ -10837,7 +10821,7 @@ dependencies = [ [[package]] name = "reth-node-builder" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-consensus", "alloy-eips", @@ -10905,7 +10889,7 @@ dependencies = [ [[package]] name = "reth-node-core" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-consensus", "alloy-eips", @@ -10960,7 +10944,7 @@ dependencies = [ [[package]] name = "reth-node-ethereum" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-eips", "alloy-network", @@ -10998,7 +10982,7 @@ dependencies = [ [[package]] name = "reth-node-ethstats" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-consensus", "alloy-primitives", @@ -11022,7 +11006,7 @@ dependencies = [ [[package]] name = "reth-node-events" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-consensus", "alloy-eips", @@ -11046,7 +11030,7 @@ dependencies = [ [[package]] name = "reth-node-metrics" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "bytes", "eyre", @@ -11075,7 +11059,7 @@ dependencies = [ [[package]] name = "reth-node-types" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "reth-chainspec", "reth-db-api", @@ -11241,7 +11225,7 @@ version = "1.11.3" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-evm 0.30.0", + "alloy-evm", "alloy-genesis", "alloy-op-evm", "alloy-primitives", @@ -11373,7 +11357,6 @@ dependencies = [ "reth-db", "reth-db-api", "reth-e2e-test-utils", - "reth-engine-local", "reth-evm", "reth-network", "reth-node-api", @@ -11421,7 +11404,7 @@ version = "1.11.3" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-evm 0.30.0", + "alloy-evm", "alloy-primitives", "alloy-rlp", "alloy-rpc-types-debug", @@ -11430,6 +11413,7 @@ dependencies = [ "either", "op-alloy-consensus", "op-alloy-rpc-types-engine", + "op-revm 17.0.0", "reth-basic-payload-builder", "reth-chainspec", "reth-evm", @@ -11652,7 +11636,7 @@ dependencies = [ [[package]] name = "reth-payload-builder" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-consensus", "alloy-primitives", @@ -11676,7 +11660,7 @@ dependencies = [ [[package]] name = "reth-payload-builder-primitives" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "pin-project", "reth-payload-primitives", @@ -11688,7 +11672,7 @@ dependencies = [ [[package]] name = "reth-payload-primitives" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-consensus", "alloy-eips", @@ -11712,7 +11696,7 @@ dependencies = [ [[package]] name = "reth-payload-util" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-consensus", "alloy-primitives", @@ -11722,7 +11706,7 @@ dependencies = [ [[package]] name = "reth-payload-validator" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-consensus", "alloy-rpc-types-engine", @@ -11765,7 +11749,7 @@ dependencies = [ [[package]] name = "reth-provider" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-consensus", "alloy-eips", @@ -11811,7 +11795,7 @@ dependencies = [ [[package]] name = "reth-prune" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-consensus", "alloy-eips", @@ -11840,7 +11824,7 @@ dependencies = [ [[package]] name = "reth-prune-types" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-primitives", "arbitrary", @@ -11856,7 +11840,7 @@ dependencies = [ [[package]] name = "reth-revm" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-primitives", "reth-primitives-traits", @@ -11869,13 +11853,13 @@ dependencies = [ [[package]] name = "reth-rpc" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-consensus", "alloy-dyn-abi", "alloy-eip7928", "alloy-eips", - "alloy-evm 0.29.2", + "alloy-evm", "alloy-genesis", "alloy-network", "alloy-primitives", @@ -11947,7 +11931,7 @@ dependencies = [ [[package]] name = "reth-rpc-api" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-eip7928", "alloy-eips", @@ -11978,7 +11962,7 @@ dependencies = [ [[package]] name = "reth-rpc-builder" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-network", "alloy-provider", @@ -12021,29 +12005,27 @@ dependencies = [ [[package]] name = "reth-rpc-convert" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-consensus", - "alloy-evm 0.29.2", + "alloy-evm", "alloy-json-rpc", "alloy-network", "alloy-primitives", "alloy-rpc-types-eth", - "alloy-signer", "auto_impl", "dyn-clone", "jsonrpsee-types", - "op-alloy-consensus", - "op-alloy-rpc-types", "reth-evm", "reth-primitives-traits", + "reth-rpc-traits", "thiserror 2.0.18", ] [[package]] name = "reth-rpc-engine-api" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-eips", "alloy-primitives", @@ -12074,12 +12056,12 @@ dependencies = [ [[package]] name = "reth-rpc-eth-api" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-consensus", "alloy-dyn-abi", "alloy-eips", - "alloy-evm 0.29.2", + "alloy-evm", "alloy-json-rpc", "alloy-network", "alloy-primitives", @@ -12118,11 +12100,11 @@ dependencies = [ [[package]] name = "reth-rpc-eth-types" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-evm 0.29.2", + "alloy-evm", "alloy-network", "alloy-primitives", "alloy-rpc-client", @@ -12166,7 +12148,7 @@ dependencies = [ [[package]] name = "reth-rpc-layer" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-rpc-types-engine", "http", @@ -12180,7 +12162,7 @@ dependencies = [ [[package]] name = "reth-rpc-server-types" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-eips", "alloy-primitives", @@ -12193,10 +12175,25 @@ dependencies = [ "strum", ] +[[package]] +name = "reth-rpc-traits" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9230acfd70f7f27bc52da3f397e1896432ce160f9bd460d9788f1a28d61588c" +dependencies = [ + "alloy-consensus", + "alloy-network", + "alloy-primitives", + "alloy-rpc-types-eth", + "alloy-signer", + "reth-primitives-traits", + "thiserror 2.0.18", +] + [[package]] name = "reth-stages" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-consensus", "alloy-eips", @@ -12248,7 +12245,7 @@ dependencies = [ [[package]] name = "reth-stages-api" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-eips", "alloy-primitives", @@ -12276,7 +12273,7 @@ dependencies = [ [[package]] name = "reth-stages-types" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-primitives", "arbitrary", @@ -12290,7 +12287,7 @@ dependencies = [ [[package]] name = "reth-static-file" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-primitives", "parking_lot", @@ -12310,7 +12307,7 @@ dependencies = [ [[package]] name = "reth-static-file-types" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-primitives", "clap", @@ -12325,7 +12322,7 @@ dependencies = [ [[package]] name = "reth-storage-api" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-consensus", "alloy-eips", @@ -12349,7 +12346,7 @@ dependencies = [ [[package]] name = "reth-storage-errors" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-eips", "alloy-primitives", @@ -12367,7 +12364,7 @@ dependencies = [ [[package]] name = "reth-tasks" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "crossbeam-utils", "dashmap", @@ -12388,7 +12385,7 @@ dependencies = [ [[package]] name = "reth-testing-utils" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-consensus", "alloy-eips", @@ -12404,7 +12401,7 @@ dependencies = [ [[package]] name = "reth-tokio-util" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "tokio", "tokio-stream", @@ -12414,7 +12411,7 @@ dependencies = [ [[package]] name = "reth-tracing" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "clap", "eyre", @@ -12433,7 +12430,7 @@ dependencies = [ [[package]] name = "reth-tracing-otlp" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "clap", "eyre", @@ -12451,7 +12448,7 @@ dependencies = [ [[package]] name = "reth-transaction-pool" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-consensus", "alloy-eips", @@ -12497,7 +12494,7 @@ dependencies = [ [[package]] name = "reth-trie" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-consensus", "alloy-eips", @@ -12523,7 +12520,7 @@ dependencies = [ [[package]] name = "reth-trie-common" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-consensus", "alloy-primitives", @@ -12550,7 +12547,7 @@ dependencies = [ [[package]] name = "reth-trie-db" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-primitives", "metrics", @@ -12570,13 +12567,14 @@ dependencies = [ [[package]] name = "reth-trie-parallel" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-eip7928", "alloy-evm", "alloy-primitives", "alloy-rlp", "crossbeam-channel", + "crossbeam-utils", "derive_more", "itertools 0.14.0", "metrics", @@ -12597,7 +12595,7 @@ dependencies = [ [[package]] name = "reth-trie-sparse" version = "1.11.3" -source = "git+https://github.com/paradigmxyz/reth?rev=f0d07c3#f0d07c38be40c173abab5879b49a20dc4126c427" +source = "git+https://github.com/paradigmxyz/reth?rev=082c36e#082c36ebee634baacacc4ca556ae77f7f60df708" dependencies = [ "alloy-primitives", "alloy-rlp", diff --git a/rust/Cargo.toml b/rust/Cargo.toml index 16037feac4fc6..11e8c9848616b 100644 --- a/rust/Cargo.toml +++ b/rust/Cargo.toml @@ -297,82 +297,85 @@ op-alloy-rpc-jsonrpsee = { version = "0.24.0", path = "op-alloy/crates/rpc-jsonr alloy-op-evm = { version = "0.30.0", path = "alloy-op-evm/", default-features = false } alloy-op-hardforks = { version = "0.4.7", path = "alloy-op-hardforks/", default-features = false } -# ==================== RETH CRATES (main @ e3dbdbb) ==================== -reth = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } -reth-basic-payload-builder = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } -reth-chain-state = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } -reth-chainspec = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3", default-features = false } -reth-cli = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } -reth-cli-commands = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } -reth-cli-runner = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } -reth-cli-util = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } +# ==================== RETH CRATES (crates.io) ==================== reth-codecs = { version = "0.1.0", default-features = false, features = ["alloy"] } reth-codecs-derive = "0.1.0" -reth-consensus = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3", default-features = false } -reth-consensus-common = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3", default-features = false } -reth-db = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3", default-features = false } -reth-db-api = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } -reth-db-common = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } -reth-downloaders = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } -reth-e2e-test-utils = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } -reth-engine-local = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } -reth-engine-primitives = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3", default-features = false } -reth-errors = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } -reth-eth-wire = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } -reth-eth-wire-types = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } -reth-ethereum = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } -reth-ethereum-cli = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } -reth-ethereum-consensus = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } -reth-ethereum-forks = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3", default-features = false } -reth-ethereum-primitives = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } -reth-evm = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3", default-features = false } -reth-evm-ethereum = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } -reth-exex = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } -reth-exex-test-utils = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } -reth-execution-errors = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3", default-features = false } -reth-execution-types = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3", default-features = false } -reth-fs-util = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } -reth-metrics = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } -reth-network = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } -reth-network-api = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } -reth-network-peers = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3", default-features = false } -reth-node-api = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } -reth-node-builder = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } -reth-node-core = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } -reth-node-ethereum = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } -reth-node-events = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } -reth-node-metrics = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } -reth-payload-builder = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } -reth-payload-builder-primitives = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } -reth-payload-primitives = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } -reth-payload-util = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } -reth-payload-validator = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } reth-primitives-traits = { version = "0.1.0", default-features = false } -reth-provider = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } -reth-prune = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } -reth-prune-types = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3", default-features = false } -reth-revm = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3", default-features = false } -reth-rpc = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } -reth-rpc-api = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } -reth-rpc-builder = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } -reth-rpc-engine-api = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } -reth-rpc-eth-api = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } -reth-rpc-eth-types = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3", default-features = false } -reth-rpc-server-types = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } -reth-stages = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } -reth-stages-types = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3", default-features = false } -reth-static-file = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } -reth-static-file-types = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3", default-features = false } -reth-storage-api = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3", default-features = false } -reth-storage-errors = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3", default-features = false } -reth-tasks = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } -reth-tracing = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3", default-features = false } -reth-transaction-pool = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } -reth-trie = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } -reth-trie-common = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3", default-features = false } -reth-trie-db = { git = "https://github.com/paradigmxyz/reth", rev = "f0d07c3" } +reth-rpc-traits = { version = "0.1.0", default-features = false } reth-zstd-compressors = { version = "0.1.0", default-features = false } +# ==================== RETH CRATES (git @ f0d07c3) ==================== +reth = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e" } +reth-basic-payload-builder = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e" } +reth-chain-state = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e" } +reth-chainspec = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e", default-features = false } +reth-cli = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e" } +reth-cli-commands = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e" } +reth-cli-runner = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e" } +reth-cli-util = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e" } +reth-consensus = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e", default-features = false } +reth-consensus-common = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e", default-features = false } +reth-db = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e", default-features = false } +reth-db-api = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e" } +reth-db-common = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e" } +reth-downloaders = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e" } +reth-e2e-test-utils = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e" } +reth-engine-local = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e" } +reth-engine-primitives = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e", default-features = false } +reth-errors = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e" } +reth-eth-wire = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e" } +reth-eth-wire-types = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e" } +reth-ethereum = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e" } +reth-ethereum-cli = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e" } +reth-ethereum-consensus = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e" } +reth-ethereum-forks = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e", default-features = false } +reth-ethereum-primitives = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e" } +reth-evm = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e", default-features = false } +reth-evm-ethereum = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e" } +reth-exex = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e" } +reth-exex-test-utils = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e" } +reth-execution-errors = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e", default-features = false } +reth-execution-types = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e", default-features = false } +reth-fs-util = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e" } +reth-metrics = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e" } +reth-network = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e" } +reth-network-api = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e" } +reth-network-peers = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e", default-features = false } +reth-node-api = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e" } +reth-node-builder = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e" } +reth-node-core = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e" } +reth-node-ethereum = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e" } +reth-node-events = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e" } +reth-node-metrics = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e" } +reth-payload-builder = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e" } +reth-payload-builder-primitives = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e" } +reth-payload-primitives = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e" } +reth-payload-util = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e" } +reth-payload-validator = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e" } +reth-provider = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e" } +reth-prune = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e" } +reth-prune-types = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e", default-features = false } +reth-revm = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e", default-features = false } +reth-rpc = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e" } +reth-rpc-api = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e" } +reth-rpc-builder = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e" } +reth-rpc-engine-api = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e" } +reth-rpc-eth-api = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e" } +reth-rpc-eth-types = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e", default-features = false } +reth-rpc-server-types = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e" } +reth-stages = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e" } +reth-stages-types = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e", default-features = false } +reth-static-file = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e" } +reth-static-file-types = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e", default-features = false } +reth-storage-api = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e", default-features = false } +reth-storage-errors = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e", default-features = false } +reth-tasks = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e" } +reth-tracing = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e", default-features = false } +reth-transaction-pool = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e" } +reth-trie = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e" } +reth-trie-common = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e", default-features = false } +reth-trie-db = { git = "https://github.com/paradigmxyz/reth", rev = "082c36e" } + # ==================== REVM (latest: op-reth versions) ==================== revm = { version = "36.0.0", default-features = false } revm-bytecode = { version = "9.0.0", default-features = false } @@ -650,16 +653,6 @@ snmalloc-rs = { version = "0.3.8", features = ["build_cc"] } rocksdb = { version = "0.24.0", default-features = false } [patch.crates-io] -# Duplicated by: reth-payload-primitives, reth-engine-local (reth git), rollup-boost, -# rollup-boost-types (crates.io) +# Duplicated by: rollup-boost, rollup-boost-types (git) op-alloy-rpc-types-engine = { path = "op-alloy/crates/rpc-types-engine" } -# Duplicated by: reth-codecs, reth-db-api, reth-primitives-traits, reth-rpc-convert (reth git) op-alloy-consensus = { path = "op-alloy/crates/consensus" } -# Duplicated by: reth-rpc-convert (reth git) -op-alloy-network = { path = "op-alloy/crates/network" } -# Duplicated by: reth-rpc-convert (reth git) -op-alloy-rpc-types = { path = "op-alloy/crates/rpc-types" } -# Duplicated by: alloy-evm (crates.io) -op-alloy = { path = "op-alloy/crates/op-alloy" } -# Duplicated by: alloy-evm (crates.io) -alloy-op-hardforks = { path = "alloy-op-hardforks/" } diff --git a/rust/alloy-op-evm/src/block/mod.rs b/rust/alloy-op-evm/src/block/mod.rs index 9ccaeb2fd8be8..c064617cc38d9 100644 --- a/rust/alloy-op-evm/src/block/mod.rs +++ b/rust/alloy-op-evm/src/block/mod.rs @@ -574,7 +574,12 @@ mod tests { gas_limit: u64, jovian_timestamp: u64, ) -> OpBlockExecutor< - OpEvm<&'a mut State, NoOpInspector>, + OpEvm< + &'a mut State, + NoOpInspector, + op_revm::precompiles::OpPrecompiles, + crate::OpTx, + >, &'a OpAlloyReceiptBuilder, &'a OpChainHardforks, > { diff --git a/rust/alloy-op-evm/src/tx.rs b/rust/alloy-op-evm/src/tx.rs index 096c43655597f..b519914e9c952 100644 --- a/rust/alloy-op-evm/src/tx.rs +++ b/rust/alloy-op-evm/src/tx.rs @@ -1,11 +1,11 @@ //! [`OpTx`] newtype wrapper around [`OpTransaction`]. +use crate::block::OpTxEnv; use alloy_consensus::{ Signed, TxEip1559, TxEip2930, TxEip4844, TxEip4844Variant, TxEip7702, TxLegacy, }; use alloy_eips::{Encodable2718, Typed2718, eip7594::Encodable7594}; -use alloy_evm::{FromRecoveredTx, FromTxWithEncoded, IntoTxEnv}; -use crate::block::OpTxEnv; +use alloy_evm::{FromRecoveredTx, FromTxWithEncoded, IntoTxEnv, TransactionEnvMut}; use alloy_primitives::{Address, B256, Bytes, TxKind, U256}; use core::ops::{Deref, DerefMut}; use op_alloy::consensus::{OpTxEnvelope, TxDeposit}; @@ -215,3 +215,17 @@ impl FromTxWithEncoded for OpTx { Self(OpTransaction { base, enveloped_tx: Some(encoded), deposit }) } } + +impl TransactionEnvMut for OpTx { + fn set_gas_limit(&mut self, gas_limit: u64) { + self.0.base.gas_limit = gas_limit; + } + + fn set_nonce(&mut self, nonce: u64) { + self.0.base.nonce = nonce; + } + + fn set_access_list(&mut self, access_list: alloy_eips::eip2930::AccessList) { + self.0.base.access_list = access_list; + } +} diff --git a/rust/kona/bin/host/src/interop/handler.rs b/rust/kona/bin/host/src/interop/handler.rs index 1cd794cb17ef0..c2d7953bd22de 100644 --- a/rust/kona/bin/host/src/interop/handler.rs +++ b/rust/kona/bin/host/src/interop/handler.rs @@ -35,8 +35,6 @@ use kona_protocol::{BlockInfo, OutputRoot, Predeploys}; use kona_providers_alloy::BlobWithCommitmentAndProof; use kona_registry::{L1_CONFIGS, ROLLUP_CONFIGS}; use op_alloy_rpc_types_engine::OpPayloadAttributes; -use op_revm::OpTransaction; -use revm::context::TxEnv; use std::sync::Arc; use tokio::task; use tracing::{Instrument, debug, info, info_span, warn}; @@ -567,7 +565,7 @@ impl HintHandler for InteropHintHandler { rollup_config.as_ref(), l2_provider.clone(), l2_provider, - OpEvmFactory::>::default(), + OpEvmFactory::::default(), None, ); let mut driver = Driver::new(cursor, executor, pipeline); diff --git a/rust/kona/crates/proof/executor/src/db/mod.rs b/rust/kona/crates/proof/executor/src/db/mod.rs index 4ff84f248ca1c..aa2d8e2a2600c 100644 --- a/rust/kona/crates/proof/executor/src/db/mod.rs +++ b/rust/kona/crates/proof/executor/src/db/mod.rs @@ -62,7 +62,7 @@ pub use traits::{NoopTrieDBProvider, TrieDBProvider}; /// let executor_factory = OpBlockExecutorFactory::new( /// OpAlloyReceiptBuilder::default(), /// OpChainHardforks::op_mainnet(), -/// OpEvmFactory::>::default(), +/// OpEvmFactory::::default(), /// ); /// let mut state = State::builder().with_database(trie_db).with_bundle_update().build(); /// let evm = executor_factory.evm_factory().create_evm(&mut state, EvmEnv::default()); diff --git a/rust/kona/crates/proof/executor/src/test_utils.rs b/rust/kona/crates/proof/executor/src/test_utils.rs index db9000a84ac84..2d392f4f5b03c 100644 --- a/rust/kona/crates/proof/executor/src/test_utils.rs +++ b/rust/kona/crates/proof/executor/src/test_utils.rs @@ -13,8 +13,6 @@ use kona_genesis::RollupConfig; use kona_mpt::{NoopTrieHinter, TrieNode, TrieProvider}; use kona_registry::ROLLUP_CONFIGS; use op_alloy_rpc_types_engine::OpPayloadAttributes; -use op_revm::OpTransaction; -use revm::context::TxEnv; use rocksdb::{DB, Options}; use serde::{Deserialize, Serialize}; use std::{path::PathBuf, sync::Arc}; @@ -47,7 +45,7 @@ pub async fn run_test_fixture(fixture_path: PathBuf) { let mut executor = StatelessL2Builder::new( &fixture.rollup_config, - OpEvmFactory::>::default(), + OpEvmFactory::::default(), provider, NoopTrieHinter, fixture.parent_header.seal_slow(), @@ -183,7 +181,7 @@ impl ExecutorTestFixtureCreator { let mut executor = StatelessL2Builder::new( rollup_config, - OpEvmFactory::>::default(), + OpEvmFactory::::default(), self, NoopTrieHinter, parent_header, diff --git a/rust/op-alloy/crates/consensus/src/reth_codec.rs b/rust/op-alloy/crates/consensus/src/reth_codec.rs index 4d67be66c3175..d3bd124f5840d 100644 --- a/rust/op-alloy/crates/consensus/src/reth_codec.rs +++ b/rust/op-alloy/crates/consensus/src/reth_codec.rs @@ -1,4 +1,15 @@ //! Compact codec implementations for OP Stack consensus types. +//! +//! Ported from reth v1.11.3 (`d6324d63e`), where they lived behind the `op` feature: +//! - Transaction codecs: `crates/storage/codecs/src/alloy/transaction/optimism.rs` +//! - Receipt codecs: `crates/storage/codecs/src/alloy/optimism.rs` +//! +//! Differences from upstream: +//! - `CompactOpReceipt` uses `Vec` instead of `Cow<'a, Vec>` because the crates.io +//! `reth-codecs-derive` macro doesn't support lifetime parameters. The wire format is identical; +//! only serialization performance differs (clone vs borrow). +//! - `Compress`/`Decompress` impls for `OpTxEnvelope` and `OpReceipt` are added here since they +//! were previously provided by reth's in-tree codecs crate. use crate::{OpReceipt, OpTxEnvelope, OpTxType, OpTypedTransaction, TxDeposit}; use alloc::vec::Vec; @@ -61,7 +72,7 @@ struct CompactTxDeposit { source_hash: B256, from: Address, to: TxKind, - mint: u128, + mint: Option, value: U256, gas_limit: u64, is_system_transaction: bool, @@ -74,7 +85,10 @@ impl From<&TxDeposit> for CompactTxDeposit { source_hash: tx.source_hash, from: tx.from, to: tx.to, - mint: tx.mint, + mint: match tx.mint { + 0 => None, + v => Some(v), + }, value: tx.value, gas_limit: tx.gas_limit, is_system_transaction: tx.is_system_transaction, @@ -89,7 +103,7 @@ impl From for TxDeposit { source_hash: tx.source_hash, from: tx.from, to: tx.to, - mint: tx.mint, + mint: tx.mint.unwrap_or_default(), value: tx.value, gas_limit: tx.gas_limit, is_system_transaction: tx.is_system_transaction, @@ -295,16 +309,16 @@ struct CompactOpReceipt { impl From<&OpReceipt> for CompactOpReceipt { fn from(receipt: &OpReceipt) -> Self { - let inner = receipt.as_receipt(); + use alloy_consensus::TxReceipt; let (deposit_nonce, deposit_receipt_version) = match receipt { OpReceipt::Deposit(deposit) => (deposit.deposit_nonce, deposit.deposit_receipt_version), _ => (None, None), }; Self { tx_type: receipt.tx_type(), - success: inner.status.coerce_status(), - cumulative_gas_used: inner.cumulative_gas_used, - logs: inner.logs.clone(), + success: receipt.status(), + cumulative_gas_used: receipt.cumulative_gas_used(), + logs: receipt.as_receipt().logs.clone(), deposit_nonce, deposit_receipt_version, } @@ -314,7 +328,7 @@ impl From<&OpReceipt> for CompactOpReceipt { impl From for OpReceipt { fn from(compact: CompactOpReceipt) -> Self { let receipt = Receipt { - status: alloy_consensus::Eip658Value::Eip658(compact.success), + status: compact.success.into(), cumulative_gas_used: compact.cumulative_gas_used, logs: compact.logs, }; diff --git a/rust/op-alloy/crates/consensus/src/reth_core.rs b/rust/op-alloy/crates/consensus/src/reth_core.rs index 8e4cd8dce9acf..585eca1cb602f 100644 --- a/rust/op-alloy/crates/consensus/src/reth_core.rs +++ b/rust/op-alloy/crates/consensus/src/reth_core.rs @@ -1,4 +1,13 @@ //! Implementations of `InMemorySize` for OP Stack consensus types. +//! +//! Ported from reth v1.11.3 (`d6324d63e`): +//! - `crates/primitives-traits/src/size.rs` (behind `cfg(feature = "op")`) +//! +//! Differences from upstream: +//! - `OpTxType` and `TxDeposit` impls are new (upstream only had them for the compound types, but +//! the `reth-core` crate now requires them standalone). +//! - `OpTxEnvelope::Deposit` explicitly sizes the seal hash + inner tx, whereas upstream delegated +//! to `Sealed::size()` which did the same internally. use crate::{ OpDepositReceipt, OpPooledTransaction, OpReceipt, OpTxEnvelope, OpTxType, OpTypedTransaction, diff --git a/rust/op-alloy/crates/op-alloy/Cargo.toml b/rust/op-alloy/crates/op-alloy/Cargo.toml index 373c4fd4f147f..d767a44f3d016 100644 --- a/rust/op-alloy/crates/op-alloy/Cargo.toml +++ b/rust/op-alloy/crates/op-alloy/Cargo.toml @@ -68,6 +68,8 @@ consensus = ["dep:op-alloy-consensus"] rpc-types = ["dep:op-alloy-rpc-types"] rpc-types-engine = ["dep:op-alloy-rpc-types-engine"] +reth = ["rpc-types", "op-alloy-rpc-types/reth"] + # std features network = ["dep:op-alloy-network"] rpc-jsonrpsee = ["dep:op-alloy-rpc-jsonrpsee"] diff --git a/rust/op-alloy/crates/rpc-types/Cargo.toml b/rust/op-alloy/crates/rpc-types/Cargo.toml index 9934cbb032617..b0e2fce1148ed 100644 --- a/rust/op-alloy/crates/rpc-types/Cargo.toml +++ b/rust/op-alloy/crates/rpc-types/Cargo.toml @@ -32,6 +32,9 @@ serde = { workspace = true, features = ["derive"] } # RPC jsonrpsee = { workspace = true, optional = true } +reth-rpc-traits = { workspace = true, optional = true } +alloy-signer = { workspace = true, optional = true } +alloy-network = { workspace = true, optional = true } # arbitrary arbitrary = { workspace = true, features = ["derive"], optional = true } @@ -61,7 +64,8 @@ std = [ "derive_more/std", "serde/std", "serde_json/std", - "thiserror/std" + "thiserror/std", + "reth-rpc-traits?/std" ] arbitrary = [ "std", @@ -83,3 +87,4 @@ serde = [ "alloy-rpc-types-eth/serde" ] jsonrpsee = ["dep:jsonrpsee"] +reth = ["dep:reth-rpc-traits", "dep:alloy-signer", "dep:alloy-network"] diff --git a/rust/op-alloy/crates/rpc-types/src/lib.rs b/rust/op-alloy/crates/rpc-types/src/lib.rs index e34acc9726c62..f77b33eeec763 100644 --- a/rust/op-alloy/crates/rpc-types/src/lib.rs +++ b/rust/op-alloy/crates/rpc-types/src/lib.rs @@ -20,3 +20,6 @@ pub use transaction::{OpTransactionFields, OpTransactionRequest, Transaction}; pub mod error; pub use error::SuperchainDAError; + +#[cfg(feature = "reth")] +mod reth_compat; diff --git a/rust/op-alloy/crates/rpc-types/src/reth_compat.rs b/rust/op-alloy/crates/rpc-types/src/reth_compat.rs new file mode 100644 index 0000000000000..a0153d63dc0da --- /dev/null +++ b/rust/op-alloy/crates/rpc-types/src/reth_compat.rs @@ -0,0 +1,65 @@ +//! Implementations of `reth-rpc-traits` for OP types. +//! +//! Ported from reth v1.11.3 (`d6324d63e`), where they lived behind `cfg(feature = "op")`: +//! - `FromConsensusTx`, `TryIntoSimTx`: `crates/rpc/rpc-convert/src/transaction.rs` +//! - `SignableTxRequest`: `crates/rpc/rpc-convert/src/rpc.rs` +//! +//! The traits themselves moved from `reth-rpc-convert` to the published `reth-rpc-traits` +//! crate (v0.1.0), so the impls now target `reth-rpc-traits` types. The logic is identical +//! to upstream. + +use alloy_consensus::SignableTransaction; +use alloy_primitives::Address; +use alloy_signer::Signature; +use core::convert::Infallible; +use op_alloy_consensus::{ + OpTxEnvelope, TxDeposit, + transaction::{OpTransaction, OpTransactionInfo}, +}; +use reth_rpc_traits::{FromConsensusTx, SignTxRequestError, SignableTxRequest, TryIntoSimTx}; + +use crate::OpTransactionRequest; + +impl FromConsensusTx for crate::Transaction { + type TxInfo = OpTransactionInfo; + type Err = Infallible; + + fn from_consensus_tx(tx: T, signer: Address, tx_info: Self::TxInfo) -> Result { + Ok(Self::from_transaction( + alloy_consensus::transaction::Recovered::new_unchecked(tx, signer), + tx_info, + )) + } +} + +impl TryIntoSimTx for OpTransactionRequest { + fn try_into_sim_tx(self) -> Result> { + let tx = self.build_typed_tx().map_err(|request| { + alloy_consensus::error::ValueError::new(request, "Required fields missing") + })?; + + // Create an empty signature for the transaction. + let signature = Signature::new(Default::default(), Default::default(), false); + + Ok(tx.into_signed(signature).into()) + } +} + +impl SignableTxRequest for OpTransactionRequest { + async fn try_build_and_sign( + self, + signer: impl alloy_network::TxSigner + Send, + ) -> Result { + let mut tx = + self.build_typed_tx().map_err(|_| SignTxRequestError::InvalidTransactionRequest)?; + + // Deposit transactions must not be signed by the user. + if matches!(tx, op_alloy_consensus::OpTypedTransaction::Deposit(TxDeposit { .. })) { + return Err(SignTxRequestError::InvalidTransactionRequest); + } + + let signature = signer.sign_transaction(&mut tx).await?; + + Ok(tx.into_signed(signature).into()) + } +} diff --git a/rust/op-reth/crates/consensus/src/validation/isthmus.rs b/rust/op-reth/crates/consensus/src/validation/isthmus.rs index 00f36a94b532a..cf9309b9268a3 100644 --- a/rust/op-reth/crates/consensus/src/validation/isthmus.rs +++ b/rust/op-reth/crates/consensus/src/validation/isthmus.rs @@ -3,7 +3,6 @@ use crate::OpConsensusError; use alloy_consensus::BlockHeader; use alloy_primitives::B256; -use alloy_primitives::keccak256; use alloy_trie::EMPTY_ROOT_HASH; use reth_optimism_primitives::L2_TO_L1_MESSAGE_PASSER_ADDRESS; use reth_storage_api::{StorageRootProvider, errors::ProviderResult}; @@ -35,11 +34,9 @@ pub fn withdrawals_root( .state() .get(&L2_TO_L1_MESSAGE_PASSER_ADDRESS) .map(|acc| { - HashedStorage::from_iter( - acc.status.was_destroyed(), - acc.storage.iter().map(|(slot, value)| { - (keccak256(B256::from(*slot)), value.present_value) - }), + HashedStorage::from_plain_storage( + acc.status, + acc.storage.iter().map(|(slot, value)| (slot, &value.present_value)), ) }) .unwrap_or_default(), diff --git a/rust/op-reth/crates/evm/src/lib.rs b/rust/op-reth/crates/evm/src/lib.rs index 88fbac3631aed..4654ee0947ff0 100644 --- a/rust/op-reth/crates/evm/src/lib.rs +++ b/rust/op-reth/crates/evm/src/lib.rs @@ -141,7 +141,7 @@ where EvmF: EvmFactory< Tx: FromRecoveredTx + FromTxWithEncoded - + TransactionEnv + + alloy_evm::TransactionEnvMut + OpTxEnv, Precompiles = PrecompilesMap, Spec = OpSpecId, diff --git a/rust/op-reth/crates/evm/src/tx.rs b/rust/op-reth/crates/evm/src/tx.rs index 7792e13ae2858..26bd3d881b7c9 100644 --- a/rust/op-reth/crates/evm/src/tx.rs +++ b/rust/op-reth/crates/evm/src/tx.rs @@ -1,244 +1,42 @@ -//! [`OpTx`] newtype wrapper around [`OpTransaction`]. +//! OP transaction environment types. -use alloy_consensus::{ - Signed, TxEip1559, TxEip2930, TxEip4844, TxEip4844Variant, TxEip7702, TxLegacy, -}; -use alloy_eips::{Encodable2718, Typed2718, eip7594::Encodable7594}; -use alloy_evm::{FromRecoveredTx, FromTxWithEncoded, IntoTxEnv}; -use alloy_op_evm::block::OpTxEnv; -use alloy_primitives::{Address, B256, Bytes, TxKind, U256}; -use core::ops::{Deref, DerefMut}; -use op_alloy_consensus::{OpTxEnvelope, TxDeposit}; -use op_revm::{OpTransaction, transaction::deposit::DepositTransactionParts}; -use alloy_evm::TransactionEnvMut; -use revm::context::TxEnv; +pub use alloy_op_evm::OpTx; -/// Helper to convert a deposit transaction into a [`TxEnv`]. -fn deposit_tx_env(tx: &TxDeposit, caller: Address) -> TxEnv { - TxEnv { - tx_type: tx.ty(), - caller, - gas_limit: tx.gas_limit, - kind: tx.to, - value: tx.value, - data: tx.input.clone(), - ..Default::default() - } -} - -/// Newtype wrapper around [`OpTransaction`] that allows implementing foreign traits. -#[derive(Clone, Debug, Default)] -pub struct OpTx(pub OpTransaction); - -impl From for OpTransaction { - fn from(tx: OpTx) -> Self { - tx.0 - } -} - -impl Deref for OpTx { - type Target = OpTransaction; - - fn deref(&self) -> &Self::Target { - &self.0 - } -} - -impl DerefMut for OpTx { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } -} - -impl IntoTxEnv for OpTx { - fn into_tx_env(self) -> Self { - self - } -} - -impl OpTxEnv for OpTx { - fn encoded_bytes(&self) -> Option<&Bytes> { - self.0.enveloped_tx.as_ref() - } -} +/// Converter that builds an [`OpTx`] from an +/// [`OpTransactionRequest`](op_alloy_rpc_types::OpTransactionRequest). +/// +/// Implements `TxEnvConverter` for use in `RpcConverter`, bypassing the orphan rule +/// issue with `TryIntoTxEnv` (neither `OpTransactionRequest` nor the trait is local). +#[derive(Debug, Clone, Copy, Default)] +pub struct OpTxEnvConverter; -impl revm::context::Transaction for OpTx { - type AccessListItem<'a> - = as revm::context::Transaction>::AccessListItem<'a> - where - Self: 'a; - type Authorization<'a> - = as revm::context::Transaction>::Authorization<'a> +#[cfg(feature = "rpc")] +mod rpc_impl { + use super::*; + use alloy_evm::rpc::{EthTxEnvError, TryIntoTxEnv}; + use op_alloy_rpc_types::OpTransactionRequest; + use reth_evm::ConfigureEvm; + use reth_rpc_eth_api::transaction::TxEnvConverter; + + impl TxEnvConverter for OpTxEnvConverter where - Self: 'a; - - fn tx_type(&self) -> u8 { - self.0.tx_type() - } - fn caller(&self) -> Address { - self.0.caller() - } - fn gas_limit(&self) -> u64 { - self.0.gas_limit() - } - fn value(&self) -> U256 { - self.0.value() - } - fn input(&self) -> &Bytes { - self.0.input() - } - fn nonce(&self) -> u64 { - revm::context::Transaction::nonce(&self.0) - } - fn kind(&self) -> TxKind { - self.0.kind() - } - fn chain_id(&self) -> Option { - self.0.chain_id() - } - fn gas_price(&self) -> u128 { - self.0.gas_price() - } - fn access_list(&self) -> Option>> { - self.0.access_list() - } - fn blob_versioned_hashes(&self) -> &[B256] { - self.0.blob_versioned_hashes() - } - fn max_fee_per_blob_gas(&self) -> u128 { - self.0.max_fee_per_blob_gas() - } - fn authorization_list_len(&self) -> usize { - self.0.authorization_list_len() - } - fn authorization_list(&self) -> impl Iterator> { - self.0.authorization_list() - } - fn max_priority_fee_per_gas(&self) -> Option { - self.0.max_priority_fee_per_gas() - } -} - -impl FromRecoveredTx for OpTx { - fn from_recovered_tx(tx: &OpTxEnvelope, sender: Address) -> Self { - let encoded = tx.encoded_2718(); - Self::from_encoded_tx(tx, sender, encoded.into()) - } -} - -impl FromTxWithEncoded for OpTx { - fn from_encoded_tx(tx: &OpTxEnvelope, caller: Address, encoded: Bytes) -> Self { - match tx { - OpTxEnvelope::Legacy(tx) => Self::from_encoded_tx(tx, caller, encoded), - OpTxEnvelope::Eip1559(tx) => Self::from_encoded_tx(tx, caller, encoded), - OpTxEnvelope::Eip2930(tx) => Self::from_encoded_tx(tx, caller, encoded), - OpTxEnvelope::Eip7702(tx) => Self::from_encoded_tx(tx, caller, encoded), - OpTxEnvelope::Deposit(tx) => Self::from_encoded_tx(tx.inner(), caller, encoded), + Evm: ConfigureEvm, + reth_evm::TxEnvFor: From, + { + type Error = EthTxEnvError; + + fn convert_tx_env( + &self, + req: OpTransactionRequest, + evm_env: &reth_evm::EvmEnvFor, + ) -> Result, Self::Error> { + let base: revm::context::TxEnv = req.as_ref().clone().try_into_tx_env(evm_env)?; + let op_tx = OpTx(op_revm::OpTransaction { + base, + enveloped_tx: Some(alloy_primitives::Bytes::new()), + deposit: Default::default(), + }); + Ok(op_tx.into()) } } } - -/// Generates [`FromRecoveredTx`] and [`FromTxWithEncoded`] impls for [`OpTx`] from a -/// `Signed<$tx>` and bare `$tx` type. The bare type conversion creates the [`TxEnv`] via -/// [`FromRecoveredTx`] and wraps it in an [`OpTransaction`]. -macro_rules! impl_from_tx { - ($($tx:ty),+ $(,)?) => { - $( - impl FromRecoveredTx> for OpTx { - fn from_recovered_tx(tx: &Signed<$tx>, sender: Address) -> Self { - let encoded = tx.encoded_2718(); - Self::from_encoded_tx(tx, sender, encoded.into()) - } - } - - impl FromTxWithEncoded> for OpTx { - fn from_encoded_tx(tx: &Signed<$tx>, caller: Address, encoded: Bytes) -> Self { - Self::from_encoded_tx(tx.tx(), caller, encoded) - } - } - - impl FromTxWithEncoded<$tx> for OpTx { - fn from_encoded_tx(tx: &$tx, caller: Address, encoded: Bytes) -> Self { - let base = TxEnv::from_recovered_tx(tx, caller); - Self(OpTransaction { - base, - enveloped_tx: Some(encoded), - deposit: Default::default(), - }) - } - } - )+ - }; -} - -impl_from_tx!(TxLegacy, TxEip2930, TxEip1559, TxEip4844, TxEip7702); - -/// `TxEip4844Variant` conversion is not necessary for `OpTx`, but it's useful -/// sugar for Foundry. -impl FromRecoveredTx>> for OpTx -where - T: Encodable7594 + Send + Sync, -{ - fn from_recovered_tx(tx: &Signed>, sender: Address) -> Self { - let encoded = tx.encoded_2718(); - Self::from_encoded_tx(tx, sender, encoded.into()) - } -} - -impl FromTxWithEncoded>> for OpTx { - fn from_encoded_tx(tx: &Signed>, caller: Address, encoded: Bytes) -> Self { - Self::from_encoded_tx(tx.tx(), caller, encoded) - } -} - -impl FromTxWithEncoded> for OpTx { - fn from_encoded_tx(tx: &TxEip4844Variant, caller: Address, encoded: Bytes) -> Self { - let base = TxEnv::from_recovered_tx(tx, caller); - Self(OpTransaction { base, enveloped_tx: Some(encoded), deposit: Default::default() }) - } -} - -impl FromRecoveredTx for OpTx { - fn from_recovered_tx(tx: &TxDeposit, sender: Address) -> Self { - let encoded = tx.encoded_2718(); - Self::from_encoded_tx(tx, sender, encoded.into()) - } -} - -impl FromTxWithEncoded for OpTx { - fn from_encoded_tx(tx: &TxDeposit, caller: Address, encoded: Bytes) -> Self { - let base = deposit_tx_env(tx, caller); - let deposit = DepositTransactionParts { - source_hash: tx.source_hash, - mint: Some(tx.mint), - is_system_transaction: tx.is_system_transaction, - }; - Self(OpTransaction { base, enveloped_tx: Some(encoded), deposit }) - } -} - -#[cfg(feature = "rpc")] -impl alloy_evm::rpc::TryIntoTxEnv - for op_alloy_rpc_types::OpTransactionRequest -{ - type Err = alloy_evm::rpc::EthTxEnvError; - - fn try_into_tx_env(self, evm_env: &alloy_evm::EvmEnv) -> Result { - let inner: OpTransaction = self.try_into_tx_env(evm_env)?; - Ok(OpTx(inner)) - } -} - -impl TransactionEnvMut for OpTx { - fn set_gas_limit(&mut self, gas_limit: u64) { - self.0.base.gas_limit = gas_limit; - } - - fn set_nonce(&mut self, nonce: u64) { - self.0.base.nonce = nonce; - } - - fn set_access_list(&mut self, access_list: alloy_eips::eip2930::AccessList) { - self.0.base.access_list = access_list; - } -} diff --git a/rust/op-reth/crates/flashblocks/src/worker.rs b/rust/op-reth/crates/flashblocks/src/worker.rs index 6308ccb4ec220..192c8ea016c7f 100644 --- a/rust/op-reth/crates/flashblocks/src/worker.rs +++ b/rust/op-reth/crates/flashblocks/src/worker.rs @@ -376,9 +376,9 @@ where let BlockBuilderOutcome { execution_result, block, hashed_state, .. } = if args.compute_state_root { trace!(target: "flashblocks", "Computing block state root"); - builder.finish(&state_provider)? + builder.finish(&state_provider, None)? } else { - builder.finish(NoopProvider::default())? + builder.finish(NoopProvider::default(), None)? }; let bundle = state.take_bundle(); diff --git a/rust/op-reth/crates/node/src/node.rs b/rust/op-reth/crates/node/src/node.rs index 431fc27b64190..50e74c70baeba 100644 --- a/rust/op-reth/crates/node/src/node.rs +++ b/rust/op-reth/crates/node/src/node.rs @@ -8,7 +8,7 @@ use crate::{ }; use op_alloy_consensus::{OpPooledTransaction, interop::SafetyLevel}; use reth_chainspec::{ - BaseFeeParams, ChainSpecProvider, EthChainSpec, EthereumHardforks, Hardforks, + BaseFeeParams, ChainSpecProvider, EthChainSpec, EthereumHardforks, ForkCondition, Hardforks, }; use reth_evm::ConfigureEvm; use reth_network::{ @@ -38,7 +38,7 @@ use reth_optimism_consensus::OpBeaconConsensus; use reth_optimism_evm::{OpEvmConfig, OpRethReceiptBuilder}; use reth_optimism_forks::OpHardforks; use reth_optimism_payload_builder::{ - OpBuiltPayload, OpExecData, OpPayloadPrimitives, + OpBuiltPayload, OpExecData, OpPayloadBuilderAttributes, OpPayloadPrimitives, builder::OpPayloadTransactions, config::{OpBuilderConfig, OpDAConfig, OpGasLimitConfig}, }; @@ -565,7 +565,7 @@ where Types: NodeTypes, Evm: ConfigureEvm< NextBlockEnvCtx: BuildNextEnv< - reth_optimism_payload_builder::OpPayloadBuilderAttributes>, + OpPayloadBuilderAttributes>, HeaderTy, ::ChainSpec, >, @@ -623,14 +623,12 @@ where ctx.node.evm_config().clone(), ); // install additional OP specific rpc methods - let debug_ext = OpDebugWitnessApi::< - _, - _, - _, - reth_optimism_payload_builder::OpPayloadBuilderAttributes>, - >::new( - ctx.node.provider().clone(), ctx.node.task_executor().clone(), builder - ); + let debug_ext = + OpDebugWitnessApi::<_, _, _, OpPayloadBuilderAttributes>>::new( + ctx.node.provider().clone(), + ctx.node.task_executor().clone(), + builder, + ); let miner_ext = OpMinerExtApi::new(da_config, gas_limit_config); let sequencer_client = if let Some(url) = sequencer_url { @@ -692,7 +690,7 @@ where Types: NodeTypes, Evm: ConfigureEvm< NextBlockEnvCtx: BuildNextEnv< - reth_optimism_payload_builder::OpPayloadBuilderAttributes>, + OpPayloadBuilderAttributes>, HeaderTy, ::ChainSpec, >, @@ -1203,7 +1201,7 @@ where Evm: ConfigureEvm< Primitives = PrimitivesTy, NextBlockEnvCtx: BuildNextEnv< - reth_optimism_payload_builder::OpPayloadBuilderAttributes>, + OpPayloadBuilderAttributes>, HeaderTy, ::ChainSpec, >, @@ -1216,7 +1214,7 @@ where Node::Provider, Evm, Txs, - reth_optimism_payload_builder::OpPayloadBuilderAttributes>, + OpPayloadBuilderAttributes>, >; async fn build_payload_builder( diff --git a/rust/op-reth/crates/node/src/rpc.rs b/rust/op-reth/crates/node/src/rpc.rs index 816a736921092..e766d6c3f6a5a 100644 --- a/rust/op-reth/crates/node/src/rpc.rs +++ b/rust/op-reth/crates/node/src/rpc.rs @@ -5,7 +5,7 @@ //! Builds offline `TraceApi` with only EVM and database. This can be useful //! for example when downloading a state snapshot (pre-synced node) from some mirror. //! -//! ```rust +//! ```rust,no_run //! use alloy_rpc_types_eth::BlockId; //! use op_alloy_network::Optimism; //! use reth_db::test_utils::create_test_rw_db_with_path; @@ -23,7 +23,7 @@ //! use reth_provider::providers::BlockchainProvider; //! use reth_rpc::TraceApi; //! use reth_rpc_eth_types::{EthConfig, EthStateCache}; -//! use reth_tasks::{Runtime, pool::BlockingTaskGuard}; +//! use reth_tasks::{RuntimeBuilder, pool::BlockingTaskGuard}; //! use reth_trie_db::ChangesetCache; //! use std::sync::Arc; //! @@ -32,7 +32,8 @@ //! // build core node with all components disabled except EVM and state //! let sepolia = NodeConfig::new(OP_SEPOLIA.clone()); //! let db = create_test_rw_db_with_path(sepolia.datadir()); -//! let runtime = Runtime::test(); +//! let runtime = +//! RuntimeBuilder::new(Default::default()).build().expect("failed to build runtime"); //! let launch_ctx = LaunchContext::new(runtime, sepolia.datadir()); //! let node = launch_ctx //! .with_loaded_toml_config(sepolia) diff --git a/rust/op-reth/crates/node/tests/it/custom_genesis.rs b/rust/op-reth/crates/node/tests/it/custom_genesis.rs index ba326b82355b4..d6317eac85384 100644 --- a/rust/op-reth/crates/node/tests/it/custom_genesis.rs +++ b/rust/op-reth/crates/node/tests/it/custom_genesis.rs @@ -1,10 +1,13 @@ //! Tests for custom genesis block number support. +use alloy_consensus::{BlockHeader, Sealable}; use alloy_genesis::Genesis; use alloy_primitives::B256; use reth_chainspec::EthChainSpec; use reth_db::test_utils::create_test_rw_db_with_path; -use reth_e2e_test_utils::node::NodeTestContext; +use reth_e2e_test_utils::{ + node::NodeTestContext, transaction::TransactionTestContext, wallet::Wallet, +}; use reth_node_builder::{EngineNodeLauncher, Node, NodeBuilder, NodeConfig}; use reth_node_core::args::DatadirArgs; use reth_optimism_chainspec::OpChainSpecBuilder; @@ -12,6 +15,7 @@ use reth_optimism_node::{OpNode, utils::optimism_payload_attributes}; use reth_provider::{HeaderProvider, StageCheckpointReader, providers::BlockchainProvider}; use reth_stages_types::StageId; use std::sync::Arc; +use tokio::sync::Mutex; /// Tests that an OP node can initialize with a custom genesis block number. #[tokio::test] @@ -29,6 +33,8 @@ async fn test_op_node_custom_genesis_number() { let chain_spec = Arc::new(OpChainSpecBuilder::base_mainnet().genesis(genesis).ecotone_activated().build()); + let wallet = Arc::new(Mutex::new(Wallet::default().with_chain_id(chain_spec.chain().into()))); + // Configure and launch the node let config = NodeConfig::new(chain_spec.clone()).with_datadir_args(DatadirArgs { datadir: reth_db::test_utils::tempdir_path().into(), @@ -58,7 +64,8 @@ async fn test_op_node_custom_genesis_number() { .await .expect("Failed to launch node"); - let node = NodeTestContext::new(node_handle.node, optimism_payload_attributes).await.unwrap(); + let mut node = + NodeTestContext::new(node_handle.node, optimism_payload_attributes).await.unwrap(); // Verify stage checkpoints are initialized to genesis block number (1000) for stage in StageId::ALL { @@ -80,4 +87,41 @@ async fn test_op_node_custom_genesis_number() { let header = node.inner.provider.header_by_number(block_num).unwrap(); assert!(header.is_none(), "Block {block_num} before genesis should not exist"); } + + // Initialize the forkchoice state with the genesis block hash so that + // `current_forkchoice_state()` can resolve the latest header. With storage_v2, + // the canonical chain tip must be explicitly set via a forkchoice update. + let genesis_hash = genesis_header.unwrap().seal_slow().hash(); + node.update_forkchoice(genesis_hash, genesis_hash).await.unwrap(); + + // Advance the chain with a single block. + let block_payloads = node + .advance(1, |_| { + Box::pin({ + let value = wallet.clone(); + async move { + let mut wallet = value.lock().await; + let tx_fut = TransactionTestContext::optimism_l1_block_info_tx( + wallet.chain_id, + wallet.inner.clone(), + wallet.inner_nonce, + ); + wallet.inner_nonce += 1; + + tx_fut.await + } + }) + }) + .await + .unwrap(); + + assert_eq!(block_payloads.len(), 1); + let block = block_payloads.first().unwrap().block(); + + // Verify the new block is at 1001 (genesis 1000 + 1) + assert_eq!( + block.number(), + 1001, + "Block number should be 1001 after advancing from genesis 1000" + ); } diff --git a/rust/op-reth/crates/payload/Cargo.toml b/rust/op-reth/crates/payload/Cargo.toml index 90ce9e331e451..3c40b3bd7babd 100644 --- a/rust/op-reth/crates/payload/Cargo.toml +++ b/rust/op-reth/crates/payload/Cargo.toml @@ -34,6 +34,7 @@ reth-optimism-txpool.workspace = true # ethereum revm.workspace = true +op-revm.workspace = true alloy-eips.workspace = true alloy-primitives.workspace = true alloy-rlp.workspace = true diff --git a/rust/op-reth/crates/payload/src/builder.rs b/rust/op-reth/crates/payload/src/builder.rs index 3a49c1cc7d10f..3183cc6a734cd 100644 --- a/rust/op-reth/crates/payload/src/builder.rs +++ b/rust/op-reth/crates/payload/src/builder.rs @@ -8,6 +8,7 @@ use alloy_evm::Evm as AlloyEvm; use alloy_primitives::{B256, U256}; use alloy_rpc_types_debug::ExecutionWitness; use alloy_rpc_types_engine::PayloadId; +use op_revm::{L1BlockInfo, constants::L1_BLOCK_CONTRACT}; use reth_basic_payload_builder::*; use reth_chainspec::{ChainSpecProvider, EthChainSpec}; use reth_evm::{ @@ -16,7 +17,6 @@ use reth_evm::{ execute::{ BlockBuilder, BlockBuilderOutcome, BlockExecutionError, BlockExecutor, BlockValidationError, }, - op_revm::{L1BlockInfo, constants::L1_BLOCK_CONTRACT}, }; use reth_execution_types::BlockExecutionOutput; use reth_optimism_forks::OpHardforks; @@ -283,6 +283,7 @@ where config, cached_reads: Default::default(), execution_cache: None, + trie_handle: None, cancel: Default::default(), best_payload: None, }; @@ -303,7 +304,8 @@ fn convert_build_args( BuildArguments, OpBuiltPayload>, PayloadBuilderError, > { - let BuildArguments { config, cached_reads, execution_cache, cancel, best_payload } = args; + let BuildArguments { config, cached_reads, execution_cache, trie_handle, cancel, best_payload } = + args; let parent_hash = config.parent_header.hash(); let payload_id = config.payload_id; let builder_attrs = @@ -317,6 +319,7 @@ fn convert_build_args( }, cached_reads, execution_cache, + trie_handle, cancel, best_payload, }) @@ -406,7 +409,7 @@ impl OpBuilder<'_, Txs> { } let BlockBuilderOutcome { execution_result, hashed_state, trie_updates, block } = - builder.finish(state_provider)?; + builder.finish(state_provider, None)?; let sealed_block = Arc::new(block.sealed_block().clone()); debug!(target: "payload_builder", id=%ctx.attributes().payload_id(), sealed_block_header = ?sealed_block.header(), "sealed built block"); diff --git a/rust/op-reth/crates/payload/src/payload.rs b/rust/op-reth/crates/payload/src/payload.rs index 8336ea46aa894..cedd5a62f5aa6 100644 --- a/rust/op-reth/crates/payload/src/payload.rs +++ b/rust/op-reth/crates/payload/src/payload.rs @@ -168,27 +168,11 @@ pub struct OpPayloadBuilderAttributes { pub min_base_fee: Option, } -impl Default for OpPayloadBuilderAttributes { - fn default() -> Self { - Self { - id: Default::default(), - parent: Default::default(), - timestamp: Default::default(), - suggested_fee_recipient: Default::default(), - prev_randao: Default::default(), - withdrawals: Default::default(), - parent_beacon_block_root: Default::default(), - no_tx_pool: Default::default(), - gas_limit: Default::default(), - eip_1559_params: Default::default(), - transactions: Default::default(), - min_base_fee: Default::default(), - } - } -} - -// Manual serde implementations to satisfy the PayloadAttributes trait bound. -// The transactions field is serialized as the encoded bytes form. +// Manual serde implementations required because: +// - Serialize: the `transactions` field must serialize as encoded bytes (Vec<&Bytes>), not as the +// inner `WithEncoded` type, so #[derive(Serialize)] can't be used. +// - Deserialize: intentionally errors out since this builder type is never deserialized from the +// wire (the engine API uses OpPayloadAttributes, not this builder type). impl serde::Serialize for OpPayloadBuilderAttributes { fn serialize(&self, serializer: S) -> Result { use serde::ser::SerializeStruct; @@ -247,6 +231,25 @@ impl } } +impl Default for OpPayloadBuilderAttributes { + fn default() -> Self { + Self { + id: PayloadId::default(), + parent: B256::default(), + timestamp: 0, + suggested_fee_recipient: Address::default(), + prev_randao: B256::default(), + withdrawals: Default::default(), + parent_beacon_block_root: None, + no_tx_pool: false, + transactions: Vec::new(), + gas_limit: None, + eip_1559_params: None, + min_base_fee: None, + } + } +} + impl OpPayloadBuilderAttributes { /// Extracts the extra data parameters post-Holocene hardfork. /// In Holocene, those parameters are the EIP-1559 base fee parameters. diff --git a/rust/op-reth/crates/primitives/proptest-regressions/transaction/signed.txt b/rust/op-reth/crates/primitives/proptest-regressions/transaction/signed.txt deleted file mode 100644 index 9fe20bf64869b..0000000000000 --- a/rust/op-reth/crates/primitives/proptest-regressions/transaction/signed.txt +++ /dev/null @@ -1,10 +0,0 @@ -# Seeds for failure cases proptest has generated in the past. It is -# automatically read and these particular cases re-run before any -# novel cases are generated. -# -# It is recommended to check this file in to source control so that -# everyone who runs the test benefits from these saved cases. -cc 1e1f607cadab3a3ccbb532e1aa8434294ea9fae166a6f23fd46fd25c30322da5 # shrinks to reth_tx = OpTransactionSigned { hash: OnceLock(), signature: Signature { y_parity: false, r: 106471856770281558005005724873588750714483996420137736184322322872290389979960, s: 50647371676078034330502943574362585807573080711107932534787947090493523672971 }, transaction: Legacy(TxLegacy { chain_id: None, nonce: 0, gas_price: 0, gas_limit: 0, to: Create, value: 0, input: 0x }) } -cc c74c99dc8990d720f17afea044dea4f935a814dd3f1fff700c12e3de4e8156e9 # shrinks to mut reth_tx = OpTransactionSigned { hash: OnceLock(), signature: Signature { y_parity: true, r: 42909146298719458345195613704256725096087244542640899691284984153212479764836, s: 46050109659513408037102271107243804745631167304234490630284200167139583421702 }, transaction: Legacy(TxLegacy { chain_id: None, nonce: 0, gas_price: 0, gas_limit: 0, to: Create, value: 0, input: 0x }) } -cc c3482100e534044ddb9ec9a5bf7baf73d571fec41b82461e82ac3c1ca22e67b7 # shrinks to mut reth_tx = OpTransactionSigned { hash: OnceLock(), signature: Signature { y_parity: false, r: 54313566201575632619767444984125205512617733660660181688042416935807909702997, s: 9308215225666314592945299827648591229662264605138390452879026347174215856942 }, transaction: Legacy(TxLegacy { chain_id: None, nonce: 0, gas_price: 0, gas_limit: 0, to: Create, value: 0, input: 0x }) } -cc ff72c2fa18ac367d2f95b35305c15388673d8904ccdd42c8b85373040560ecea # shrinks to reth_tx = OpTransactionSigned { hash: OnceLock(), signature: Signature { y_parity: true, r: 46891284497230339975903531644275880122924506018400858017888360742030637906150, s: 12416356077729583314190692793174233813458232175557839427163699419263873650086 }, transaction: Legacy(TxLegacy { chain_id: None, nonce: 0, gas_price: 0, gas_limit: 0, to: Create, value: 0, input: 0x }) } diff --git a/rust/op-reth/crates/primitives/src/receipt.rs b/rust/op-reth/crates/primitives/src/receipt.rs index 4e7714d0a74cc..21c620ae67f14 100644 --- a/rust/op-reth/crates/primitives/src/receipt.rs +++ b/rust/op-reth/crates/primitives/src/receipt.rs @@ -45,19 +45,18 @@ pub(super) mod serde_bincode_compat { /// Bincode-compatible [`super::OpReceipt`] serde implementation. /// /// Intended to use with the [`serde_with::serde_as`] macro in the following way: - /// ```rust,ignore - /// use reth_optimism_primitives::OpReceipt; + /// ```rust + /// use reth_optimism_primitives::{OpReceipt, serde_bincode_compat}; /// use serde::{Deserialize, Serialize}; /// use serde_with::serde_as; /// /// #[serde_as] /// #[derive(Serialize, Deserialize)] /// struct Data { - /// #[serde_as(as = "super::serde_bincode_compat::OpReceipt<'_>")] + /// #[serde_as(as = "serde_bincode_compat::OpReceipt<'_>")] /// receipt: OpReceipt, /// } /// ``` - #[allow(rustdoc::private_doc_tests)] #[derive(Debug, Serialize, Deserialize)] pub enum OpReceipt<'a> { /// Legacy receipt diff --git a/rust/op-reth/crates/primitives/src/transaction/signed.rs b/rust/op-reth/crates/primitives/src/transaction/signed.rs index 820aaf179044d..6fcb6dc183cda 100644 --- a/rust/op-reth/crates/primitives/src/transaction/signed.rs +++ b/rust/op-reth/crates/primitives/src/transaction/signed.rs @@ -154,8 +154,6 @@ impl IsTyped2718 for OpTransactionSigned { } } -// SignedTransaction is now a blanket impl — no manual impl needed. - macro_rules! impl_from_signed { ($($tx:ident),*) => { $( diff --git a/rust/op-reth/crates/reth/Cargo.toml b/rust/op-reth/crates/reth/Cargo.toml index 1521ecb9673b1..4fb6654c49955 100644 --- a/rust/op-reth/crates/reth/Cargo.toml +++ b/rust/op-reth/crates/reth/Cargo.toml @@ -113,7 +113,7 @@ consensus = [ ] evm = ["dep:reth-evm", "dep:reth-optimism-evm", "dep:reth-revm"] exex = ["provider", "dep:reth-exex"] -node-api = ["dep:reth-node-api", "dep:reth-node-core"] +node-api = ["dep:reth-node-api", "dep:reth-node-core", "dep:reth-codecs", "reth-optimism-primitives/reth-codec"] node = [ "provider", "consensus", @@ -162,4 +162,4 @@ provider = ["storage-api", "tasks", "dep:reth-provider", "dep:reth-db", "dep:ret pool = ["dep:reth-transaction-pool"] storage-api = ["dep:reth-storage-api"] trie = ["dep:reth-trie", "alloy-primitives/rayon"] -trie-db = ["trie", "dep:reth-trie-db"] +trie-db = ["trie", "dep:reth-trie-db", "dep:reth-codecs", "reth-optimism-primitives/reth-codec"] diff --git a/rust/op-reth/crates/rpc/Cargo.toml b/rust/op-reth/crates/rpc/Cargo.toml index d75a1a98b7f9f..e19996291c03a 100644 --- a/rust/op-reth/crates/rpc/Cargo.toml +++ b/rust/op-reth/crates/rpc/Cargo.toml @@ -17,7 +17,7 @@ reth-basic-payload-builder.workspace = true reth-evm.workspace = true reth-primitives-traits.workspace = true reth-storage-api.workspace = true -reth-rpc-eth-api = { workspace = true, features = ["op"] } +reth-rpc-eth-api.workspace = true reth-rpc-eth-types.workspace = true reth-rpc-server-types.workspace = true reth-tasks = { workspace = true, features = ["rayon"] } @@ -57,7 +57,7 @@ alloy-transport-http.workspace = true alloy-consensus.workspace = true alloy-rpc-types-engine.workspace = true op-alloy-network.workspace = true -op-alloy-rpc-types.workspace = true +op-alloy-rpc-types = { workspace = true, features = ["reth"] } op-alloy-rpc-types-engine.workspace = true op-alloy-rpc-jsonrpsee.workspace = true op-alloy-consensus.workspace = true diff --git a/rust/op-reth/crates/rpc/src/eth/mod.rs b/rust/op-reth/crates/rpc/src/eth/mod.rs index 9d3b91d8a5481..ed1f59b459115 100644 --- a/rust/op-reth/crates/rpc/src/eth/mod.rs +++ b/rust/op-reth/crates/rpc/src/eth/mod.rs @@ -434,6 +434,9 @@ pub type OpRpcConvert = RpcConverter< OpReceiptConverter<::Provider>, (), OpTxInfoMapper<::Provider>, + (), + (), + reth_optimism_evm::tx::OpTxEnvConverter, >; /// Builds [`OpEthApi`] for Optimism. @@ -554,7 +557,8 @@ where } = self; let rpc_converter = RpcConverter::new(OpReceiptConverter::new(ctx.components.provider().clone())) - .with_mapper(OpTxInfoMapper::new(ctx.components.provider().clone())); + .with_mapper(OpTxInfoMapper::new(ctx.components.provider().clone())) + .with_tx_env_converter(reth_optimism_evm::tx::OpTxEnvConverter); let sequencer_client = if let Some(url) = sequencer_url { Some( diff --git a/rust/op-reth/crates/trie/src/initialize.rs b/rust/op-reth/crates/trie/src/initialize.rs index 92f260b83b35e..d5f8f7b79796f 100644 --- a/rust/op-reth/crates/trie/src/initialize.rs +++ b/rust/op-reth/crates/trie/src/initialize.rs @@ -17,7 +17,8 @@ use reth_db::{ }; use reth_primitives_traits::{Account, StorageEntry}; use reth_trie_common::{ - BranchNodeCompact, Nibbles, StorageTrieEntry, StoredNibbles, StoredNibblesSubKey, + BranchNodeCompact, Nibbles, PackedStoredNibbles, StorageTrieEntry, StoredNibbles, + StoredNibblesSubKey, }; use std::time::Instant; use tracing::{debug, info}; @@ -96,8 +97,8 @@ define_simple_cursor_iter!(HashedAccountsInit, tables::HashedAccounts, B256, Acc define_dup_cursor_iter!(HashedStoragesInit, tables::HashedStorages, B256, StorageEntry); define_simple_cursor_iter!( AccountsTrieInit, - tables::AccountsTrie, - StoredNibbles, + tables::PackedAccountsTrie, + PackedStoredNibbles, BranchNodeCompact ); define_dup_cursor_iter!(StoragesTrieInit, tables::StoragesTrie, B256, StorageTrieEntry); @@ -120,7 +121,7 @@ impl CompletionEstimatable for B256 { } } -impl CompletionEstimatable for StoredNibbles { +impl CompletionEstimatable for PackedStoredNibbles { fn estimate_progress(&self) -> f64 { // use the first 6 nibbles as a progress estimate let progress_nibbles = @@ -266,12 +267,13 @@ impl &self, start_key: Option, ) -> Result<(), OpProofsStorageError> { - let mut start_cursor = self.tx.cursor_read::()?; + let mut start_cursor = self.tx.cursor_read::()?; if let Some(latest_key) = start_key { + let packed_key = PackedStoredNibbles::from(latest_key); start_cursor - .seek(latest_key.clone())? - .filter(|(k, _)| *k == latest_key) + .seek(packed_key.clone())? + .filter(|(k, _)| *k == packed_key) .ok_or(OpProofsStorageError::InitializeStorageInconsistentState)?; } @@ -440,7 +442,7 @@ impl InitTable for HashedStoragesInit { } impl InitTable for AccountsTrieInit { - type Key = StoredNibbles; + type Key = PackedStoredNibbles; type Value = BranchNodeCompact; /// Save mapping of account trie paths to branch nodes to storage. @@ -650,13 +652,13 @@ mod tests { // Insert test trie nodes into database let tx = db.tx_mut().unwrap(); - let mut cursor = tx.cursor_write::().unwrap(); + let mut cursor = tx.cursor_write::().unwrap(); let branch = create_test_branch_node(); let nodes = vec![ - (StoredNibbles(Nibbles::from_nibbles_unchecked(vec![1])), branch.clone()), - (StoredNibbles(Nibbles::from_nibbles_unchecked(vec![2])), branch.clone()), - (StoredNibbles(Nibbles::from_nibbles_unchecked(vec![3])), branch), + (PackedStoredNibbles(Nibbles::from_nibbles_unchecked(vec![1])), branch.clone()), + (PackedStoredNibbles(Nibbles::from_nibbles_unchecked(vec![2])), branch.clone()), + (PackedStoredNibbles(Nibbles::from_nibbles_unchecked(vec![3])), branch), ]; for (path, node) in &nodes { @@ -777,10 +779,10 @@ mod tests { drop(cursor); // Add account trie - let mut cursor = tx.cursor_write::().unwrap(); + let mut cursor = tx.cursor_write::().unwrap(); cursor .append( - StoredNibbles(Nibbles::from_nibbles_unchecked(vec![1])), + PackedStoredNibbles(Nibbles::from_nibbles_unchecked(vec![1])), &create_test_branch_node(), ) .unwrap(); @@ -1042,15 +1044,15 @@ mod tests { store.set_initial_state_anchor(BlockNumHash::new(0, B256::default())).expect("set anchor"); - let p1 = StoredNibbles(Nibbles::from_nibbles_unchecked(vec![1])); - let p2 = StoredNibbles(Nibbles::from_nibbles_unchecked(vec![2])); - let p3 = StoredNibbles(Nibbles::from_nibbles_unchecked(vec![3])); - let p4 = StoredNibbles(Nibbles::from_nibbles_unchecked(vec![4])); + let p1 = PackedStoredNibbles(Nibbles::from_nibbles_unchecked(vec![1])); + let p2 = PackedStoredNibbles(Nibbles::from_nibbles_unchecked(vec![2])); + let p3 = PackedStoredNibbles(Nibbles::from_nibbles_unchecked(vec![3])); + let p4 = PackedStoredNibbles(Nibbles::from_nibbles_unchecked(vec![4])); // Phase 1 source: p1,p2 { let tx = db.tx_mut().unwrap(); - let mut cur = tx.cursor_write::().unwrap(); + let mut cur = tx.cursor_write::().unwrap(); cur.append(p1.clone(), &create_test_branch_node()).unwrap(); cur.append(p2.clone(), &create_test_branch_node()).unwrap(); tx.commit().unwrap(); @@ -1065,13 +1067,13 @@ mod tests { assert_eq!( store.initial_state_anchor().expect("get anchor").latest_account_trie_key, - Some(p2.clone()) + Some(StoredNibbles::from(p2.clone())) ); // Phase 2 source: p3,p4 { let tx = db.tx_mut().unwrap(); - let mut cur = tx.cursor_write::().unwrap(); + let mut cur = tx.cursor_write::().unwrap(); cur.append(p3.clone(), &create_test_branch_node()).unwrap(); cur.append(p4.clone(), &create_test_branch_node()).unwrap(); tx.commit().unwrap(); @@ -1081,12 +1083,12 @@ mod tests { { let tx = db.tx().unwrap(); let job = InitializationJob::new(store.clone(), tx); - job.initialize_accounts_trie(Some(p2.clone())).unwrap(); + job.initialize_accounts_trie(Some(StoredNibbles::from(p2.clone()))).unwrap(); } assert_eq!( store.initial_state_anchor().expect("get anchor").latest_account_trie_key, - Some(p4.clone()) + Some(StoredNibbles::from(p4.clone())) ); // Verify 4 ordered, no dupes diff --git a/rust/op-reth/crates/txpool/src/pool.rs b/rust/op-reth/crates/txpool/src/pool.rs index 6b0398e603d89..598c77b0354c4 100644 --- a/rust/op-reth/crates/txpool/src/pool.rs +++ b/rust/op-reth/crates/txpool/src/pool.rs @@ -287,10 +287,9 @@ where delegate!(async fn add_transaction(&self, origin: TransactionOrigin, transaction: Self::Transaction) -> PoolResult); delegate!(async fn add_transactions(&self, origin: TransactionOrigin, transactions: Vec) -> Vec>); - // Cannot delegate via macro: `impl IntoIterator` arg not matchable by macro `:ty`. async fn add_transactions_with_origins( &self, - transactions: impl IntoIterator + Send, + transactions: Vec<(TransactionOrigin, Self::Transaction)>, ) -> Vec> { self.inner.add_transactions_with_origins(transactions).await } diff --git a/rust/op-reth/examples/custom-node/Cargo.toml b/rust/op-reth/examples/custom-node/Cargo.toml index a63b1e7581a88..2114178082dda 100644 --- a/rust/op-reth/examples/custom-node/Cargo.toml +++ b/rust/op-reth/examples/custom-node/Cargo.toml @@ -35,6 +35,7 @@ alloy-eips.workspace = true alloy-evm.workspace = true alloy-genesis.workspace = true alloy-op-evm.workspace = true +reth-evm.workspace = true reth-optimism-evm.workspace = true alloy-primitives.workspace = true alloy-rlp.workspace = true diff --git a/rust/op-reth/examples/custom-node/src/engine.rs b/rust/op-reth/examples/custom-node/src/engine.rs index 0cabb3d4eea3d..327db93c3e532 100644 --- a/rust/op-reth/examples/custom-node/src/engine.rs +++ b/rust/op-reth/examples/custom-node/src/engine.rs @@ -67,11 +67,11 @@ impl ExecutionPayload for CustomExecutionData { } fn timestamp(&self) -> u64 { - self.inner.timestamp() + self.inner.payload.timestamp() } fn gas_used(&self) -> u64 { - self.inner.gas_used() + self.inner.payload.as_v1().gas_used } fn transaction_count(&self) -> usize { diff --git a/rust/op-reth/examples/custom-node/src/evm/alloy.rs b/rust/op-reth/examples/custom-node/src/evm/alloy.rs index cfd36c518e33f..7f95c898fd3a7 100644 --- a/rust/op-reth/examples/custom-node/src/evm/alloy.rs +++ b/rust/op-reth/examples/custom-node/src/evm/alloy.rs @@ -1,6 +1,6 @@ use crate::evm::{CustomTxEnv, PaymentTxEnv}; use alloy_evm::{Database, Evm, EvmEnv, EvmFactory, precompiles::PrecompilesMap}; -use alloy_op_evm::{OpEvm, OpEvmFactory, OpTxError}; +use alloy_op_evm::{OpEvm, OpEvmFactory, OpTx, OpTxError}; use alloy_primitives::{Address, Bytes}; use op_revm::{ L1BlockInfo, OpContext, OpHaltReason, OpSpecId, OpTransaction, precompiles::OpPrecompiles, @@ -20,11 +20,11 @@ pub type CustomContext = Context, CfgEnv, DB, Journal, L1BlockInfo>; pub struct CustomEvm { - inner: OpEvm, + inner: OpEvm, } impl CustomEvm { - pub fn new(op: OpEvm) -> Self { + pub fn new(op: OpEvm) -> Self { Self { inner: op } } } @@ -57,7 +57,7 @@ where tx: Self::Tx, ) -> Result, Self::Error> { match tx { - CustomTxEnv::Op(tx) => self.inner.transact_raw(tx.into()), + CustomTxEnv::Op(tx) => self.inner.transact_raw(tx), CustomTxEnv::Payment(..) => todo!(), } } diff --git a/rust/op-reth/examples/custom-node/src/evm/env.rs b/rust/op-reth/examples/custom-node/src/evm/env.rs index 7c88fe528aa8c..c71c6daba48a1 100644 --- a/rust/op-reth/examples/custom-node/src/evm/env.rs +++ b/rust/op-reth/examples/custom-node/src/evm/env.rs @@ -1,17 +1,16 @@ use crate::primitives::{CustomTransaction, TxPayment}; use alloy_eips::{Typed2718, eip2930::AccessList}; -use alloy_evm::{FromRecoveredTx, FromTxWithEncoded, IntoTxEnv}; +use alloy_evm::{FromRecoveredTx, FromTxWithEncoded, IntoTxEnv, TransactionEnvMut}; use alloy_op_evm::block::OpTxEnv; use alloy_primitives::{Address, B256, Bytes, TxKind, U256}; use op_alloy_consensus::OpTxEnvelope; -use reth_op::evm::primitives::TransactionEnv; use reth_optimism_evm::OpTx; use revm::context::TxEnv; /// An Optimism transaction extended by [`PaymentTxEnv`] that can be fed to [`Evm`]. /// /// [`Evm`]: alloy_evm::Evm -#[derive(Clone, Debug)] +#[derive(Clone, Debug, derive_more::From)] pub enum CustomTxEnv { Op(reth_optimism_evm::OpTx), Payment(PaymentTxEnv), @@ -211,15 +210,11 @@ impl revm::context::Transaction for PaymentTxEnv { } } -impl TransactionEnv for PaymentTxEnv { +impl TransactionEnvMut for PaymentTxEnv { fn set_gas_limit(&mut self, gas_limit: u64) { self.0.set_gas_limit(gas_limit); } - fn nonce(&self) -> u64 { - self.0.nonce() - } - fn set_nonce(&mut self, nonce: u64) { self.0.set_nonce(nonce); } @@ -229,7 +224,7 @@ impl TransactionEnv for PaymentTxEnv { } } -impl TransactionEnv for CustomTxEnv { +impl TransactionEnvMut for CustomTxEnv { fn set_gas_limit(&mut self, gas_limit: u64) { match self { Self::Op(tx) => tx.set_gas_limit(gas_limit), @@ -237,13 +232,6 @@ impl TransactionEnv for CustomTxEnv { } } - fn nonce(&self) -> u64 { - match self { - Self::Op(tx) => tx.nonce(), - Self::Payment(tx) => tx.nonce(), - } - } - fn set_nonce(&mut self, nonce: u64) { match self { Self::Op(tx) => tx.set_nonce(nonce), diff --git a/rust/op-reth/examples/custom-node/src/rpc.rs b/rust/op-reth/examples/custom-node/src/rpc.rs index 6aace0fbe1ee8..9f51f0f0fe9f6 100644 --- a/rust/op-reth/examples/custom-node/src/rpc.rs +++ b/rust/op-reth/examples/custom-node/src/rpc.rs @@ -3,14 +3,12 @@ use crate::{ primitives::{CustomHeader, CustomTransaction}, }; use alloy_consensus::error::ValueError; -use alloy_evm::EvmEnv; use alloy_network::TxSigner; use op_alloy_consensus::OpTxEnvelope; use op_alloy_rpc_types::{OpTransactionReceipt, OpTransactionRequest}; use reth_op::rpc::RpcTypes; -use reth_rpc_api::eth::{ - EthTxEnvError, SignTxRequestError, SignableTxRequest, TryIntoSimTx, TryIntoTxEnv, -}; +use reth_rpc_api::eth::{SignTxRequestError, SignableTxRequest, TryIntoSimTx}; + #[derive(Debug, Clone, Copy, Default)] #[non_exhaustive] pub struct CustomRpcTypes; @@ -28,13 +26,31 @@ impl TryIntoSimTx for OpTransactionRequest { } } -impl TryIntoTxEnv - for OpTransactionRequest +/// Custom `TxEnvConverter` that converts [`OpTransactionRequest`] into [`CustomTxEnv`]. +#[derive(Debug, Clone, Copy, Default)] +pub struct CustomTxEnvConverter; + +impl reth_rpc_api::eth::transaction::TxEnvConverter + for CustomTxEnvConverter +where + Evm: reth_evm::ConfigureEvm, + reth_evm::TxEnvFor: From, { - type Err = EthTxEnvError; + type Error = alloy_evm::rpc::EthTxEnvError; - fn try_into_tx_env(self, evm_env: &EvmEnv) -> Result { - Ok(CustomTxEnv::Op(reth_optimism_evm::OpTx(self.try_into_tx_env(evm_env)?))) + fn convert_tx_env( + &self, + req: OpTransactionRequest, + evm_env: &reth_evm::EvmEnvFor, + ) -> Result, Self::Error> { + use alloy_evm::rpc::TryIntoTxEnv; + let base: revm::context::TxEnv = req.as_ref().clone().try_into_tx_env(evm_env)?; + let op_tx = reth_optimism_evm::OpTx(op_revm::OpTransaction { + base, + enveloped_tx: Some(alloy_primitives::Bytes::new()), + deposit: Default::default(), + }); + Ok(CustomTxEnv::Op(op_tx).into()) } } diff --git a/target/rust-analyzer/flycheck0/stderr b/target/rust-analyzer/flycheck0/stderr deleted file mode 100644 index 3d0da036f3975..0000000000000 --- a/target/rust-analyzer/flycheck0/stderr +++ /dev/null @@ -1,5 +0,0 @@ -error: key with no value, expected `=` - --> Cargo.toml:311:9 - | -311 | <<<<<<< conflict 1 of 1 - | ^ diff --git a/target/rust-analyzer/flycheck0/stdout b/target/rust-analyzer/flycheck0/stdout deleted file mode 100644 index e69de29bb2d1d..0000000000000