From 82ac001f5751a9b5d3a328900fc919229ca0334f Mon Sep 17 00:00:00 2001 From: Evgeniy Zdanovich Date: Fri, 13 Dec 2024 14:19:45 +0100 Subject: [PATCH 1/4] Bump reth to 1.1.3. Adjust the code and dependencies accordingly. --- Cargo.lock | 2527 +++++++++-------- Cargo.toml | 101 +- bin/strata-reth/src/main.rs | 18 +- bin/strata-reth/src/rpc.rs | 125 - crates/evmexec/Cargo.toml | 8 +- crates/evmexec/src/block.rs | 2 +- crates/evmexec/src/el_payload.rs | 2 +- crates/evmexec/src/engine.rs | 6 +- crates/evmexec/src/fork_choice_state.rs | 2 +- crates/evmexec/src/http_client.rs | 19 +- crates/primitives/Cargo.toml | 1 + crates/primitives/src/buf.rs | 2 +- crates/primitives/src/l1.rs | 2 +- crates/primitives/src/macros.rs | 22 +- crates/primitives/src/utils.rs | 3 +- crates/proof-impl/evm-ee-stf/Cargo.toml | 9 +- crates/proof-impl/evm-ee-stf/src/db.rs | 2 +- crates/proof-impl/evm-ee-stf/src/lib.rs | 9 +- crates/proof-impl/evm-ee-stf/src/mpt.rs | 9 +- crates/proof-impl/evm-ee-stf/src/processor.rs | 29 +- crates/reth/db/Cargo.toml | 2 +- crates/reth/db/src/lib.rs | 2 +- crates/reth/db/src/rocksdb/db.rs | 2 +- crates/reth/db/src/rocksdb/schema.rs | 2 +- crates/reth/exex/Cargo.toml | 3 + crates/reth/exex/src/alloy2reth.rs | 2 +- crates/reth/exex/src/cache_db_provider.rs | 6 +- crates/reth/exex/src/prover_exex.rs | 43 +- crates/reth/node/Cargo.toml | 9 + crates/reth/node/src/args.rs | 1 - crates/reth/node/src/engine.rs | 127 +- crates/reth/node/src/evm.rs | 42 +- crates/reth/node/src/lib.rs | 3 +- crates/reth/node/src/node.rs | 279 +- crates/reth/node/src/payload.rs | 22 +- crates/reth/node/src/payload_builder.rs | 233 +- crates/reth/node/src/validator.rs | 55 - crates/reth/primitives/Cargo.toml | 2 +- crates/reth/primitives/src/lib.rs | 2 +- crates/reth/rpc/Cargo.toml | 2 + crates/reth/rpc/src/eth/block.rs | 51 +- crates/reth/rpc/src/eth/call.rs | 107 +- crates/reth/rpc/src/eth/mod.rs | 324 ++- crates/reth/rpc/src/eth/pending_block.rs | 168 +- crates/reth/rpc/src/eth/receipt.rs | 19 +- crates/reth/rpc/src/eth/transaction.rs | 146 +- crates/reth/rpc/src/lib.rs | 4 +- crates/reth/rpc/src/rpc.rs | 2 +- crates/reth/rpc/src/sequencer.rs | 2 +- crates/util/python-utils/Cargo.toml | 2 +- crates/util/python-utils/src/drt.rs | 2 +- crates/util/python-utils/src/parse.rs | 2 +- provers/sp1/guest-btc-blockspace/Cargo.lock | 542 +++- 53 files changed, 3158 insertions(+), 1950 deletions(-) delete mode 100644 bin/strata-reth/src/rpc.rs delete mode 100644 crates/reth/node/src/validator.rs diff --git a/Cargo.lock b/Cargo.lock index b7a3c13b0..4a3ab50ff 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "Inflector" @@ -167,7 +167,7 @@ version = "0.1.47" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "18c5c520273946ecf715c0010b4e3503d7eba9893cd9ce6b7fff5654c4a3c470" dependencies = [ - "alloy-primitives 0.8.12", + "alloy-primitives 0.8.15", "alloy-rlp", "num_enum 0.7.2", "serde", @@ -181,7 +181,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "629b62e38d471cc15fea534eb7283d2f8a4e8bdb1811bcc5d66dda6cfce6fae1" dependencies = [ "alloy-eips 0.3.6", - "alloy-primitives 0.8.12", + "alloy-primitives 0.8.15", "alloy-rlp", "alloy-serde 0.3.6", "c-kzg", @@ -190,22 +190,38 @@ dependencies = [ [[package]] name = "alloy-consensus" -version = "0.4.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "705687d5bfd019fee57cf9e206b27b30a9a9617535d5590a02b171e813208f8e" +checksum = "a101d4d016f47f13890a74290fdd17b05dd175191d9337bc600791fb96e4dea8" dependencies = [ - "alloy-eips 0.4.2", - "alloy-primitives 0.8.12", + "alloy-eips 0.7.3", + "alloy-primitives 0.8.15", "alloy-rlp", - "alloy-serde 0.4.2", + "alloy-serde 0.7.3", + "alloy-trie", "arbitrary", "auto_impl", "c-kzg", "derive_more 1.0.0", + "rand", "serde", "serde_with", ] +[[package]] +name = "alloy-consensus-any" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa60357dda9a3d0f738f18844bd6d0f4a5924cc5cf00bfad2ff1369897966123" +dependencies = [ + "alloy-consensus 0.7.3", + "alloy-eips 0.7.3", + "alloy-primitives 0.8.15", + "alloy-rlp", + "alloy-serde 0.7.3", + "serde", +] + [[package]] name = "alloy-contract" version = "0.3.6" @@ -216,7 +232,7 @@ dependencies = [ "alloy-json-abi", "alloy-network 0.3.6", "alloy-network-primitives 0.3.6", - "alloy-primitives 0.8.12", + "alloy-primitives 0.8.15", "alloy-provider 0.3.6", "alloy-pubsub 0.3.6", "alloy-rpc-types-eth 0.3.6", @@ -224,7 +240,7 @@ dependencies = [ "alloy-transport 0.3.6", "futures", "futures-util", - "thiserror", + "thiserror 1.0.66", ] [[package]] @@ -235,18 +251,18 @@ checksum = "88b095eb0533144b4497e84a9cc3e44a5c2e3754a3983c0376a55a2f9183a53e" dependencies = [ "alloy-dyn-abi", "alloy-json-abi", - "alloy-primitives 0.8.12", + "alloy-primitives 0.8.15", "alloy-sol-types 0.8.12", ] [[package]] name = "alloy-dyn-abi" -version = "0.8.3" +version = "0.8.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4004925bff5ba0a11739ae84dbb6601a981ea692f3bd45b626935ee90a6b8471" +checksum = "ef2364c782a245cf8725ea6dbfca5f530162702b5d685992ea03ce64529136cc" dependencies = [ "alloy-json-abi", - "alloy-primitives 0.8.12", + "alloy-primitives 0.8.15", "alloy-sol-type-parser", "alloy-sol-types 0.8.12", "const-hex", @@ -263,7 +279,7 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0069cf0642457f87a01a014f6dc29d5d893cd4fd8fddf0c3cdfad1bb3ebafc41" dependencies = [ - "alloy-primitives 0.8.12", + "alloy-primitives 0.8.15", "alloy-rlp", "arbitrary", "rand", @@ -276,9 +292,21 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea59dc42102bc9a1905dc57901edc6dd48b9f38115df86c7d252acba70d71d04" dependencies = [ - "alloy-primitives 0.8.12", + "alloy-primitives 0.8.15", + "alloy-rlp", + "serde", +] + +[[package]] +name = "alloy-eip7702" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c986539255fb839d1533c128e190e557e52ff652c9ef62939e233a81dd93f7e" +dependencies = [ + "alloy-primitives 0.8.15", "alloy-rlp", "arbitrary", + "derive_more 1.0.0", "k256", "rand", "serde", @@ -292,8 +320,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f923dd5fca5f67a43d81ed3ebad0880bd41f6dd0ada930030353ac356c54cd0f" dependencies = [ "alloy-eip2930", - "alloy-eip7702", - "alloy-primitives 0.8.12", + "alloy-eip7702 0.1.1", + "alloy-primitives 0.8.15", "alloy-rlp", "alloy-serde 0.3.6", "c-kzg", @@ -305,15 +333,15 @@ dependencies = [ [[package]] name = "alloy-eips" -version = "0.4.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ffb906284a1e1f63c4607da2068c8197458a352d0b3e9796e67353d72a9be85" +checksum = "8b6755b093afef5925f25079dd5a7c8d096398b804ba60cb5275397b06b31689" dependencies = [ "alloy-eip2930", - "alloy-eip7702", - "alloy-primitives 0.8.12", + "alloy-eip7702 0.4.2", + "alloy-primitives 0.8.15", "alloy-rlp", - "alloy-serde 0.4.2", + "alloy-serde 0.7.3", "arbitrary", "c-kzg", "derive_more 1.0.0", @@ -328,19 +356,20 @@ version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3a7a18afb0b318616b6b2b0e2e7ac5529d32a966c673b48091c9919e284e6aca" dependencies = [ - "alloy-primitives 0.8.12", + "alloy-primitives 0.8.15", "alloy-serde 0.3.6", "serde", ] [[package]] name = "alloy-genesis" -version = "0.4.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8429cf4554eed9b40feec7f4451113e76596086447550275e3def933faf47ce3" +checksum = "aeec8e6eab6e52b7c9f918748c9b811e87dbef7312a2e3a2ca1729a92966a6af" dependencies = [ - "alloy-primitives 0.8.12", - "alloy-serde 0.4.2", + "alloy-primitives 0.8.15", + "alloy-serde 0.7.3", + "alloy-trie", "serde", ] @@ -350,7 +379,7 @@ version = "0.8.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b84c506bf264110fa7e90d9924f742f40ef53c6572ea56a0b0bd714a567ed389" dependencies = [ - "alloy-primitives 0.8.12", + "alloy-primitives 0.8.15", "alloy-sol-type-parser", "serde", "serde_json", @@ -362,25 +391,25 @@ version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3c717b5298fad078cd3a418335b266eba91b511383ca9bd497f742d5975d5ab" dependencies = [ - "alloy-primitives 0.8.12", + "alloy-primitives 0.8.15", "alloy-sol-types 0.8.12", "serde", "serde_json", - "thiserror", + "thiserror 1.0.66", "tracing", ] [[package]] name = "alloy-json-rpc" -version = "0.4.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8fa8a1a3c4cbd221f2b8e3693aeb328fca79a757fe556ed08e47bbbc2a70db7" +checksum = "4fa077efe0b834bcd89ff4ba547f48fb081e4fdc3673dd7da1b295a2cf2bb7b7" dependencies = [ - "alloy-primitives 0.8.12", + "alloy-primitives 0.8.15", "alloy-sol-types 0.8.12", "serde", "serde_json", - "thiserror", + "thiserror 2.0.8", "tracing", ] @@ -394,7 +423,7 @@ dependencies = [ "alloy-eips 0.3.6", "alloy-json-rpc 0.3.6", "alloy-network-primitives 0.3.6", - "alloy-primitives 0.8.12", + "alloy-primitives 0.8.15", "alloy-rpc-types-eth 0.3.6", "alloy-serde 0.3.6", "alloy-signer 0.3.6", @@ -402,28 +431,32 @@ dependencies = [ "async-trait", "auto_impl", "futures-utils-wasm", - "thiserror", + "thiserror 1.0.66", ] [[package]] name = "alloy-network" -version = "0.4.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85fa23a6a9d612b52e402c995f2d582c25165ec03ac6edf64c861a76bc5b87cd" -dependencies = [ - "alloy-consensus 0.4.2", - "alloy-eips 0.4.2", - "alloy-json-rpc 0.4.2", - "alloy-network-primitives 0.4.2", - "alloy-primitives 0.8.12", - "alloy-rpc-types-eth 0.4.2", - "alloy-serde 0.4.2", - "alloy-signer 0.4.2", +checksum = "209a1882a08e21aca4aac6e2a674dc6fcf614058ef8cb02947d63782b1899552" +dependencies = [ + "alloy-consensus 0.7.3", + "alloy-consensus-any", + "alloy-eips 0.7.3", + "alloy-json-rpc 0.7.3", + "alloy-network-primitives 0.7.3", + "alloy-primitives 0.8.15", + "alloy-rpc-types-any", + "alloy-rpc-types-eth 0.7.3", + "alloy-serde 0.7.3", + "alloy-signer 0.7.3", "alloy-sol-types 0.8.12", "async-trait", "auto_impl", "futures-utils-wasm", - "thiserror", + "serde", + "serde_json", + "thiserror 2.0.8", ] [[package]] @@ -433,21 +466,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94ad40869867ed2d9cd3842b1e800889e5b49e6b92da346e93862b4a741bedf3" dependencies = [ "alloy-eips 0.3.6", - "alloy-primitives 0.8.12", + "alloy-primitives 0.8.15", "alloy-serde 0.3.6", "serde", ] [[package]] name = "alloy-network-primitives" -version = "0.4.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "801492711d4392b2ccf5fc0bc69e299fa1aab15167d74dcaa9aab96a54f684bd" +checksum = "c20219d1ad261da7a6331c16367214ee7ded41d001fabbbd656fbf71898b2773" dependencies = [ - "alloy-consensus 0.4.2", - "alloy-eips 0.4.2", - "alloy-primitives 0.8.12", - "alloy-serde 0.4.2", + "alloy-consensus 0.7.3", + "alloy-eips 0.7.3", + "alloy-primitives 0.8.15", + "alloy-serde 0.7.3", "serde", ] @@ -475,9 +508,9 @@ dependencies = [ [[package]] name = "alloy-primitives" -version = "0.8.12" +version = "0.8.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fce5dbd6a4f118eecc4719eaa9c7ffc31c315e6c5ccde3642db927802312425" +checksum = "6259a506ab13e1d658796c31e6e39d2e2ee89243bcc505ddc613b35732e0a430" dependencies = [ "alloy-rlp", "arbitrary", @@ -490,7 +523,7 @@ dependencies = [ "getrandom", "hashbrown 0.15.2", "hex-literal", - "indexmap 2.5.0", + "indexmap 2.7.0", "itoa", "k256", "keccak-asm", @@ -517,7 +550,7 @@ dependencies = [ "alloy-json-rpc 0.3.6", "alloy-network 0.3.6", "alloy-network-primitives 0.3.6", - "alloy-primitives 0.8.12", + "alloy-primitives 0.8.15", "alloy-pubsub 0.3.6", "alloy-rpc-client 0.3.6", "alloy-rpc-types-eth 0.3.6", @@ -534,7 +567,7 @@ dependencies = [ "reqwest 0.12.7", "serde", "serde_json", - "thiserror", + "thiserror 1.0.66", "tokio", "tracing", "url", @@ -542,23 +575,23 @@ dependencies = [ [[package]] name = "alloy-provider" -version = "0.4.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcfaa4ffec0af04e3555686b8aacbcdf7d13638133a0672749209069750f78a6" +checksum = "9eefa6f4c798ad01f9b4202d02cea75f5ec11fa180502f4701e2b47965a8c0bb" dependencies = [ "alloy-chains", - "alloy-consensus 0.4.2", - "alloy-eips 0.4.2", - "alloy-json-rpc 0.4.2", - "alloy-network 0.4.2", - "alloy-network-primitives 0.4.2", - "alloy-primitives 0.8.12", - "alloy-pubsub 0.4.2", - "alloy-rpc-client 0.4.2", - "alloy-rpc-types-eth 0.4.2", - "alloy-transport 0.4.2", - "alloy-transport-http 0.4.2", - "alloy-transport-ws 0.4.2", + "alloy-consensus 0.7.3", + "alloy-eips 0.7.3", + "alloy-json-rpc 0.7.3", + "alloy-network 0.7.3", + "alloy-network-primitives 0.7.3", + "alloy-primitives 0.8.15", + "alloy-pubsub 0.7.3", + "alloy-rpc-client 0.7.3", + "alloy-rpc-types-eth 0.7.3", + "alloy-transport 0.7.3", + "alloy-transport-http 0.7.3", + "alloy-transport-ws 0.7.3", "async-stream", "async-trait", "auto_impl", @@ -566,14 +599,17 @@ dependencies = [ "futures", "futures-utils-wasm", "lru", + "parking_lot 0.12.3", "pin-project", "reqwest 0.12.7", + "schnellru", "serde", "serde_json", - "thiserror", + "thiserror 2.0.8", "tokio", "tracing", "url", + "wasmtimer", ] [[package]] @@ -583,7 +619,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2d05f63677e210d758cd5d6d1ce10f20c980c3560ccfbe79ba1997791862a04f" dependencies = [ "alloy-json-rpc 0.3.6", - "alloy-primitives 0.8.12", + "alloy-primitives 0.8.15", "alloy-transport 0.3.6", "bimap", "futures", @@ -597,13 +633,13 @@ dependencies = [ [[package]] name = "alloy-pubsub" -version = "0.4.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f32cef487122ae75c91eb50154c70801d71fabdb976fec6c49e0af5e6486ab15" +checksum = "aac9a7210e0812b1d814118f426f57eb7fc260a419224dd1c76d169879c06907" dependencies = [ - "alloy-json-rpc 0.4.2", - "alloy-primitives 0.8.12", - "alloy-transport 0.4.2", + "alloy-json-rpc 0.7.3", + "alloy-primitives 0.8.15", + "alloy-transport 0.7.3", "bimap", "futures", "serde", @@ -616,9 +652,9 @@ dependencies = [ [[package]] name = "alloy-rlp" -version = "0.3.9" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0822426598f95e45dd1ea32a738dac057529a709ee645fcc516ffa4cbde08f" +checksum = "f542548a609dca89fcd72b3b9f355928cf844d4363c5eed9c5273a3dd225e097" dependencies = [ "alloy-rlp-derive", "arrayvec", @@ -627,13 +663,13 @@ dependencies = [ [[package]] name = "alloy-rlp-derive" -version = "0.3.9" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b09cae092c27b6f1bde952653a22708691802e57bfef4a2973b80bea21efd3f" +checksum = "5a833d97bf8a5f0f878daf2c8451fff7de7f9de38baa5a45d936ec718d81255a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.90", ] [[package]] @@ -643,7 +679,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7d82952dca71173813d4e5733e2c986d8b04aea9e0f3b0a576664c232ad050a5" dependencies = [ "alloy-json-rpc 0.3.6", - "alloy-primitives 0.8.12", + "alloy-primitives 0.8.15", "alloy-pubsub 0.3.6", "alloy-transport 0.3.6", "alloy-transport-http 0.3.6", @@ -662,16 +698,16 @@ dependencies = [ [[package]] name = "alloy-rpc-client" -version = "0.4.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "370143ed581aace6e663342d21d209c6b2e34ee6142f7d6675adb518deeaf0dc" +checksum = "ed30bf1041e84cabc5900f52978ca345dd9969f2194a945e6fdec25b0620705c" dependencies = [ - "alloy-json-rpc 0.4.2", - "alloy-primitives 0.8.12", - "alloy-pubsub 0.4.2", - "alloy-transport 0.4.2", - "alloy-transport-http 0.4.2", - "alloy-transport-ws 0.4.2", + "alloy-json-rpc 0.7.3", + "alloy-primitives 0.8.15", + "alloy-pubsub 0.7.3", + "alloy-transport 0.7.3", + "alloy-transport-http 0.7.3", + "alloy-transport-ws 0.7.3", "futures", "pin-project", "reqwest 0.12.7", @@ -682,6 +718,7 @@ dependencies = [ "tower 0.5.0", "tracing", "url", + "wasmtimer", ] [[package]] @@ -697,75 +734,88 @@ dependencies = [ [[package]] name = "alloy-rpc-types" -version = "0.4.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ffc534b7919e18f35e3aa1f507b6f3d9d92ec298463a9f6beaac112809d8d06" +checksum = "5ab686b0fa475d2a4f5916c5f07797734a691ec58e44f0f55d4746ea39cbcefb" dependencies = [ - "alloy-primitives 0.8.12", + "alloy-primitives 0.8.15", "alloy-rpc-types-engine", - "alloy-rpc-types-eth 0.4.2", - "alloy-serde 0.4.2", + "alloy-rpc-types-eth 0.7.3", + "alloy-serde 0.7.3", "serde", ] [[package]] name = "alloy-rpc-types-admin" -version = "0.4.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb520ed46cc5b7d8c014a73fdd77b6a310383a2a5c0a5ae3c9b8055881f062b7" +checksum = "1f0874a976ccdf83a178ad93b64bec5b8c91a47428d714d544ca70258acfa07b" dependencies = [ - "alloy-genesis 0.4.2", - "alloy-primitives 0.8.12", + "alloy-genesis 0.7.3", + "alloy-primitives 0.8.15", "serde", "serde_json", ] [[package]] name = "alloy-rpc-types-anvil" -version = "0.4.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d780adaa5d95b07ad92006b2feb68ecfa7e2015f7d5976ceaac4c906c73ebd07" +checksum = "d33bc190844626c08e21897736dbd7956ab323c09e6f141b118d1c8b7aff689e" dependencies = [ - "alloy-primitives 0.8.12", - "alloy-serde 0.4.2", + "alloy-primitives 0.8.15", + "alloy-rpc-types-eth 0.7.3", + "alloy-serde 0.7.3", "serde", ] +[[package]] +name = "alloy-rpc-types-any" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "200661999b6e235d9840be5d60a6e8ae2f0af9eb2a256dd378786744660e36ec" +dependencies = [ + "alloy-consensus-any", + "alloy-rpc-types-eth 0.7.3", + "alloy-serde 0.7.3", +] + [[package]] name = "alloy-rpc-types-beacon" -version = "0.4.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a8dc5980fe30203d698627cddb5f0cedc57f900c8b5e1229c8b9448e37acb4a" +checksum = "cc37861dc8cbf5da35d346139fbe6e03ee7823cc21138a2c4a590d3b0b4b24be" dependencies = [ - "alloy-eips 0.4.2", - "alloy-primitives 0.8.12", + "alloy-eips 0.7.3", + "alloy-primitives 0.8.15", "alloy-rpc-types-engine", + "alloy-serde 0.7.3", "serde", "serde_with", - "thiserror", + "thiserror 2.0.8", ] [[package]] name = "alloy-rpc-types-debug" -version = "0.4.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59d8f8c5bfb160081a772f1f68eb9a37e8929c4ef74e5d01f5b78c2b645a5c5e" +checksum = "f0294b553785eb3fa7fff2e8aec45e82817258e7e6c9365c034a90cb6baeebc9" dependencies = [ - "alloy-primitives 0.8.12", + "alloy-primitives 0.8.15", "serde", ] [[package]] name = "alloy-rpc-types-engine" -version = "0.4.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0285c4c09f838ab830048b780d7f4a4f460f309aa1194bb049843309524c64c" +checksum = "5d297268357e3eae834ddd6888b15f764cbc0f4b3be9265f5f6ec239013f3d68" dependencies = [ - "alloy-consensus 0.4.2", - "alloy-eips 0.4.2", - "alloy-primitives 0.8.12", + "alloy-consensus 0.7.3", + "alloy-eips 0.7.3", + "alloy-primitives 0.8.15", "alloy-rlp", - "alloy-serde 0.4.2", + "alloy-serde 0.7.3", "derive_more 1.0.0", "jsonrpsee-types", "jsonwebtoken 9.3.0", @@ -783,7 +833,7 @@ dependencies = [ "alloy-consensus 0.3.6", "alloy-eips 0.3.6", "alloy-network-primitives 0.3.6", - "alloy-primitives 0.8.12", + "alloy-primitives 0.8.15", "alloy-rlp", "alloy-serde 0.3.6", "alloy-sol-types 0.8.12", @@ -797,16 +847,17 @@ dependencies = [ [[package]] name = "alloy-rpc-types-eth" -version = "0.4.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "413f4aa3ccf2c3e4234a047c5fa4727916d7daf25a89f9b765df0ba09784fd87" +checksum = "a0600b8b5e2dc0cab12cbf91b5a885c35871789fb7b3a57b434bd4fced5b7a8b" dependencies = [ - "alloy-consensus 0.4.2", - "alloy-eips 0.4.2", - "alloy-network-primitives 0.4.2", - "alloy-primitives 0.8.12", + "alloy-consensus 0.7.3", + "alloy-consensus-any", + "alloy-eips 0.7.3", + "alloy-network-primitives 0.7.3", + "alloy-primitives 0.8.15", "alloy-rlp", - "alloy-serde 0.4.2", + "alloy-serde 0.7.3", "alloy-sol-types 0.8.12", "derive_more 1.0.0", "itertools 0.13.0", @@ -817,40 +868,41 @@ dependencies = [ [[package]] name = "alloy-rpc-types-mev" -version = "0.4.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cec23ce56c869eec5f6b6fd6a8a92b5aa0cfaf8d7be3a96502e537554dc7430" +checksum = "093d618d5a42808e7ae26062f415a1e816fc27d3d32662c6ed52d0871b154894" dependencies = [ - "alloy-eips 0.4.2", - "alloy-primitives 0.8.12", - "alloy-serde 0.4.2", + "alloy-eips 0.7.3", + "alloy-primitives 0.8.15", + "alloy-rpc-types-eth 0.7.3", + "alloy-serde 0.7.3", "serde", "serde_json", ] [[package]] name = "alloy-rpc-types-trace" -version = "0.4.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "017cad3e5793c5613588c1f9732bcbad77e820ba7d0feaba3527749f856fdbc5" +checksum = "4e073ab0e67429c60be281e181731132fd07d82e091c10c29ace6935101034bb" dependencies = [ - "alloy-primitives 0.8.12", - "alloy-rpc-types-eth 0.4.2", - "alloy-serde 0.4.2", + "alloy-primitives 0.8.15", + "alloy-rpc-types-eth 0.7.3", + "alloy-serde 0.7.3", "serde", "serde_json", - "thiserror", + "thiserror 2.0.8", ] [[package]] name = "alloy-rpc-types-txpool" -version = "0.4.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b230e321c416be7f50530159392b4c41a45596d40d97e185575bcd0b545e521" +checksum = "7435f6bfb93912f16d64bb61f4278fa698469e054784f477337ef87ec0b2527b" dependencies = [ - "alloy-primitives 0.8.12", - "alloy-rpc-types-eth 0.4.2", - "alloy-serde 0.4.2", + "alloy-primitives 0.8.15", + "alloy-rpc-types-eth 0.7.3", + "alloy-serde 0.7.3", "serde", ] @@ -860,18 +912,18 @@ version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "731f75ec5d383107fd745d781619bd9cedf145836c51ecb991623d41278e71fa" dependencies = [ - "alloy-primitives 0.8.12", + "alloy-primitives 0.8.15", "serde", "serde_json", ] [[package]] name = "alloy-serde" -version = "0.4.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dff0ab1cdd43ca001e324dc27ee0e8606bd2161d6623c63e0e0b8c4dfc13600" +checksum = "9afa753a97002a33b2ccb707d9f15f31c81b8c1b786c95b73cc62bb1d1fd0c3f" dependencies = [ - "alloy-primitives 0.8.12", + "alloy-primitives 0.8.15", "arbitrary", "serde", "serde_json", @@ -883,26 +935,26 @@ version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "307324cca94354cd654d6713629f0383ec037e1ff9e3e3d547212471209860c0" dependencies = [ - "alloy-primitives 0.8.12", + "alloy-primitives 0.8.15", "async-trait", "auto_impl", "elliptic-curve", "k256", - "thiserror", + "thiserror 1.0.66", ] [[package]] name = "alloy-signer" -version = "0.4.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fd4e0ad79c81a27ca659be5d176ca12399141659fef2bcbfdc848da478f4504" +checksum = "9b2cbff01a673936c2efd7e00d4c0e9a4dbbd6d600e2ce298078d33efbb19cd7" dependencies = [ - "alloy-primitives 0.8.12", + "alloy-primitives 0.8.15", "async-trait", "auto_impl", "elliptic-curve", "k256", - "thiserror", + "thiserror 2.0.8", ] [[package]] @@ -913,28 +965,28 @@ checksum = "9fabe917ab1778e760b4701628d1cae8e028ee9d52ac6307de4e1e9286ab6b5f" dependencies = [ "alloy-consensus 0.3.6", "alloy-network 0.3.6", - "alloy-primitives 0.8.12", + "alloy-primitives 0.8.15", "alloy-signer 0.3.6", "async-trait", "k256", "rand", - "thiserror", + "thiserror 1.0.66", ] [[package]] name = "alloy-signer-local" -version = "0.4.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "494e0a256f3e99f2426f994bcd1be312c02cb8f88260088dacb33a8b8936475f" +checksum = "bd6d988cb6cd7d2f428a74476515b1a6e901e08c796767f9f93311ab74005c8b" dependencies = [ - "alloy-consensus 0.4.2", - "alloy-network 0.4.2", - "alloy-primitives 0.8.12", - "alloy-signer 0.4.2", + "alloy-consensus 0.7.3", + "alloy-network 0.7.3", + "alloy-primitives 0.8.15", + "alloy-signer 0.7.3", "async-trait", "k256", "rand", - "thiserror", + "thiserror 2.0.8", ] [[package]] @@ -948,7 +1000,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.90", ] [[package]] @@ -962,7 +1014,7 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.90", ] [[package]] @@ -974,11 +1026,11 @@ dependencies = [ "alloy-sol-macro-input 0.7.7", "const-hex", "heck 0.5.0", - "indexmap 2.5.0", + "indexmap 2.7.0", "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.90", "syn-solidity 0.7.7", "tiny-keccak", ] @@ -992,11 +1044,11 @@ dependencies = [ "alloy-sol-macro-input 0.8.12", "const-hex", "heck 0.5.0", - "indexmap 2.5.0", + "indexmap 2.7.0", "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.90", "syn-solidity 0.8.12", "tiny-keccak", ] @@ -1012,7 +1064,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.90", "syn-solidity 0.7.7", ] @@ -1027,7 +1079,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.90", "syn-solidity 0.8.12", ] @@ -1060,7 +1112,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6520d427d4a8eb7aa803d852d7a52ceb0c519e784c292f64bb339e636918cf27" dependencies = [ "alloy-json-abi", - "alloy-primitives 0.8.12", + "alloy-primitives 0.8.15", "alloy-sol-macro 0.8.12", "const-hex", "serde", @@ -1078,7 +1130,7 @@ dependencies = [ "futures-utils-wasm", "serde", "serde_json", - "thiserror", + "thiserror 1.0.66", "tokio", "tower 0.5.0", "tracing", @@ -1087,21 +1139,22 @@ dependencies = [ [[package]] name = "alloy-transport" -version = "0.4.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ac3e97dad3d31770db0fc89bd6a63b789fbae78963086733f960cf32c483904" +checksum = "d69d36982b9e46075ae6b792b0f84208c6c2c15ad49f6c500304616ef67b70e0" dependencies = [ - "alloy-json-rpc 0.4.2", + "alloy-json-rpc 0.7.3", "base64 0.22.1", "futures-util", "futures-utils-wasm", "serde", "serde_json", - "thiserror", + "thiserror 2.0.8", "tokio", "tower 0.5.0", "tracing", "url", + "wasmtimer", ] [[package]] @@ -1121,12 +1174,12 @@ dependencies = [ [[package]] name = "alloy-transport-http" -version = "0.4.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b367dcccada5b28987c2296717ee04b9a5637aacd78eacb1726ef211678b5212" +checksum = "2e02ffd5d93ffc51d72786e607c97de3b60736ca3e636ead0ec1f7dce68ea3fd" dependencies = [ - "alloy-json-rpc 0.4.2", - "alloy-transport 0.4.2", + "alloy-json-rpc 0.7.3", + "alloy-transport 0.7.3", "reqwest 0.12.7", "serde_json", "tower 0.5.0", @@ -1154,12 +1207,12 @@ dependencies = [ [[package]] name = "alloy-transport-ws" -version = "0.4.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7153b88690de6a50bba81c11e1d706bc41dbb90126d607404d60b763f6a3947f" +checksum = "9c085c4e1e7680b723ffc558f61a22c061ed3f70eb3436f93f3936779c59cec1" dependencies = [ - "alloy-pubsub 0.4.2", - "alloy-transport 0.4.2", + "alloy-pubsub 0.7.3", + "alloy-transport 0.7.3", "futures", "http 1.1.0", "rustls 0.23.18", @@ -1172,12 +1225,13 @@ dependencies = [ [[package]] name = "alloy-trie" -version = "0.6.0" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9703ce68b97f8faae6f7739d1e003fc97621b856953cbcdbb2b515743f23288" +checksum = "3a5fd8fea044cc9a8c8a50bb6f28e31f0385d820f116c5b98f6f4e55d6e5590b" dependencies = [ - "alloy-primitives 0.8.12", + "alloy-primitives 0.8.15", "alloy-rlp", + "arrayvec", "derive_more 1.0.0", "nybbles", "serde", @@ -1266,16 +1320,16 @@ checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" [[package]] name = "aquamarine" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21cc1548309245035eb18aa7f0967da6bc65587005170c56e6ef2788a4cf3f4e" +checksum = "0f50776554130342de4836ba542aa85a4ddb361690d7e8df13774d7284c3d5c2" dependencies = [ "include_dir", "itertools 0.10.5", - "proc-macro-error", + "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.90", ] [[package]] @@ -1306,7 +1360,7 @@ dependencies = [ "argh_shared", "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.90", ] [[package]] @@ -1575,6 +1629,9 @@ name = "arrayvec" version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" +dependencies = [ + "serde", +] [[package]] name = "asn1_der" @@ -1679,6 +1736,17 @@ dependencies = [ "pin-project-lite", ] +[[package]] +name = "async-recursion" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + [[package]] name = "async-std" version = "1.13.0" @@ -1724,7 +1792,7 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.90", ] [[package]] @@ -1741,7 +1809,7 @@ checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.90", ] [[package]] @@ -1779,7 +1847,7 @@ checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.90", ] [[package]] @@ -2021,7 +2089,7 @@ dependencies = [ "regex", "rustc-hash 1.1.0", "shlex", - "syn 2.0.86", + "syn 2.0.90", ] [[package]] @@ -2041,7 +2109,7 @@ dependencies = [ "regex", "rustc-hash 1.1.0", "shlex", - "syn 2.0.86", + "syn 2.0.90", ] [[package]] @@ -2296,7 +2364,7 @@ dependencies = [ "bitflags 2.6.0", "boa_interner", "boa_macros", - "indexmap 2.5.0", + "indexmap 2.7.0", "num-bigint 0.4.6", "rustc-hash 2.0.0", ] @@ -2322,7 +2390,7 @@ dependencies = [ "fast-float", "hashbrown 0.14.5", "icu_normalizer", - "indexmap 2.5.0", + "indexmap 2.7.0", "intrusive-collections", "itertools 0.13.0", "num-bigint 0.4.6", @@ -2342,7 +2410,7 @@ dependencies = [ "static_assertions", "tap", "thin-vec", - "thiserror", + "thiserror 1.0.66", "time", ] @@ -2368,7 +2436,7 @@ dependencies = [ "boa_gc", "boa_macros", "hashbrown 0.14.5", - "indexmap 2.5.0", + "indexmap 2.7.0", "once_cell", "phf", "rustc-hash 2.0.0", @@ -2383,7 +2451,7 @@ checksum = "25e0097fa69cde4c95f9869654004340fbbe2bcf3ce9189ba2a31a65ac40e0a1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.90", "synstructure", ] @@ -2435,7 +2503,7 @@ dependencies = [ "maybe-async", "reqwest 0.12.7", "serde", - "thiserror", + "thiserror 1.0.66", ] [[package]] @@ -2458,7 +2526,7 @@ dependencies = [ "proc-macro-crate 3.1.0", "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.90", "syn_derive", ] @@ -2502,6 +2570,17 @@ dependencies = [ "tinyvec", ] +[[package]] +name = "bstr" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "786a307d683a5bf92e6fd5fd69a7eb613751668d1d8d67d802846dfe367c62c8" +dependencies = [ + "memchr", + "regex-automata 0.4.7", + "serde", +] + [[package]] name = "bumpalo" version = "3.16.0" @@ -2531,7 +2610,7 @@ checksum = "1ee891b04274a59bd38b412188e24b849617b2e45a0fd8d057deb63e7403761b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.90", ] [[package]] @@ -2614,7 +2693,7 @@ dependencies = [ "semver 1.0.23", "serde", "serde_json", - "thiserror", + "thiserror 1.0.66", ] [[package]] @@ -2737,7 +2816,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.90", ] [[package]] @@ -2759,7 +2838,7 @@ dependencies = [ "k256", "serde", "sha2 0.10.8", - "thiserror", + "thiserror 1.0.66", ] [[package]] @@ -2775,7 +2854,7 @@ dependencies = [ "pbkdf2 0.12.2", "rand", "sha2 0.10.8", - "thiserror", + "thiserror 1.0.66", ] [[package]] @@ -2795,7 +2874,7 @@ dependencies = [ "serde_derive", "sha2 0.10.8", "sha3", - "thiserror", + "thiserror 1.0.66", ] [[package]] @@ -2896,9 +2975,9 @@ dependencies = [ [[package]] name = "const-hex" -version = "1.12.0" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94fb8a24a26d37e1ffd45343323dc9fe6654ceea44c12f2fcb3d7ac29e610bc6" +checksum = "4b0485bab839b018a8f1723fc5391819fea5f8f0f32288ef8a735fd096b6160c" dependencies = [ "cfg-if", "cpufeatures", @@ -3075,6 +3154,12 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "critical-section" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" + [[package]] name = "crossbeam-channel" version = "0.5.13" @@ -3219,7 +3304,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.90", ] [[package]] @@ -3243,7 +3328,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.86", + "syn 2.0.90", ] [[package]] @@ -3254,7 +3339,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.86", + "syn 2.0.90", ] [[package]] @@ -3396,11 +3481,12 @@ checksum = "f578e8e2c440e7297e008bb5486a3a8a194775224bbc23729b0dbdfaeebf162e" [[package]] name = "delay_map" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4355c25cbf99edcb6b4a0e906f6bdc6956eda149e84455bea49696429b2f8e8" +checksum = "df941644b671f05f59433e481ba0d31ac10e3667de725236a4c0d587c496fba1" dependencies = [ "futures", + "tokio", "tokio-util", ] @@ -3443,7 +3529,7 @@ checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.90", ] [[package]] @@ -3464,7 +3550,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.90", ] [[package]] @@ -3474,7 +3560,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" dependencies = [ "derive_builder_core", - "syn 2.0.86", + "syn 2.0.90", ] [[package]] @@ -3487,7 +3573,7 @@ dependencies = [ "proc-macro2", "quote", "rustc_version 0.4.0", - "syn 2.0.86", + "syn 2.0.90", ] [[package]] @@ -3508,7 +3594,7 @@ dependencies = [ "convert_case 0.6.0", "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.90", "unicode-xid", ] @@ -3521,7 +3607,7 @@ dependencies = [ "console", "shell-words", "tempfile", - "thiserror", + "thiserror 1.0.66", "zeroize", ] @@ -3611,9 +3697,9 @@ dependencies = [ [[package]] name = "discv5" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f569b8c367554666c8652305621e8bae3634a2ff5c6378081d5bd8c399c99f23" +checksum = "23e6b70634e26c909d1edbb3142b3eaf3b89da0e52f284f00ca7c80d9901ad9e" dependencies = [ "aes", "aes-gcm", @@ -3624,7 +3710,7 @@ dependencies = [ "enr 0.12.1", "fnv", "futures", - "hashlink 0.8.4", + "hashlink", "hex", "hkdf", "lazy_static", @@ -3632,13 +3718,13 @@ dependencies = [ "lru", "more-asserts", "multiaddr", - "parking_lot 0.11.2", + "parking_lot 0.12.3", "rand", "smallvec", - "socket2 0.4.10", + "socket2", "tokio", "tracing", - "uint", + "uint 0.10.0", "zeroize", ] @@ -3650,7 +3736,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.90", ] [[package]] @@ -3831,7 +3917,7 @@ dependencies = [ "heck 0.4.1", "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.90", ] [[package]] @@ -3852,7 +3938,7 @@ checksum = "f282cfdfe92516eb26c2af8589c274c7c17681f5ecc03c18255fe741c6aa64eb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.90", ] [[package]] @@ -3863,7 +3949,7 @@ checksum = "6fd000fd6988e73bbe993ea3db9b1aa64906ab88766d654973924340c8cddb42" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.90", ] [[package]] @@ -3914,7 +4000,7 @@ dependencies = [ "serde_json", "sha2 0.10.8", "sha3", - "thiserror", + "thiserror 1.0.66", "uuid 0.8.2", ] @@ -3931,8 +4017,8 @@ dependencies = [ "serde", "serde_json", "sha3", - "thiserror", - "uint", + "thiserror 1.0.66", + "uint 0.9.5", ] [[package]] @@ -3963,7 +4049,7 @@ dependencies = [ "impl-serde", "primitive-types", "scale-info", - "uint", + "uint 0.9.5", ] [[package]] @@ -4008,7 +4094,7 @@ dependencies = [ "pin-project", "serde", "serde_json", - "thiserror", + "thiserror 1.0.66", ] [[package]] @@ -4028,7 +4114,7 @@ dependencies = [ "regex", "serde", "serde_json", - "syn 2.0.86", + "syn 2.0.90", "toml 0.8.14", "walkdir", ] @@ -4046,7 +4132,7 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.86", + "syn 2.0.90", ] [[package]] @@ -4072,9 +4158,9 @@ dependencies = [ "serde", "serde_json", "strum", - "syn 2.0.86", + "syn 2.0.90", "tempfile", - "thiserror", + "thiserror 1.0.66", "tiny-keccak", "unicode-xid", ] @@ -4098,7 +4184,7 @@ dependencies = [ "reqwest 0.11.27", "serde", "serde_json", - "thiserror", + "thiserror 1.0.66", "tokio", "tracing", "tracing-futures", @@ -4130,7 +4216,7 @@ dependencies = [ "reqwest 0.11.27", "serde", "serde_json", - "thiserror", + "thiserror 1.0.66", "tokio", "tracing", "tracing-futures", @@ -4156,7 +4242,7 @@ dependencies = [ "ethers-core", "rand", "sha2 0.10.8", - "thiserror", + "thiserror 1.0.66", "tracing", ] @@ -4256,7 +4342,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e182f7dbc2ef73d9ef67351c5fbbea084729c48362d3ce9dd44c28e32e277fe5" dependencies = [ "libc", - "thiserror", + "thiserror 1.0.66", ] [[package]] @@ -4387,7 +4473,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.90", ] [[package]] @@ -4534,7 +4620,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.90", ] [[package]] @@ -4604,6 +4690,7 @@ version = "0.14.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ + "serde", "typenum", "version_check", "zeroize", @@ -4682,7 +4769,7 @@ dependencies = [ "pin-project", "serde", "serde_json", - "thiserror", + "thiserror 1.0.66", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", @@ -4760,7 +4847,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.5.0", + "indexmap 2.7.0", "slab", "tokio", "tokio-util", @@ -4779,7 +4866,7 @@ dependencies = [ "futures-core", "futures-sink", "http 1.1.0", - "indexmap 2.5.0", + "indexmap 2.7.0", "slab", "tokio", "tokio-util", @@ -4866,15 +4953,6 @@ dependencies = [ "fxhash", ] -[[package]] -name = "hashlink" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8094feaf31ff591f651a2664fb9cfd92bba7a60ce3197265e9482ebe753c8f7" -dependencies = [ - "hashbrown 0.14.5", -] - [[package]] name = "hashlink" version = "0.9.1" @@ -4948,6 +5026,54 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3011d1213f159867b13cfd6ac92d2cd5f1345762c63be3554e84092d85a50bbd" +[[package]] +name = "hickory-proto" +version = "0.25.0-alpha.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d063c0692ee669aa6d261988aa19ca5510f1cc40e4f211024f50c888499a35d7" +dependencies = [ + "async-recursion", + "async-trait", + "cfg-if", + "data-encoding", + "enum-as-inner", + "futures-channel", + "futures-io", + "futures-util", + "idna", + "ipnet", + "once_cell", + "rand", + "serde", + "thiserror 2.0.8", + "tinyvec", + "tokio", + "tracing", + "url", +] + +[[package]] +name = "hickory-resolver" +version = "0.25.0-alpha.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42bc352e4412fb657e795f79b4efcf2bd60b59ee5ca0187f3554194cd1107a27" +dependencies = [ + "cfg-if", + "futures-util", + "hickory-proto", + "ipconfig", + "moka", + "once_cell", + "parking_lot 0.12.3", + "rand", + "resolv-conf", + "serde", + "smallvec", + "thiserror 2.0.8", + "tokio", + "tracing", +] + [[package]] name = "hkdf" version = "0.12.4" @@ -5120,7 +5246,7 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", - "socket2 0.5.7", + "socket2", "tokio", "tower-service", "tracing", @@ -5236,7 +5362,7 @@ dependencies = [ "http-body 1.0.1", "hyper 1.4.1", "pin-project-lite", - "socket2 0.5.7", + "socket2", "tokio", "tower 0.4.13", "tower-service", @@ -5400,7 +5526,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.90", ] [[package]] @@ -5411,22 +5537,23 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" -version = "0.4.0" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" dependencies = [ - "unicode-bidi", - "unicode-normalization", + "idna_adapter", + "smallvec", + "utf8_iter", ] [[package]] -name = "idna" -version = "0.5.0" +name = "idna_adapter" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" dependencies = [ - "unicode-bidi", - "unicode-normalization", + "icu_normalizer", + "icu_properties", ] [[package]] @@ -5515,13 +5642,13 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.5.0" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5" +checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f" dependencies = [ "arbitrary", "equivalent", - "hashbrown 0.14.5", + "hashbrown 0.15.2", "serde", ] @@ -5597,7 +5724,7 @@ dependencies = [ "pretty_assertions", "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.90", ] [[package]] @@ -5658,7 +5785,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b58db92f96b720de98181bbbe63c831e87005ab460c1bf306eb2622b4707997f" dependencies = [ - "socket2 0.5.7", + "socket2", "widestring", "windows-sys 0.48.0", "winreg", @@ -5737,7 +5864,7 @@ dependencies = [ "num-traits", "serde", "sha2 0.10.8", - "thiserror", + "thiserror 1.0.66", "tracing", ] @@ -5751,7 +5878,7 @@ dependencies = [ "combine", "jni-sys", "log", - "thiserror", + "thiserror 1.0.66", "walkdir", ] @@ -5826,7 +5953,7 @@ dependencies = [ "rustls-pki-types", "rustls-platform-verifier", "soketto", - "thiserror", + "thiserror 1.0.66", "tokio", "tokio-rustls 0.26.0", "tokio-util", @@ -5854,7 +5981,7 @@ dependencies = [ "rustc-hash 2.0.0", "serde", "serde_json", - "thiserror", + "thiserror 1.0.66", "tokio", "tokio-stream", "tracing", @@ -5879,7 +6006,7 @@ dependencies = [ "rustls-platform-verifier", "serde", "serde_json", - "thiserror", + "thiserror 1.0.66", "tokio", "tower 0.4.13", "tracing", @@ -5896,7 +6023,7 @@ dependencies = [ "proc-macro-crate 3.1.0", "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.90", ] [[package]] @@ -5918,7 +6045,7 @@ dependencies = [ "serde", "serde_json", "soketto", - "thiserror", + "thiserror 1.0.66", "tokio", "tokio-stream", "tokio-util", @@ -5935,7 +6062,7 @@ dependencies = [ "http 1.1.0", "serde", "serde_json", - "thiserror", + "thiserror 1.0.66", ] [[package]] @@ -6113,7 +6240,7 @@ dependencies = [ "proc-macro2", "quote", "regex", - "syn 2.0.86", + "syn 2.0.90", ] [[package]] @@ -6133,9 +6260,9 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "libc" -version = "0.2.155" +version = "0.2.168" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" +checksum = "5aaeb2981e0606ca11d79718f8bb01164f1d6ed75080182d3abf017e6d244b6d" [[package]] name = "libgit2-sys" @@ -6179,7 +6306,7 @@ dependencies = [ "multihash", "quick-protobuf", "sha2 0.10.8", - "thiserror", + "thiserror 1.0.66", "tracing", "zeroize", ] @@ -6305,6 +6432,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "47186c6da4d81ca383c7c47c1bfc80f4b95f4720514d860a5407aaf4233f9588" dependencies = [ "linked-hash-map", + "serde", ] [[package]] @@ -6327,6 +6455,7 @@ checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" dependencies = [ "autocfg", "scopeguard", + "serde", ] [[package]] @@ -6347,15 +6476,6 @@ dependencies = [ "hashbrown 0.15.2", ] -[[package]] -name = "lru-cache" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c" -dependencies = [ - "linked-hash-map", -] - [[package]] name = "lz4-sys" version = "1.9.5" @@ -6419,7 +6539,7 @@ checksum = "5cf92c10c7e361d6b99666ec1c6f9805b0bea2c3bd8c78dc6fe98ac5bd78db11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.90", ] [[package]] @@ -6477,6 +6597,16 @@ dependencies = [ "portable-atomic", ] +[[package]] +name = "metrics" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a7deb012b3b2767169ff203fadb4c6b0b82b947512e5eb9e0b78c2e186ad9e3" +dependencies = [ + "ahash 0.8.11", + "portable-atomic", +] + [[package]] name = "metrics-derive" version = "0.1.0" @@ -6486,21 +6616,21 @@ dependencies = [ "proc-macro2", "quote", "regex", - "syn 2.0.86", + "syn 2.0.90", ] [[package]] name = "metrics-exporter-prometheus" -version = "0.15.3" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4f0c8427b39666bf970460908b213ec09b3b350f20c0c2eabcbba51704a08e6" +checksum = "85b6f8152da6d7892ff1b7a1c0fa3f435e92b5918ad67035c3bb432111d9a29b" dependencies = [ "base64 0.22.1", - "indexmap 2.5.0", - "metrics", + "indexmap 2.7.0", + "metrics 0.24.1", "metrics-util", "quanta", - "thiserror", + "thiserror 1.0.66", ] [[package]] @@ -6511,7 +6641,7 @@ checksum = "cb524e5438255eaa8aa74214d5a62713b77b2c3c6e3c0bbeee65cfd9a58948ba" dependencies = [ "libproc", "mach2", - "metrics", + "metrics 0.23.0", "once_cell", "procfs", "rlimit", @@ -6520,15 +6650,14 @@ dependencies = [ [[package]] name = "metrics-util" -version = "0.17.0" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4259040465c955f9f2f1a4a8a16dc46726169bca0f88e8fb2dbeced487c3e828" +checksum = "15b482df36c13dd1869d73d14d28cd4855fbd6cfc32294bee109908a9f4a4ed7" dependencies = [ "crossbeam-epoch", "crossbeam-utils", - "hashbrown 0.14.5", - "metrics", - "num_cpus", + "hashbrown 0.15.2", + "metrics 0.24.1", "quanta", "sketches-ddsketch", ] @@ -6669,6 +6798,26 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "moka" +version = "0.12.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32cf62eb4dd975d2dde76432fb1075c49e3ee2331cf36f1f8fd4b66550d32b6f" +dependencies = [ + "crossbeam-channel", + "crossbeam-epoch", + "crossbeam-utils", + "once_cell", + "parking_lot 0.12.3", + "quanta", + "rustc_version 0.4.0", + "smallvec", + "tagptr", + "thiserror 1.0.66", + "triomphe", + "uuid 1.10.0", +] + [[package]] name = "more-asserts" version = "0.3.1" @@ -6975,7 +7124,7 @@ dependencies = [ "proc-macro-crate 3.1.0", "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.90", ] [[package]] @@ -7029,98 +7178,58 @@ name = "once_cell" version = "1.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" +dependencies = [ + "critical-section", + "portable-atomic", +] [[package]] name = "op-alloy-consensus" -version = "0.4.0" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ea7162170c6f3cad8f67f4dd7108e3f78349fd553da5b8bebff1e7ef8f38896" +checksum = "78f0daa0d0936d436a21b57571b1e27c5663aa2ab62f6edae5ba5be999f9f93e" dependencies = [ - "alloy-consensus 0.4.2", - "alloy-eips 0.4.2", - "alloy-primitives 0.8.12", + "alloy-consensus 0.7.3", + "alloy-eips 0.7.3", + "alloy-primitives 0.8.15", "alloy-rlp", - "alloy-serde 0.4.2", + "alloy-serde 0.7.3", "arbitrary", "derive_more 1.0.0", "serde", "serde_with", - "spin 0.9.8", -] - -[[package]] -name = "op-alloy-genesis" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f3d31dfbbd8dd898c7512f8ce7d30103980485416f668566100b0ed0994b958" -dependencies = [ - "alloy-consensus 0.4.2", - "alloy-eips 0.4.2", - "alloy-primitives 0.8.12", - "alloy-sol-types 0.8.12", - "serde", - "serde_repr", + "thiserror 2.0.8", ] [[package]] -name = "op-alloy-protocol" -version = "0.4.0" +name = "op-alloy-rpc-types" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "310873e4fbfc41986716c4fb6000a8b49d025d932d2c261af58271c434b05288" +checksum = "73741855ffaa2041b33cb616d7db7180c1149b648c68c23bee9e15501073fb32" dependencies = [ - "alloy-consensus 0.4.2", - "alloy-eips 0.4.2", - "alloy-primitives 0.8.12", - "alloy-rlp", - "alloy-serde 0.4.2", + "alloy-consensus 0.7.3", + "alloy-eips 0.7.3", + "alloy-network-primitives 0.7.3", + "alloy-primitives 0.8.15", + "alloy-rpc-types-eth 0.7.3", + "alloy-serde 0.7.3", "derive_more 1.0.0", "op-alloy-consensus", - "op-alloy-genesis", "serde", + "serde_json", ] [[package]] -name = "op-alloy-rpc-types" -version = "0.4.0" +name = "opaque-debug" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "323c65880e2561aa87f74f8af260fd15b9cc930c448c88a60ae95af86c88c634" -dependencies = [ - "alloy-consensus 0.4.2", - "alloy-eips 0.4.2", - "alloy-network-primitives 0.4.2", - "alloy-primitives 0.8.12", - "alloy-rpc-types-eth 0.4.2", - "alloy-serde 0.4.2", - "op-alloy-consensus", - "serde", - "serde_json", -] +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" [[package]] -name = "op-alloy-rpc-types-engine" -version = "0.4.0" +name = "open-fastrlp" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349e7b420f45d1a00216ec4c65fcf3f0057a841bc39732c405c85ae782b94121" -dependencies = [ - "alloy-primitives 0.8.12", - "alloy-rpc-types-engine", - "alloy-serde 0.4.2", - "derive_more 1.0.0", - "op-alloy-protocol", - "serde", -] - -[[package]] -name = "opaque-debug" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" - -[[package]] -name = "open-fastrlp" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "786393f80485445794f6043fd3138854dd109cc6c4bd1a6383db304c9ce9b9ce" +checksum = "786393f80485445794f6043fd3138854dd109cc6c4bd1a6383db304c9ce9b9ce" dependencies = [ "arrayvec", "auto_impl", @@ -7164,7 +7273,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.90", ] [[package]] @@ -7196,7 +7305,7 @@ dependencies = [ "js-sys", "once_cell", "pin-project-lite", - "thiserror", + "thiserror 1.0.66", ] [[package]] @@ -7212,7 +7321,7 @@ dependencies = [ "opentelemetry-proto", "opentelemetry_sdk", "prost 0.13.3", - "thiserror", + "thiserror 1.0.66", "tokio", "tonic", ] @@ -7245,7 +7354,7 @@ dependencies = [ "percent-encoding", "rand", "serde_json", - "thiserror", + "thiserror 1.0.66", "tokio", "tokio-stream", ] @@ -7739,7 +7848,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cd53dff83f26735fdc1ca837098ccf133605d794cdae66acfc2bfac3ec809d95" dependencies = [ "memchr", - "thiserror", + "thiserror 1.0.66", "ucd-trie", ] @@ -7783,7 +7892,7 @@ dependencies = [ "phf_shared", "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.90", ] [[package]] @@ -7812,7 +7921,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.90", ] [[package]] @@ -7889,9 +7998,9 @@ dependencies = [ [[package]] name = "portable-atomic" -version = "1.6.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" +checksum = "280dc24453071f1b63954171985a0b0d30058d287960968b9b2aca264c8d4ee6" [[package]] name = "powerfmt" @@ -7952,7 +8061,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e" dependencies = [ "proc-macro2", - "syn 2.0.86", + "syn 2.0.90", ] [[package]] @@ -7966,7 +8075,7 @@ dependencies = [ "impl-rlp", "impl-serde", "scale-info", - "uint", + "uint 0.9.5", ] [[package]] @@ -8031,7 +8140,7 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.90", ] [[package]] @@ -8081,7 +8190,7 @@ dependencies = [ "memchr", "parking_lot 0.12.3", "protobuf", - "thiserror", + "thiserror 1.0.66", ] [[package]] @@ -8112,7 +8221,7 @@ checksum = "6ff7ff745a347b87471d859a377a9a404361e7efc2a971d73424a6d183c0fc77" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.90", ] [[package]] @@ -8145,7 +8254,7 @@ dependencies = [ "itertools 0.12.1", "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.90", ] [[package]] @@ -8158,7 +8267,7 @@ dependencies = [ "itertools 0.13.0", "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.90", ] [[package]] @@ -8214,7 +8323,7 @@ dependencies = [ "proc-macro2", "pyo3-macros-backend", "quote", - "syn 2.0.86", + "syn 2.0.90", ] [[package]] @@ -8227,7 +8336,7 @@ dependencies = [ "proc-macro2", "pyo3-build-config", "quote", - "syn 2.0.86", + "syn 2.0.90", ] [[package]] @@ -8272,7 +8381,7 @@ dependencies = [ "quinn-udp", "rustc-hash 1.1.0", "rustls 0.23.18", - "thiserror", + "thiserror 1.0.66", "tokio", "tracing", ] @@ -8289,7 +8398,7 @@ dependencies = [ "rustc-hash 2.0.0", "rustls 0.23.18", "slab", - "thiserror", + "thiserror 1.0.66", "tinyvec", "tracing", ] @@ -8302,7 +8411,7 @@ checksum = "9096629c45860fc7fb143e125eb826b5e721e10be3263160c7d60ca832cf8c46" dependencies = [ "libc", "once_cell", - "socket2 0.5.7", + "socket2", "tracing", "windows-sys 0.52.0", ] @@ -8453,7 +8562,7 @@ checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" dependencies = [ "getrandom", "libredox", - "thiserror", + "thiserror 1.0.66", ] [[package]] @@ -8618,7 +8727,7 @@ dependencies = [ "http 1.1.0", "reqwest 0.12.7", "serde", - "thiserror", + "thiserror 1.0.66", "tower-service", ] @@ -8634,14 +8743,14 @@ dependencies = [ [[package]] name = "reth" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-consensus 0.4.2", - "alloy-eips 0.4.2", - "alloy-primitives 0.8.12", + "alloy-consensus 0.7.3", + "alloy-eips 0.7.3", + "alloy-primitives 0.8.15", "alloy-rlp", - "alloy-rpc-types 0.4.2", + "alloy-rpc-types 0.7.3", "aquamarine", "backon", "clap", @@ -8682,6 +8791,7 @@ dependencies = [ "reth-payload-primitives", "reth-payload-validator", "reth-primitives", + "reth-primitives-traits", "reth-provider", "reth-prune", "reth-revm", @@ -8704,51 +8814,26 @@ dependencies = [ "tracing", ] -[[package]] -name = "reth-auto-seal-consensus" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" -dependencies = [ - "alloy-primitives 0.8.12", - "alloy-rpc-types-engine", - "futures-util", - "reth-beacon-consensus", - "reth-chainspec", - "reth-consensus", - "reth-engine-primitives", - "reth-evm", - "reth-execution-errors", - "reth-execution-types", - "reth-network-p2p", - "reth-network-peers", - "reth-primitives", - "reth-provider", - "reth-revm", - "reth-stages-api", - "reth-tokio-util", - "reth-transaction-pool", - "reth-trie", - "revm-primitives", - "tokio", - "tokio-stream", - "tracing", -] - [[package]] name = "reth-basic-payload-builder" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-primitives 0.8.12", + "alloy-consensus 0.7.3", + "alloy-eips 0.7.3", + "alloy-primitives 0.8.15", "alloy-rlp", "futures-core", "futures-util", - "metrics", + "metrics 0.24.1", "reth-chainspec", + "reth-evm", "reth-metrics", "reth-payload-builder", + "reth-payload-builder-primitives", "reth-payload-primitives", "reth-primitives", + "reth-primitives-traits", "reth-provider", "reth-revm", "reth-tasks", @@ -8760,15 +8845,19 @@ dependencies = [ [[package]] name = "reth-beacon-consensus" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-primitives 0.8.12", + "alloy-consensus 0.7.3", + "alloy-eips 0.7.3", + "alloy-primitives 0.8.15", "alloy-rpc-types-engine", "futures", "itertools 0.13.0", - "metrics", + "metrics 0.24.1", "reth-blockchain-tree-api", + "reth-codecs", + "reth-db-api", "reth-engine-primitives", "reth-errors", "reth-ethereum-consensus", @@ -8776,9 +8865,11 @@ dependencies = [ "reth-network-p2p", "reth-node-types", "reth-payload-builder", + "reth-payload-builder-primitives", "reth-payload-primitives", "reth-payload-validator", "reth-primitives", + "reth-primitives-traits", "reth-provider", "reth-prune", "reth-stages-api", @@ -8786,7 +8877,7 @@ dependencies = [ "reth-tasks", "reth-tokio-util", "schnellru", - "thiserror", + "thiserror 2.0.8", "tokio", "tokio-stream", "tracing", @@ -8794,14 +8885,15 @@ dependencies = [ [[package]] name = "reth-blockchain-tree" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-eips 0.4.2", - "alloy-primitives 0.8.12", + "alloy-consensus 0.7.3", + "alloy-eips 0.7.3", + "alloy-primitives 0.8.15", "aquamarine", "linked_hash_set", - "metrics", + "metrics 0.24.1", "parking_lot 0.12.3", "reth-blockchain-tree-api", "reth-consensus", @@ -8827,27 +8919,30 @@ dependencies = [ [[package]] name = "reth-blockchain-tree-api" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-primitives 0.8.12", + "alloy-consensus 0.7.3", + "alloy-eips 0.7.3", + "alloy-primitives 0.8.15", "reth-consensus", "reth-execution-errors", "reth-primitives", + "reth-primitives-traits", "reth-storage-errors", - "thiserror", + "thiserror 2.0.8", ] [[package]] name = "reth-chain-state" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-eips 0.4.2", - "alloy-primitives 0.8.12", - "auto_impl", + "alloy-consensus 0.7.3", + "alloy-eips 0.7.3", + "alloy-primitives 0.8.15", "derive_more 1.0.0", - "metrics", + "metrics 0.24.1", "parking_lot 0.12.3", "pin-project", "reth-chainspec", @@ -8855,8 +8950,10 @@ dependencies = [ "reth-execution-types", "reth-metrics", "reth-primitives", + "reth-primitives-traits", "reth-storage-api", "reth-trie", + "revm", "tokio", "tokio-stream", "tracing", @@ -8864,14 +8961,14 @@ dependencies = [ [[package]] name = "reth-chainspec" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ "alloy-chains", - "alloy-eips 0.4.2", - "alloy-genesis 0.4.2", - "alloy-primitives 0.8.12", - "alloy-trie", + "alloy-consensus 0.7.3", + "alloy-eips 0.7.3", + "alloy-genesis 0.7.3", + "alloy-primitives 0.8.15", "auto_impl", "derive_more 1.0.0", "once_cell", @@ -8884,25 +8981,28 @@ dependencies = [ [[package]] name = "reth-cli" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-genesis 0.4.2", + "alloy-genesis 0.7.3", "clap", "eyre", "reth-cli-runner", + "reth-db", "serde_json", "shellexpand", ] [[package]] name = "reth-cli-commands" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ "ahash 0.8.11", - "alloy-eips 0.4.2", - "alloy-primitives 0.8.12", + "alloy-consensus 0.7.3", + "alloy-eips 0.7.3", + "alloy-primitives 0.8.15", + "alloy-rlp", "backon", "clap", "comfy-table", @@ -8918,6 +9018,7 @@ dependencies = [ "reth-cli", "reth-cli-runner", "reth-cli-util", + "reth-codecs", "reth-config", "reth-consensus", "reth-db", @@ -8933,6 +9034,7 @@ dependencies = [ "reth-network", "reth-network-p2p", "reth-network-peers", + "reth-node-api", "reth-node-builder", "reth-node-core", "reth-node-events", @@ -8955,8 +9057,8 @@ dependencies = [ [[package]] name = "reth-cli-runner" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ "reth-tasks", "tokio", @@ -8965,51 +9067,54 @@ dependencies = [ [[package]] name = "reth-cli-util" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-eips 0.4.2", - "alloy-primitives 0.8.12", + "alloy-eips 0.7.3", + "alloy-primitives 0.8.15", "cfg-if", "eyre", "libc", "rand", "reth-fs-util", "secp256k1", - "thiserror", + "serde", + "thiserror 2.0.8", "tikv-jemallocator", ] [[package]] name = "reth-codecs" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-consensus 0.4.2", - "alloy-eips 0.4.2", - "alloy-genesis 0.4.2", - "alloy-primitives 0.8.12", + "alloy-consensus 0.7.3", + "alloy-eips 0.7.3", + "alloy-genesis 0.7.3", + "alloy-primitives 0.8.15", "alloy-trie", "bytes", "modular-bitfield", + "op-alloy-consensus", "reth-codecs-derive", + "serde", ] [[package]] name = "reth-codecs-derive" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ "convert_case 0.6.0", "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.90", ] [[package]] name = "reth-config" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ "eyre", "humantime-serde", @@ -9022,38 +9127,44 @@ dependencies = [ [[package]] name = "reth-consensus" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-primitives 0.8.12", + "alloy-consensus 0.7.3", + "alloy-eips 0.7.3", + "alloy-primitives 0.8.15", "auto_impl", "derive_more 1.0.0", "reth-primitives", + "reth-primitives-traits", ] [[package]] name = "reth-consensus-common" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-primitives 0.8.12", + "alloy-consensus 0.7.3", + "alloy-eips 0.7.3", + "alloy-primitives 0.8.15", "reth-chainspec", "reth-consensus", "reth-primitives", + "reth-primitives-traits", "revm-primitives", ] [[package]] name = "reth-consensus-debug-client" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-consensus 0.4.2", - "alloy-eips 0.4.2", - "alloy-primitives 0.8.12", - "alloy-provider 0.4.2", - "alloy-rpc-types 0.4.2", + "alloy-consensus 0.7.3", + "alloy-eips 0.7.3", + "alloy-primitives 0.8.15", + "alloy-provider 0.7.3", "alloy-rpc-types-engine", + "alloy-rpc-types-eth 0.7.3", "auto_impl", "eyre", "futures", @@ -9069,16 +9180,16 @@ dependencies = [ [[package]] name = "reth-db" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-primitives 0.8.12", + "alloy-consensus 0.7.3", + "alloy-primitives 0.8.15", "bytes", "derive_more 1.0.0", "eyre", - "metrics", + "metrics 0.24.1", "page_size", - "paste", "reth-db-api", "reth-fs-util", "reth-libmdbx", @@ -9094,20 +9205,21 @@ dependencies = [ "rustc-hash 2.0.0", "serde", "strum", - "sysinfo 0.31.4", - "thiserror", + "sysinfo 0.32.1", + "thiserror 2.0.8", ] [[package]] name = "reth-db-api" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-genesis 0.4.2", - "alloy-primitives 0.8.12", + "alloy-consensus 0.7.3", + "alloy-genesis 0.7.3", + "alloy-primitives 0.8.15", "bytes", "derive_more 1.0.0", - "metrics", + "metrics 0.24.1", "modular-bitfield", "parity-scale-codec", "reth-codecs", @@ -9118,16 +9230,18 @@ dependencies = [ "reth-stages-types", "reth-storage-errors", "reth-trie-common", + "roaring", "serde", ] [[package]] name = "reth-db-common" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-genesis 0.4.2", - "alloy-primitives 0.8.12", + "alloy-consensus 0.7.3", + "alloy-genesis 0.7.3", + "alloy-primitives 0.8.15", "boyer-moore-magiclen", "eyre", "reth-chainspec", @@ -9145,34 +9259,37 @@ dependencies = [ "reth-trie-db", "serde", "serde_json", - "thiserror", + "thiserror 2.0.8", "tracing", ] [[package]] name = "reth-db-models" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-primitives 0.8.12", + "alloy-eips 0.7.3", + "alloy-primitives 0.8.15", "bytes", "modular-bitfield", "reth-codecs", - "reth-primitives", + "reth-primitives-traits", "serde", ] [[package]] name = "reth-discv4" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-primitives 0.8.12", + "alloy-primitives 0.8.15", "alloy-rlp", "discv5", "enr 0.12.1", "generic-array 0.14.7", + "itertools 0.13.0", "parking_lot 0.12.3", + "rand", "reth-ethereum-forks", "reth-net-banlist", "reth-net-nat", @@ -9180,7 +9297,7 @@ dependencies = [ "schnellru", "secp256k1", "serde", - "thiserror", + "thiserror 2.0.8", "tokio", "tokio-stream", "tracing", @@ -9188,36 +9305,37 @@ dependencies = [ [[package]] name = "reth-discv5" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-primitives 0.8.12", + "alloy-primitives 0.8.15", "alloy-rlp", "derive_more 1.0.0", "discv5", "enr 0.12.1", "futures", "itertools 0.13.0", - "metrics", + "metrics 0.24.1", "rand", "reth-chainspec", "reth-ethereum-forks", "reth-metrics", "reth-network-peers", "secp256k1", - "thiserror", + "thiserror 2.0.8", "tokio", "tracing", ] [[package]] name = "reth-dns-discovery" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-primitives 0.8.12", + "alloy-primitives 0.8.15", "data-encoding", "enr 0.12.1", + "hickory-resolver", "linked_hash_set", "parking_lot 0.12.3", "reth-ethereum-forks", @@ -9225,25 +9343,27 @@ dependencies = [ "reth-tokio-util", "schnellru", "secp256k1", - "thiserror", + "serde", + "serde_with", + "thiserror 2.0.8", "tokio", "tokio-stream", "tracing", - "trust-dns-resolver", ] [[package]] name = "reth-downloaders" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-eips 0.4.2", - "alloy-primitives 0.8.12", + "alloy-consensus 0.7.3", + "alloy-eips 0.7.3", + "alloy-primitives 0.8.15", "alloy-rlp", "futures", "futures-util", "itertools 0.13.0", - "metrics", + "metrics 0.24.1", "pin-project", "rayon", "reth-config", @@ -9252,9 +9372,10 @@ dependencies = [ "reth-network-p2p", "reth-network-peers", "reth-primitives", + "reth-primitives-traits", "reth-storage-api", "reth-tasks", - "thiserror", + "thiserror 2.0.8", "tokio", "tokio-stream", "tokio-util", @@ -9263,11 +9384,11 @@ dependencies = [ [[package]] name = "reth-ecies" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ "aes", - "alloy-primitives 0.8.12", + "alloy-primitives 0.8.15", "alloy-rlp", "block-padding", "byteorder", @@ -9284,7 +9405,7 @@ dependencies = [ "secp256k1", "sha2 0.10.8", "sha3", - "thiserror", + "thiserror 2.0.8", "tokio", "tokio-stream", "tokio-util", @@ -9292,57 +9413,100 @@ dependencies = [ "typenum", ] +[[package]] +name = "reth-engine-local" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" +dependencies = [ + "alloy-consensus 0.7.3", + "alloy-primitives 0.8.15", + "alloy-rpc-types-engine", + "eyre", + "futures-util", + "reth-beacon-consensus", + "reth-chainspec", + "reth-consensus", + "reth-engine-primitives", + "reth-engine-service", + "reth-engine-tree", + "reth-ethereum-engine-primitives", + "reth-evm", + "reth-node-types", + "reth-payload-builder", + "reth-payload-builder-primitives", + "reth-payload-primitives", + "reth-provider", + "reth-prune", + "reth-rpc-types-compat", + "reth-stages-api", + "reth-transaction-pool", + "tokio", + "tokio-stream", + "tracing", +] + [[package]] name = "reth-engine-primitives" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-primitives 0.8.12", + "alloy-consensus 0.7.3", + "alloy-primitives 0.8.15", + "alloy-rpc-types-engine", + "futures", + "reth-errors", "reth-execution-types", + "reth-payload-builder-primitives", "reth-payload-primitives", "reth-primitives", + "reth-primitives-traits", "reth-trie", "serde", + "thiserror 2.0.8", + "tokio", ] [[package]] name = "reth-engine-service" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ "futures", "pin-project", "reth-beacon-consensus", "reth-chainspec", "reth-consensus", + "reth-engine-primitives", "reth-engine-tree", "reth-evm", "reth-network-p2p", "reth-node-types", "reth-payload-builder", - "reth-payload-validator", + "reth-primitives", "reth-provider", "reth-prune", "reth-stages-api", "reth-tasks", - "thiserror", + "thiserror 2.0.8", ] [[package]] name = "reth-engine-tree" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-eips 0.4.2", - "alloy-primitives 0.8.12", + "alloy-consensus 0.7.3", + "alloy-eips 0.7.3", + "alloy-primitives 0.8.15", + "alloy-rlp", "alloy-rpc-types-engine", "futures", - "metrics", + "metrics 0.24.1", + "rayon", "reth-beacon-consensus", "reth-blockchain-tree", "reth-blockchain-tree-api", "reth-chain-state", - "reth-chainspec", "reth-consensus", "reth-engine-primitives", "reth-errors", @@ -9350,33 +9514,39 @@ dependencies = [ "reth-metrics", "reth-network-p2p", "reth-payload-builder", + "reth-payload-builder-primitives", "reth-payload-primitives", - "reth-payload-validator", "reth-primitives", + "reth-primitives-traits", "reth-provider", "reth-prune", "reth-revm", "reth-stages-api", "reth-tasks", "reth-trie", + "reth-trie-db", "reth-trie-parallel", - "thiserror", + "reth-trie-sparse", + "revm-primitives", + "thiserror 2.0.8", "tokio", "tracing", ] [[package]] name = "reth-engine-util" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-primitives 0.8.12", + "alloy-consensus 0.7.3", + "alloy-eips 0.7.3", + "alloy-primitives 0.8.15", "alloy-rpc-types-engine", "eyre", "futures", "itertools 0.13.0", "pin-project", - "reth-beacon-consensus", + "reth-consensus-common", "reth-engine-primitives", "reth-errors", "reth-ethereum-forks", @@ -9398,37 +9568,39 @@ dependencies = [ [[package]] name = "reth-errors" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ "reth-blockchain-tree-api", "reth-consensus", "reth-execution-errors", "reth-fs-util", "reth-storage-errors", - "thiserror", + "thiserror 2.0.8", ] [[package]] name = "reth-eth-wire" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-primitives 0.8.12", + "alloy-chains", + "alloy-primitives 0.8.15", "alloy-rlp", "bytes", "derive_more 1.0.0", "futures", "pin-project", - "reth-chainspec", "reth-codecs", "reth-ecies", "reth-eth-wire-types", + "reth-ethereum-forks", "reth-metrics", "reth-network-peers", - "reth-primitives", + "reth-primitives-traits", + "serde", "snap", - "thiserror", + "thiserror 2.0.8", "tokio", "tokio-stream", "tokio-util", @@ -9437,25 +9609,29 @@ dependencies = [ [[package]] name = "reth-eth-wire-types" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ "alloy-chains", - "alloy-eips 0.4.2", - "alloy-primitives 0.8.12", + "alloy-consensus 0.7.3", + "alloy-eips 0.7.3", + "alloy-primitives 0.8.15", "alloy-rlp", "bytes", "derive_more 1.0.0", "reth-chainspec", "reth-codecs-derive", + "reth-ethereum-forks", "reth-primitives", - "thiserror", + "reth-primitives-traits", + "serde", + "thiserror 2.0.8", ] [[package]] name = "reth-ethereum-cli" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ "eyre", "reth-chainspec", @@ -9464,30 +9640,34 @@ dependencies = [ [[package]] name = "reth-ethereum-consensus" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-primitives 0.8.12", + "alloy-consensus 0.7.3", + "alloy-eips 0.7.3", + "alloy-primitives 0.8.15", "reth-chainspec", "reth-consensus", "reth-consensus-common", "reth-primitives", + "reth-primitives-traits", "tracing", ] [[package]] name = "reth-ethereum-engine-primitives" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-eips 0.4.2", - "alloy-primitives 0.8.12", + "alloy-eips 0.7.3", + "alloy-primitives 0.8.15", "alloy-rlp", "alloy-rpc-types-engine", "reth-chain-state", "reth-chainspec", "reth-engine-primitives", "reth-payload-primitives", + "reth-payload-validator", "reth-primitives", "reth-rpc-types-compat", "serde", @@ -9496,11 +9676,11 @@ dependencies = [ [[package]] name = "reth-ethereum-forks" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ "alloy-chains", - "alloy-primitives 0.8.12", + "alloy-primitives 0.8.15", "alloy-rlp", "auto_impl", "crc", @@ -9508,15 +9688,17 @@ dependencies = [ "once_cell", "rustc-hash 2.0.0", "serde", - "thiserror-no-std", + "thiserror 2.0.8", ] [[package]] name = "reth-ethereum-payload-builder" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-primitives 0.8.12", + "alloy-consensus 0.7.3", + "alloy-eips 0.7.3", + "alloy-primitives 0.8.15", "reth-basic-payload-builder", "reth-chain-state", "reth-chainspec", @@ -9525,21 +9707,20 @@ dependencies = [ "reth-evm-ethereum", "reth-execution-types", "reth-payload-builder", + "reth-payload-builder-primitives", "reth-payload-primitives", "reth-primitives", "reth-provider", "reth-revm", "reth-transaction-pool", - "reth-trie", "revm", - "revm-primitives", "tracing", ] [[package]] name = "reth-etl" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ "rayon", "reth-db-api", @@ -9548,21 +9729,25 @@ dependencies = [ [[package]] name = "reth-evm" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-eips 0.4.2", - "alloy-primitives 0.8.12", + "alloy-consensus 0.7.3", + "alloy-eips 0.7.3", + "alloy-primitives 0.8.15", "auto_impl", "futures-util", - "metrics", + "metrics 0.24.1", "reth-chainspec", + "reth-consensus", + "reth-consensus-common", "reth-execution-errors", "reth-execution-types", "reth-metrics", "reth-primitives", "reth-primitives-traits", "reth-prune-types", + "reth-revm", "reth-storage-errors", "revm", "revm-primitives", @@ -9570,49 +9755,52 @@ dependencies = [ [[package]] name = "reth-evm-ethereum" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-eips 0.4.2", - "alloy-primitives 0.8.12", + "alloy-consensus 0.7.3", + "alloy-eips 0.7.3", + "alloy-primitives 0.8.15", "alloy-sol-types 0.8.12", "reth-chainspec", + "reth-consensus", "reth-ethereum-consensus", "reth-ethereum-forks", "reth-evm", - "reth-execution-types", "reth-primitives", - "reth-prune-types", "reth-revm", "revm-primitives", ] [[package]] name = "reth-execution-errors" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-eips 0.4.2", - "alloy-primitives 0.8.12", + "alloy-eips 0.7.3", + "alloy-primitives 0.8.15", "alloy-rlp", - "derive_more 1.0.0", "nybbles", "reth-consensus", "reth-prune-types", "reth-storage-errors", "revm-primitives", + "thiserror 2.0.8", ] [[package]] name = "reth-execution-types" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-eips 0.4.2", - "alloy-primitives 0.8.12", + "alloy-consensus 0.7.3", + "alloy-eips 0.7.3", + "alloy-primitives 0.8.15", "reth-execution-errors", "reth-primitives", + "reth-primitives-traits", "reth-trie", + "reth-trie-common", "revm", "serde", "serde_with", @@ -9620,15 +9808,16 @@ dependencies = [ [[package]] name = "reth-exex" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-eips 0.4.2", - "alloy-primitives 0.8.12", + "alloy-consensus 0.7.3", + "alloy-eips 0.7.3", + "alloy-primitives 0.8.15", "eyre", "futures", "itertools 0.13.0", - "metrics", + "metrics 0.24.1", "parking_lot 0.12.3", "reth-chain-state", "reth-chainspec", @@ -9639,7 +9828,6 @@ dependencies = [ "reth-metrics", "reth-node-api", "reth-node-core", - "reth-payload-builder", "reth-primitives", "reth-primitives-traits", "reth-provider", @@ -9656,33 +9844,36 @@ dependencies = [ [[package]] name = "reth-exex-types" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-eips 0.4.2", - "alloy-primitives 0.8.12", + "alloy-eips 0.7.3", + "alloy-primitives 0.8.15", "reth-chain-state", "reth-execution-types", + "reth-primitives", + "reth-primitives-traits", "serde", "serde_with", ] [[package]] name = "reth-fs-util" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ "serde", "serde_json", - "thiserror", + "thiserror 2.0.8", ] [[package]] name = "reth-invalid-block-hooks" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-primitives 0.8.12", + "alloy-consensus 0.7.3", + "alloy-primitives 0.8.15", "alloy-rlp", "alloy-rpc-types-debug", "eyre", @@ -9693,6 +9884,7 @@ dependencies = [ "reth-engine-primitives", "reth-evm", "reth-primitives", + "reth-primitives-traits", "reth-provider", "reth-revm", "reth-rpc-api", @@ -9704,8 +9896,8 @@ dependencies = [ [[package]] name = "reth-ipc" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ "async-trait", "bytes", @@ -9715,7 +9907,7 @@ dependencies = [ "jsonrpsee", "pin-project", "serde_json", - "thiserror", + "thiserror 2.0.8", "tokio", "tokio-stream", "tokio-util", @@ -9725,25 +9917,25 @@ dependencies = [ [[package]] name = "reth-libmdbx" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ "bitflags 2.6.0", "byteorder", "dashmap 6.0.1", "derive_more 1.0.0", - "indexmap 2.5.0", + "indexmap 2.7.0", "parking_lot 0.12.3", "reth-mdbx-sys", "smallvec", - "thiserror", + "thiserror 2.0.8", "tracing", ] [[package]] name = "reth-mdbx-sys" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ "bindgen 0.70.1", "cc", @@ -9751,11 +9943,11 @@ dependencies = [ [[package]] name = "reth-metrics" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ "futures", - "metrics", + "metrics 0.24.1", "metrics-derive", "tokio", "tokio-util", @@ -9763,33 +9955,34 @@ dependencies = [ [[package]] name = "reth-net-banlist" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-primitives 0.8.12", + "alloy-primitives 0.8.15", ] [[package]] name = "reth-net-nat" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ "futures-util", "if-addrs", "reqwest 0.12.7", "serde_with", - "thiserror", + "thiserror 2.0.8", "tokio", "tracing", ] [[package]] name = "reth-network" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-eips 0.4.2", - "alloy-primitives 0.8.12", + "alloy-consensus 0.7.3", + "alloy-eips 0.7.3", + "alloy-primitives 0.8.15", "alloy-rlp", "aquamarine", "auto_impl", @@ -9798,7 +9991,7 @@ dependencies = [ "enr 0.12.1", "futures", "itertools 0.13.0", - "metrics", + "metrics 0.24.1", "parking_lot 0.12.3", "pin-project", "rand", @@ -9809,6 +10002,8 @@ dependencies = [ "reth-dns-discovery", "reth-ecies", "reth-eth-wire", + "reth-eth-wire-types", + "reth-ethereum-forks", "reth-fs-util", "reth-metrics", "reth-net-banlist", @@ -9817,6 +10012,7 @@ dependencies = [ "reth-network-peers", "reth-network-types", "reth-primitives", + "reth-primitives-traits", "reth-storage-api", "reth-tasks", "reth-tokio-util", @@ -9826,7 +10022,7 @@ dependencies = [ "secp256k1", "serde", "smallvec", - "thiserror", + "thiserror 2.0.8", "tokio", "tokio-stream", "tokio-util", @@ -9835,10 +10031,10 @@ dependencies = [ [[package]] name = "reth-network-api" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-primitives 0.8.12", + "alloy-primitives 0.8.15", "alloy-rpc-types-admin", "auto_impl", "derive_more 1.0.0", @@ -9851,18 +10047,19 @@ dependencies = [ "reth-network-types", "reth-tokio-util", "serde", - "thiserror", + "thiserror 2.0.8", "tokio", "tokio-stream", ] [[package]] name = "reth-network-p2p" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-eips 0.4.2", - "alloy-primitives 0.8.12", + "alloy-consensus 0.7.3", + "alloy-eips 0.7.3", + "alloy-primitives 0.8.15", "auto_impl", "derive_more 1.0.0", "futures", @@ -9871,6 +10068,7 @@ dependencies = [ "reth-network-peers", "reth-network-types", "reth-primitives", + "reth-primitives-traits", "reth-storage-errors", "tokio", "tracing", @@ -9878,23 +10076,23 @@ dependencies = [ [[package]] name = "reth-network-peers" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-primitives 0.8.12", + "alloy-primitives 0.8.15", "alloy-rlp", "enr 0.12.1", "secp256k1", "serde_with", - "thiserror", + "thiserror 2.0.8", "tokio", "url", ] [[package]] name = "reth-network-types" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ "humantime-serde", "reth-ethereum-forks", @@ -9907,8 +10105,8 @@ dependencies = [ [[package]] name = "reth-nippy-jar" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ "anyhow", "bincode", @@ -9917,43 +10115,46 @@ dependencies = [ "memmap2", "reth-fs-util", "serde", - "thiserror", + "thiserror 2.0.8", "tracing", "zstd 0.13.2", ] [[package]] name = "reth-node-api" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ + "alloy-rpc-types-engine", + "eyre", + "reth-beacon-consensus", + "reth-consensus", "reth-engine-primitives", "reth-evm", "reth-network-api", + "reth-node-core", "reth-node-types", - "reth-payload-builder", + "reth-payload-builder-primitives", "reth-payload-primitives", - "reth-primitives", "reth-provider", - "reth-rpc-eth-api", "reth-tasks", "reth-transaction-pool", ] [[package]] name = "reth-node-builder" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-primitives 0.8.12", - "alloy-rpc-types 0.4.2", + "alloy-consensus 0.7.3", + "alloy-primitives 0.8.15", + "alloy-rpc-types 0.7.3", "aquamarine", "eyre", "fdlimit", "futures", "jsonrpsee", "rayon", - "reth-auto-seal-consensus", "reth-beacon-consensus", "reth-blockchain-tree", "reth-chain-state", @@ -9965,6 +10166,7 @@ dependencies = [ "reth-db-api", "reth-db-common", "reth-downloaders", + "reth-engine-local", "reth-engine-service", "reth-engine-tree", "reth-engine-util", @@ -9980,7 +10182,6 @@ dependencies = [ "reth-node-events", "reth-node-metrics", "reth-payload-builder", - "reth-payload-primitives", "reth-payload-validator", "reth-primitives", "reth-provider", @@ -9997,6 +10198,7 @@ dependencies = [ "reth-tokio-util", "reth-tracing", "reth-transaction-pool", + "revm-primitives", "secp256k1", "tokio", "tokio-stream", @@ -10005,10 +10207,12 @@ dependencies = [ [[package]] name = "reth-node-core" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-primitives 0.8.12", + "alloy-consensus 0.7.3", + "alloy-eips 0.7.3", + "alloy-primitives 0.8.15", "alloy-rpc-types-engine", "clap", "const_format", @@ -10021,18 +10225,18 @@ dependencies = [ "reth-chainspec", "reth-cli-util", "reth-config", - "reth-consensus-common", + "reth-consensus", "reth-db", "reth-discv4", "reth-discv5", + "reth-ethereum-forks", "reth-net-nat", "reth-network", "reth-network-p2p", "reth-network-peers", "reth-primitives", + "reth-primitives-traits", "reth-prune-types", - "reth-rpc-api", - "reth-rpc-eth-api", "reth-rpc-eth-types", "reth-rpc-server-types", "reth-rpc-types-compat", @@ -10045,7 +10249,7 @@ dependencies = [ "serde", "shellexpand", "strum", - "thiserror", + "thiserror 2.0.8", "toml 0.8.14", "tracing", "vergen", @@ -10053,17 +10257,17 @@ dependencies = [ [[package]] name = "reth-node-ethereum" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ "eyre", - "reth-auto-seal-consensus", "reth-basic-payload-builder", "reth-beacon-consensus", "reth-chainspec", "reth-consensus", "reth-ethereum-engine-primitives", "reth-ethereum-payload-builder", + "reth-evm", "reth-evm-ethereum", "reth-network", "reth-node-api", @@ -10071,50 +10275,52 @@ dependencies = [ "reth-payload-builder", "reth-primitives", "reth-provider", + "reth-revm", "reth-rpc", "reth-tracing", "reth-transaction-pool", + "reth-trie-db", + "revm", ] [[package]] name = "reth-node-events" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-primitives 0.8.12", + "alloy-consensus 0.7.3", + "alloy-eips 0.7.3", + "alloy-primitives 0.8.15", "alloy-rpc-types-engine", "futures", "humantime", "pin-project", "reth-beacon-consensus", - "reth-network", + "reth-engine-primitives", "reth-network-api", - "reth-primitives", "reth-primitives-traits", - "reth-provider", - "reth-prune", + "reth-prune-types", "reth-stages", - "reth-static-file", + "reth-static-file-types", + "reth-storage-api", "tokio", "tracing", ] [[package]] name = "reth-node-metrics" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ "eyre", "http 1.1.0", - "jsonrpsee", - "metrics", + "jsonrpsee-server", + "metrics 0.24.1", "metrics-exporter-prometheus", "metrics-process", "metrics-util", "procfs", - "reth-db-api", "reth-metrics", - "reth-provider", "reth-tasks", "tikv-jemalloc-ctl", "tokio", @@ -10125,62 +10331,83 @@ dependencies = [ [[package]] name = "reth-node-types" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ "reth-chainspec", "reth-db-api", "reth-engine-primitives", + "reth-primitives-traits", + "reth-trie-db", ] [[package]] name = "reth-payload-builder" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-primitives 0.8.12", - "alloy-rpc-types 0.4.2", + "alloy-rpc-types 0.7.3", "async-trait", "futures-util", - "metrics", + "metrics 0.24.1", + "reth-chain-state", "reth-ethereum-engine-primitives", "reth-metrics", + "reth-payload-builder-primitives", "reth-payload-primitives", - "reth-primitives", - "reth-provider", "tokio", "tokio-stream", "tracing", ] [[package]] -name = "reth-payload-primitives" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +name = "reth-payload-builder-primitives" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-primitives 0.8.12", - "alloy-rpc-types 0.4.2", + "alloy-rpc-types-engine", "async-trait", - "op-alloy-rpc-types-engine", "pin-project", + "reth-payload-primitives", + "tokio", + "tokio-stream", + "tracing", +] + +[[package]] +name = "reth-payload-primitives" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" +dependencies = [ + "alloy-eips 0.7.3", + "alloy-primitives 0.8.15", + "alloy-rpc-types-engine", "reth-chain-state", "reth-chainspec", "reth-errors", "reth-primitives", - "reth-transaction-pool", + "revm-primitives", "serde", - "thiserror", + "thiserror 2.0.8", "tokio", - "tokio-stream", - "tracing", +] + +[[package]] +name = "reth-payload-util" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" +dependencies = [ + "alloy-consensus 0.7.3", + "alloy-primitives 0.8.15", + "reth-primitives", ] [[package]] name = "reth-payload-validator" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-rpc-types 0.4.2", + "alloy-rpc-types 0.7.3", "reth-chainspec", "reth-primitives", "reth-rpc-types-compat", @@ -10188,15 +10415,17 @@ dependencies = [ [[package]] name = "reth-primitives" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-consensus 0.4.2", - "alloy-eips 0.4.2", - "alloy-primitives 0.8.12", + "alloy-consensus 0.7.3", + "alloy-eips 0.7.3", + "alloy-network 0.7.3", + "alloy-primitives 0.8.15", "alloy-rlp", - "alloy-rpc-types 0.4.2", - "alloy-serde 0.4.2", + "alloy-rpc-types 0.7.3", + "alloy-serde 0.7.3", + "alloy-trie", "bytes", "c-kzg", "derive_more 1.0.0", @@ -10210,47 +10439,48 @@ dependencies = [ "reth-ethereum-forks", "reth-primitives-traits", "reth-static-file-types", - "reth-trie-common", + "reth-zstd-compressors", "revm-primitives", "secp256k1", "serde", "serde_with", - "zstd 0.13.2", ] [[package]] name = "reth-primitives-traits" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-consensus 0.4.2", - "alloy-eips 0.4.2", - "alloy-genesis 0.4.2", - "alloy-primitives 0.8.12", + "alloy-consensus 0.7.3", + "alloy-eips 0.7.3", + "alloy-genesis 0.7.3", + "alloy-primitives 0.8.15", "alloy-rlp", + "auto_impl", "byteorder", "bytes", "derive_more 1.0.0", "modular-bitfield", + "op-alloy-consensus", "reth-codecs", "revm-primitives", - "roaring", "serde", "serde_with", ] [[package]] name = "reth-provider" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-eips 0.4.2", - "alloy-primitives 0.8.12", + "alloy-consensus 0.7.3", + "alloy-eips 0.7.3", + "alloy-primitives 0.8.15", "alloy-rpc-types-engine", "auto_impl", "dashmap 6.0.1", "itertools 0.13.0", - "metrics", + "metrics 0.24.1", "notify", "parking_lot 0.12.3", "rayon", @@ -10269,6 +10499,7 @@ dependencies = [ "reth-nippy-jar", "reth-node-types", "reth-primitives", + "reth-primitives-traits", "reth-prune-types", "reth-stages-types", "reth-storage-api", @@ -10283,12 +10514,14 @@ dependencies = [ [[package]] name = "reth-prune" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-primitives 0.8.12", + "alloy-consensus 0.7.3", + "alloy-eips 0.7.3", + "alloy-primitives 0.8.15", "itertools 0.13.0", - "metrics", + "metrics 0.24.1", "rayon", "reth-chainspec", "reth-config", @@ -10297,68 +10530,72 @@ dependencies = [ "reth-errors", "reth-exex-types", "reth-metrics", + "reth-primitives-traits", "reth-provider", "reth-prune-types", "reth-static-file-types", "reth-tokio-util", "rustc-hash 2.0.0", - "thiserror", + "thiserror 2.0.8", "tokio", "tracing", ] [[package]] name = "reth-prune-types" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-primitives 0.8.12", + "alloy-primitives 0.8.15", "bytes", "derive_more 1.0.0", "modular-bitfield", "reth-codecs", "serde", - "thiserror", + "thiserror 2.0.8", ] [[package]] name = "reth-revm" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" -dependencies = [ - "alloy-primitives 0.8.12", - "reth-chainspec", - "reth-consensus-common", +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" +dependencies = [ + "alloy-eips 0.7.3", + "alloy-primitives 0.8.15", "reth-execution-errors", "reth-primitives", + "reth-primitives-traits", "reth-prune-types", "reth-storage-api", "reth-storage-errors", + "reth-trie", "revm", ] [[package]] name = "reth-rpc" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-consensus 0.4.2", + "alloy-consensus 0.7.3", "alloy-dyn-abi", - "alloy-eips 0.4.2", - "alloy-genesis 0.4.2", - "alloy-network 0.4.2", - "alloy-primitives 0.8.12", + "alloy-eips 0.7.3", + "alloy-genesis 0.7.3", + "alloy-network 0.7.3", + "alloy-primitives 0.8.15", "alloy-rlp", - "alloy-rpc-types 0.4.2", + "alloy-rpc-types 0.7.3", "alloy-rpc-types-admin", + "alloy-rpc-types-beacon", "alloy-rpc-types-debug", - "alloy-rpc-types-eth 0.4.2", + "alloy-rpc-types-engine", + "alloy-rpc-types-eth 0.7.3", "alloy-rpc-types-mev", "alloy-rpc-types-trace", "alloy-rpc-types-txpool", - "alloy-serde 0.4.2", - "alloy-signer 0.4.2", - "alloy-signer-local 0.4.2", + "alloy-serde 0.7.3", + "alloy-signer 0.7.3", + "alloy-signer-local 0.7.3", "async-trait", "derive_more 1.0.0", "futures", @@ -10371,14 +10608,17 @@ dependencies = [ "pin-project", "rand", "reth-chainspec", + "reth-consensus", "reth-consensus-common", + "reth-engine-primitives", "reth-errors", + "reth-ethereum-consensus", "reth-evm", "reth-network-api", "reth-network-peers", "reth-network-types", - "reth-node-api", "reth-primitives", + "reth-primitives-traits", "reth-provider", "reth-revm", "reth-rpc-api", @@ -10389,13 +10629,12 @@ dependencies = [ "reth-rpc-types-compat", "reth-tasks", "reth-transaction-pool", - "reth-trie", "revm", "revm-inspectors", "revm-primitives", "serde", "serde_json", - "thiserror", + "thiserror 2.0.8", "tokio", "tokio-stream", "tower 0.4.13", @@ -10405,43 +10644,40 @@ dependencies = [ [[package]] name = "reth-rpc-api" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-eips 0.4.2", - "alloy-json-rpc 0.4.2", - "alloy-primitives 0.8.12", - "alloy-rpc-types 0.4.2", + "alloy-eips 0.7.3", + "alloy-json-rpc 0.7.3", + "alloy-primitives 0.8.15", + "alloy-rpc-types 0.7.3", "alloy-rpc-types-admin", "alloy-rpc-types-anvil", "alloy-rpc-types-beacon", "alloy-rpc-types-debug", "alloy-rpc-types-engine", - "alloy-rpc-types-eth 0.4.2", + "alloy-rpc-types-eth 0.7.3", "alloy-rpc-types-mev", "alloy-rpc-types-trace", "alloy-rpc-types-txpool", - "alloy-serde 0.4.2", + "alloy-serde 0.7.3", "jsonrpsee", "reth-engine-primitives", "reth-network-peers", - "reth-primitives", "reth-rpc-eth-api", ] [[package]] name = "reth-rpc-builder" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-network 0.4.2", - "alloy-rpc-types 0.4.2", - "alloy-serde 0.4.2", "http 1.1.0", "jsonrpsee", - "metrics", + "metrics 0.24.1", "pin-project", "reth-chainspec", + "reth-consensus", "reth-engine-primitives", "reth-evm", "reth-ipc", @@ -10459,7 +10695,9 @@ dependencies = [ "reth-tasks", "reth-transaction-pool", "serde", - "thiserror", + "thiserror 2.0.8", + "tokio", + "tokio-util", "tower 0.4.13", "tower-http", "tracing", @@ -10467,22 +10705,24 @@ dependencies = [ [[package]] name = "reth-rpc-engine-api" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-eips 0.4.2", - "alloy-primitives 0.8.12", + "alloy-eips 0.7.3", + "alloy-primitives 0.8.15", "alloy-rpc-types-engine", "async-trait", "jsonrpsee-core", "jsonrpsee-types", - "metrics", + "metrics 0.24.1", + "parking_lot 0.12.3", "reth-beacon-consensus", "reth-chainspec", "reth-engine-primitives", "reth-evm", "reth-metrics", "reth-payload-builder", + "reth-payload-builder-primitives", "reth-payload-primitives", "reth-primitives", "reth-rpc-api", @@ -10491,24 +10731,26 @@ dependencies = [ "reth-tasks", "reth-transaction-pool", "serde", - "thiserror", + "thiserror 2.0.8", "tokio", "tracing", ] [[package]] name = "reth-rpc-eth-api" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ + "alloy-consensus 0.7.3", "alloy-dyn-abi", - "alloy-eips 0.4.2", - "alloy-json-rpc 0.4.2", - "alloy-network 0.4.2", - "alloy-primitives 0.8.12", - "alloy-rpc-types 0.4.2", - "alloy-rpc-types-eth 0.4.2", + "alloy-eips 0.7.3", + "alloy-json-rpc 0.7.3", + "alloy-network 0.7.3", + "alloy-primitives 0.8.15", + "alloy-rlp", + "alloy-rpc-types-eth 0.7.3", "alloy-rpc-types-mev", + "alloy-serde 0.7.3", "async-trait", "auto_impl", "dyn-clone", @@ -10519,9 +10761,10 @@ dependencies = [ "reth-chainspec", "reth-errors", "reth-evm", - "reth-execution-types", "reth-network-api", + "reth-node-api", "reth-primitives", + "reth-primitives-traits", "reth-provider", "reth-revm", "reth-rpc-eth-types", @@ -10529,7 +10772,7 @@ dependencies = [ "reth-rpc-types-compat", "reth-tasks", "reth-transaction-pool", - "reth-trie", + "reth-trie-common", "revm", "revm-inspectors", "revm-primitives", @@ -10539,29 +10782,28 @@ dependencies = [ [[package]] name = "reth-rpc-eth-types" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" -dependencies = [ - "alloy-consensus 0.4.2", - "alloy-eips 0.4.2", - "alloy-primitives 0.8.12", - "alloy-rpc-types 0.4.2", - "alloy-rpc-types-eth 0.4.2", - "alloy-serde 0.4.2", +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" +dependencies = [ + "alloy-consensus 0.7.3", + "alloy-eips 0.7.3", + "alloy-primitives 0.8.15", + "alloy-rpc-types-eth 0.7.3", "alloy-sol-types 0.8.12", "derive_more 1.0.0", "futures", + "itertools 0.13.0", "jsonrpsee-core", "jsonrpsee-types", - "metrics", + "metrics 0.24.1", "rand", "reth-chain-state", "reth-chainspec", "reth-errors", - "reth-evm", "reth-execution-types", "reth-metrics", "reth-primitives", + "reth-primitives-traits", "reth-revm", "reth-rpc-server-types", "reth-rpc-types-compat", @@ -10574,7 +10816,7 @@ dependencies = [ "revm-primitives", "schnellru", "serde", - "thiserror", + "thiserror 2.0.8", "tokio", "tokio-stream", "tracing", @@ -10582,55 +10824,59 @@ dependencies = [ [[package]] name = "reth-rpc-layer" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ "alloy-rpc-types-engine", "http 1.1.0", "jsonrpsee-http-client", "pin-project", "tower 0.4.13", + "tower-http", "tracing", ] [[package]] name = "reth-rpc-server-types" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-primitives 0.8.12", + "alloy-eips 0.7.3", + "alloy-primitives 0.8.15", "alloy-rpc-types-engine", "jsonrpsee-core", "jsonrpsee-types", "reth-errors", "reth-network-api", - "reth-primitives", "serde", "strum", ] [[package]] name = "reth-rpc-types-compat" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-eips 0.4.2", - "alloy-primitives 0.8.12", + "alloy-consensus 0.7.3", + "alloy-eips 0.7.3", + "alloy-primitives 0.8.15", "alloy-rlp", - "alloy-rpc-types 0.4.2", "alloy-rpc-types-engine", - "alloy-rpc-types-eth 0.4.2", - "alloy-serde 0.4.2", + "alloy-rpc-types-eth 0.7.3", + "jsonrpsee-types", "reth-primitives", - "reth-trie-common", + "reth-primitives-traits", + "serde", ] [[package]] name = "reth-stages" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-primitives 0.8.12", + "alloy-consensus 0.7.3", + "alloy-eips 0.7.3", + "alloy-primitives 0.8.15", "bincode", "futures-util", "itertools 0.13.0", @@ -10656,21 +10902,22 @@ dependencies = [ "reth-storage-errors", "reth-trie", "reth-trie-db", - "thiserror", + "thiserror 2.0.8", "tokio", "tracing", ] [[package]] name = "reth-stages-api" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-primitives 0.8.12", + "alloy-eips 0.7.3", + "alloy-primitives 0.8.15", "aquamarine", "auto_impl", "futures-util", - "metrics", + "metrics 0.24.1", "reth-consensus", "reth-errors", "reth-metrics", @@ -10682,17 +10929,17 @@ dependencies = [ "reth-static-file", "reth-static-file-types", "reth-tokio-util", - "thiserror", + "thiserror 2.0.8", "tokio", "tracing", ] [[package]] name = "reth-stages-types" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-primitives 0.8.12", + "alloy-primitives 0.8.15", "bytes", "modular-bitfield", "reth-codecs", @@ -10702,17 +10949,16 @@ dependencies = [ [[package]] name = "reth-static-file" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-primitives 0.8.12", + "alloy-primitives 0.8.15", "parking_lot 0.12.3", "rayon", - "reth-chainspec", + "reth-codecs", "reth-db", "reth-db-api", - "reth-nippy-jar", - "reth-node-types", + "reth-primitives-traits", "reth-provider", "reth-prune-types", "reth-stages-types", @@ -10724,10 +10970,10 @@ dependencies = [ [[package]] name = "reth-static-file-types" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-primitives 0.8.12", + "alloy-primitives 0.8.15", "clap", "derive_more 1.0.0", "serde", @@ -10736,49 +10982,56 @@ dependencies = [ [[package]] name = "reth-storage-api" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-eips 0.4.2", - "alloy-primitives 0.8.12", + "alloy-consensus 0.7.3", + "alloy-eips 0.7.3", + "alloy-primitives 0.8.15", + "alloy-rpc-types-engine", "auto_impl", "reth-chainspec", + "reth-db", "reth-db-api", "reth-db-models", "reth-execution-types", "reth-primitives", + "reth-primitives-traits", "reth-prune-types", "reth-stages-types", "reth-storage-errors", "reth-trie", + "reth-trie-db", + "revm", ] [[package]] name = "reth-storage-errors" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-eips 0.4.2", - "alloy-primitives 0.8.12", + "alloy-eips 0.7.3", + "alloy-primitives 0.8.15", "alloy-rlp", "derive_more 1.0.0", "reth-fs-util", - "reth-primitives", + "reth-primitives-traits", + "reth-static-file-types", ] [[package]] name = "reth-tasks" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ "auto_impl", "dyn-clone", "futures-util", - "metrics", + "metrics 0.24.1", "pin-project", "rayon", "reth-metrics", - "thiserror", + "thiserror 2.0.8", "tokio", "tracing", "tracing-futures", @@ -10786,8 +11039,8 @@ dependencies = [ [[package]] name = "reth-tokio-util" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ "tokio", "tokio-stream", @@ -10796,8 +11049,8 @@ dependencies = [ [[package]] name = "reth-tracing" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ "clap", "eyre", @@ -10811,25 +11064,29 @@ dependencies = [ [[package]] name = "reth-transaction-pool" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-eips 0.4.2", - "alloy-primitives 0.8.12", + "alloy-consensus 0.7.3", + "alloy-eips 0.7.3", + "alloy-primitives 0.8.15", "alloy-rlp", "aquamarine", "auto_impl", "bitflags 2.6.0", "futures-util", - "metrics", + "metrics 0.24.1", "parking_lot 0.12.3", + "rand", "reth-chain-state", "reth-chainspec", "reth-eth-wire-types", "reth-execution-types", "reth-fs-util", "reth-metrics", + "reth-payload-util", "reth-primitives", + "reth-primitives-traits", "reth-storage-api", "reth-tasks", "revm", @@ -10837,7 +11094,7 @@ dependencies = [ "schnellru", "serde", "smallvec", - "thiserror", + "thiserror 2.0.8", "tokio", "tokio-stream", "tracing", @@ -10845,15 +11102,17 @@ dependencies = [ [[package]] name = "reth-trie" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-primitives 0.8.12", + "alloy-consensus 0.7.3", + "alloy-eips 0.7.3", + "alloy-primitives 0.8.15", "alloy-rlp", + "alloy-trie", "auto_impl", - "derive_more 1.0.0", "itertools 0.13.0", - "metrics", + "metrics 0.24.1", "rayon", "reth-execution-errors", "reth-metrics", @@ -10861,21 +11120,22 @@ dependencies = [ "reth-stages-types", "reth-storage-errors", "reth-trie-common", + "reth-trie-sparse", "revm", - "serde", - "serde_with", "tracing", ] [[package]] name = "reth-trie-common" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-consensus 0.4.2", - "alloy-genesis 0.4.2", - "alloy-primitives 0.8.12", + "alloy-consensus 0.7.3", + "alloy-genesis 0.7.3", + "alloy-primitives 0.8.15", "alloy-rlp", + "alloy-rpc-types-eth 0.7.3", + "alloy-serde 0.7.3", "alloy-trie", "bytes", "derive_more 1.0.0", @@ -10885,61 +11145,80 @@ dependencies = [ "reth-primitives-traits", "revm-primitives", "serde", + "serde_with", ] [[package]] name = "reth-trie-db" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-primitives 0.8.12", + "alloy-primitives 0.8.15", "alloy-rlp", - "auto_impl", "derive_more 1.0.0", - "itertools 0.13.0", - "metrics", - "rayon", + "metrics 0.24.1", "reth-db", "reth-db-api", "reth-execution-errors", "reth-metrics", "reth-primitives", - "reth-stages-types", "reth-storage-errors", "reth-trie", - "reth-trie-common", "revm", "tracing", ] [[package]] name = "reth-trie-parallel" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-primitives 0.8.12", + "alloy-primitives 0.8.15", "alloy-rlp", "derive_more 1.0.0", "itertools 0.13.0", - "metrics", + "metrics 0.24.1", "rayon", "reth-db", - "reth-db-api", "reth-execution-errors", "reth-metrics", "reth-primitives", "reth-provider", "reth-trie", + "reth-trie-common", "reth-trie-db", - "thiserror", + "thiserror 2.0.8", "tracing", ] +[[package]] +name = "reth-trie-sparse" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" +dependencies = [ + "alloy-primitives 0.8.15", + "alloy-rlp", + "reth-execution-errors", + "reth-primitives-traits", + "reth-tracing", + "reth-trie-common", + "smallvec", + "thiserror 2.0.8", +] + +[[package]] +name = "reth-zstd-compressors" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" +dependencies = [ + "zstd 0.13.2", +] + [[package]] name = "revm" -version = "14.0.3" +version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "641702b12847f9ed418d552f4fcabe536d867a2c980e96b6e7e25d7b992f929f" +checksum = "15689a3c6a8d14b647b4666f2e236ef47b5a5133cdfd423f545947986fff7013" dependencies = [ "auto_impl", "cfg-if", @@ -10952,12 +11231,12 @@ dependencies = [ [[package]] name = "revm-inspectors" -version = "0.8.1" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43c44af0bf801f48d25f7baf25cf72aff4c02d610f83b428175228162fef0246" +checksum = "0b7f5f8a2deafb3c76f357bbf9e71b73bddb915c4994bbbe3208fbfbe8fc7f8e" dependencies = [ - "alloy-primitives 0.8.12", - "alloy-rpc-types-eth 0.4.2", + "alloy-primitives 0.8.15", + "alloy-rpc-types-eth 0.7.3", "alloy-rpc-types-trace", "alloy-sol-types 0.8.12", "anstyle", @@ -10966,14 +11245,14 @@ dependencies = [ "colorchoice", "revm", "serde_json", - "thiserror", + "thiserror 1.0.66", ] [[package]] name = "revm-interpreter" -version = "10.0.3" +version = "14.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e5e14002afae20b5bf1566f22316122f42f57517000e559c55b25bf7a49cba2" +checksum = "74e3f11d0fed049a4a10f79820c59113a79b38aed4ebec786a79d5c667bfeb51" dependencies = [ "revm-primitives", "serde", @@ -10981,9 +11260,9 @@ dependencies = [ [[package]] name = "revm-precompile" -version = "11.0.3" +version = "15.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3198c06247e8d4ad0d1312591edf049b0de4ddffa9fecb625c318fd67db8639b" +checksum = "e381060af24b750069a2b2d2c54bba273d84e8f5f9e8026fc9262298e26cc336" dependencies = [ "aurora-engine-modexp", "blst", @@ -11000,13 +11279,13 @@ dependencies = [ [[package]] name = "revm-primitives" -version = "10.0.0" +version = "14.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f1525851a03aff9a9d6a1d018b414d76252d6802ab54695b27093ecd7e7a101" +checksum = "3702f132bb484f4f0d0ca4f6fbde3c82cfd745041abbedd6eda67730e1868ef0" dependencies = [ "alloy-eip2930", - "alloy-eip7702", - "alloy-primitives 0.8.12", + "alloy-eip7702 0.4.2", + "alloy-primitives 0.8.15", "auto_impl", "bitflags 2.6.0", "bitvec", @@ -11309,7 +11588,7 @@ dependencies = [ "once_cell", "prometheus", "rocksdb", - "thiserror", + "thiserror 1.0.66", "tracing", ] @@ -11398,7 +11677,7 @@ dependencies = [ "bitflags 2.6.0", "fallible-iterator", "fallible-streaming-iterator", - "hashlink 0.9.1", + "hashlink", "libsqlite3-sys", "smallvec", ] @@ -11838,7 +12117,7 @@ checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.90", ] [[package]] @@ -11847,7 +12126,7 @@ version = "1.0.127" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8043c06d9f82bd7271361ed64f415fe5e12a77fdb52e573e7f06a516dea329ad" dependencies = [ - "indexmap 2.5.0", + "indexmap 2.7.0", "itoa", "memchr", "ryu", @@ -11864,17 +12143,6 @@ dependencies = [ "serde", ] -[[package]] -name = "serde_repr" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.86", -] - [[package]] name = "serde_spanned" version = "0.6.6" @@ -11898,15 +12166,15 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.9.0" +version = "3.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69cecfa94848272156ea67b2b1a53f20fc7bc638c4a46d2f8abde08f05f4b857" +checksum = "8e28bdad6db2b8340e449f7108f020b3b092e8583a9e3fb82713e1d4e71fe817" dependencies = [ "base64 0.22.1", "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.5.0", + "indexmap 2.7.0", "serde", "serde_derive", "serde_json", @@ -11916,14 +12184,14 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.9.0" +version = "3.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8fee4991ef4f274617a51ad4af30519438dacb2f56ac773b08a1922ff743350" +checksum = "9d846214a9854ef724f3da161b426242d8de7c1fc7de2f89bb1efcb154dca79d" dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.90", ] [[package]] @@ -11970,7 +12238,7 @@ checksum = "82fe9db325bcef1fbcde82e078a5cc4efdf787e96b3b9cf45b50b529f2083d67" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.90", ] [[package]] @@ -12123,6 +12391,10 @@ name = "similar" version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1de1d4f81173b03af4c0cbed3c898f6bff5b870e4a7f5d6f4057d62a7a4b686e" +dependencies = [ + "bstr", + "unicode-segmentation", +] [[package]] name = "similar-asserts" @@ -12131,6 +12403,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e041bb827d1bfca18f213411d51b665309f1afb37a04a5d1464530e13779fc0f" dependencies = [ "console", + "serde", "similar", ] @@ -12142,7 +12415,7 @@ checksum = "adc4e5204eb1910f40f9cfa375f6f05b68c3abac4b6fd879c8ff5e7ae8a0a085" dependencies = [ "num-bigint 0.4.6", "num-traits", - "thiserror", + "thiserror 1.0.66", "time", ] @@ -12160,9 +12433,9 @@ checksum = "9fed904c7fb2856d868b92464fc8fa597fce366edea1a9cbfaa8cb5fe080bd6d" [[package]] name = "sketches-ddsketch" -version = "0.2.2" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85636c14b73d81f541e525f585c0a2109e6744e1565b5c1668e31c70c10ed65c" +checksum = "c1e9a774a6c28142ac54bb25d25562e6bcf957493a184f15ad4eebccb23e410a" [[package]] name = "slab" @@ -12214,16 +12487,6 @@ dependencies = [ "scale-info", ] -[[package]] -name = "socket2" -version = "0.4.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" -dependencies = [ - "libc", - "winapi", -] - [[package]] name = "socket2" version = "0.5.7" @@ -12290,7 +12553,7 @@ dependencies = [ "sp1-stark", "strum", "strum_macros", - "thiserror", + "thiserror 1.0.66", "tiny-keccak", "tracing", "typenum", @@ -12337,7 +12600,7 @@ dependencies = [ "strum", "strum_macros", "tempfile", - "thiserror", + "thiserror 1.0.66", "tracing", "tracing-forest", "tracing-subscriber 0.3.18", @@ -12451,7 +12714,7 @@ dependencies = [ "sp1-stark", "subtle-encoding", "tempfile", - "thiserror", + "thiserror 1.0.66", "tracing", "tracing-subscriber 0.3.18", ] @@ -12542,7 +12805,7 @@ dependencies = [ "sp1-primitives", "sp1-stark", "static_assertions", - "thiserror", + "thiserror 1.0.66", "tracing", "vec_map", "zkhash", @@ -12618,7 +12881,7 @@ dependencies = [ "strum", "strum_macros", "tempfile", - "thiserror", + "thiserror 1.0.66", "tokio", "tracing", "twirp-rs", @@ -12657,7 +12920,7 @@ dependencies = [ "strum", "strum_macros", "sysinfo 0.30.13", - "thiserror", + "thiserror 1.0.66", "tracing", ] @@ -12702,9 +12965,6 @@ name = "spin" version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" -dependencies = [ - "lock_api", -] [[package]] name = "spki" @@ -12729,7 +12989,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d904e7009df136af5297832a3ace3370cd14ff1546a232f4f185036c2736fcac" dependencies = [ "quote", - "syn 2.0.86", + "syn 2.0.90", ] [[package]] @@ -12769,7 +13029,7 @@ dependencies = [ "strata-rpc-types", "strata-state", "strata-storage", - "thiserror", + "thiserror 1.0.66", "threadpool", "tokio", "tracing", @@ -12791,7 +13051,7 @@ dependencies = [ "strata-primitives", "strata-rpc-api", "strata-rpc-types", - "thiserror", + "thiserror 1.0.66", "toml 0.5.11", "tracing", ] @@ -12835,7 +13095,7 @@ dependencies = [ "strata-primitives", "strata-storage", "strata-test-utils", - "thiserror", + "thiserror 1.0.66", "tokio", "tracing", ] @@ -12849,7 +13109,7 @@ dependencies = [ "serde", "strata-primitives", "strata-test-utils", - "thiserror", + "thiserror 1.0.66", ] [[package]] @@ -12883,7 +13143,7 @@ dependencies = [ "strata-tasks", "strata-test-utils", "strata-tx-parser", - "thiserror", + "thiserror 1.0.66", "threadpool", "tokio", "tracing", @@ -12902,7 +13162,7 @@ dependencies = [ "strata-primitives", "strata-state", "strata-test-utils", - "thiserror", + "thiserror 1.0.66", "tracing", ] @@ -12943,7 +13203,7 @@ dependencies = [ name = "strata-client" version = "0.1.0" dependencies = [ - "alloy-rpc-types 0.4.2", + "alloy-rpc-types 0.7.3", "anyhow", "arbitrary", "argh", @@ -12984,7 +13244,7 @@ dependencies = [ "strata-test-utils", "strata-tx-parser", "strata-zkvm", - "thiserror", + "thiserror 1.0.66", "threadpool", "tokio", "toml 0.5.11", @@ -13031,7 +13291,7 @@ dependencies = [ "strata-test-utils", "strata-tx-parser", "strata-zkvm", - "thiserror", + "thiserror 1.0.66", "threadpool", "tokio", "tracing", @@ -13085,7 +13345,7 @@ dependencies = [ "strata-state", "strata-test-utils", "strata-zkvm", - "thiserror", + "thiserror 1.0.66", "tracing", ] @@ -13095,14 +13355,15 @@ version = "0.1.0" dependencies = [ "strata-primitives", "strata-state", - "thiserror", + "thiserror 1.0.66", ] [[package]] name = "strata-evmexec" version = "0.1.0" dependencies = [ - "alloy-rpc-types 0.4.2", + "alloy-network 0.7.3", + "alloy-rpc-types 0.7.3", "anyhow", "arbitrary", "borsh", @@ -13119,6 +13380,7 @@ dependencies = [ "reth-rpc-eth-api", "reth-rpc-layer", "reth-rpc-types-compat", + "revm-primitives", "serde", "serde_json", "strata-db", @@ -13129,7 +13391,7 @@ dependencies = [ "strata-state", "strata-storage", "strata-test-utils", - "thiserror", + "thiserror 1.0.66", "tokio", "tower 0.4.13", "tracing", @@ -13149,7 +13411,7 @@ dependencies = [ "bitcoin", "secp256k1", "strata-primitives", - "thiserror", + "thiserror 1.0.66", "zeroize", ] @@ -13162,7 +13424,7 @@ dependencies = [ "digest 0.10.7", "hex", "sha2 0.10.8", - "thiserror", + "thiserror 1.0.66", ] [[package]] @@ -13190,12 +13452,13 @@ dependencies = [ "musig2", "rand", "reth-primitives", + "revm-primitives", "secp256k1", "serde", "serde_json", "sha2 0.10.8", "strata-test-utils", - "thiserror", + "thiserror 1.0.66", "tracing", "zeroize", ] @@ -13264,20 +13527,23 @@ dependencies = [ name = "strata-proofimpl-evm-ee-stf" version = "0.1.0" dependencies = [ - "alloy-consensus 0.4.2", - "alloy-eips 0.4.2", - "alloy-primitives 0.8.12", + "alloy-consensus 0.7.3", + "alloy-eips 0.7.3", + "alloy-primitives 0.8.15", "alloy-rlp", "alloy-rlp-derive", - "alloy-rpc-types 0.4.2", - "alloy-rpc-types-eth 0.4.2", + "alloy-rpc-types 0.7.3", + "alloy-rpc-types-eth 0.7.3", + "alloy-trie", "anyhow", "bincode", "hex-literal", "k256", "reth-primitives", + "reth-primitives-traits", "reth-trie-common", "revm", + "revm-primitives", "rlp", "serde", "serde_json", @@ -13285,7 +13551,7 @@ dependencies = [ "strata-reth-evm", "strata-reth-primitives", "strata-zkvm", - "thiserror", + "thiserror 1.0.66", ] [[package]] @@ -13308,7 +13574,7 @@ dependencies = [ name = "strata-prover-client" version = "0.1.0" dependencies = [ - "alloy-rpc-types 0.4.2", + "alloy-rpc-types 0.7.3", "anyhow", "argh", "async-trait", @@ -13344,7 +13610,7 @@ dependencies = [ "strata-test-utils", "strata-tx-parser", "strata-zkvm", - "thiserror", + "thiserror 1.0.66", "tokio", "tracing", "tracing-subscriber 0.3.18", @@ -13371,7 +13637,7 @@ dependencies = [ "musig2", "pyo3", "pyo3-build-config", - "reth-primitives", + "revm-primitives", "secp256k1", "shrex", "strata-btcio", @@ -13385,8 +13651,8 @@ dependencies = [ name = "strata-reth" version = "0.1.0" dependencies = [ - "alloy-genesis 0.4.2", - "alloy-rpc-types 0.4.2", + "alloy-genesis 0.7.3", + "alloy-rpc-types 0.7.3", "async-trait", "clap", "eyre", @@ -13410,7 +13676,7 @@ dependencies = [ "strata-reth-exex", "strata-reth-node", "strata-reth-rpc", - "thiserror", + "thiserror 1.0.66", "tracing", ] @@ -13421,7 +13687,7 @@ dependencies = [ "anyhow", "bincode", "borsh", - "reth-primitives", + "revm-primitives", "rockbound", "serde", "serde_json", @@ -13447,8 +13713,8 @@ dependencies = [ name = "strata-reth-exex" version = "0.1.0" dependencies = [ - "alloy-eips 0.4.2", - "alloy-rpc-types 0.4.2", + "alloy-eips 0.7.3", + "alloy-rpc-types 0.7.3", "anyhow", "bincode", "eyre", @@ -13461,13 +13727,16 @@ dependencies = [ "reth-revm", "reth-rpc-types-compat", "reth-trie", + "reth-trie-common", + "revm-primitives", "rockbound", "serde", "serde_json", "strata-proofimpl-evm-ee-stf", "strata-reth-db", + "strata-reth-node", "tempfile", - "thiserror", + "thiserror 1.0.66", "tokio", "tracing", ] @@ -13476,21 +13745,30 @@ dependencies = [ name = "strata-reth-node" version = "0.1.0" dependencies = [ - "alloy-rpc-types 0.4.2", + "alloy-consensus 0.7.3", + "alloy-eips 0.7.3", + "alloy-rpc-types 0.7.3", "eyre", "reth", "reth-basic-payload-builder", "reth-chain-state", "reth-chainspec", + "reth-db", "reth-errors", "reth-ethereum-payload-builder", "reth-evm", "reth-evm-ethereum", "reth-node-api", + "reth-node-builder", "reth-node-ethereum", "reth-payload-builder", + "reth-payload-validator", "reth-primitives", + "reth-provider", + "reth-transaction-pool", "reth-trie", + "reth-trie-common", + "reth-trie-db", "revm", "revm-primitives", "serde", @@ -13505,7 +13783,7 @@ name = "strata-reth-primitives" version = "0.1.0" dependencies = [ "alloy-sol-types 0.8.12", - "reth-primitives", + "revm-primitives", "serde", ] @@ -13513,11 +13791,12 @@ dependencies = [ name = "strata-reth-rpc" version = "0.1.0" dependencies = [ - "alloy-eips 0.4.2", - "alloy-network 0.4.2", - "alloy-primitives 0.8.12", - "alloy-rpc-types 0.4.2", - "alloy-rpc-types-eth 0.4.2", + "alloy-consensus 0.7.3", + "alloy-eips 0.7.3", + "alloy-network 0.7.3", + "alloy-primitives 0.8.15", + "alloy-rpc-types 0.7.3", + "alloy-rpc-types-eth 0.7.3", "bincode", "eyre", "hex", @@ -13540,12 +13819,13 @@ dependencies = [ "reth-tasks", "reth-transaction-pool", "revm", + "revm-primitives", "serde", "serde_json", "strata-proofimpl-evm-ee-stf", "strata-reth-db", "strata-rpc-utils", - "thiserror", + "thiserror 1.0.66", "tokio", "tracing", ] @@ -13606,7 +13886,7 @@ dependencies = [ "strata-test-utils", "strata-zkvm", "tempfile", - "thiserror", + "thiserror 1.0.66", "tracing", ] @@ -13625,7 +13905,7 @@ dependencies = [ "strata-primitives", "strata-rpc-types", "strata-state", - "thiserror", + "thiserror 1.0.66", ] [[package]] @@ -13641,7 +13921,7 @@ dependencies = [ "strata-db", "strata-primitives", "strata-state", - "thiserror", + "thiserror 1.0.66", ] [[package]] @@ -13710,7 +13990,7 @@ dependencies = [ "strata-primitives", "strata-rpc-types", "strata-state", - "thiserror", + "thiserror 1.0.66", "tokio", "tracing", ] @@ -13750,7 +14030,7 @@ dependencies = [ "strata-rpc-types", "strata-state", "strata-storage", - "thiserror", + "thiserror 1.0.66", "tokio", "tracing", ] @@ -13762,7 +14042,7 @@ dependencies = [ "anyhow", "arbitrary", "futures-util", - "thiserror", + "thiserror 1.0.66", "tokio", "tracing", ] @@ -13810,7 +14090,7 @@ dependencies = [ "strata-primitives", "strata-state", "strata-test-utils", - "thiserror", + "thiserror 1.0.66", "tracing", ] @@ -13822,7 +14102,7 @@ dependencies = [ "bincode", "borsh", "serde", - "thiserror", + "thiserror 1.0.66", ] [[package]] @@ -13877,7 +14157,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.86", + "syn 2.0.90", ] [[package]] @@ -13937,9 +14217,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.86" +version = "2.0.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e89275301d38033efb81a6e60e3497e734dfcc62571f2854bf4b16690398824c" +checksum = "919d3b74a5dd0ccd15aeb8f93e7006bd9e14c295087c9896a110f490752bcf31" dependencies = [ "proc-macro2", "quote", @@ -13955,7 +14235,7 @@ dependencies = [ "paste", "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.90", ] [[package]] @@ -13967,7 +14247,7 @@ dependencies = [ "paste", "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.90", ] [[package]] @@ -13979,7 +14259,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.90", ] [[package]] @@ -14005,7 +14285,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.90", ] [[package]] @@ -14025,9 +14305,9 @@ dependencies = [ [[package]] name = "sysinfo" -version = "0.31.4" +version = "0.32.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "355dbe4f8799b304b05e1b0f05fc59b2a18d36645cf169607da45bde2f69a1be" +checksum = "4c33cd241af0f2e9e3b5c32163b873b29956890b5342e6745b917ce9d490f4af" dependencies = [ "core-foundation-sys", "libc", @@ -14078,6 +14358,12 @@ dependencies = [ "libc", ] +[[package]] +name = "tagptr" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b2093cf4c8eb1e67749a6762251bc9cd836b6fc171623bd0a9d324d37af2417" + [[package]] name = "tap" version = "1.0.1" @@ -14137,7 +14423,16 @@ version = "1.0.66" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5d171f59dbaa811dbbb1aee1e73db92ec2b122911a48e1390dfe327a821ddede" dependencies = [ - "thiserror-impl", + "thiserror-impl 1.0.66", +] + +[[package]] +name = "thiserror" +version = "2.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08f5383f3e0071702bf93ab5ee99b52d26936be9dedd9413067cbdcddcb6141a" +dependencies = [ + "thiserror-impl 2.0.8", ] [[package]] @@ -14148,7 +14443,18 @@ checksum = "b08be0f17bd307950653ce45db00cd31200d82b624b36e181337d9c7d92765b5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.90", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f357fcec90b3caef6623a099691be676d033b40a058ac95d2a6ade6fa0c943" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", ] [[package]] @@ -14302,7 +14608,7 @@ dependencies = [ "parking_lot 0.12.3", "pin-project-lite", "signal-hook-registry", - "socket2 0.5.7", + "socket2", "tokio-macros", "windows-sys 0.52.0", ] @@ -14315,7 +14621,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.90", ] [[package]] @@ -14357,7 +14663,7 @@ checksum = "0d4770b8024672c1101b3f6733eab95b18007dbe0847a8afe341fcf79e06043f" dependencies = [ "either", "futures-util", - "thiserror", + "thiserror 1.0.66", "tokio", ] @@ -14456,7 +14762,7 @@ version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap 2.5.0", + "indexmap 2.7.0", "toml_datetime", "winnow 0.5.40", ] @@ -14467,7 +14773,7 @@ version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" dependencies = [ - "indexmap 2.5.0", + "indexmap 2.7.0", "toml_datetime", "winnow 0.5.40", ] @@ -14478,7 +14784,7 @@ version = "0.22.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d59a3a72298453f564e2b111fa896f8d07fabb36f51f06d7e875fc5e0b5a3ef1" dependencies = [ - "indexmap 2.5.0", + "indexmap 2.7.0", "serde", "serde_spanned", "toml_datetime", @@ -14506,7 +14812,7 @@ dependencies = [ "percent-encoding", "pin-project", "prost 0.13.3", - "socket2 0.5.7", + "socket2", "tokio", "tokio-stream", "tower 0.4.13", @@ -14552,12 +14858,12 @@ dependencies = [ [[package]] name = "tower-http" -version = "0.5.2" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e9cd434a998747dd2c4276bc96ee2e0c7a2eadf3cae88e52be55a05fa9053f5" +checksum = "403fa3b783d4b626a8ad51d766ab03cb6d2dbfc46b1c5d4448395e6628dc9697" dependencies = [ "async-compression", - "base64 0.21.7", + "base64 0.22.1", "bitflags 2.6.0", "bytes", "futures-core", @@ -14574,7 +14880,7 @@ dependencies = [ "pin-project-lite", "tokio", "tokio-util", - "tower 0.4.13", + "tower 0.5.0", "tower-layer", "tower-service", "tracing", @@ -14612,7 +14918,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3566e8ce28cc0a3fe42519fc80e6b4c943cc4c8cef275620eb8dac2d3d4e06cf" dependencies = [ "crossbeam-channel", - "thiserror", + "thiserror 1.0.66", "time", "tracing-subscriber 0.3.18", ] @@ -14625,7 +14931,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.90", ] [[package]] @@ -14646,7 +14952,7 @@ checksum = "ee40835db14ddd1e3ba414292272eddde9dad04d3d4b65509656414d1c42592f" dependencies = [ "ansi_term", "smallvec", - "thiserror", + "thiserror 1.0.66", "tracing", "tracing-subscriber 0.3.18", ] @@ -14754,50 +15060,10 @@ dependencies = [ ] [[package]] -name = "trust-dns-proto" -version = "0.23.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3119112651c157f4488931a01e586aa459736e9d6046d3bd9105ffb69352d374" -dependencies = [ - "async-trait", - "cfg-if", - "data-encoding", - "enum-as-inner", - "futures-channel", - "futures-io", - "futures-util", - "idna 0.4.0", - "ipnet", - "once_cell", - "rand", - "smallvec", - "thiserror", - "tinyvec", - "tokio", - "tracing", - "url", -] - -[[package]] -name = "trust-dns-resolver" -version = "0.23.2" +name = "triomphe" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10a3e6c3aff1718b3c73e395d1f35202ba2ffa847c6a62eea0db8fb4cfe30be6" -dependencies = [ - "cfg-if", - "futures-util", - "ipconfig", - "lru-cache", - "once_cell", - "parking_lot 0.12.3", - "rand", - "resolv-conf", - "smallvec", - "thiserror", - "tokio", - "tracing", - "trust-dns-proto", -] +checksum = "859eb650cfee7434994602c3a68b25d77ad9e68c8a6cd491616ef86661382eb3" [[package]] name = "try-lock" @@ -14821,7 +15087,7 @@ dependencies = [ "rustls 0.23.18", "rustls-pki-types", "sha1", - "thiserror", + "thiserror 1.0.66", "utf-8", ] @@ -14841,7 +15107,7 @@ dependencies = [ "rustls 0.23.18", "rustls-pki-types", "sha1", - "thiserror", + "thiserror 1.0.66", "utf-8", ] @@ -14861,7 +15127,7 @@ dependencies = [ "reqwest 0.12.7", "serde", "serde_json", - "thiserror", + "thiserror 1.0.66", "tokio", "tower 0.5.0", "url", @@ -14891,6 +15157,18 @@ dependencies = [ "static_assertions", ] +[[package]] +name = "uint" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "909988d098b2f738727b161a106cfc7cab00c539c2687a8836f8e565976fb53e" +dependencies = [ + "byteorder", + "crunchy", + "hex", + "static_assertions", +] + [[package]] name = "unarray" version = "0.1.4" @@ -14906,12 +15184,6 @@ dependencies = [ "version_check", ] -[[package]] -name = "unicode-bidi" -version = "0.3.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" - [[package]] name = "unicode-ident" version = "1.0.12" @@ -14992,13 +15264,14 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.2" +version = "2.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" dependencies = [ "form_urlencoded", - "idna 0.5.0", + "idna", "percent-encoding", + "serde", ] [[package]] @@ -15148,7 +15421,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.90", "wasm-bindgen-shared", ] @@ -15182,7 +15455,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.90", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -15206,6 +15479,20 @@ dependencies = [ "web-sys", ] +[[package]] +name = "wasmtimer" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0048ad49a55b9deb3953841fa1fc5858f0efbcb7a18868c899a360269fac1b23" +dependencies = [ + "futures", + "js-sys", + "parking_lot 0.12.3", + "pin-utils", + "slab", + "wasm-bindgen", +] + [[package]] name = "web-sys" version = "0.3.69" @@ -15339,7 +15626,7 @@ checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.90", ] [[package]] @@ -15350,7 +15637,7 @@ checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.90", ] [[package]] @@ -15593,7 +15880,7 @@ dependencies = [ "pharos", "rustc_version 0.4.0", "send_wrapper 0.6.0", - "thiserror", + "thiserror 1.0.66", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", @@ -15654,7 +15941,7 @@ checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.90", "synstructure", ] @@ -15675,7 +15962,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.90", ] [[package]] @@ -15695,7 +15982,7 @@ checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.90", "synstructure", ] @@ -15716,7 +16003,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.90", ] [[package]] @@ -15738,7 +16025,7 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.90", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index c3be9373c..b0a2525d3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -119,64 +119,69 @@ strata-zkvm = { path = "crates/zkvm/zkvm" } # IMPORTANT: ensure alloy-* and revm packages are of the same version as inside reth dependency # reth dependencies: -alloy-consensus = { version = "0.4.2", default-features = false } -alloy-eips = { version = "0.4.2", default-features = false } -alloy-genesis = { version = "0.4.2", default-features = false } -alloy-network = { version = "0.4.2", default-features = false } -alloy-primitives = { version = "0.8.7", default-features = false } -alloy-rlp = "0.3.4" -alloy-rlp-derive = "0.3.4" -alloy-rpc-types = { version = "0.4.2", features = [ +alloy-consensus = { version = "0.7.3", default-features = false } +alloy-eips = { version = "0.7.3", default-features = false } +alloy-genesis = { version = "0.7.3", default-features = false } +alloy-network = { version = "0.7.3", default-features = false } +alloy-primitives = { version = "0.8.11", default-features = false } +alloy-rlp = { version = "0.3.10", default-features = false } +alloy-rlp-derive = "0.3.10" +alloy-rpc-types = { version = "0.7.3", features = [ "eth", ], default-features = false } -alloy-rpc-types-eth = { version = "0.4.2", default-features = false, features = [ +alloy-rpc-types-eth = { version = "0.7.3", default-features = false, features = [ "serde", ] } -alloy-serde = { version = "0.4.2", default-features = false } -alloy-sol-types = "0.8.0" -revm = { version = "14.0.3", features = ["std"], default-features = false } -revm-primitives = { version = "10.0.0", features = [ +alloy-serde = { version = "0.7.3", default-features = false } +alloy-sol-types = "0.8.11" +alloy-trie = { version = "0.7", default-features = false } +revm = { version = "18.0.0", features = ["std"], default-features = false } +revm-primitives = { version = "14.0.0", features = [ "std", + "serde", ], default-features = false } # reth itself: -reth = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.0" } -reth-basic-payload-builder = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.0" } -reth-chain-state = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.0" } -reth-chainspec = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.0" } -reth-cli = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.0" } -reth-cli-commands = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.0" } -reth-cli-util = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.0" } -reth-db = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.0" } -reth-errors = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.0" } -reth-ethereum-forks = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.0" } -reth-ethereum-payload-builder = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.0" } -reth-evm = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.0" } -reth-evm-ethereum = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.0" } -reth-exex = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.0" } -reth-ipc = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.0" } -reth-network-api = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.0" } -reth-node-api = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.0" } -reth-node-builder = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.0" } -reth-node-ethereum = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.0" } -reth-payload-builder = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.0" } -reth-primitives = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.0", default-features = false, features = [ +reth = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.3" } +reth-basic-payload-builder = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.3" } +reth-chain-state = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.3" } +reth-chainspec = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.3" } +reth-cli = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.3" } +reth-cli-commands = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.3" } +reth-cli-util = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.3" } +reth-db = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.3" } +reth-errors = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.3" } +reth-ethereum-forks = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.3" } +reth-ethereum-payload-builder = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.3" } +reth-evm = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.3" } +reth-evm-ethereum = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.3" } +reth-exex = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.3" } +reth-ipc = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.3" } +reth-network-api = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.3" } +reth-node-api = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.3" } +reth-node-builder = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.3" } +reth-node-ethereum = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.3" } +reth-payload-builder = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.3" } +reth-payload-validator = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.3" } +reth-primitives = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.3", default-features = false, features = [ "std", + "serde-bincode-compat", ] } -reth-primitives-traits = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.0", default-features = false } -reth-provider = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.0" } -reth-revm = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.0" } -reth-rpc = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.0" } -reth-rpc-api = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.0" } -reth-rpc-eth-api = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.0" } -reth-rpc-eth-types = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.0", default-features = false } -reth-rpc-layer = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.0" } -reth-rpc-server-types = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.0" } -reth-rpc-types-compat = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.0" } -reth-tasks = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.0" } -reth-transaction-pool = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.0" } -reth-trie = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.0" } -reth-trie-common = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.0" } +reth-primitives-traits = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.3", default-features = false } +reth-provider = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.3" } +reth-revm = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.3" } +reth-rpc = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.3" } +reth-rpc-api = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.3" } +reth-rpc-eth-api = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.3" } +reth-rpc-eth-types = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.3", default-features = false } +reth-rpc-layer = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.3" } +reth-rpc-server-types = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.3" } +reth-rpc-types-compat = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.3" } +reth-tasks = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.3" } +reth-transaction-pool = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.3" } +reth-trie = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.3" } +reth-trie-common = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.3" } +reth-trie-db = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.1.3" } anyhow = "1.0.86" arbitrary = { version = "1.3.2", features = ["derive"] } diff --git a/bin/strata-reth/src/main.rs b/bin/strata-reth/src/main.rs index fbedfc8c7..4d6867d8f 100644 --- a/bin/strata-reth/src/main.rs +++ b/bin/strata-reth/src/main.rs @@ -1,5 +1,4 @@ mod db; -mod rpc; use std::{fs, future::Future, path::PathBuf, sync::Arc}; @@ -15,8 +14,8 @@ use reth_cli::chainspec::ChainSpecParser; use reth_cli_commands::node::NodeCommand; use strata_reth_db::rocksdb::WitnessDB; use strata_reth_exex::ProverWitnessGenerator; -use strata_reth_node::StrataEthereumNode; -use strata_reth_rpc::{SequencerClient, StrataRPC, StrataRpcApiServer}; +use strata_reth_node::{args::StrataNodeArgs, StrataEthereumNode}; +use strata_reth_rpc::{StrataRPC, StrataRpcApiServer}; use tracing::info; const DEFAULT_CHAIN_SPEC: &str = include_str!("../res/devnet-chain.json"); @@ -39,9 +38,13 @@ fn main() { if let Err(err) = run(command, |builder, ext| async move { let datadir = builder.config().datadir().data_dir().to_path_buf(); - let mut node_builder = builder.node(StrataEthereumNode::default()); - let sequencer_http = ext.sequencer_http.clone(); + let node_args = StrataNodeArgs { + sequencer_http: ext.sequencer_http.clone(), + }; + + let mut node_builder = builder.node(StrataEthereumNode::new(node_args)); + let mut extend_rpc = None; // Install Prover Input ExEx, persist to DB, and add RPC for querying block witness. @@ -63,11 +66,6 @@ fn main() { ctx.modules.merge_configured(rpc.into_rpc())?; } - if let Some(sequencer_http) = sequencer_http { - ctx.registry - .eth_api() - .set_sequencer_client(SequencerClient::new(sequencer_http))?; - } Ok(()) }); diff --git a/bin/strata-reth/src/rpc.rs b/bin/strata-reth/src/rpc.rs deleted file mode 100644 index d7c2f05ba..000000000 --- a/bin/strata-reth/src/rpc.rs +++ /dev/null @@ -1,125 +0,0 @@ -//! adapted from reth-node-optimism::rpc - -use std::sync::{atomic::AtomicUsize, Arc}; - -use jsonrpsee_types::error::{ErrorObject, INTERNAL_ERROR_CODE}; -use reqwest::Client; -use reth_rpc_eth_types::error::{EthApiError, ToRpcError}; - -/// Error type when interacting with the Sequencer -#[derive(Debug, thiserror::Error)] -pub enum SequencerRpcError { - /// Wrapper around an [`reqwest::Error`]. - #[error(transparent)] - HttpError(#[from] reqwest::Error), - /// Thrown when serializing transaction to forward to sequencer - #[error("invalid sequencer transaction")] - InvalidSequencerTransaction, -} - -impl ToRpcError for SequencerRpcError { - fn to_rpc_error(&self) -> ErrorObject<'static> { - ErrorObject::owned(INTERNAL_ERROR_CODE, self.to_string(), None::) - } -} - -impl From for EthApiError { - fn from(err: SequencerRpcError) -> Self { - Self::other(err) - } -} - -/// A client to interact with a Sequencer -#[derive(Debug, Clone)] -#[allow(dead_code)] // FIXME: remove this -pub struct SequencerClient { - inner: Arc, -} - -impl SequencerClient { - /// Creates a new [`SequencerClient`]. - #[allow(dead_code)] // FIXME: remove this - pub fn new(sequencer_endpoint: impl Into) -> Self { - let client = Client::builder().use_rustls_tls().build().unwrap(); - Self::with_client(sequencer_endpoint, client) - } - - /// Creates a new [`SequencerClient`]. - #[allow(dead_code)] // FIXME: remove this - pub fn with_client(sequencer_endpoint: impl Into, http_client: Client) -> Self { - let inner = SequencerClientInner { - sequencer_endpoint: sequencer_endpoint.into(), - http_client, - id: AtomicUsize::new(0), - }; - Self { - inner: Arc::new(inner), - } - } - - /// Returns the network of the client - #[allow(dead_code)] // FIXME: remove this - pub fn endpoint(&self) -> &str { - &self.inner.sequencer_endpoint - } - - /// Returns the client - #[allow(dead_code)] // FIXME: remove this - pub fn http_client(&self) -> &Client { - &self.inner.http_client - } - - /// Returns the next id for the request - #[allow(dead_code)] // FIXME: remove this - fn next_request_id(&self) -> usize { - self.inner - .id - .fetch_add(1, std::sync::atomic::Ordering::SeqCst) - } - - /// Forwards a transaction to the sequencer endpoint. - #[allow(dead_code)] // FIXME: remove this - pub async fn forward_raw_transaction(&self, tx: &[u8]) -> Result<(), SequencerRpcError> { - let body = serde_json::to_string(&serde_json::json!({ - "jsonrpc": "2.0", - "method": "eth_sendRawTransaction", - "params": [format!("0x{}", hex::encode(tx))], - "id": self.next_request_id() - })) - .map_err(|_| { - tracing::warn!( - target = "rpc::eth", - "Failed to serialize transaction for forwarding to sequencer" - ); - SequencerRpcError::InvalidSequencerTransaction - })?; - - self.http_client() - .post(self.endpoint()) - .header(reqwest::header::CONTENT_TYPE, "application/json") - .body(body) - .send() - .await - .inspect_err(|err| { - tracing::warn!( - target = "rpc::eth", - %err, - "Failed to forward transaction to sequencer", - ); - }) - .map_err(SequencerRpcError::HttpError)?; - - Ok(()) - } -} - -#[derive(Debug, Default)] -#[allow(dead_code)] // FIXME: remove this -struct SequencerClientInner { - /// The endpoint of the sequencer - sequencer_endpoint: String, - /// The HTTP client - http_client: Client, - /// Keeps track of unique request ids - id: AtomicUsize, -} diff --git a/crates/evmexec/Cargo.toml b/crates/evmexec/Cargo.toml index a7fe84bf1..677909efa 100644 --- a/crates/evmexec/Cargo.toml +++ b/crates/evmexec/Cargo.toml @@ -12,6 +12,7 @@ strata-reth-node.workspace = true strata-state.workspace = true strata-storage.workspace = true +alloy-network.workspace = true alloy-rpc-types.workspace = true anyhow.workspace = true arbitrary.workspace = true @@ -21,12 +22,17 @@ http.workspace = true hyper.workspace = true jsonrpsee = { workspace = true, features = ["jsonrpsee-http-client"] } reth-node-ethereum.workspace = true -reth-primitives = { workspace = true, features = ["alloy-compat"] } +reth-primitives = { workspace = true, features = [ + "alloy-compat", + "serde-bincode-compat", + "std", +] } reth-rpc.workspace = true reth-rpc-api.workspace = true reth-rpc-eth-api.workspace = true reth-rpc-layer.workspace = true reth-rpc-types-compat.workspace = true +revm-primitives.workspace = true serde.workspace = true serde_json.workspace = true thiserror.workspace = true diff --git a/crates/evmexec/src/block.rs b/crates/evmexec/src/block.rs index 1cdc7db5c..128840bb8 100644 --- a/crates/evmexec/src/block.rs +++ b/crates/evmexec/src/block.rs @@ -1,5 +1,5 @@ use borsh::BorshDeserialize; -use reth_primitives::revm_primitives::B256; +use revm_primitives::B256; use strata_primitives::evm_exec::EVMExtraPayload; use strata_state::block::{L2Block, L2BlockBundle}; use thiserror::Error; diff --git a/crates/evmexec/src/el_payload.rs b/crates/evmexec/src/el_payload.rs index a2a3f4493..92469c722 100644 --- a/crates/evmexec/src/el_payload.rs +++ b/crates/evmexec/src/el_payload.rs @@ -1,8 +1,8 @@ use alloy_rpc_types::engine::ExecutionPayloadV1; use arbitrary::Arbitrary; use borsh::{BorshDeserialize, BorshSerialize}; -use reth_primitives::revm_primitives::{FixedBytes, B256}; use reth_rpc_types_compat::engine::try_payload_v1_to_block; +use revm_primitives::{FixedBytes, B256}; use strata_primitives::{ buf::{Buf20, Buf32}, evm_exec::create_evm_extra_payload, diff --git a/crates/evmexec/src/engine.rs b/crates/evmexec/src/engine.rs index 39aea240d..7d7503f8e 100644 --- a/crates/evmexec/src/engine.rs +++ b/crates/evmexec/src/engine.rs @@ -7,7 +7,7 @@ use alloy_rpc_types::{ Withdrawal, }; use futures::future::TryFutureExt; -use reth_primitives::revm_primitives::{Address, B256}; +use revm_primitives::{Address, B256}; use strata_eectl::{ engine::{BlockStatus, ExecEngineCtl, PayloadStatus}, errors::{EngineError, EngineResult}, @@ -131,6 +131,8 @@ impl RpcExecEngineInner { withdrawals: Some(withdrawals), parent_beacon_block_root: None, suggested_fee_recipient: COINBASE_ADDRESS, + max_blobs_per_block: None, + target_blobs_per_block: None, }); let mut fcs = *self.fork_choice_state.lock().await; @@ -405,7 +407,7 @@ fn to_bridge_withdrawal_intent( mod tests { use alloy_rpc_types::engine::{ExecutionPayloadV1, ForkchoiceUpdated}; use rand::{rngs::OsRng, Rng}; - use reth_primitives::revm_primitives::{alloy_primitives::Bloom, Bytes, FixedBytes, U256}; + use revm_primitives::{alloy_primitives::Bloom, Bytes, FixedBytes, U256}; use strata_eectl::{errors::EngineResult, messages::PayloadEnv}; use strata_primitives::buf::Buf32; use strata_reth_node::{ExecutionPayloadEnvelopeV2, ExecutionPayloadFieldV2}; diff --git a/crates/evmexec/src/fork_choice_state.rs b/crates/evmexec/src/fork_choice_state.rs index 14cefb43e..a6384239c 100644 --- a/crates/evmexec/src/fork_choice_state.rs +++ b/crates/evmexec/src/fork_choice_state.rs @@ -2,7 +2,7 @@ use std::sync::Arc; use alloy_rpc_types::engine::ForkchoiceState; use anyhow::{Context, Result}; -use reth_primitives::revm_primitives::B256; +use revm_primitives::B256; use strata_db::{ errors::DbError, traits::{ClientStateDatabase, Database, L2BlockDatabase}, diff --git a/crates/evmexec/src/http_client.rs b/crates/evmexec/src/http_client.rs index 6825f7204..e4835fa57 100644 --- a/crates/evmexec/src/http_client.rs +++ b/crates/evmexec/src/http_client.rs @@ -1,18 +1,16 @@ use std::sync::Arc; -use alloy_rpc_types::{ - engine::{ - ExecutionPayloadBodiesV1, ExecutionPayloadInputV2, ForkchoiceState, ForkchoiceUpdated, - JwtSecret, PayloadId, - }, - serde_helpers::WithOtherFields, +use alloy_rpc_types::engine::{ + ExecutionPayloadBodiesV1, ExecutionPayloadInputV2, ForkchoiceState, ForkchoiceUpdated, + JwtSecret, PayloadId, }; use jsonrpsee::http_client::{transport::HttpBackend, HttpClient, HttpClientBuilder}; #[cfg(test)] use mockall::automock; -use reth_primitives::{revm_primitives::alloy_primitives::BlockHash, Block}; +use reth_primitives::Block; use reth_rpc_api::{EngineApiClient, EthApiClient}; use reth_rpc_layer::{AuthClientLayer, AuthClientService}; +use revm_primitives::alloy_primitives::BlockHash; use strata_reth_node::{ StrataEngineTypes, StrataExecutionPayloadEnvelopeV2, StrataPayloadAttributes, }; @@ -104,9 +102,10 @@ impl EngineRpc for EngineRpcClient { async fn block_by_hash(&self, block_hash: BlockHash) -> RpcResult> { let block = > as EthApiClient< - alloy_rpc_types::Transaction, - alloy_rpc_types::Block>, - alloy_rpc_types::Receipt, + alloy_network::AnyRpcTransaction, + alloy_network::AnyRpcBlock, + alloy_network::AnyTransactionReceipt, + alloy_network::AnyRpcBlock, >>::block_by_hash(&self.client, block_hash, true) .await?; diff --git a/crates/primitives/Cargo.toml b/crates/primitives/Cargo.toml index 97e432c58..aa42ee0e5 100644 --- a/crates/primitives/Cargo.toml +++ b/crates/primitives/Cargo.toml @@ -14,6 +14,7 @@ hex.workspace = true musig2 = { workspace = true, features = ["serde"] } rand = { workspace = true, optional = true } reth-primitives.workspace = true +revm-primitives.workspace = true secp256k1 = { workspace = true, optional = true } serde.workspace = true serde_json.workspace = true diff --git a/crates/primitives/src/buf.rs b/crates/primitives/src/buf.rs index f7217f16c..56b0a111a 100644 --- a/crates/primitives/src/buf.rs +++ b/crates/primitives/src/buf.rs @@ -5,7 +5,7 @@ use bitcoin::{ secp256k1::{schnorr, SecretKey, XOnlyPublicKey}, BlockHash, Txid, }; -use reth_primitives::revm_primitives::alloy_primitives::hex; +use revm_primitives::alloy_primitives::hex; #[cfg(feature = "zeroize")] use zeroize::Zeroize; diff --git a/crates/primitives/src/l1.rs b/crates/primitives/src/l1.rs index dc5d19e9a..4eea0f47a 100644 --- a/crates/primitives/src/l1.rs +++ b/crates/primitives/src/l1.rs @@ -20,7 +20,7 @@ use bitcoin::{ }; use borsh::{BorshDeserialize, BorshSerialize}; use rand::rngs::OsRng; -use reth_primitives::revm_primitives::FixedBytes; +use revm_primitives::FixedBytes; use serde::{de, Deserialize, Deserializer, Serialize}; use crate::{buf::Buf32, constants::HASH_SIZE, errors::ParseError, impl_buf_wrapper}; diff --git a/crates/primitives/src/macros.rs b/crates/primitives/src/macros.rs index 76de3c837..49ee2c69d 100644 --- a/crates/primitives/src/macros.rs +++ b/crates/primitives/src/macros.rs @@ -111,21 +111,17 @@ pub mod internal { } impl ::std::convert::From<$name> - for ::reth_primitives::revm_primitives::alloy_primitives::FixedBytes<$len> + for ::revm_primitives::alloy_primitives::FixedBytes<$len> { fn from(value: $name) -> Self { value.0.into() } } - impl - ::std::convert::From< - ::reth_primitives::revm_primitives::alloy_primitives::FixedBytes<$len>, - > for $name + impl ::std::convert::From<::revm_primitives::alloy_primitives::FixedBytes<$len>> + for $name { - fn from( - value: ::reth_primitives::revm_primitives::alloy_primitives::FixedBytes<$len>, - ) -> Self { + fn from(value: ::revm_primitives::alloy_primitives::FixedBytes<$len>) -> Self { value.0.into() } } @@ -197,7 +193,10 @@ pub mod internal { &self, serializer: S, ) -> Result { - ::serde::Serialize::serialize(&::reth_primitives::revm_primitives::alloy_primitives::FixedBytes::<$len>::from(&self.0), serializer) + ::serde::Serialize::serialize( + &::revm_primitives::alloy_primitives::FixedBytes::<$len>::from(&self.0), + serializer, + ) } } @@ -206,8 +205,9 @@ pub mod internal { fn deserialize>( deserializer: D, ) -> Result { - ::serde::Deserialize::deserialize(deserializer) - .map(|v: ::reth_primitives::revm_primitives::alloy_primitives::FixedBytes<$len>| Self::from(v)) + ::serde::Deserialize::deserialize(deserializer).map( + |v: ::revm_primitives::alloy_primitives::FixedBytes<$len>| Self::from(v), + ) } } }; diff --git a/crates/primitives/src/utils.rs b/crates/primitives/src/utils.rs index 5623bc294..568e34fbf 100644 --- a/crates/primitives/src/utils.rs +++ b/crates/primitives/src/utils.rs @@ -75,7 +75,8 @@ pub struct SchnorrKeypair { pub pk: Buf32, } -/// Get the temporary schnorr keypairs for testing purpose +/// Get the temporary schnorr keypairs for testing purpose. +/// /// These are generated randomly and added here just for functional tests till we don't have proper /// genesis configuration plus operator addition mechanism ready // FIXME remove diff --git a/crates/proof-impl/evm-ee-stf/Cargo.toml b/crates/proof-impl/evm-ee-stf/Cargo.toml index 8849a5c2b..f55a6cb74 100644 --- a/crates/proof-impl/evm-ee-stf/Cargo.toml +++ b/crates/proof-impl/evm-ee-stf/Cargo.toml @@ -15,14 +15,21 @@ alloy-rlp.workspace = true alloy-rlp-derive.workspace = true alloy-rpc-types.workspace = true alloy-rpc-types-eth.workspace = true +alloy-trie.workspace = true + anyhow.workspace = true k256 = { version = "=0.13.3", features = [ "std", "ecdsa", ], default-features = false } reth-primitives.workspace = true -reth-trie-common.workspace = true +reth-primitives-traits.workspace = true +reth-trie-common = { workspace = true, features = [ + "serde-bincode-compat", + "eip1186", +] } revm.workspace = true +revm-primitives.workspace = true rlp = "0.5.2" serde.workspace = true serde_with.workspace = true diff --git a/crates/proof-impl/evm-ee-stf/src/db.rs b/crates/proof-impl/evm-ee-stf/src/db.rs index e7eb9222d..11a8a2c92 100644 --- a/crates/proof-impl/evm-ee-stf/src/db.rs +++ b/crates/proof-impl/evm-ee-stf/src/db.rs @@ -21,11 +21,11 @@ use std::collections::hash_map::Entry; // use hashbrown::hash_map::Entry; use alloy_primitives::map::{DefaultHashBuilder, HashMap}; use anyhow::{anyhow, Result}; -use reth_primitives::revm_primitives::alloy_primitives::{Address, Bytes, B256, U256}; use revm::{ db::{AccountState, DbAccount, InMemoryDB}, primitives::{AccountInfo, Bytecode}, }; +use revm_primitives::alloy_primitives::{Address, Bytes, B256, U256}; use crate::{ mpt::{keccak, StateAccount, KECCAK_EMPTY}, diff --git a/crates/proof-impl/evm-ee-stf/src/lib.rs b/crates/proof-impl/evm-ee-stf/src/lib.rs index 610e73449..f1ee1e21d 100644 --- a/crates/proof-impl/evm-ee-stf/src/lib.rs +++ b/crates/proof-impl/evm-ee-stf/src/lib.rs @@ -23,14 +23,13 @@ pub mod prover; use std::collections::HashMap; use alloy_consensus::{serde_bincode_compat, Header}; +use alloy_eips::eip4895::Withdrawal; use db::InMemoryDBHelper; use mpt::keccak; use processor::{EvmConfig, EvmProcessor}; -use reth_primitives::{ - revm_primitives::alloy_primitives::{Address, Bytes, FixedBytes, B256}, - TransactionSignedNoHash, Withdrawal, -}; +use reth_primitives::TransactionSigned; use revm::{primitives::SpecId, InMemoryDB}; +use revm_primitives::alloy_primitives::{Address, Bytes, FixedBytes, B256}; use serde::{Deserialize, Serialize}; use serde_with::serde_as; use strata_reth_evm::collect_withdrawal_intents; @@ -98,7 +97,7 @@ pub struct ELProofInput { pub ancestor_headers: Vec
, /// A list of transactions to process. - pub transactions: Vec, + pub transactions: Vec, /// A list of withdrawals to process. pub withdrawals: Vec, diff --git a/crates/proof-impl/evm-ee-stf/src/mpt.rs b/crates/proof-impl/evm-ee-stf/src/mpt.rs index 11686c4fe..37f1c1fc5 100644 --- a/crates/proof-impl/evm-ee-stf/src/mpt.rs +++ b/crates/proof-impl/evm-ee-stf/src/mpt.rs @@ -30,7 +30,7 @@ use alloy_rlp::Encodable; use alloy_rlp_derive::{RlpDecodable, RlpEncodable, RlpMaxEncodedLen}; use alloy_rpc_types_eth::EIP1186AccountProofResponse; use anyhow::{Context, Result}; -use reth_primitives::revm_primitives::alloy_primitives::{b256, Address, TxNumber, B256, U256}; +use revm_primitives::alloy_primitives::{b256, Address, TxNumber, B256, U256}; use rlp::{Decodable, DecoderError, Prototype, Rlp}; use serde::{Deserialize, Serialize}; use thiserror::Error as ThisError; @@ -122,7 +122,7 @@ pub const KECCAK_EMPTY: B256 = pub fn keccak(data: impl AsRef<[u8]>) -> [u8; 32] { // TODO: Remove this benchmarking code once performance testing is complete. // std::hint::black_box(sha2::Sha256::digest(&data)); - *reth_primitives::revm_primitives::alloy_primitives::utils::keccak256(data) + *revm_primitives::alloy_primitives::utils::keccak256(data) } /// Represents the root node of a sparse Merkle Patricia Trie. @@ -1017,6 +1017,7 @@ pub fn resolve_nodes(root: &MptNode, node_store: &HashMap Vec { @@ -1100,7 +1101,7 @@ pub fn proofs_to_tries( // assure that slots can be deleted from the storage trie for storage_proof in &fini_proofs.storage_proof { add_orphaned_leafs( - storage_proof.key.0 .0, + storage_proof.key.as_b256().0, &storage_proof.proof, &mut storage_nodes, )?; @@ -1113,7 +1114,7 @@ pub fn proofs_to_tries( let slots = proof .storage_proof .iter() - .map(|p| U256::from_be_bytes(p.key.0 .0)) + .map(|p| U256::from_be_bytes(p.key.as_b256().0)) .collect(); storage.insert(address, (storage_trie, slots)); } diff --git a/crates/proof-impl/evm-ee-stf/src/processor.rs b/crates/proof-impl/evm-ee-stf/src/processor.rs index ff1a28ce1..02033a629 100644 --- a/crates/proof-impl/evm-ee-stf/src/processor.rs +++ b/crates/proof-impl/evm-ee-stf/src/processor.rs @@ -17,25 +17,25 @@ // limitations under the License. use std::{mem, mem::take}; +use alloy_consensus::constants::{GWEI_TO_WEI, MAXIMUM_EXTRA_DATA_SIZE}; use alloy_eips::eip1559::BaseFeeParams; use alloy_primitives::map::DefaultHashBuilder; -use alloy_rlp::BufMut; +use alloy_rlp::{BufMut, Encodable}; +use alloy_rpc_types_eth::TransactionTrait; +use alloy_trie::root::ordered_trie_root_with_encoder; use anyhow::anyhow; -use reth_primitives::{ - constants::{GWEI_TO_WEI, MAXIMUM_EXTRA_DATA_SIZE, MINIMUM_GAS_LIMIT}, - revm_primitives::{ - alloy_primitives::{Address, Bloom, TxKind as TransactionKind, U256}, - Account, - }, - Header, Receipt, ReceiptWithBloom, Transaction, TransactionSigned, -}; -use reth_trie_common::root::ordered_trie_root_with_encoder; +use reth_primitives::{Header, Receipt, ReceiptWithBloom, Transaction, TransactionSigned}; +use reth_primitives_traits::{constants::MINIMUM_GAS_LIMIT, SignedTransaction}; use revm::{ db::{AccountState, InMemoryDB}, interpreter::Host, primitives::{SpecId, TransactTo, TxEnv}, Database, DatabaseCommit, Evm, }; +use revm_primitives::{ + alloy_primitives::{Address, Bloom, TxKind as TransactionKind, U256}, + Account, +}; use strata_reth_evm::set_evm_handles; use crate::{ @@ -165,7 +165,7 @@ where } /// Processes each transaction and collect receipts and storage changes. - pub fn execute(&mut self) -> Vec { + pub fn execute(&mut self) -> Vec> { let gwei_to_wei: U256 = U256::from(GWEI_TO_WEI); let mut evm = Evm::builder() .with_spec_id(self.evm_config.spec_id) @@ -192,7 +192,7 @@ where for (tx_no, tx) in self.input.transactions.iter().enumerate() { // Recover the sender from the transaction signature. - let tx_from = tx.recover_signer().unwrap(); + let tx_from = tx.recover_signer_unchecked().unwrap(); // Validate tx gas. let block_available_gas = U256::from(self.input.gas_limit) - cumulative_gas_used; @@ -247,13 +247,12 @@ where let h = self.header.as_mut().expect("Header not initialized"); let txs_signed = take(&mut self.input.transactions) .into_iter() - .map(|tx| tx.into()) .collect::>(); h.transactions_root = ordered_trie_root_with_encoder(&txs_signed, |tx, buf| { - tx.encode_with_signature(&tx.signature, buf, false); + tx.eip2718_encode(&tx.signature, buf); }); h.receipts_root = ordered_trie_root_with_encoder(&receipts, |receipt, buf| { - receipt.encode_inner(buf, false); + receipt.encode(buf); }); h.withdrawals_root = Some(ordered_trie_root_with_encoder( &self.input.withdrawals, diff --git a/crates/reth/db/Cargo.toml b/crates/reth/db/Cargo.toml index dc9d749b4..5b586196f 100644 --- a/crates/reth/db/Cargo.toml +++ b/crates/reth/db/Cargo.toml @@ -11,7 +11,7 @@ strata-rocksdb.workspace = true anyhow.workspace = true bincode.workspace = true borsh.workspace = true -reth-primitives.workspace = true +revm-primitives.workspace = true rockbound.workspace = true tracing.workspace = true diff --git a/crates/reth/db/src/lib.rs b/crates/reth/db/src/lib.rs index 09a52813f..0df75e628 100644 --- a/crates/reth/db/src/lib.rs +++ b/crates/reth/db/src/lib.rs @@ -1,5 +1,5 @@ pub mod rocksdb; -use reth_primitives::revm_primitives::alloy_primitives::B256; +use revm_primitives::alloy_primitives::B256; pub use strata_db::{errors, DbResult}; use strata_proofimpl_evm_ee_stf::ELProofInput; diff --git a/crates/reth/db/src/rocksdb/db.rs b/crates/reth/db/src/rocksdb/db.rs index 8309bfc12..60f1756c6 100644 --- a/crates/reth/db/src/rocksdb/db.rs +++ b/crates/reth/db/src/rocksdb/db.rs @@ -1,6 +1,6 @@ use std::sync::Arc; -use reth_primitives::revm_primitives::alloy_primitives::B256; +use revm_primitives::alloy_primitives::B256; use rockbound::{SchemaDBOperations, SchemaDBOperationsExt}; use strata_proofimpl_evm_ee_stf::ELProofInput; diff --git a/crates/reth/db/src/rocksdb/schema.rs b/crates/reth/db/src/rocksdb/schema.rs index f5a49b79b..bf3b48ce6 100644 --- a/crates/reth/db/src/rocksdb/schema.rs +++ b/crates/reth/db/src/rocksdb/schema.rs @@ -1,4 +1,4 @@ -use reth_primitives::revm_primitives::alloy_primitives::B256; +use revm_primitives::alloy_primitives::B256; use strata_rocksdb::{ define_table_with_seek_key_codec, define_table_without_codec, impl_borsh_value_codec, }; diff --git a/crates/reth/exex/Cargo.toml b/crates/reth/exex/Cargo.toml index 728534328..a34a7e1a8 100644 --- a/crates/reth/exex/Cargo.toml +++ b/crates/reth/exex/Cargo.toml @@ -6,6 +6,7 @@ version = "0.1.0" [dependencies] strata-proofimpl-evm-ee-stf.workspace = true strata-reth-db.workspace = true +strata-reth-node.workspace = true alloy-eips.workspace = true alloy-rpc-types.workspace = true @@ -21,6 +22,8 @@ reth-provider.workspace = true reth-revm.workspace = true reth-rpc-types-compat.workspace = true reth-trie.workspace = true +reth-trie-common.workspace = true +revm-primitives.workspace = true rockbound.workspace = true serde_json.workspace = true thiserror.workspace = true diff --git a/crates/reth/exex/src/alloy2reth.rs b/crates/reth/exex/src/alloy2reth.rs index 21676a9d3..b1643372c 100644 --- a/crates/reth/exex/src/alloy2reth.rs +++ b/crates/reth/exex/src/alloy2reth.rs @@ -1,5 +1,5 @@ +use alloy_eips::eip4895::Withdrawal as RethWithdrawal; use alloy_rpc_types::Withdrawal as AlloyWithdrawal; -use reth_primitives::Withdrawal as RethWithdrawal; /// A trait to convert from Alloy types to Reth types. pub trait IntoReth { diff --git a/crates/reth/exex/src/cache_db_provider.rs b/crates/reth/exex/src/cache_db_provider.rs index 412dc658a..177ab8330 100644 --- a/crates/reth/exex/src/cache_db_provider.rs +++ b/crates/reth/exex/src/cache_db_provider.rs @@ -3,12 +3,12 @@ use std::{ collections::{HashMap, HashSet}, }; -use reth_primitives::revm_primitives::{ +use reth_provider::{errors::db::DatabaseError, AccountReader, ProviderError, StateProvider}; +use reth_revm::DatabaseRef; +use revm_primitives::{ alloy_primitives::{ruint::Uint, Address, Bytes, B256, U256}, AccountInfo, Bytecode, }; -use reth_provider::{errors::db::DatabaseError, AccountReader, ProviderError, StateProvider}; -use reth_revm::DatabaseRef; /// `CacheDBProvider` implements a provider for the revm `CacheDB`. /// In addition it holds accessed account info, storage values, and bytecodes during diff --git a/crates/reth/exex/src/prover_exex.rs b/crates/reth/exex/src/prover_exex.rs index 01de4084f..9ec935bcc 100644 --- a/crates/reth/exex/src/prover_exex.rs +++ b/crates/reth/exex/src/prover_exex.rs @@ -1,19 +1,17 @@ use std::{collections::HashMap, sync::Arc}; -use alloy_rpc_types::EIP1186AccountProofResponse; +use alloy_rpc_types::{serde_helpers::JsonStorageKey, BlockNumHash, EIP1186AccountProofResponse}; use eyre::eyre; use futures_util::TryStreamExt; use reth_evm::execute::{BlockExecutionInput, BlockExecutorProvider, Executor}; use reth_exex::{ExExContext, ExExEvent}; -use reth_node_api::FullNodeComponents; -use reth_primitives::{ - revm_primitives::alloy_primitives::{Address, B256}, - BlockNumHash, BlockWithSenders, TransactionSignedNoHash, -}; +use reth_node_api::{FullNodeComponents, NodeTypes}; +use reth_primitives::{BlockExt, BlockWithSenders, EthPrimitives}; use reth_provider::{BlockReader, Chain, ExecutionOutcome, StateProviderFactory}; use reth_revm::{db::CacheDB, primitives::FixedBytes}; -use reth_rpc_types_compat::proof::from_primitive_account_proof; use reth_trie::{HashedPostState, TrieInput}; +use reth_trie_common::KeccakKeyHasher; +use revm_primitives::alloy_primitives::{Address, B256}; use strata_proofimpl_evm_ee_stf::{mpt::proofs_to_tries, ELProofInput}; use strata_reth_db::WitnessStore; use tracing::{debug, error}; @@ -23,12 +21,19 @@ use crate::{ cache_db_provider::{AccessedState, CacheDBProvider}, }; -pub struct ProverWitnessGenerator { +pub struct ProverWitnessGenerator< + Node: FullNodeComponents>, + S: WitnessStore + Clone, +> { ctx: ExExContext, db: Arc, } -impl ProverWitnessGenerator { +impl< + Node: FullNodeComponents>, + S: WitnessStore + Clone, + > ProverWitnessGenerator +{ pub fn new(ctx: ExExContext, db: Arc) -> Self { Self { ctx, db } } @@ -78,7 +83,10 @@ impl ProverWitnessGenerator( +fn get_accessed_states< + 'a, + Node: FullNodeComponents>, +>( ctx: &ExExContext, block: &'a BlockWithSenders, block_idx: u64, @@ -98,7 +106,7 @@ fn get_accessed_states<'a, Node: FullNodeComponents>( Ok(acessed_state) } -fn extract_zkvm_input( +fn extract_zkvm_input>>( block_id: FixedBytes<32>, ctx: &ExExContext, exec_outcome: &ExecutionOutcome, @@ -138,8 +146,7 @@ fn extract_zkvm_input( .blob_transactions() .into_iter() .cloned() - .map(TransactionSignedNoHash::from) - .collect::>(); + .collect(); let prev_state_root = prev_block.state_root; @@ -156,11 +163,12 @@ fn extract_zkvm_input( // Apply empty bundle state over previous block state. let proof = previous_provider.proof( - TrieInput::from_state(HashedPostState::from_bundle_state([])), + TrieInput::from_state(HashedPostState::from_bundle_state::([])), *accessed_address, &slots, )?; - let proof = from_primitive_account_proof(proof); + let proof = + proof.into_eip1186_response(slots.into_iter().map(JsonStorageKey::from).collect()); parent_proofs.insert(*accessed_address, proof); } @@ -173,11 +181,12 @@ fn extract_zkvm_input( .collect(); let proof = previous_provider.proof( - TrieInput::from_state(exec_outcome.hash_state_slow()), + TrieInput::from_state(exec_outcome.hash_state_slow::()), *accessed_address, &slots, )?; - let proof = from_primitive_account_proof(proof); + let proof = + proof.into_eip1186_response(slots.into_iter().map(JsonStorageKey::from).collect()); current_proofs.insert(*accessed_address, proof); } diff --git a/crates/reth/node/Cargo.toml b/crates/reth/node/Cargo.toml index c3bc58c51..5e3628fdc 100644 --- a/crates/reth/node/Cargo.toml +++ b/crates/reth/node/Cargo.toml @@ -8,21 +8,30 @@ strata-reth-evm.workspace = true strata-reth-primitives.workspace = true strata-reth-rpc.workspace = true +alloy-consensus.workspace = true +alloy-eips.workspace = true alloy-rpc-types.workspace = true eyre.workspace = true reth.workspace = true reth-basic-payload-builder.workspace = true reth-chain-state.workspace = true reth-chainspec.workspace = true +reth-db.workspace = true reth-errors.workspace = true reth-ethereum-payload-builder.workspace = true reth-evm.workspace = true reth-evm-ethereum.workspace = true reth-node-api.workspace = true +reth-node-builder.workspace = true reth-node-ethereum.workspace = true reth-payload-builder.workspace = true +reth-payload-validator.workspace = true reth-primitives.workspace = true +reth-provider.workspace = true +reth-transaction-pool.workspace = true reth-trie.workspace = true +reth-trie-common.workspace = true +reth-trie-db.workspace = true revm.workspace = true revm-primitives.workspace = true serde.workspace = true diff --git a/crates/reth/node/src/args.rs b/crates/reth/node/src/args.rs index 6adbd0aeb..e79adad9b 100644 --- a/crates/reth/node/src/args.rs +++ b/crates/reth/node/src/args.rs @@ -1,4 +1,3 @@ -// TODO should be eventually reconciled with AdditionalArgs from strata-reth. #[derive(Debug, Clone, Default)] pub struct StrataNodeArgs { pub sequencer_http: Option, diff --git a/crates/reth/node/src/engine.rs b/crates/reth/node/src/engine.rs index 0caf3bbf8..797060efc 100644 --- a/crates/reth/node/src/engine.rs +++ b/crates/reth/node/src/engine.rs @@ -1,28 +1,133 @@ +use std::sync::Arc; + use alloy_rpc_types::engine::{ - ExecutionPayloadEnvelopeV3, ExecutionPayloadEnvelopeV4, ExecutionPayloadV1, + ExecutionPayload, ExecutionPayloadEnvelopeV3, ExecutionPayloadEnvelopeV4, + ExecutionPayloadSidecar, ExecutionPayloadV1, PayloadError, +}; +use reth_chainspec::ChainSpec; +use reth_node_api::{ + payload::PayloadTypes, validate_version_specific_fields, AddOnsContext, + EngineApiMessageVersion, EngineObjectValidationError, EngineTypes, EngineValidator, + PayloadOrAttributes, PayloadValidator, }; -use reth_node_api::{payload::PayloadTypes, EngineTypes}; +use reth_node_builder::{rpc::EngineValidatorBuilder, FullNodeComponents, NodeTypesWithEngine}; +use reth_payload_validator::ExecutionPayloadValidator; +use reth_primitives::{Block, SealedBlockFor}; use serde::{Deserialize, Serialize}; use super::payload::{ - StrataBuiltPayload, StrataExecutionPayloadEnvelopeV2, StrataPayloadAttributes, - StrataPayloadBuilderAttributes, + StrataBuiltPayload, StrataExecutionPayloadEnvelopeV2, StrataPayloadBuilderAttributes, }; +use crate::{node::StrataPrimitives, StrataPayloadAttributes}; /// Custom engine types for strata to use custom payload attributes and payload #[derive(Clone, Debug, Default, Deserialize, Serialize)] #[non_exhaustive] -pub struct StrataEngineTypes; +pub struct StrataEngineTypes { + _marker: std::marker::PhantomData, +} + +impl PayloadTypes for StrataEngineTypes { + type BuiltPayload = T::BuiltPayload; + type PayloadAttributes = T::PayloadAttributes; + type PayloadBuilderAttributes = T::PayloadBuilderAttributes; +} + +#[derive(Clone, Debug, Default, Deserialize, Serialize)] +pub struct StrataPayloadTypes; -impl PayloadTypes for StrataEngineTypes { +impl PayloadTypes for StrataPayloadTypes { type BuiltPayload = StrataBuiltPayload; type PayloadAttributes = StrataPayloadAttributes; type PayloadBuilderAttributes = StrataPayloadBuilderAttributes; } -impl EngineTypes for StrataEngineTypes { - type ExecutionPayloadV1 = ExecutionPayloadV1; - type ExecutionPayloadV2 = StrataExecutionPayloadEnvelopeV2; - type ExecutionPayloadV3 = ExecutionPayloadEnvelopeV3; - type ExecutionPayloadV4 = ExecutionPayloadEnvelopeV4; +impl EngineTypes for StrataEngineTypes +where + T::BuiltPayload: TryInto + + TryInto + + TryInto + + TryInto, +{ + type ExecutionPayloadEnvelopeV1 = ExecutionPayloadV1; + type ExecutionPayloadEnvelopeV2 = StrataExecutionPayloadEnvelopeV2; + type ExecutionPayloadEnvelopeV3 = ExecutionPayloadEnvelopeV3; + type ExecutionPayloadEnvelopeV4 = ExecutionPayloadEnvelopeV4; +} + +/// Strata engine validator +#[derive(Debug, Clone)] +pub struct StrataEngineValidator { + inner: ExecutionPayloadValidator, +} + +impl StrataEngineValidator { + /// Instantiates a new validator. + pub const fn new(chain_spec: Arc) -> Self { + Self { + inner: ExecutionPayloadValidator::new(chain_spec), + } + } + + /// Returns the chain spec used by the validator. + #[inline] + fn chain_spec(&self) -> &ChainSpec { + self.inner.chain_spec() + } +} + +impl PayloadValidator for StrataEngineValidator { + type Block = Block; + + fn ensure_well_formed_payload( + &self, + payload: ExecutionPayload, + sidecar: ExecutionPayloadSidecar, + ) -> Result, PayloadError> { + self.inner.ensure_well_formed_payload(payload, sidecar) + } +} + +impl EngineValidator for StrataEngineValidator +where + T: EngineTypes, +{ + fn validate_version_specific_fields( + &self, + version: EngineApiMessageVersion, + payload_or_attrs: PayloadOrAttributes<'_, T::PayloadAttributes>, + ) -> Result<(), EngineObjectValidationError> { + validate_version_specific_fields(self.chain_spec(), version, payload_or_attrs) + } + + fn ensure_well_formed_attributes( + &self, + version: EngineApiMessageVersion, + attributes: &T::PayloadAttributes, + ) -> Result<(), EngineObjectValidationError> { + validate_version_specific_fields(self.chain_spec(), version, attributes.into())?; + + Ok(()) + } +} + +/// Builder for [`StrataEngineValidator`]. +#[derive(Debug, Default, Clone)] +#[non_exhaustive] +pub struct StrataEngineValidatorBuilder; + +impl EngineValidatorBuilder for StrataEngineValidatorBuilder +where + Types: NodeTypesWithEngine< + ChainSpec = ChainSpec, + Primitives = StrataPrimitives, + Engine = StrataEngineTypes, + >, + Node: FullNodeComponents, +{ + type Validator = StrataEngineValidator; + + async fn build(self, ctx: &AddOnsContext<'_, Node>) -> eyre::Result { + Ok(StrataEngineValidator::new(ctx.config.chain.clone())) + } } diff --git a/crates/reth/node/src/evm.rs b/crates/reth/node/src/evm.rs index 286f658fe..e71c376fb 100644 --- a/crates/reth/node/src/evm.rs +++ b/crates/reth/node/src/evm.rs @@ -3,14 +3,10 @@ use std::sync::Arc; use reth_chainspec::ChainSpec; use reth_evm::{ConfigureEvm, ConfigureEvmEnv, NextBlockEnvAttributes}; use reth_node_ethereum::EthEvmConfig; -use reth_primitives::{ - revm_primitives::{ - Address, AnalysisKind, BlockEnv, Bytes, CfgEnvWithHandlerCfg, Env, TxEnv, U256, - }, - Header, TransactionSigned, +use reth_primitives::{Header, TransactionSigned}; +use revm_primitives::{ + Address, AnalysisKind, BlockEnv, Bytes, CfgEnvWithHandlerCfg, Env, TxEnv, U256, }; -use revm::{inspector_handle_register, Database, Evm, EvmBuilder, GetInspector}; -use strata_reth_evm::set_evm_handles; /// Custom EVM configuration #[derive(Debug, Clone)] @@ -29,11 +25,13 @@ impl StrataEvmConfig { impl ConfigureEvmEnv for StrataEvmConfig { type Header = Header; + type Transaction = TransactionSigned; + type Error = core::convert::Infallible; fn fill_cfg_env( &self, cfg_env: &mut CfgEnvWithHandlerCfg, - header: &Header, + header: &Self::Header, total_difficulty: U256, ) { self.inner.fill_cfg_env(cfg_env, header, total_difficulty); @@ -60,7 +58,7 @@ impl ConfigureEvmEnv for StrataEvmConfig { &self, parent: &Self::Header, attributes: NextBlockEnvAttributes, - ) -> (CfgEnvWithHandlerCfg, BlockEnv) { + ) -> Result<(CfgEnvWithHandlerCfg, BlockEnv), Self::Error> { self.inner.next_cfg_and_block_env(parent, attributes) } } @@ -68,28 +66,8 @@ impl ConfigureEvmEnv for StrataEvmConfig { impl ConfigureEvm for StrataEvmConfig { type DefaultExternalContext<'a> = (); - fn evm(&self, db: DB) -> Evm<'_, Self::DefaultExternalContext<'_>, DB> { - EvmBuilder::default() - .with_db(db) - // add additional precompiles - .append_handler_register(set_evm_handles) - .build() - } - - fn evm_with_inspector(&self, db: DB, inspector: I) -> Evm<'_, I, DB> - where - DB: Database, - I: GetInspector, - { - EvmBuilder::default() - .with_db(db) - .with_external_context(inspector) - // add additional precompiles - .append_handler_register(set_evm_handles) - .append_handler_register(inspector_handle_register) - .build() - } - #[doc = " Provides the default external context."] - fn default_external_context<'a>(&self) -> Self::DefaultExternalContext<'a> {} + fn default_external_context<'a>(&self) -> Self::DefaultExternalContext<'a> { + self.inner.default_external_context() + } } diff --git a/crates/reth/node/src/lib.rs b/crates/reth/node/src/lib.rs index 063e62892..70b96d53f 100644 --- a/crates/reth/node/src/lib.rs +++ b/crates/reth/node/src/lib.rs @@ -5,10 +5,9 @@ mod evm; mod node; mod payload; mod payload_builder; -mod validator; pub mod args; -pub use engine::StrataEngineTypes; +pub use engine::{StrataEngineTypes, StrataEngineValidator, StrataPayloadTypes}; pub use node::StrataEthereumNode; pub use payload::{ ExecutionPayloadEnvelopeV2, ExecutionPayloadFieldV2, StrataExecutionPayloadEnvelopeV2, diff --git a/crates/reth/node/src/node.rs b/crates/reth/node/src/node.rs index 146a04763..1c3a29bc5 100644 --- a/crates/reth/node/src/node.rs +++ b/crates/reth/node/src/node.rs @@ -1,22 +1,94 @@ -use reth::builder::{ +use reth_chainspec::{ChainSpec, EthereumHardforks}; +use reth_db::transaction::{DbTx, DbTxMut}; +use reth_node_api::{AddOnsContext, EngineValidator, FullNodeComponents, NodeAddOns}; +use reth_node_builder::{ components::{ComponentsBuilder, ExecutorBuilder}, - BuilderContext, Node, -}; -use reth_chainspec::ChainSpec; -use reth_node_api::{ - FullNodeComponents, FullNodeTypes, NodeAddOns, NodeTypes, NodeTypesWithEngine, + node::{FullNodeTypes, NodeTypes, NodeTypesWithEngine}, + rpc::{EngineValidatorAddOn, RethRpcAddOns, RpcAddOns, RpcHandle}, + BuilderContext, Node, NodeAdapter, NodeComponentsBuilder, }; use reth_node_ethereum::{ node::{EthereumConsensusBuilder, EthereumNetworkBuilder, EthereumPoolBuilder}, - EthExecutorProvider, + BasicBlockExecutorProvider, EthExecutionStrategyFactory, EthExecutorProvider, +}; +use reth_primitives::{BlockBody, PooledTransactionsElement}; +use reth_provider::{ + providers::{ChainStorage, NodeTypesForProvider}, + BlockBodyReader, BlockBodyWriter, ChainSpecProvider, ChainStorageReader, ChainStorageWriter, + DBProvider, DatabaseProvider, EthStorage, ProviderResult, ReadBodyInput, }; -use strata_reth_rpc::StrataEthApi; +use reth_transaction_pool::{PoolTransaction, TransactionPool}; +use revm_primitives::alloy_primitives; +use strata_reth_rpc::{SequencerClient, StrataEthApi}; use crate::{ - args::StrataNodeArgs, engine::StrataEngineTypes, evm::StrataEvmConfig, - payload_builder::StrataPayloadServiceBuilder, validator::StrataEngineValidatorBuilder, + args::StrataNodeArgs, + engine::{StrataEngineTypes, StrataEngineValidator, StrataEngineValidatorBuilder}, + evm::StrataEvmConfig, + payload_builder::StrataPayloadServiceBuilder, }; +/// Strata primitive types. +pub(crate) type StrataPrimitives = reth_primitives::EthPrimitives; + +/// Storage implementation for Strata. +#[derive(Debug, Default, Clone)] +pub struct StrataStorage(EthStorage); + +impl> BlockBodyWriter for StrataStorage { + fn write_block_bodies( + &self, + provider: &Provider, + bodies: Vec<(u64, Option)>, + ) -> ProviderResult<()> { + self.0.write_block_bodies(provider, bodies) + } + + fn remove_block_bodies_above( + &self, + provider: &Provider, + block: alloy_primitives::BlockNumber, + ) -> ProviderResult<()> { + self.0.remove_block_bodies_above(provider, block) + } +} + +impl> + BlockBodyReader for StrataStorage +{ + type Block = reth_primitives::Block; + + fn read_block_bodies( + &self, + provider: &Provider, + inputs: Vec>, + ) -> ProviderResult> { + self.0.read_block_bodies(provider, inputs) + } +} + +impl ChainStorage for StrataStorage { + fn reader( + &self, + ) -> impl ChainStorageReader, StrataPrimitives> + where + TX: DbTx + 'static, + Types: NodeTypesForProvider, + { + self + } + + fn writer( + &self, + ) -> impl ChainStorageWriter, StrataPrimitives> + where + TX: DbTxMut + DbTx + 'static, + Types: NodeTypes, + { + self + } +} + #[derive(Debug, Clone, Default)] #[non_exhaustive] pub struct StrataEthereumNode { @@ -28,6 +100,33 @@ impl StrataEthereumNode { pub const fn new(args: StrataNodeArgs) -> Self { Self { args } } + + /// Returns the components for the given [`StrataNodeArgs`]. + pub fn components() -> ComponentsBuilder< + N, + EthereumPoolBuilder, + StrataPayloadServiceBuilder, + EthereumNetworkBuilder, + StrataExecutorBuilder, + EthereumConsensusBuilder, + > + where + N: FullNodeTypes< + Types: NodeTypesWithEngine< + Engine = StrataEngineTypes, + ChainSpec = ChainSpec, + Primitives = StrataPrimitives, + >, + >, + { + ComponentsBuilder::default() + .node_types::() + .pool(EthereumPoolBuilder::default()) + .payload(StrataPayloadServiceBuilder::default()) + .network(EthereumNetworkBuilder::default()) + .executor(StrataExecutorBuilder::default()) + .consensus(EthereumConsensusBuilder::default()) + } } /// Implement the Node trait for the custom node @@ -35,7 +134,14 @@ impl StrataEthereumNode { /// This provides a preset configuration for the node impl Node for StrataEthereumNode where - N: FullNodeTypes>, + N: FullNodeTypes< + Types: NodeTypesWithEngine< + Engine = StrataEngineTypes, + ChainSpec = ChainSpec, + Primitives = StrataPrimitives, + Storage = StrataStorage, + >, + >, { type ComponentsBuilder = ComponentsBuilder< N, @@ -44,30 +150,28 @@ where EthereumNetworkBuilder, StrataExecutorBuilder, EthereumConsensusBuilder, - StrataEngineValidatorBuilder, >; - type AddOns = StrataAddOns; + type AddOns = StrataAddOns< + NodeAdapter>::Components>, + >; fn components_builder(&self) -> Self::ComponentsBuilder { - ComponentsBuilder::default() - .node_types::() - .pool(EthereumPoolBuilder::default()) - .payload(StrataPayloadServiceBuilder::default()) - .network(EthereumNetworkBuilder::default()) - .executor(StrataExecutorBuilder::default()) - .consensus(EthereumConsensusBuilder::default()) - .engine_validator(StrataEngineValidatorBuilder::default()) + Self::components() } fn add_ons(&self) -> Self::AddOns { - StrataAddOns::new(self.args.sequencer_http.clone()) + Self::AddOns::builder() + .with_sequencer(self.args.sequencer_http.clone()) + .build() } } /// Configure the node types impl NodeTypes for StrataEthereumNode { - type Primitives = (); + type Primitives = StrataPrimitives; type ChainSpec = ChainSpec; + type StateCommitment = reth_trie_db::MerklePatriciaTrie; + type Storage = StrataStorage; } /// Configure the node types with the custom engine types @@ -77,25 +181,126 @@ impl NodeTypesWithEngine for StrataEthereumNode { } /// Add-ons for Strata. -#[derive(Debug, Clone)] -pub struct StrataAddOns { - sequencer_http: Option, +#[derive(Debug)] +pub struct StrataAddOns { + pub rpc_add_ons: RpcAddOns, StrataEngineValidatorBuilder>, +} + +impl>> Default + for StrataAddOns +{ + fn default() -> Self { + Self::builder().build() + } } -impl StrataAddOns { - /// Create a new instance with the given `sequencer_http` URL. - pub const fn new(sequencer_http: Option) -> Self { - Self { sequencer_http } +impl>> StrataAddOns { + /// Build a [`StrataAddOns`] using [`StrataAddOnsBuilder`]. + pub fn builder() -> StrataAddOnsBuilder { + StrataAddOnsBuilder::default() } +} + +impl NodeAddOns for StrataAddOns +where + N: FullNodeComponents< + Types: NodeTypesWithEngine< + ChainSpec = ChainSpec, + Primitives = StrataPrimitives, + Storage = StrataStorage, + Engine = StrataEngineTypes, + >, + Pool: TransactionPool>, + >, + StrataEngineValidator: EngineValidator<::Engine>, +{ + type Handle = RpcHandle>; - /// Returns the sequencer HTTP URL. - pub fn sequencer_http(&self) -> Option<&str> { - self.sequencer_http.as_deref() + async fn launch_add_ons( + self, + ctx: reth_node_api::AddOnsContext<'_, N>, + ) -> eyre::Result { + let Self { rpc_add_ons } = self; + + rpc_add_ons + .launch_add_ons_with(ctx, move |_, _| Ok(())) + .await } } -impl NodeAddOns for StrataAddOns { +impl RethRpcAddOns for StrataAddOns +where + N: FullNodeComponents< + Types: NodeTypesWithEngine< + ChainSpec = ChainSpec, + Primitives = StrataPrimitives, + Storage = StrataStorage, + Engine = StrataEngineTypes, + >, + Pool: TransactionPool>, + >, + StrataEngineValidator: EngineValidator<::Engine>, +{ type EthApi = StrataEthApi; + + fn hooks_mut(&mut self) -> &mut reth_node_builder::rpc::RpcHooks { + self.rpc_add_ons.hooks_mut() + } +} + +#[derive(Debug, Default, Clone)] +#[non_exhaustive] +pub struct StrataAddOnsBuilder { + /// Sequencer client, configured to forward submitted transactions to sequencer of given OP + /// network. + sequencer_client: Option, +} + +impl StrataAddOnsBuilder { + /// With a [`SequencerClient`]. + pub fn with_sequencer(mut self, sequencer_client: Option) -> Self { + self.sequencer_client = sequencer_client.map(SequencerClient::new); + self + } +} + +impl StrataAddOnsBuilder { + /// Builds an instance of [`StrataAddOns`]. + pub fn build(self) -> StrataAddOns + where + N: FullNodeComponents>, + { + let Self { sequencer_client } = self; + + StrataAddOns { + rpc_add_ons: RpcAddOns::new( + move |ctx| { + StrataEthApi::::builder() + .with_sequencer(sequencer_client) + .build(ctx) + }, + Default::default(), + ), + } + } +} + +/// Engine validator add-on for Strata. +impl EngineValidatorAddOn for StrataAddOns +where + N: FullNodeComponents< + Types: NodeTypesWithEngine< + ChainSpec = ChainSpec, + Primitives = StrataPrimitives, + Engine = StrataEngineTypes, + >, + >, +{ + type Validator = StrataEngineValidator; + + async fn engine_validator(&self, ctx: &AddOnsContext<'_, N>) -> eyre::Result { + Ok(StrataEngineValidator::new(ctx.config.chain.clone())) + } } /// Builds a regular ethereum block executor that uses the custom EVM. @@ -105,10 +310,10 @@ pub struct StrataExecutorBuilder; impl ExecutorBuilder for StrataExecutorBuilder where - Node: FullNodeTypes>, + Node: FullNodeTypes>, { type EVM = StrataEvmConfig; - type Executor = EthExecutorProvider; + type Executor = BasicBlockExecutorProvider; async fn build_evm( self, @@ -116,7 +321,7 @@ where ) -> eyre::Result<(Self::EVM, Self::Executor)> { Ok(( StrataEvmConfig::new(ctx.chain_spec()), - EthExecutorProvider::new(ctx.chain_spec(), StrataEvmConfig::new(ctx.chain_spec())), + EthExecutorProvider::ethereum(ctx.chain_spec()), )) } } diff --git a/crates/reth/node/src/payload.rs b/crates/reth/node/src/payload.rs index 9053b103f..e9592d084 100644 --- a/crates/reth/node/src/payload.rs +++ b/crates/reth/node/src/payload.rs @@ -1,5 +1,6 @@ use std::convert::Infallible; +use alloy_eips::{eip4895::Withdrawals, eip7685::Requests}; use alloy_rpc_types::{ engine::{ ExecutionPayloadEnvelopeV3, ExecutionPayloadEnvelopeV4, ExecutionPayloadV1, @@ -8,12 +9,11 @@ use alloy_rpc_types::{ Withdrawal, }; use reth::rpc::compat::engine::payload::block_to_payload_v2; +use reth_chain_state::ExecutedBlock; use reth_node_api::{BuiltPayload, PayloadAttributes, PayloadBuilderAttributes}; use reth_payload_builder::{EthBuiltPayload, EthPayloadBuilderAttributes}; -use reth_primitives::{ - revm_primitives::alloy_primitives::{Address, B256, U256}, - SealedBlock, Withdrawals, -}; +use reth_primitives::SealedBlock; +use revm_primitives::alloy_primitives::{Address, B256, U256}; use serde::{Deserialize, Serialize}; use strata_reth_primitives::WithdrawalIntent; @@ -56,7 +56,11 @@ impl PayloadBuilderAttributes for StrataPayloadBuilderAttributes { type RpcPayloadAttributes = StrataPayloadAttributes; type Error = Infallible; - fn try_new(parent: B256, attributes: StrataPayloadAttributes) -> Result { + fn try_new( + parent: B256, + attributes: StrataPayloadAttributes, + _version: u8, + ) -> Result { Ok(Self(EthPayloadBuilderAttributes::new( parent, attributes.inner, @@ -115,6 +119,14 @@ impl BuiltPayload for StrataBuiltPayload { fn fees(&self) -> U256 { self.inner.fees() } + + fn executed_block(&self) -> Option { + self.inner.executed_block() + } + + fn requests(&self) -> Option { + None + } } impl From for ExecutionPayloadV1 { diff --git a/crates/reth/node/src/payload_builder.rs b/crates/reth/node/src/payload_builder.rs index 771efdb32..e386d2632 100644 --- a/crates/reth/node/src/payload_builder.rs +++ b/crates/reth/node/src/payload_builder.rs @@ -1,31 +1,37 @@ use std::sync::Arc; +use alloy_consensus::{Header, EMPTY_OMMER_ROOT_HASH}; +use alloy_eips::{ + eip4844::MAX_DATA_GAS_PER_BLOCK, eip7002::WITHDRAWAL_REQUEST_TYPE, + eip7251::CONSOLIDATION_REQUEST_TYPE, eip7685::Requests, merge::BEACON_NONCE, +}; use reth::{ builder::{components::PayloadServiceBuilder, BuilderContext, PayloadBuilderConfig}, providers::{CanonStateSubscriptions, ExecutionOutcome, StateProviderFactory}, revm::database::StateProviderDatabase, - transaction_pool::{BestTransactionsAttributes, TransactionPool}, -}; -use reth_basic_payload_builder::{ - commit_withdrawals, is_better_payload, BasicPayloadJobGenerator, - BasicPayloadJobGeneratorConfig, BuildArguments, BuildOutcome, PayloadBuilder, PayloadConfig, - WithdrawalsOutcome, }; +use reth_basic_payload_builder::*; use reth_chain_state::ExecutedBlock; use reth_chainspec::{ChainSpec, ChainSpecProvider, EthereumHardforks}; use reth_errors::RethError; use reth_evm::system_calls::SystemCaller; use reth_evm_ethereum::{eip6110::parse_deposits_from_receipts, EthEvmConfig}; -use reth_node_api::{ConfigureEvm, FullNodeTypes, NodeTypesWithEngine, PayloadBuilderAttributes}; +use reth_node_api::{ + ConfigureEvm, FullNodeTypes, NodeTypesWithEngine, PayloadBuilderAttributes, TxTy, +}; use reth_payload_builder::{ EthBuiltPayload, PayloadBuilderError, PayloadBuilderHandle, PayloadBuilderService, }; use reth_primitives::{ - constants::{eip4844::MAX_DATA_GAS_PER_BLOCK, BEACON_NONCE}, - proofs::{self, calculate_requests_root}, - Block, BlockBody, Header, Receipt, Requests, EMPTY_OMMER_ROOT_HASH, + proofs::{self}, + Block, BlockBody, BlockExt, InvalidTransactionError, Receipt, TransactionSigned, +}; +use reth_transaction_pool::{ + error::InvalidPoolTransactionError, BestTransactions, BestTransactionsAttributes, + PoolTransaction, TransactionPool, }; use reth_trie::HashedPostState; +use reth_trie_common::KeccakKeyHasher; use revm::{ db::{states::bundle_state::BundleRetention, State}, DatabaseCommit, @@ -39,6 +45,7 @@ use tracing::{debug, trace, warn}; use crate::{ engine::StrataEngineTypes, evm::StrataEvmConfig, + node::StrataPrimitives, payload::{StrataBuiltPayload, StrataPayloadBuilderAttributes}, }; @@ -52,7 +59,7 @@ pub struct StrataPayloadBuilder { impl PayloadBuilder for StrataPayloadBuilder where Client: StateProviderFactory + ChainSpecProvider, - Pool: TransactionPool, + Pool: TransactionPool>, { type Attributes = StrataPayloadBuilderAttributes; type BuiltPayload = StrataBuiltPayload; @@ -70,7 +77,7 @@ where config: PayloadConfig, ) -> Result { let PayloadConfig { - parent_block, + parent_header, extra_data, attributes, } = config; @@ -88,7 +95,7 @@ where )), client, PayloadConfig { - parent_block, + parent_header, extra_data, attributes: attributes.0, }, @@ -102,18 +109,24 @@ where #[non_exhaustive] pub struct StrataPayloadServiceBuilder; -impl PayloadServiceBuilder for StrataPayloadServiceBuilder -where - Node: FullNodeTypes< - Types: NodeTypesWithEngine, - >, - Pool: TransactionPool + Unpin + 'static, -{ - async fn spawn_payload_service( +impl StrataPayloadServiceBuilder { + pub fn spawn( self, ctx: &BuilderContext, pool: Pool, - ) -> eyre::Result::Engine>> { + ) -> eyre::Result> + where + Node: FullNodeTypes< + Types: NodeTypesWithEngine< + Engine = StrataEngineTypes, + ChainSpec = ChainSpec, + Primitives = StrataPrimitives, + >, + >, + Pool: TransactionPool>> + + Unpin + + 'static, + { let payload_builder = StrataPayloadBuilder { evm_config: StrataEvmConfig::new(ctx.chain_spec()), }; @@ -142,6 +155,28 @@ where } } +impl PayloadServiceBuilder for StrataPayloadServiceBuilder +where + Node: FullNodeTypes< + Types: NodeTypesWithEngine< + Engine = StrataEngineTypes, + ChainSpec = ChainSpec, + Primitives = StrataPrimitives, + >, + >, + Pool: TransactionPool>> + + Unpin + + 'static, +{ + async fn spawn_payload_service( + self, + ctx: &BuilderContext, + pool: Pool, + ) -> eyre::Result> { + self.spawn(ctx, pool) + } +} + /// Constructs an Ethereum transaction payload using the best transactions from the pool. /// /// Given build arguments including an Ethereum client, transaction pool, @@ -156,9 +191,9 @@ pub fn try_build_payload( args: BuildArguments, ) -> Result, PayloadBuilderError> where - EvmConfig: ConfigureEvm
, + EvmConfig: ConfigureEvm
, Client: StateProviderFactory + ChainSpecProvider, - Pool: TransactionPool, + Pool: TransactionPool>, { let BuildArguments { client, @@ -172,7 +207,8 @@ where // convert to eth payload let best_payload = best_payload.map(|p| p.inner); - let state_provider = client.state_by_block_hash(config.parent_block.hash())?; + let chain_spec = client.chain_spec(); + let state_provider = client.state_by_block_hash(config.parent_header.hash())?; let state = StateProviderDatabase::new(state_provider); let mut db = State::builder() .with_database_ref(cached_reads.as_db(state)) @@ -180,22 +216,23 @@ where .build(); let PayloadConfig { - parent_block, + parent_header, attributes, extra_data, } = config; - let chain_spec = client.chain_spec(); - debug!(target: "payload_builder", id=%attributes.payload_id(), parent_hash = ?parent_block.hash(), parent_number = parent_block.number, "building new payload"); + debug!(target: "payload_builder", id=%attributes.payload_id(), parent_hash = ?parent_header.hash(), parent_number = parent_header.number, "building new payload"); - let (initialized_cfg, initialized_block_env) = evm_config.next_cfg_and_block_env( - parent_block.header(), - reth_evm::NextBlockEnvAttributes { - timestamp: attributes.timestamp(), - suggested_fee_recipient: attributes.suggested_fee_recipient(), - prev_randao: attributes.prev_randao(), - }, - ); + let (initialized_cfg, initialized_block_env) = evm_config + .next_cfg_and_block_env( + &parent_header, + reth_evm::NextBlockEnvAttributes { + timestamp: attributes.timestamp(), + suggested_fee_recipient: attributes.suggested_fee_recipient(), + prev_randao: attributes.prev_randao(), + }, + ) + .map_err(PayloadBuilderError::other)?; let mut cumulative_gas_used = 0; let mut sum_blob_gas_used = 0; @@ -219,7 +256,7 @@ where let block_number = initialized_block_env.number.to::(); - let mut sys_calls = SystemCaller::new(&evm_config, chain_spec.clone()); + let mut sys_calls = SystemCaller::new(evm_config.clone(), chain_spec.clone()); // apply eip-4788 pre block contract call sys_calls @@ -231,7 +268,7 @@ where ) .map_err(|err| { warn!(target: "payload_builder", - parent_hash=%parent_block.hash(), + parent_hash=%parent_header.hash(), %err, "failed to apply beacon root contract call for empty payload" ); @@ -244,7 +281,7 @@ where &mut db, &initialized_cfg, &initialized_block_env, - parent_block.hash(), + parent_header.hash(), ) .map_err(|err| PayloadBuilderError::Internal(err.into()))?; @@ -256,7 +293,10 @@ where // we can't fit this transaction into the block, so we need to mark it as invalid // which also removes all dependent transaction from the iterator before we can // continue - best_txs.mark_invalid(&pool_tx); + best_txs.mark_invalid( + &pool_tx, + InvalidPoolTransactionError::ExceedsGasLimit(pool_tx.gas_limit(), block_gas_limit), + ); continue; } @@ -266,7 +306,7 @@ where } // convert tx to a signed transaction - let tx = pool_tx.to_recovered_transaction(); + let tx: reth_primitives::RecoveredTx = pool_tx.to_consensus(); // There's only limited amount of blob space available per block, so we need to check if // the EIP-4844 can still fit in the block @@ -278,7 +318,13 @@ where // the iterator. This is similar to the gas limit condition // for regular transactions above. trace!(target: "payload_builder", tx=?tx.hash, ?sum_blob_gas_used, ?tx_blob_gas, "skipping blob transaction because it would exceed the max data gas per block"); - best_txs.mark_invalid(&pool_tx); + best_txs.mark_invalid( + &pool_tx, + InvalidPoolTransactionError::ExceedsGasLimit( + tx_blob_gas, + MAX_DATA_GAS_PER_BLOCK, + ), + ); continue; } } @@ -286,7 +332,7 @@ where let env = EnvWithHandlerCfg::new_with_cfg_env( initialized_cfg.clone(), initialized_block_env.clone(), - evm_config.tx_env(&tx), + evm_config.tx_env(tx.as_signed(), tx.signer()), ); // Configure the environment for the block. @@ -304,7 +350,12 @@ where // if the transaction is invalid, we can skip it and all of its // descendants trace!(target: "payload_builder", %err, ?tx, "skipping invalid transaction and its descendants"); - best_txs.mark_invalid(&pool_tx); + best_txs.mark_invalid( + &pool_tx, + InvalidPoolTransactionError::Consensus( + InvalidTransactionError::TxTypeNotSupported, + ), + ); } continue; @@ -369,9 +420,7 @@ where } // calculate the requests and the requests root - let (requests, requests_root) = if chain_spec - .is_prague_active_at_timestamp(attributes.timestamp()) - { + let requests = if chain_spec.is_prague_active_at_timestamp(attributes.timestamp()) { let deposit_requests = parse_deposits_from_receipts(&chain_spec, receipts.iter().flatten()) .map_err(|err| PayloadBuilderError::Internal(RethError::Execution(err.into())))?; let withdrawal_requests = sys_calls @@ -389,27 +438,39 @@ where ) .map_err(|err| PayloadBuilderError::Internal(err.into()))?; - let requests = [ - deposit_requests, - withdrawal_requests, - consolidation_requests, - ] - .concat(); - let requests_root = calculate_requests_root(&requests); - (Some(requests.into()), Some(requests_root)) + let mut requests = Requests::default(); + + if !deposit_requests.is_empty() { + requests.push_request(core::iter::once(0).chain(deposit_requests).collect()); + } + + if !withdrawal_requests.is_empty() { + requests.push_request( + core::iter::once(WITHDRAWAL_REQUEST_TYPE) + .chain(withdrawal_requests) + .collect(), + ); + } + + if !consolidation_requests.is_empty() { + requests.push_request( + core::iter::once(CONSOLIDATION_REQUEST_TYPE) + .chain(consolidation_requests) + .collect(), + ); + } + + Some(requests) } else { - (None, None) + None }; // NOTE: bridge-ins are currently handled through withdrawals - let WithdrawalsOutcome { - withdrawals_root, - withdrawals, - } = commit_withdrawals( + let withdrawals_root = commit_withdrawals( &mut db, &chain_spec, attributes.timestamp(), - attributes.withdrawals().clone(), + attributes.withdrawals(), )?; let withdrawal_intents = collect_withdrawal_intents(receipts.iter().cloned()).collect(); @@ -417,6 +478,7 @@ where // merge all transitions into bundle state, this would apply the withdrawal balance changes // and 4788 contract call db.merge_transitions(BundleRetention::PlainState); + let requests_hash = requests.as_ref().map(|requests| requests.requests_hash()); let execution_outcome = ExecutionOutcome::new( db.take_bundle(), @@ -432,7 +494,8 @@ where .expect("Number is in range"); // calculate the state root - let hashed_state = HashedPostState::from_bundle_state(&execution_outcome.state().state); + let hashed_state = + HashedPostState::from_bundle_state::(&execution_outcome.state().state); let (state_root, trie_output) = { let state_provider = db.database.0.inner.borrow_mut(); state_provider @@ -440,7 +503,7 @@ where .state_root_with_updates(hashed_state.clone()) .inspect_err(|err| { warn!(target: "payload_builder", - parent_hash=%parent_block.hash(), + parent_hash=%parent_header.hash(), %err, "failed to calculate state root for payload" ); @@ -458,17 +521,19 @@ where // only determine cancun fields when active if chain_spec.is_cancun_active_at_timestamp(attributes.timestamp()) { // grab the blob sidecars from the executed txs - blob_sidecars = pool.get_all_blobs_exact( - executed_txs - .iter() - .filter(|tx| tx.is_eip4844()) - .map(|tx| tx.hash) - .collect(), - )?; - - excess_blob_gas = if chain_spec.is_cancun_active_at_timestamp(parent_block.timestamp) { - let parent_excess_blob_gas = parent_block.excess_blob_gas.unwrap_or_default(); - let parent_blob_gas_used = parent_block.blob_gas_used.unwrap_or_default(); + blob_sidecars = pool + .get_all_blobs_exact( + executed_txs + .iter() + .filter(|tx| tx.is_eip4844()) + .map(|tx| tx.hash()) + .collect(), + ) + .map_err(PayloadBuilderError::other)?; + + excess_blob_gas = if chain_spec.is_cancun_active_at_timestamp(attributes.timestamp()) { + let parent_excess_blob_gas = parent_header.excess_blob_gas.unwrap_or_default(); + let parent_blob_gas_used = parent_header.blob_gas_used.unwrap_or_default(); Some(calc_excess_blob_gas( parent_excess_blob_gas, parent_blob_gas_used, @@ -483,7 +548,7 @@ where } let header = Header { - parent_hash: parent_block.hash(), + parent_hash: parent_header.hash(), ommers_hash: EMPTY_OMMER_ROOT_HASH, beneficiary: initialized_block_env.coinbase, state_root, @@ -495,7 +560,7 @@ where mix_hash: attributes.prev_randao(), nonce: BEACON_NONCE.into(), base_fee_per_gas: Some(base_fee), - number: parent_block.number + 1, + number: parent_header.number + 1, gas_limit: block_gas_limit, difficulty: U256::ZERO, gas_used: cumulative_gas_used, @@ -503,9 +568,14 @@ where parent_beacon_block_root: attributes.parent_beacon_block_root(), blob_gas_used, excess_blob_gas, - requests_root, + requests_hash, + target_blobs_per_block: None, }; + let withdrawals = chain_spec + .is_shanghai_active_at_timestamp(attributes.timestamp()) + .then(|| attributes.withdrawals().clone()); + // seal the block let block = Block { header, @@ -513,31 +583,30 @@ where transactions: executed_txs, ommers: vec![], withdrawals, - requests, }, }; - let sealed_block = block.seal_slow(); + let sealed_block = Arc::new(block.seal_slow()); debug!(target: "payload_builder", ?sealed_block, "sealed built block"); let executed = ExecutedBlock { - block: Arc::new(sealed_block.clone()), + block: sealed_block.clone(), senders: Arc::new(executed_senders), execution_output: Arc::new(execution_outcome), hashed_state: Arc::new(hashed_state), trie: Arc::new(trie_output), }; - // TODO: None is likely incorrect. let mut eth_payload = EthBuiltPayload::new( attributes.payload_id(), sealed_block, total_fees, Some(executed), + requests, ); // extend the payload with the blob sidecars from the executed txs - eth_payload.extend_sidecars(blob_sidecars); + eth_payload.extend_sidecars(blob_sidecars.into_iter().map(Arc::unwrap_or_clone)); let payload = StrataBuiltPayload::new(eth_payload, withdrawal_intents); diff --git a/crates/reth/node/src/validator.rs b/crates/reth/node/src/validator.rs deleted file mode 100644 index f68bdd7c5..000000000 --- a/crates/reth/node/src/validator.rs +++ /dev/null @@ -1,55 +0,0 @@ -use reth::builder::{components::EngineValidatorBuilder, BuilderContext}; -use reth_chainspec::ChainSpec; -use reth_node_api::{ - validate_version_specific_fields, EngineApiMessageVersion, EngineObjectValidationError, - EngineTypes, EngineValidator, FullNodeTypes, NodeTypesWithEngine, PayloadOrAttributes, -}; - -use crate::{StrataEngineTypes, StrataPayloadAttributes}; - -/// Strata engine validator -#[derive(Debug, Clone)] -pub struct StrataEngineValidator { - chain_spec: ChainSpec, -} - -impl EngineValidator for StrataEngineValidator -where - T: EngineTypes, -{ - fn validate_version_specific_fields( - &self, - version: EngineApiMessageVersion, - payload_or_attrs: PayloadOrAttributes<'_, T::PayloadAttributes>, - ) -> Result<(), EngineObjectValidationError> { - validate_version_specific_fields(&self.chain_spec, version, payload_or_attrs) - } - - fn ensure_well_formed_attributes( - &self, - version: EngineApiMessageVersion, - attributes: &T::PayloadAttributes, - ) -> Result<(), EngineObjectValidationError> { - validate_version_specific_fields(&self.chain_spec, version, attributes.into())?; - - Ok(()) - } -} - -/// Custom engine validator builder -#[derive(Debug, Default, Clone, Copy)] -#[non_exhaustive] -pub struct StrataEngineValidatorBuilder; - -impl EngineValidatorBuilder for StrataEngineValidatorBuilder -where - N: FullNodeTypes>, -{ - type Validator = StrataEngineValidator; - - async fn build_validator(self, ctx: &BuilderContext) -> eyre::Result { - Ok(StrataEngineValidator { - chain_spec: std::sync::Arc::unwrap_or_clone(ctx.chain_spec()), - }) - } -} diff --git a/crates/reth/primitives/Cargo.toml b/crates/reth/primitives/Cargo.toml index cc7734034..6dce62d47 100644 --- a/crates/reth/primitives/Cargo.toml +++ b/crates/reth/primitives/Cargo.toml @@ -5,5 +5,5 @@ version = "0.1.0" [dependencies] alloy-sol-types.workspace = true -reth-primitives.workspace = true +revm-primitives.workspace = true serde.workspace = true diff --git a/crates/reth/primitives/src/lib.rs b/crates/reth/primitives/src/lib.rs index 04b781af2..26ec0a6eb 100644 --- a/crates/reth/primitives/src/lib.rs +++ b/crates/reth/primitives/src/lib.rs @@ -1,7 +1,7 @@ #![cfg_attr(not(test), warn(unused_crate_dependencies))] use alloy_sol_types::sol; -use reth_primitives::revm_primitives::alloy_primitives::B256; +use revm_primitives::alloy_primitives::B256; use serde::{Deserialize, Serialize}; /// Type for withdrawal_intents in rpc. diff --git a/crates/reth/rpc/Cargo.toml b/crates/reth/rpc/Cargo.toml index d2554a2c5..e05fe58f2 100644 --- a/crates/reth/rpc/Cargo.toml +++ b/crates/reth/rpc/Cargo.toml @@ -8,6 +8,7 @@ strata-proofimpl-evm-ee-stf.workspace = true strata-reth-db.workspace = true strata-rpc-utils.workspace = true +alloy-consensus.workspace = true alloy-eips.workspace = true alloy-network.workspace = true alloy-primitives.workspace = true @@ -35,6 +36,7 @@ reth-rpc-server-types.workspace = true reth-tasks = { workspace = true, features = ["rayon"] } reth-transaction-pool.workspace = true revm.workspace = true +revm-primitives.workspace = true serde.workspace = true serde_json.workspace = true thiserror.workspace = true diff --git a/crates/reth/rpc/src/eth/block.rs b/crates/reth/rpc/src/eth/block.rs index 5b8e0f227..10eab2979 100644 --- a/crates/reth/rpc/src/eth/block.rs +++ b/crates/reth/rpc/src/eth/block.rs @@ -1,31 +1,28 @@ //! Loads and formats OP block RPC response. -use alloy_rpc_types::{AnyTransactionReceipt, BlockId}; -use reth_chainspec::ChainSpec; -use reth_node_api::{FullNodeComponents, NodeTypes}; -use reth_primitives::TransactionMeta; -use reth_provider::{BlockReaderIdExt, HeaderProvider}; +use alloy_consensus::BlockHeader; +use alloy_rpc_types_eth::{BlockId, TransactionReceipt}; +use reth_chainspec::{ChainSpec, ChainSpecProvider}; +use reth_node_api::BlockBody; +use reth_primitives::{Receipt, TransactionMeta, TransactionSigned}; +use reth_provider::{BlockReader, HeaderProvider}; use reth_rpc_eth_api::{ helpers::{EthBlocks, LoadBlock, LoadPendingBlock, LoadReceipt, SpawnBlocking}, RpcReceipt, }; -use reth_rpc_eth_types::{EthApiError, EthStateCache, ReceiptBuilder}; +use reth_rpc_eth_types::{EthApiError, EthReceiptBuilder}; -use crate::StrataEthApi; +use crate::{StrataEthApi, StrataNodeCore}; impl EthBlocks for StrataEthApi where Self: LoadBlock< Error = EthApiError, - NetworkTypes: alloy_network::Network, + NetworkTypes: alloy_network::Network, + Provider: BlockReader, >, - N: FullNodeComponents>, + N: StrataNodeCore + HeaderProvider>, { - #[inline] - fn provider(&self) -> impl HeaderProvider { - self.inner.provider() - } - async fn block_receipts( &self, block_id: BlockId, @@ -34,22 +31,21 @@ where Self: LoadReceipt, { if let Some((block, receipts)) = self.load_block_and_receipts(block_id).await? { - let block_number = block.number; - let base_fee = block.base_fee_per_gas; + let block_number = block.number(); + let base_fee = block.base_fee_per_gas(); let block_hash = block.hash(); - let excess_blob_gas = block.excess_blob_gas; - let timestamp = block.timestamp; - let block = block.unseal(); + let excess_blob_gas = block.excess_blob_gas(); + let timestamp = block.timestamp(); return block .body - .transactions + .transactions() .into_iter() .zip(receipts.iter()) .enumerate() .map(|(idx, (tx, receipt))| { let meta = TransactionMeta { - tx_hash: tx.hash, + tx_hash: tx.hash(), index: idx as u64, block_hash, block_number, @@ -58,7 +54,7 @@ where timestamp, }; - ReceiptBuilder::new(&tx, meta, receipt, &receipts) + EthReceiptBuilder::new(&tx, meta, receipt, &receipts) .map(|builder| builder.build()) }) .collect::, Self::Error>>() @@ -72,15 +68,6 @@ where impl LoadBlock for StrataEthApi where Self: LoadPendingBlock + SpawnBlocking, - N: FullNodeComponents, + N: StrataNodeCore, { - #[inline] - fn provider(&self) -> impl BlockReaderIdExt { - self.inner.provider() - } - - #[inline] - fn cache(&self) -> &EthStateCache { - self.inner.cache() - } } diff --git a/crates/reth/rpc/src/eth/call.rs b/crates/reth/rpc/src/eth/call.rs index 124ea1650..78697122f 100644 --- a/crates/reth/rpc/src/eth/call.rs +++ b/crates/reth/rpc/src/eth/call.rs @@ -1,37 +1,116 @@ -use reth_chainspec::ChainSpec; +use alloy_primitives::{TxKind, U256}; +use alloy_rpc_types_eth::transaction::TransactionRequest; use reth_evm::ConfigureEvm; -use reth_node_api::{FullNodeComponents, NodeTypes}; -use reth_primitives::Header; -use reth_rpc_eth_api::helpers::{Call, EthCall, LoadState, SpawnBlocking}; -use reth_rpc_eth_types::EthApiError; +use reth_provider::ProviderHeader; +use reth_rpc_eth_api::{ + helpers::{estimate::EstimateCall, Call, EthCall, LoadBlock, LoadState, SpawnBlocking}, + FromEthApiError, FullEthApiTypes, IntoEthApiError, +}; +use reth_rpc_eth_types::{revm_utils::CallFees, EthApiError, RpcInvalidTransactionError}; +use revm::primitives::{BlockEnv, TxEnv}; -use crate::StrataEthApi; +use crate::{StrataEthApi, StrataNodeCore}; impl EthCall for StrataEthApi +where + Self: EstimateCall + LoadBlock + FullEthApiTypes, + N: StrataNodeCore, +{ +} + +impl EstimateCall for StrataEthApi where Self: Call, - N: FullNodeComponents>, + Self::Error: From, + N: StrataNodeCore, { } impl Call for StrataEthApi where - Self: LoadState + SpawnBlocking, + Self: LoadState>> + SpawnBlocking, Self::Error: From, - N: FullNodeComponents, + N: StrataNodeCore, { #[inline] fn call_gas_limit(&self) -> u64 { - self.inner.gas_cap() + self.inner.eth_api.gas_cap() } #[inline] fn max_simulate_blocks(&self) -> u64 { - self.inner.max_simulate_blocks() + self.inner.eth_api.max_simulate_blocks() } - #[inline] - fn evm_config(&self) -> &impl ConfigureEvm
{ - self.inner.evm_config() + fn create_txn_env( + &self, + block_env: &BlockEnv, + request: TransactionRequest, + ) -> Result { + // Ensure that if versioned hashes are set, they're not empty + if request + .blob_versioned_hashes + .as_ref() + .is_some_and(|hashes| hashes.is_empty()) + { + return Err(RpcInvalidTransactionError::BlobTransactionMissingBlobHashes.into_eth_err()); + } + + let TransactionRequest { + from, + to, + gas_price, + max_fee_per_gas, + max_priority_fee_per_gas, + gas, + value, + input, + nonce, + access_list, + chain_id, + blob_versioned_hashes, + max_fee_per_blob_gas, + authorization_list, + .. + } = request; + + let CallFees { + max_priority_fee_per_gas, + gas_price, + max_fee_per_blob_gas, + } = CallFees::ensure_fees( + gas_price.map(U256::from), + max_fee_per_gas.map(U256::from), + max_priority_fee_per_gas.map(U256::from), + block_env.basefee, + blob_versioned_hashes.as_deref(), + max_fee_per_blob_gas.map(U256::from), + block_env.get_blob_gasprice().map(U256::from), + )?; + + let gas_limit = gas.unwrap_or_else(|| block_env.gas_limit.min(U256::from(u64::MAX)).to()); + + #[allow(clippy::needless_update)] + let env = TxEnv { + gas_limit, + nonce, + caller: from.unwrap_or_default(), + gas_price, + gas_priority_fee: max_priority_fee_per_gas, + transact_to: to.unwrap_or(TxKind::Create), + value: value.unwrap_or_default(), + data: input + .try_into_unique_input() + .map_err(Self::Error::from_eth_err)? + .unwrap_or_default(), + chain_id, + access_list: access_list.unwrap_or_default().into(), + // EIP-4844 fields + blob_hashes: blob_versioned_hashes.unwrap_or_default(), + max_fee_per_blob_gas, + authorization_list: authorization_list.map(Into::into), + }; + + Ok(env) } } diff --git a/crates/reth/rpc/src/eth/mod.rs b/crates/reth/rpc/src/eth/mod.rs index e429fdf37..2613ec835 100644 --- a/crates/reth/rpc/src/eth/mod.rs +++ b/crates/reth/rpc/src/eth/mod.rs @@ -8,27 +8,27 @@ mod block; mod call; mod pending_block; -use std::{fmt, ops::Deref, sync::Arc}; +use std::{fmt, sync::Arc}; -use alloy_network::AnyNetwork; use alloy_primitives::U256; -use reth_chainspec::EthereumHardforks; +use reth_chainspec::{EthChainSpec, EthereumHardforks}; use reth_evm::ConfigureEvm; use reth_network_api::NetworkInfo; -use reth_node_api::{BuilderProvider, FullNodeComponents, FullNodeTypes, NodeTypes}; +use reth_node_api::NodePrimitives; use reth_node_builder::EthApiBuilderCtx; -use reth_primitives::Header; +use reth_primitives::EthPrimitives; use reth_provider::{ - BlockIdReader, BlockNumReader, BlockReaderIdExt, ChainSpecProvider, HeaderProvider, - StageCheckpointReader, StateProviderFactory, + BlockNumReader, BlockReader, BlockReaderIdExt, CanonStateSubscriptions, ChainSpecProvider, + EvmEnvProvider, NodePrimitivesProvider, ProviderBlock, ProviderHeader, ProviderReceipt, + ProviderTx, StageCheckpointReader, StateProviderFactory, }; -use reth_rpc::eth::{core::EthApiInner, DevSigner, EthTxBuilder}; +use reth_rpc::eth::{core::EthApiInner, DevSigner}; use reth_rpc_eth_api::{ helpers::{ AddDevSigners, EthApiSpec, EthFees, EthSigner, EthState, LoadBlock, LoadFee, LoadState, SpawnBlocking, Trace, }, - EthApiTypes, + EthApiTypes, RpcNodeCore, RpcNodeCoreExt, }; use reth_rpc_eth_types::{EthApiError, EthStateCache, FeeHistoryCache, GasPriceOracle}; use reth_tasks::{ @@ -36,18 +36,21 @@ use reth_tasks::{ TaskSpawner, }; use reth_transaction_pool::TransactionPool; -use tokio::sync::OnceCell; use crate::SequencerClient; /// Adapter for [`EthApiInner`], which holds all the data required to serve core `eth_` API. pub type EthApiNodeBackend = EthApiInner< - ::Provider, - ::Pool, - ::Network, - ::Evm, + ::Provider, + ::Pool, + ::Network, + ::Evm, >; +/// A helper trait with requirements for [`RpcNodeCore`] to be used in [`StrataEthApi`]. +pub trait StrataNodeCore: RpcNodeCore {} +impl StrataNodeCore for T where T: RpcNodeCore {} + /// Strata Eth API implementation. /// /// This type provides the functionality for handling `eth_` related requests. @@ -59,215 +62,274 @@ pub type EthApiNodeBackend = EthApiInner< /// This type implements the [`FullEthApi`](reth_rpc_eth_api::helpers::FullEthApi) by implemented /// all the `Eth` helper traits and prerequisite traits. #[derive(Clone)] -pub struct StrataEthApi { +pub struct StrataEthApi { /// Gateway to node's core components. - inner: Arc>, - /// Sequencer client, configured to forward submitted transactions to sequencer of given OP - /// network. - sequencer_client: Arc>, -} - -impl Deref for StrataEthApi { - type Target = EthApiNodeBackend; - - fn deref(&self) -> &Self::Target { - &self.inner - } + inner: Arc>, } -impl StrataEthApi { - /// Creates a new instance for given context. - #[allow(clippy::type_complexity)] - pub fn with_spawner(ctx: &EthApiBuilderCtx) -> Self { - let blocking_task_pool = - BlockingTaskPool::build().expect("failed to build blocking task pool"); - - let inner = EthApiInner::new( - ctx.provider.clone(), - ctx.pool.clone(), - ctx.network.clone(), - ctx.cache.clone(), - ctx.new_gas_price_oracle(), - ctx.config.rpc_gas_cap, - ctx.config.rpc_max_simulate_blocks, - ctx.config.eth_proof_window, - blocking_task_pool, - ctx.new_fee_history_cache(), - ctx.evm_config.clone(), - ctx.executor.clone(), - ctx.config.proof_permits, - ); - - Self { - inner: Arc::new(inner), - sequencer_client: Arc::new(OnceCell::new()), - } +impl StrataEthApi +where + N: StrataNodeCore< + Provider: BlockReaderIdExt + + ChainSpecProvider + + CanonStateSubscriptions + + Clone + + 'static, + >, +{ + /// Build a [`StrataEthApi`] using [`StrataEthApiBuilder`]. + pub const fn builder() -> StrataEthApiBuilder { + StrataEthApiBuilder::new() } } impl EthApiTypes for StrataEthApi where Self: Send + Sync, - N: FullNodeComponents, + N: StrataNodeCore, { type Error = EthApiError; - type NetworkTypes = AnyNetwork; - type TransactionCompat = EthTxBuilder; + type NetworkTypes = alloy_network::Ethereum; + type TransactionCompat = Self; + + fn tx_resp_builder(&self) -> &Self::TransactionCompat { + self + } } -impl EthApiSpec for StrataEthApi +impl RpcNodeCore for StrataEthApi where - Self: Send + Sync, - N: FullNodeComponents>, + N: StrataNodeCore, { + type Provider = N::Provider; + type Pool = N::Pool; + type Evm = ::Evm; + type Network = ::Network; + type PayloadBuilder = (); + #[inline] - fn provider( - &self, - ) -> impl ChainSpecProvider + BlockNumReader + StageCheckpointReader - { - self.inner.provider() + fn pool(&self) -> &Self::Pool { + self.inner.eth_api.pool() } #[inline] - fn network(&self) -> impl NetworkInfo { - self.inner.network() + fn evm_config(&self) -> &Self::Evm { + self.inner.eth_api.evm_config() } #[inline] - fn starting_block(&self) -> U256 { - self.inner.starting_block() + fn network(&self) -> &Self::Network { + self.inner.eth_api.network() + } + + #[inline] + fn payload_builder(&self) -> &Self::PayloadBuilder { + &() } #[inline] - fn signers(&self) -> &parking_lot::RwLock>> { - self.inner.signers() + fn provider(&self) -> &Self::Provider { + self.inner.eth_api.provider() } } -impl SpawnBlocking for StrataEthApi +impl RpcNodeCoreExt for StrataEthApi where - Self: Send + Sync + Clone + 'static, - N: FullNodeComponents, + N: StrataNodeCore, { #[inline] - fn io_task_spawner(&self) -> impl TaskSpawner { - self.inner.task_spawner() + fn cache(&self) -> &EthStateCache, ProviderReceipt> { + self.inner.eth_api.cache() } +} + +impl EthApiSpec for StrataEthApi +where + N: StrataNodeCore< + Provider: ChainSpecProvider + + BlockNumReader + + StageCheckpointReader, + Network: NetworkInfo, + >, +{ + type Transaction = ProviderTx; #[inline] - fn tracing_task_pool(&self) -> &BlockingTaskPool { - self.inner.blocking_task_pool() + fn starting_block(&self) -> U256 { + self.inner.eth_api.starting_block() } #[inline] - fn tracing_task_guard(&self) -> &BlockingTaskGuard { - self.inner.blocking_task_guard() + fn signers(&self) -> &parking_lot::RwLock>>>> { + self.inner.eth_api.signers() } } -impl LoadFee for StrataEthApi +impl SpawnBlocking for StrataEthApi where - Self: LoadBlock, - N: FullNodeComponents>, + Self: Send + Sync + Clone + 'static, + N: StrataNodeCore, { #[inline] - fn provider( - &self, - ) -> impl BlockIdReader + HeaderProvider + ChainSpecProvider { - self.inner.provider() - } - - #[inline] - fn cache(&self) -> &EthStateCache { - self.inner.cache() + fn io_task_spawner(&self) -> impl TaskSpawner { + self.inner.eth_api.task_spawner() } #[inline] - fn gas_oracle(&self) -> &GasPriceOracle { - self.inner.gas_oracle() + fn tracing_task_pool(&self) -> &BlockingTaskPool { + self.inner.eth_api.blocking_task_pool() } #[inline] - fn fee_history_cache(&self) -> &FeeHistoryCache { - self.inner.fee_history_cache() + fn tracing_task_guard(&self) -> &BlockingTaskGuard { + self.inner.eth_api.blocking_task_guard() } } -impl LoadState for StrataEthApi +impl LoadFee for StrataEthApi where - Self: Send + Sync + Clone, - N: FullNodeComponents>, + Self: LoadBlock, + N: StrataNodeCore< + Provider: BlockReaderIdExt + + EvmEnvProvider + + ChainSpecProvider + + StateProviderFactory, + >, { #[inline] - fn provider( - &self, - ) -> impl StateProviderFactory + ChainSpecProvider { - self.inner.provider() + fn gas_oracle(&self) -> &GasPriceOracle { + self.inner.eth_api.gas_oracle() } #[inline] - fn cache(&self) -> &EthStateCache { - self.inner.cache() + fn fee_history_cache(&self) -> &FeeHistoryCache { + self.inner.eth_api.fee_history_cache() } +} - #[inline] - fn pool(&self) -> impl TransactionPool { - self.inner.pool() - } +impl LoadState for StrataEthApi where + N: StrataNodeCore< + Provider: StateProviderFactory + ChainSpecProvider, + Pool: TransactionPool, + > +{ } impl EthState for StrataEthApi where Self: LoadState + SpawnBlocking, - N: FullNodeComponents, + N: StrataNodeCore, { #[inline] fn max_proof_window(&self) -> u64 { - self.inner.eth_proof_window() + self.inner.eth_api.eth_proof_window() } } impl EthFees for StrataEthApi where Self: LoadFee, - N: FullNodeComponents, + N: StrataNodeCore, { } impl Trace for StrataEthApi where - Self: LoadState, - N: FullNodeComponents, + Self: RpcNodeCore + + LoadState< + Evm: ConfigureEvm< + Header = ProviderHeader, + Transaction = ProviderTx, + >, + >, + N: StrataNodeCore, { - #[inline] - fn evm_config(&self) -> &impl ConfigureEvm
{ - self.inner.evm_config() - } } impl AddDevSigners for StrataEthApi where - N: FullNodeComponents>, + N: StrataNodeCore, { fn with_dev_accounts(&self) { - *self.signers().write() = DevSigner::random_signers(20) + *self.inner.eth_api.signers().write() = DevSigner::random_signers(20) } } -impl BuilderProvider for StrataEthApi -where - Self: Send, - N: FullNodeComponents, -{ - type Ctx<'a> = &'a EthApiBuilderCtx; +impl fmt::Debug for StrataEthApi { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_struct("StrataEthApi").finish_non_exhaustive() + } +} + +/// Container type for [`StrataEthApi`] +#[allow(missing_debug_implementations)] +struct StrataEthApiInner { + /// Gateway to node's core components. + eth_api: EthApiNodeBackend, + /// Sequencer client, configured to forward submitted transactions to sequencer of given OP + /// network. + sequencer_client: Option, +} + +pub struct StrataEthApiBuilder { + /// Sequencer client, configured to forward submitted transactions to sequencer of given OP + /// network. + sequencer_client: Option, +} - fn builder() -> Box Fn(Self::Ctx<'a>) -> Self + Send> { - Box::new(Self::with_spawner) +impl StrataEthApiBuilder { + /// Creates a [`StrataEthApiBuilder`] instance. + pub const fn new() -> Self { + Self { + sequencer_client: None, + } + } + + /// With a [`SequencerClient`]. + pub fn with_sequencer(mut self, sequencer_client: Option) -> Self { + self.sequencer_client = sequencer_client; + self } } -impl fmt::Debug for StrataEthApi { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.debug_struct("StrataEthApi").finish_non_exhaustive() +impl StrataEthApiBuilder { + /// Builds an instance of [`StrataEthApi`] + pub fn build(self, ctx: &EthApiBuilderCtx) -> StrataEthApi + where + N: StrataNodeCore< + Provider: BlockReaderIdExt< + Block = <::Primitives as NodePrimitives>::Block, + Receipt = <::Primitives as NodePrimitives>::Receipt, + > + ChainSpecProvider + + CanonStateSubscriptions + + Clone + + 'static, + >, + { + let blocking_task_pool = + BlockingTaskPool::build().expect("failed to build blocking task pool"); + + let eth_api = EthApiInner::new( + ctx.provider.clone(), + ctx.pool.clone(), + ctx.network.clone(), + ctx.cache.clone(), + ctx.new_gas_price_oracle(), + ctx.config.rpc_gas_cap, + ctx.config.rpc_max_simulate_blocks, + ctx.config.eth_proof_window, + blocking_task_pool, + ctx.new_fee_history_cache(), + ctx.evm_config.clone(), + ctx.executor.clone(), + ctx.config.proof_permits, + ); + + StrataEthApi { + inner: Arc::new(StrataEthApiInner { + eth_api, + sequencer_client: self.sequencer_client, + }), + } } } diff --git a/crates/reth/rpc/src/eth/pending_block.rs b/crates/reth/rpc/src/eth/pending_block.rs index e928b4424..3d6450366 100644 --- a/crates/reth/rpc/src/eth/pending_block.rs +++ b/crates/reth/rpc/src/eth/pending_block.rs @@ -1,43 +1,163 @@ //! Loads Strata pending block for a RPC response. -use reth_chainspec::{ChainSpec, EthereumHardforks}; +use alloy_consensus::{ + constants::EMPTY_WITHDRAWALS, proofs::calculate_transaction_root, Header, EMPTY_OMMER_ROOT_HASH, +}; +use alloy_eips::{eip7685::EMPTY_REQUESTS_HASH, merge::BEACON_NONCE, BlockNumberOrTag}; +use alloy_primitives::{B256, U256}; +use reth_chainspec::{EthChainSpec, EthereumHardforks}; use reth_evm::ConfigureEvm; -use reth_node_api::{FullNodeComponents, NodeTypes}; -use reth_primitives::Header; -use reth_provider::{BlockReaderIdExt, ChainSpecProvider, EvmEnvProvider, StateProviderFactory}; -use reth_rpc_eth_api::helpers::LoadPendingBlock; -use reth_rpc_eth_types::PendingBlock; -use reth_transaction_pool::TransactionPool; +use reth_primitives::{ + logs_bloom, proofs::calculate_receipt_root_no_memo, BlockBody, Receipt, SealedBlockWithSenders, + TransactionSigned, +}; +use reth_provider::{ + BlockReader, BlockReaderIdExt, ChainSpecProvider, EvmEnvProvider, ProviderBlock, + ProviderHeader, ProviderReceipt, ProviderTx, ReceiptProvider, StateProviderFactory, +}; +use reth_rpc_eth_api::{ + helpers::{LoadPendingBlock, SpawnBlocking}, + EthApiTypes, FromEthApiError, RpcNodeCore, +}; +use reth_rpc_eth_types::{EthApiError, PendingBlock}; +use reth_transaction_pool::{PoolTransaction, TransactionPool}; +use revm::primitives::{BlockEnv, ExecutionResult}; use crate::StrataEthApi; impl LoadPendingBlock for StrataEthApi where - Self: Send + Sync, - N: FullNodeComponents>, + Self: SpawnBlocking + + EthApiTypes< + NetworkTypes: alloy_network::Network< + HeaderResponse = alloy_rpc_types_eth::Header>, + >, + >, + N: RpcNodeCore< + Provider: BlockReaderIdExt< + Transaction = reth_primitives::TransactionSigned, + Block = reth_primitives::Block, + Receipt = reth_primitives::Receipt, + Header = reth_primitives::Header, + > + EvmEnvProvider + + ChainSpecProvider + + StateProviderFactory, + Pool: TransactionPool>>, + Evm: ConfigureEvm
, + >, { #[inline] - fn provider( + fn pending_block( &self, - ) -> impl BlockReaderIdExt - + EvmEnvProvider - + ChainSpecProvider - + StateProviderFactory { - self.inner.provider() + ) -> &tokio::sync::Mutex< + Option, ProviderReceipt>>, + > { + self.inner.eth_api.pending_block() } - #[inline] - fn pool(&self) -> impl TransactionPool { - self.inner.pool() + /// Returns the locally built pending block + async fn local_pending_block( + &self, + ) -> Result)>, Self::Error> { + // See: + let latest = self + .provider() + .latest_header() + .map_err(Self::Error::from_eth_err)? + .ok_or(EthApiError::HeaderNotFound(BlockNumberOrTag::Latest.into()))?; + let block_id = latest.hash().into(); + let block = self + .provider() + .block_with_senders(block_id, Default::default()) + .map_err(Self::Error::from_eth_err)? + .ok_or(EthApiError::HeaderNotFound(block_id.into()))? + .seal(latest.hash()); + + let receipts = self + .provider() + .receipts_by_block(block_id) + .map_err(Self::Error::from_eth_err)? + .ok_or(EthApiError::ReceiptsNotFound(block_id.into()))?; + + Ok(Some((block, receipts))) } - #[inline] - fn pending_block(&self) -> &tokio::sync::Mutex> { - self.inner.pending_block() + fn assemble_block( + &self, + block_env: &BlockEnv, + parent_hash: B256, + state_root: B256, + transactions: Vec>, + receipts: &[ProviderReceipt], + ) -> reth_provider::ProviderBlock { + let chain_spec = self.provider().chain_spec(); + let timestamp = block_env.timestamp.to::(); + + let transactions_root = calculate_transaction_root(&transactions); + let receipts_root = calculate_receipt_root_no_memo(&receipts.iter().collect::>()); + + let logs_bloom = logs_bloom(receipts.iter().flat_map(|r| &r.logs)); + let is_cancun = chain_spec.is_cancun_active_at_timestamp(timestamp); + let is_prague = chain_spec.is_prague_active_at_timestamp(timestamp); + let is_shanghai = chain_spec.is_shanghai_active_at_timestamp(timestamp); + + let header = Header { + parent_hash, + ommers_hash: EMPTY_OMMER_ROOT_HASH, + beneficiary: block_env.coinbase, + state_root, + transactions_root, + receipts_root, + withdrawals_root: (is_shanghai).then_some(EMPTY_WITHDRAWALS), + logs_bloom, + timestamp, + mix_hash: block_env.prevrandao.unwrap_or_default(), + nonce: BEACON_NONCE.into(), + base_fee_per_gas: Some(block_env.basefee.to::()), + number: block_env.number.to::(), + gas_limit: block_env.gas_limit.to::(), + difficulty: U256::ZERO, + gas_used: receipts + .last() + .map(|r| r.cumulative_gas_used) + .unwrap_or_default(), + blob_gas_used: is_cancun.then(|| { + transactions + .iter() + .map(|tx| tx.blob_gas_used().unwrap_or_default()) + .sum::() + }), + excess_blob_gas: block_env.get_blob_excess_gas().map(Into::into), + extra_data: Default::default(), + parent_beacon_block_root: is_cancun.then_some(B256::ZERO), + requests_hash: is_prague.then_some(EMPTY_REQUESTS_HASH), + target_blobs_per_block: None, + }; + + // seal the block + reth_primitives::Block { + header, + body: BlockBody { + transactions, + ommers: vec![], + withdrawals: None, + }, + } } - #[inline] - fn evm_config(&self) -> &impl ConfigureEvm
{ - self.inner.evm_config() + fn assemble_receipt( + &self, + tx: &ProviderTx, + result: ExecutionResult, + cumulative_gas_used: u64, + ) -> reth_provider::ProviderReceipt { + #[allow(clippy::needless_update)] + Receipt { + tx_type: tx.tx_type(), + success: result.is_success(), + cumulative_gas_used, + logs: result.into_logs().into_iter().map(Into::into).collect(), + ..Default::default() + } } } diff --git a/crates/reth/rpc/src/eth/receipt.rs b/crates/reth/rpc/src/eth/receipt.rs index 08010c5b6..491065200 100644 --- a/crates/reth/rpc/src/eth/receipt.rs +++ b/crates/reth/rpc/src/eth/receipt.rs @@ -1,23 +1,20 @@ -//! Loads and formats OP receipt RPC response. +//! Loads and formats Strata receipt RPC response. -use reth_chainspec::ChainSpec; use reth_node_api::{FullNodeComponents, NodeTypes}; use reth_primitives::{Receipt, TransactionMeta, TransactionSigned}; +use reth_provider::{ReceiptProvider, TransactionsProvider}; use reth_rpc_eth_api::{helpers::LoadReceipt, FromEthApiError, RpcReceipt}; -use reth_rpc_eth_types::{EthApiError, EthStateCache, ReceiptBuilder}; +use reth_rpc_eth_types::{EthApiError, EthReceiptBuilder}; use crate::StrataEthApi; impl LoadReceipt for StrataEthApi where Self: Send + Sync, - N: FullNodeComponents>, + N: FullNodeComponents>, + Self::Provider: + TransactionsProvider + ReceiptProvider, { - #[inline] - fn cache(&self) -> &EthStateCache { - self.inner.cache() - } - async fn build_transaction_receipt( &self, tx: TransactionSigned, @@ -27,12 +24,14 @@ where let hash = meta.block_hash; // get all receipts for the block let all_receipts = self + .inner + .eth_api .cache() .get_receipts(hash) .await .map_err(Self::Error::from_eth_err)? .ok_or(EthApiError::HeaderNotFound(hash.into()))?; - Ok(ReceiptBuilder::new(&tx, meta, &receipt, &all_receipts)?.build()) + Ok(EthReceiptBuilder::new(&tx, meta, &receipt, &all_receipts)?.build()) } } diff --git a/crates/reth/rpc/src/eth/transaction.rs b/crates/reth/rpc/src/eth/transaction.rs index 5b1116842..3a2ca4254 100644 --- a/crates/reth/rpc/src/eth/transaction.rs +++ b/crates/reth/rpc/src/eth/transaction.rs @@ -1,37 +1,37 @@ //! Loads and formats Strata transaction RPC response. -use alloy_primitives::{Bytes, B256}; +use alloy_consensus::{Signed, Transaction as _, TxEnvelope}; +use alloy_primitives::{Bytes, PrimitiveSignature as Signature, B256}; +use alloy_rpc_types_eth::{Transaction, TransactionInfo, TransactionRequest}; use reth_node_api::FullNodeComponents; -use reth_provider::{BlockReaderIdExt, TransactionsProvider}; +use reth_primitives::{RecoveredTx, TransactionSigned}; +use reth_provider::{ + BlockReader, BlockReaderIdExt, ProviderTx, ReceiptProvider, TransactionsProvider, +}; use reth_rpc_eth_api::{ helpers::{EthSigner, EthTransactions, LoadTransaction, SpawnBlocking}, - FromEthApiError, FullEthApiTypes, + FromEthApiError, FullEthApiTypes, RpcNodeCore, RpcNodeCoreExt, TransactionCompat, }; -use reth_rpc_eth_types::{utils::recover_raw_transaction, EthStateCache}; +use reth_rpc_eth_types::{utils::recover_raw_transaction, EthApiError}; use reth_transaction_pool::{PoolTransaction, TransactionOrigin, TransactionPool}; -use crate::{SequencerClient, StrataEthApi}; +use crate::{SequencerClient, StrataEthApi, StrataNodeCore}; impl EthTransactions for StrataEthApi where - Self: LoadTransaction, - N: FullNodeComponents, + Self: LoadTransaction, + N: StrataNodeCore>>, { - fn provider(&self) -> impl BlockReaderIdExt { - self.inner.provider() - } - - fn signers(&self) -> &parking_lot::RwLock>> { - self.inner.signers() + fn signers(&self) -> &parking_lot::RwLock>>>> { + self.inner.eth_api.signers() } /// Decodes and recovers the transaction and submits it to the pool. /// /// Returns the hash of the transaction. async fn send_raw_transaction(&self, tx: Bytes) -> Result { - let recovered = recover_raw_transaction(tx.clone())?; - let pool_transaction = - ::Transaction::from_pooled(recovered.into()); + let recovered = recover_raw_transaction(&tx)?; + let pool_transaction = ::Transaction::from_pooled(recovered); // On Strata, transactions are forwarded directly to the sequencer to be included in // blocks that it builds. @@ -55,38 +55,106 @@ where impl LoadTransaction for StrataEthApi where - Self: SpawnBlocking + FullEthApiTypes, - N: FullNodeComponents, + Self: SpawnBlocking + FullEthApiTypes + RpcNodeCoreExt, + N: StrataNodeCore, + Self::Pool: TransactionPool, { - type Pool = N::Pool; - - fn provider(&self) -> impl TransactionsProvider { - self.inner.provider() - } - - fn cache(&self) -> &EthStateCache { - self.inner.cache() - } +} - fn pool(&self) -> &Self::Pool { - self.inner.pool() +impl StrataEthApi +where + N: StrataNodeCore, +{ + /// Returns the [`SequencerClient`] if one is set. + pub fn raw_tx_forwarder(&self) -> Option { + self.inner.sequencer_client.clone() } } -impl StrataEthApi +impl TransactionCompat for StrataEthApi where - N: FullNodeComponents, + N: FullNodeComponents>, { - /// Sets a [`SequencerClient`] for `eth_sendRawTransaction` to forward transactions to. - pub fn set_sequencer_client( + type Transaction = Transaction; + type Error = EthApiError; + + fn fill( + &self, + tx: RecoveredTx, + tx_info: TransactionInfo, + ) -> Result { + let from = tx.signer(); + let hash = tx.hash(); + let TransactionSigned { + transaction, + signature, + .. + } = tx.into_signed(); + + let inner = match transaction { + reth_primitives::Transaction::Legacy(tx) => { + TxEnvelope::Legacy(Signed::new_unchecked(tx, signature, hash)) + } + reth_primitives::Transaction::Eip2930(tx) => { + TxEnvelope::Eip2930(Signed::new_unchecked(tx, signature, hash)) + } + reth_primitives::Transaction::Eip1559(tx) => { + TxEnvelope::Eip1559(Signed::new_unchecked(tx, signature, hash)) + } + reth_primitives::Transaction::Eip4844(_) => unreachable!(), + reth_primitives::Transaction::Eip7702(tx) => { + TxEnvelope::Eip7702(Signed::new_unchecked(tx, signature, hash)) + } + }; + + let TransactionInfo { + block_hash, + block_number, + index: transaction_index, + base_fee, + .. + } = tx_info; + + let effective_gas_price = base_fee + .map(|base_fee| { + inner + .effective_tip_per_gas(base_fee as u64) + .unwrap_or_default() + + base_fee + }) + .unwrap_or_else(|| inner.max_fee_per_gas()); + + Ok(Transaction { + inner, + block_hash, + block_number, + transaction_index, + from, + effective_gas_price: Some(effective_gas_price), + }) + } + + fn build_simulate_v1_transaction( &self, - sequencer_client: SequencerClient, - ) -> Result<(), tokio::sync::SetError> { - self.sequencer_client.set(sequencer_client) + request: TransactionRequest, + ) -> Result { + let Ok(tx) = request.build_typed_tx() else { + return Err(EthApiError::TransactionConversionError); + }; + + // Create an empty signature for the transaction. + let signature = Signature::new(Default::default(), Default::default(), false); + Ok(TransactionSigned::new_unhashed(tx.into(), signature)) } - /// Returns the [`SequencerClient`] if one is set. - pub fn raw_tx_forwarder(&self) -> Option { - self.sequencer_client.get().cloned() + fn otterscan_api_truncate_input(tx: &mut Self::Transaction) { + let input = match &mut tx.inner { + TxEnvelope::Eip1559(tx) => &mut tx.tx_mut().input, + TxEnvelope::Eip2930(tx) => &mut tx.tx_mut().input, + TxEnvelope::Legacy(tx) => &mut tx.tx_mut().input, + TxEnvelope::Eip7702(tx) => &mut tx.tx_mut().input, + _ => return, + }; + *input = input.slice(..4); } } diff --git a/crates/reth/rpc/src/lib.rs b/crates/reth/rpc/src/lib.rs index 04fa9fdc7..95c4fab09 100644 --- a/crates/reth/rpc/src/lib.rs +++ b/crates/reth/rpc/src/lib.rs @@ -4,9 +4,9 @@ pub mod eth; mod rpc; pub mod sequencer; -pub use eth::StrataEthApi; +pub use eth::{StrataEthApi, StrataNodeCore}; use jsonrpsee::{core::RpcResult, proc_macros::rpc}; -use reth_primitives::revm_primitives::alloy_primitives::B256; +use revm_primitives::alloy_primitives::B256; pub use rpc::StrataRPC; pub use sequencer::SequencerClient; use serde::{Deserialize, Serialize}; diff --git a/crates/reth/rpc/src/rpc.rs b/crates/reth/rpc/src/rpc.rs index 3f7d20242..bc42c207f 100644 --- a/crates/reth/rpc/src/rpc.rs +++ b/crates/reth/rpc/src/rpc.rs @@ -1,7 +1,7 @@ use std::sync::Arc; use jsonrpsee::core::RpcResult; -use reth_primitives::revm_primitives::alloy_primitives::B256; +use revm_primitives::alloy_primitives::B256; use strata_reth_db::WitnessProvider; use strata_rpc_utils::to_jsonrpsee_error; diff --git a/crates/reth/rpc/src/sequencer.rs b/crates/reth/rpc/src/sequencer.rs index dbe95c0bd..266b1c1ae 100644 --- a/crates/reth/rpc/src/sequencer.rs +++ b/crates/reth/rpc/src/sequencer.rs @@ -76,7 +76,7 @@ impl SequencerClient { let body = serde_json::to_string(&serde_json::json!({ "jsonrpc": "2.0", "method": "eth_sendRawTransaction", - "params": [format!("0x{}", reth_primitives::revm_primitives::alloy_primitives::hex::encode(tx))], + "params": [format!("0x{}", revm_primitives::alloy_primitives::hex::encode(tx))], "id": self.next_request_id() })) .map_err(|_| { diff --git a/crates/util/python-utils/Cargo.toml b/crates/util/python-utils/Cargo.toml index 65f5cae61..a71fa385e 100644 --- a/crates/util/python-utils/Cargo.toml +++ b/crates/util/python-utils/Cargo.toml @@ -21,7 +21,7 @@ bdk_wallet = "1.0.0-beta.5" musig2.workspace = true # "abi3-py310" tells pyo3 (and maturin) to build using the stable ABI with minimum Python version 3.10 pyo3 = { version = "0.22.6", features = ["extension-module", "abi3-py310"] } -reth-primitives.workspace = true +revm-primitives.workspace = true # TODO: secp256k1 is not used directly in this crate, but through the chain of re-imports from bdk. # However, removing this from the dependency list makes it fail to build. secp256k1.workspace = true diff --git a/crates/util/python-utils/src/drt.rs b/crates/util/python-utils/src/drt.rs index ab9783710..d423efc33 100644 --- a/crates/util/python-utils/src/drt.rs +++ b/crates/util/python-utils/src/drt.rs @@ -10,7 +10,7 @@ use bdk_wallet::{ KeychainKind, TxOrdering, Wallet, }; use pyo3::prelude::*; -use reth_primitives::revm_primitives::alloy_primitives::Address as RethAddress; +use revm_primitives::alloy_primitives::Address as RethAddress; use strata_primitives::constants::UNSPENDABLE_PUBLIC_KEY; use crate::{ diff --git a/crates/util/python-utils/src/parse.rs b/crates/util/python-utils/src/parse.rs index 8b0c5e3db..ff2143e00 100644 --- a/crates/util/python-utils/src/parse.rs +++ b/crates/util/python-utils/src/parse.rs @@ -1,5 +1,5 @@ use bdk_wallet::bitcoin::{Address, OutPoint, PublicKey, Txid, XOnlyPublicKey}; -use reth_primitives::revm_primitives::alloy_primitives::Address as RethAddress; +use revm_primitives::alloy_primitives::Address as RethAddress; use crate::error::Error; diff --git a/provers/sp1/guest-btc-blockspace/Cargo.lock b/provers/sp1/guest-btc-blockspace/Cargo.lock index 781e11581..7b32ff51c 100644 --- a/provers/sp1/guest-btc-blockspace/Cargo.lock +++ b/provers/sp1/guest-btc-blockspace/Cargo.lock @@ -16,15 +16,17 @@ dependencies = [ [[package]] name = "alloy-consensus" -version = "0.4.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "705687d5bfd019fee57cf9e206b27b30a9a9617535d5590a02b171e813208f8e" +checksum = "a101d4d016f47f13890a74290fdd17b05dd175191d9337bc600791fb96e4dea8" dependencies = [ "alloy-eips", "alloy-primitives", "alloy-rlp", "alloy-serde", + "alloy-trie", "auto_impl", + "c-kzg", "derive_more", "serde", ] @@ -42,21 +44,22 @@ dependencies = [ [[package]] name = "alloy-eip7702" -version = "0.1.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea59dc42102bc9a1905dc57901edc6dd48b9f38115df86c7d252acba70d71d04" +checksum = "4c986539255fb839d1533c128e190e557e52ff652c9ef62939e233a81dd93f7e" dependencies = [ "alloy-primitives", "alloy-rlp", + "derive_more", "k256", "serde", ] [[package]] name = "alloy-eips" -version = "0.4.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ffb906284a1e1f63c4607da2068c8197458a352d0b3e9796e67353d72a9be85" +checksum = "8b6755b093afef5925f25079dd5a7c8d096398b804ba60cb5275397b06b31689" dependencies = [ "alloy-eip2930", "alloy-eip7702", @@ -64,26 +67,29 @@ dependencies = [ "alloy-rlp", "alloy-serde", "c-kzg", + "derive_more", + "once_cell", "serde", "sha2", ] [[package]] name = "alloy-genesis" -version = "0.4.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8429cf4554eed9b40feec7f4451113e76596086447550275e3def933faf47ce3" +checksum = "aeec8e6eab6e52b7c9f918748c9b811e87dbef7312a2e3a2ca1729a92966a6af" dependencies = [ "alloy-primitives", "alloy-serde", + "alloy-trie", "serde", ] [[package]] name = "alloy-primitives" -version = "0.8.11" +version = "0.8.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd58d377699e6cfeab52c4a9d28bdc4ef37e2bd235ff2db525071fe37a2e9af5" +checksum = "6259a506ab13e1d658796c31e6e39d2e2ee89243bcc505ddc613b35732e0a430" dependencies = [ "alloy-rlp", "bytes", @@ -92,9 +98,9 @@ dependencies = [ "derive_more", "foldhash", "getrandom", - "hashbrown", + "hashbrown 0.15.1", "hex-literal", - "indexmap", + "indexmap 2.6.0", "itoa", "k256", "keccak-asm", @@ -110,9 +116,9 @@ dependencies = [ [[package]] name = "alloy-rlp" -version = "0.3.9" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0822426598f95e45dd1ea32a738dac057529a709ee645fcc516ffa4cbde08f" +checksum = "f542548a609dca89fcd72b3b9f355928cf844d4363c5eed9c5273a3dd225e097" dependencies = [ "alloy-rlp-derive", "arrayvec", @@ -121,9 +127,9 @@ dependencies = [ [[package]] name = "alloy-rlp-derive" -version = "0.3.9" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b09cae092c27b6f1bde952653a22708691802e57bfef4a2973b80bea21efd3f" +checksum = "5a833d97bf8a5f0f878daf2c8451fff7de7f9de38baa5a45d936ec718d81255a" dependencies = [ "proc-macro2", "quote", @@ -132,9 +138,9 @@ dependencies = [ [[package]] name = "alloy-serde" -version = "0.4.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dff0ab1cdd43ca001e324dc27ee0e8606bd2161d6623c63e0e0b8c4dfc13600" +checksum = "9afa753a97002a33b2ccb707d9f15f31c81b8c1b786c95b73cc62bb1d1fd0c3f" dependencies = [ "alloy-primitives", "serde", @@ -143,12 +149,13 @@ dependencies = [ [[package]] name = "alloy-trie" -version = "0.6.0" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9703ce68b97f8faae6f7739d1e003fc97621b856953cbcdbb2b515743f23288" +checksum = "3a5fd8fea044cc9a8c8a50bb6f28e31f0385d820f116c5b98f6f4e55d6e5590b" dependencies = [ "alloy-primitives", "alloy-rlp", + "arrayvec", "derive_more", "nybbles", "serde", @@ -156,6 +163,21 @@ dependencies = [ "tracing", ] +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + [[package]] name = "anyhow" version = "1.0.93" @@ -300,6 +322,9 @@ name = "arrayvec" version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" +dependencies = [ + "serde", +] [[package]] name = "auto_impl" @@ -334,6 +359,12 @@ dependencies = [ "bitcoin_hashes", ] +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + [[package]] name = "base64ct" version = "1.6.0" @@ -491,6 +522,12 @@ dependencies = [ "syn_derive", ] +[[package]] +name = "bumpalo" +version = "3.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" + [[package]] name = "byte-slice-cast" version = "1.2.2" @@ -553,6 +590,8 @@ version = "1.1.36" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baee610e9452a8f6f0a1b6194ec09ff9e2d85dea54432acdae41aa0761c95d70" dependencies = [ + "jobserver", + "libc", "shlex", ] @@ -568,11 +607,24 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" +[[package]] +name = "chrono" +version = "0.4.39" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e36cc9d416881d2e24f9a963be5fb1cd90966419ac844274161d10488b3e825" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "num-traits", + "serde", + "windows-targets", +] + [[package]] name = "const-hex" -version = "1.13.1" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0121754e84117e65f9d90648ee6aa4882a6e63110307ab73967a4c5e7e69e586" +checksum = "4b0485bab839b018a8f1723fc5391819fea5f8f0f32288ef8a735fd096b6160c" dependencies = [ "cfg-if", "cpufeatures", @@ -596,6 +648,12 @@ dependencies = [ "unicode-segmentation", ] +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + [[package]] name = "cpufeatures" version = "0.2.14" @@ -620,6 +678,12 @@ version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" +[[package]] +name = "critical-section" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" + [[package]] name = "crossbeam-deque" version = "0.8.5" @@ -673,6 +737,41 @@ dependencies = [ "typenum", ] +[[package]] +name = "darling" +version = "0.20.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.20.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.87", +] + +[[package]] +name = "darling_macro" +version = "0.20.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" +dependencies = [ + "darling_core", + "quote", + "syn 2.0.87", +] + [[package]] name = "der" version = "0.7.9" @@ -683,6 +782,16 @@ dependencies = [ "zeroize", ] +[[package]] +name = "deranged" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +dependencies = [ + "powerfmt", + "serde", +] + [[package]] name = "derivative" version = "2.2.0" @@ -951,6 +1060,12 @@ dependencies = [ "strata-sp1-adapter", ] +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + [[package]] name = "hashbrown" version = "0.15.1" @@ -1012,6 +1127,35 @@ dependencies = [ "digest 0.10.7", ] +[[package]] +name = "iana-time-zone" +version = "0.1.61" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + [[package]] name = "impl-codec" version = "0.6.0" @@ -1032,6 +1176,17 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", + "serde", +] + [[package]] name = "indexmap" version = "2.6.0" @@ -1039,7 +1194,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" dependencies = [ "equivalent", - "hashbrown", + "hashbrown 0.15.1", "serde", ] @@ -1062,19 +1217,29 @@ dependencies = [ ] [[package]] -name = "itertools" -version = "0.13.0" +name = "itoa" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" + +[[package]] +name = "jobserver" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" dependencies = [ - "either", + "libc", ] [[package]] -name = "itoa" -version = "1.0.11" +name = "js-sys" +version = "0.3.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" +checksum = "6717b6b5b077764fb5966237269cb3c64edddde4b14ce42647430a78ced9e7b7" +dependencies = [ + "once_cell", + "wasm-bindgen", +] [[package]] name = "k256" @@ -1136,6 +1301,12 @@ version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +[[package]] +name = "log" +version = "0.4.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" + [[package]] name = "memchr" version = "2.7.4" @@ -1190,6 +1361,12 @@ dependencies = [ "num-traits", ] +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + [[package]] name = "num-integer" version = "0.1.46" @@ -1258,6 +1435,26 @@ name = "once_cell" version = "1.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" +dependencies = [ + "critical-section", + "portable-atomic", +] + +[[package]] +name = "op-alloy-consensus" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78f0daa0d0936d436a21b57571b1e27c5663aa2ab62f6edae5ba5be999f9f93e" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "alloy-serde", + "derive_more", + "serde", + "thiserror 2.0.6", +] [[package]] name = "p3-baby-bear" @@ -1410,7 +1607,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "879952a81a83930934cbf1786752d6dedc3b1f29e8f8fb2ad1d0a36f377cf442" dependencies = [ "memchr", - "thiserror", + "thiserror 1.0.68", "ucd-trie", ] @@ -1430,6 +1627,24 @@ dependencies = [ "spki", ] +[[package]] +name = "pkg-config" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" + +[[package]] +name = "portable-atomic" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "280dc24453071f1b63954171985a0b0d30058d287960968b9b2aca264c8d4ee6" + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + [[package]] name = "ppv-lite86" version = "0.2.20" @@ -1600,8 +1815,8 @@ checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "reth-codecs" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ "alloy-consensus", "alloy-eips", @@ -1610,13 +1825,15 @@ dependencies = [ "alloy-trie", "bytes", "modular-bitfield", + "op-alloy-consensus", "reth-codecs-derive", + "serde", ] [[package]] name = "reth-codecs-derive" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ "convert_case", "proc-macro2", @@ -1626,8 +1843,8 @@ dependencies = [ [[package]] name = "reth-ethereum-forks" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ "alloy-chains", "alloy-primitives", @@ -1638,18 +1855,20 @@ dependencies = [ "once_cell", "rustc-hash", "serde", - "thiserror-no-std", + "thiserror 2.0.6", ] [[package]] name = "reth-primitives" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ "alloy-consensus", "alloy-eips", "alloy-primitives", "alloy-rlp", + "alloy-serde", + "alloy-trie", "bytes", "derive_more", "k256", @@ -1658,35 +1877,37 @@ dependencies = [ "reth-ethereum-forks", "reth-primitives-traits", "reth-static-file-types", - "reth-trie-common", + "reth-zstd-compressors", "revm-primitives", + "secp256k1", "serde", + "serde_with", ] [[package]] name = "reth-primitives-traits" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ "alloy-consensus", "alloy-eips", "alloy-genesis", "alloy-primitives", "alloy-rlp", - "byteorder", + "auto_impl", "bytes", "derive_more", - "modular-bitfield", + "op-alloy-consensus", "reth-codecs", "revm-primitives", - "roaring", "serde", + "serde_with", ] [[package]] name = "reth-static-file-types" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ "alloy-primitives", "derive_more", @@ -1695,30 +1916,18 @@ dependencies = [ ] [[package]] -name = "reth-trie-common" -version = "1.1.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.0#1ba631ba9581973e7c6cadeea92cfe1802aceb4a" +name = "reth-zstd-compressors" +version = "1.1.3" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.1.3#d97449dae495a2243000078fa30b3b164ef5891b" dependencies = [ - "alloy-consensus", - "alloy-genesis", - "alloy-primitives", - "alloy-rlp", - "alloy-trie", - "bytes", - "derive_more", - "itertools 0.13.0", - "nybbles", - "reth-codecs", - "reth-primitives-traits", - "revm-primitives", - "serde", + "zstd", ] [[package]] name = "revm-primitives" -version = "10.0.0" +version = "14.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f1525851a03aff9a9d6a1d018b414d76252d6802ab54695b27093ecd7e7a101" +checksum = "3702f132bb484f4f0d0ca4f6fbde3c82cfd745041abbedd6eda67730e1868ef0" dependencies = [ "alloy-eip2930", "alloy-eip7702", @@ -1754,16 +1963,6 @@ dependencies = [ "rustc-hex", ] -[[package]] -name = "roaring" -version = "0.10.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f4b84ba6e838ceb47b41de5194a60244fac43d9fe03b71dbe8c5a201081d6d1" -dependencies = [ - "bytemuck", - "byteorder", -] - [[package]] name = "ruint" version = "1.12.3" @@ -1971,6 +2170,36 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_with" +version = "3.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e28bdad6db2b8340e449f7108f020b3b092e8583a9e3fb82713e1d4e71fe817" +dependencies = [ + "base64", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.6.0", + "serde", + "serde_derive", + "serde_json", + "serde_with_macros", + "time", +] + +[[package]] +name = "serde_with_macros" +version = "3.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d846214a9854ef724f3da161b426242d8de7c1fc7de2f89bb1efcb154dca79d" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.87", +] + [[package]] name = "serdect" version = "0.2.0" @@ -2124,7 +2353,7 @@ dependencies = [ "musig2", "serde", "strata-primitives", - "thiserror", + "thiserror 1.0.68", ] [[package]] @@ -2150,11 +2379,12 @@ dependencies = [ "musig2", "rand", "reth-primitives", + "revm-primitives", "secp256k1", "serde", "serde_json", "sha2", - "thiserror", + "thiserror 1.0.68", "tracing", "zeroize", ] @@ -2224,7 +2454,7 @@ dependencies = [ "strata-bridge-tx-builder", "strata-primitives", "strata-state", - "thiserror", + "thiserror 1.0.68", "tracing", ] @@ -2236,9 +2466,15 @@ dependencies = [ "bincode", "borsh", "serde", - "thiserror", + "thiserror 1.0.68", ] +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + [[package]] name = "strum" version = "0.26.3" @@ -2342,7 +2578,16 @@ version = "1.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "02dd99dc800bbb97186339685293e1cc5d9df1f8fae2d0aecd9ff1c77efea892" dependencies = [ - "thiserror-impl", + "thiserror-impl 1.0.68", +] + +[[package]] +name = "thiserror" +version = "2.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fec2a1820ebd077e2b90c4df007bebf344cd394098a13c563957d0afc83ea47" +dependencies = [ + "thiserror-impl 2.0.6", ] [[package]] @@ -2356,6 +2601,17 @@ dependencies = [ "syn 2.0.87", ] +[[package]] +name = "thiserror-impl" +version = "2.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d65750cab40f4ff1929fb1ba509e9914eb756131cef4210da8d5d700d26f6312" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + [[package]] name = "thiserror-impl-no-std" version = "2.0.2" @@ -2385,6 +2641,37 @@ dependencies = [ "num_cpus", ] +[[package]] +name = "time" +version = "0.3.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" + +[[package]] +name = "time-macros" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2834e6017e3e5e4b9834939793b282bc03b37a3336245fa820e35e233e2a85de" +dependencies = [ + "num-conv", + "time-core", +] + [[package]] name = "tiny-keccak" version = "2.0.2" @@ -2406,7 +2693,7 @@ version = "0.22.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" dependencies = [ - "indexmap", + "indexmap 2.6.0", "toml_datetime", "winnow", ] @@ -2517,6 +2804,69 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "wasm-bindgen" +version = "0.2.99" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a474f6281d1d70c17ae7aa6a613c87fce69a127e2624002df63dcb39d6cf6396" +dependencies = [ + "cfg-if", + "once_cell", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.99" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f89bb38646b4f81674e8f5c3fb81b562be1fd936d84320f3264486418519c79" +dependencies = [ + "bumpalo", + "log", + "proc-macro2", + "quote", + "syn 2.0.87", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.99" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2cc6181fd9a7492eef6fef1f33961e3695e4579b9872a6f7c83aee556666d4fe" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.99" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30d7a95b763d3c45903ed6c81f156801839e5ee968bb07e534c44df0fcd330c2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.99" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "943aab3fdaaa029a6e0271b35ea10b72b943135afe9bffca82384098ad0e06a6" + +[[package]] +name = "windows-core" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +dependencies = [ + "windows-targets", +] + [[package]] name = "windows-sys" version = "0.52.0" @@ -2657,3 +3007,31 @@ dependencies = [ "quote", "syn 2.0.87", ] + +[[package]] +name = "zstd" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcf2b778a664581e31e389454a7072dab1647606d44f7feea22cd5abb9c9f3f9" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "7.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54a3ab4db68cea366acc5c897c7b4d4d1b8994a9cd6e6f841f8964566a419059" +dependencies = [ + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.13+zstd.1.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38ff0f21cfee8f97d94cef41359e0c89aa6113028ab0291aa8ca0038995a95aa" +dependencies = [ + "cc", + "pkg-config", +] From 506e8900d16db89431bcfe14d72a7cc73fd6b2f5 Mon Sep 17 00:00:00 2001 From: Evgeniy Zdanovich Date: Fri, 13 Dec 2024 15:36:49 +0100 Subject: [PATCH 2/4] Fix cargo warnings. --- bin/strata-cli/src/signet/persist.rs | 9 ++-- crates/chaintsn/src/transition.rs | 10 ++-- .../consensus-logic/src/csm/state_tracker.rs | 4 +- crates/consensus-logic/src/duty/types.rs | 5 +- crates/db/src/database.rs | 8 +-- crates/db/src/traits.rs | 14 +++--- crates/primitives/src/bridge.rs | 7 +-- crates/primitives/src/l1.rs | 7 +-- crates/proof-impl/btc-blockspace/src/block.rs | 8 +-- crates/reth/rpc/src/eth/block.rs | 4 +- crates/reth/rpc/src/eth/mod.rs | 1 + crates/rocksdb-store/src/macros.rs | 13 +++-- crates/state/src/l1/maturation_queue.rs | 7 +-- crates/state/src/operation.rs | 5 +- crates/state/src/state_op.rs | 5 +- crates/storage/src/exec.rs | 50 ------------------- crates/tasks/src/pending_tasks.rs | 2 +- 17 files changed, 65 insertions(+), 94 deletions(-) diff --git a/bin/strata-cli/src/signet/persist.rs b/bin/strata-cli/src/signet/persist.rs index 3bcbfd719..bc4bbacf0 100644 --- a/bin/strata-cli/src/signet/persist.rs +++ b/bin/strata-cli/src/signet/persist.rs @@ -7,10 +7,11 @@ use bdk_wallet::{ use crate::signet::SignetWallet; -/// Wrapper around the built-in rusqlite db that allows -/// [`PersistedWallet`](crate::signet::PersistedWallet) to be shared across multiple threads by -/// lazily initializing per core connections to the sqlite db and keeping them in local thread -/// storage instead of sharing the connection across cores. +/// Wrapper around the built-in rusqlite db. +/// +/// It allows [`PersistedWallet`](crate::signet::PersistedWallet) to be shared across multiple +/// threads by lazily initializing per core connections to the sqlite db and keeping them in +/// local thread storage instead of sharing the connection across cores. /// /// WARNING: [`set_data_dir`] **MUST** be called and set before using [`Persister`]. #[derive(Debug)] diff --git a/crates/chaintsn/src/transition.rs b/crates/chaintsn/src/transition.rs index 5f4f50dac..66a79b86d 100644 --- a/crates/chaintsn/src/transition.rs +++ b/crates/chaintsn/src/transition.rs @@ -28,10 +28,12 @@ use crate::{ slot_rng::{self, SlotRng}, }; -/// Processes a block, making writes into the provided state cache that will -/// then be written to disk. This does not check the block's credentials, it -/// plays out all the updates a block makes to the chain, but it will abort if -/// there are any semantic issues that don't make sense. +/// Processes a block, making writes into the provided state cache. +/// +/// The cache will eventually be written to disk. This does not check the +/// block's credentials, it plays out all the updates a block makes to the +/// chain, but it will abort if there are any semantic issues that +/// don't make sense. /// /// This operates on a state cache that's expected to be empty, panics /// otherwise. Does not check the `state_root` in the header for correctness, diff --git a/crates/consensus-logic/src/csm/state_tracker.rs b/crates/consensus-logic/src/csm/state_tracker.rs index aa449cf25..c971da71c 100644 --- a/crates/consensus-logic/src/csm/state_tracker.rs +++ b/crates/consensus-logic/src/csm/state_tracker.rs @@ -95,7 +95,9 @@ impl StateTracker { } } -/// Reconstructs the [`ClientState`] by fetching the last available checkpoint +/// Reconstructs the [`ClientState`]. +/// +/// It does so by fetching the last available checkpoint /// and replaying all relevant /// [`ClientStateWrite`](strata_state::operation::ClientStateWrite) /// from that checkpoint up to the specified index `idx`, diff --git a/crates/consensus-logic/src/duty/types.rs b/crates/consensus-logic/src/duty/types.rs index a91c2d253..d0a709e2a 100644 --- a/crates/consensus-logic/src/duty/types.rs +++ b/crates/consensus-logic/src/duty/types.rs @@ -316,8 +316,9 @@ pub enum IdentityKey { Sequencer(Buf32), } -/// Contains both the identity key used for signing and the identity used for -/// verifying signatures. This is really just a stub that we should replace +/// Container for signing identity key and verification identity key. +/// +/// This is really just a stub that we should replace /// with real cryptographic signatures and putting keys in the rollup params. #[derive(Clone, Debug)] pub struct IdentityData { diff --git a/crates/db/src/database.rs b/crates/db/src/database.rs index 1f32a819a..a8efe9166 100644 --- a/crates/db/src/database.rs +++ b/crates/db/src/database.rs @@ -2,9 +2,11 @@ use std::sync::Arc; use super::traits::*; -/// Shim database type that assumes that all the database impls are wrapped in -/// `Arc`s and that the provider and stores are actually the same types. We -/// might actually use this in practice, it's just for testing. +/// Shim database type to wrap various database impls. +/// +/// It assumes that all the database impls are wrapped in `Arc`s and that +/// the provider and stores are actually the same types. We might actually +/// use this in practice, it's just for testing. pub struct CommonDatabase where L1DB: L1Database + Sync + Send + 'static, diff --git a/crates/db/src/traits.rs b/crates/db/src/traits.rs index 01d7e72a3..11e2aa773 100644 --- a/crates/db/src/traits.rs +++ b/crates/db/src/traits.rs @@ -193,12 +193,14 @@ pub enum BlockStatus { Invalid, } -/// Db trait for the (consensus layer) chain state database. For now we only -/// have a modestly sized "toplevel" chain state and no "large" state like the -/// EL does. This trait is designed to permit a change to storing larger state -/// like that in the future without *too* much extra effort. We decide new -/// states by providing the database with a generic "write batch" and offloading -/// the effort of deciding how to compute that write batch to the database impl. +/// Db trait for the (consensus layer) chain state database. +/// +/// For now we only have a modestly sized "toplevel" chain state and no "large" +/// state like the EL does. This trait is designed to permit a change to +/// storing larger state like that in the future without *too* much extra effort. +/// We decide new states by providing the database with a generic "write batch" +/// and offloading the effort of deciding how to compute that write batch to the +/// database impl. pub trait ChainstateDatabase { /// Writes the genesis chainstate at index 0. fn write_genesis_state(&self, toplevel: &Chainstate) -> DbResult<()>; diff --git a/crates/primitives/src/bridge.rs b/crates/primitives/src/bridge.rs index aa35b626e..2293e4b02 100644 --- a/crates/primitives/src/bridge.rs +++ b/crates/primitives/src/bridge.rs @@ -189,9 +189,10 @@ pub struct TxSigningData { pub spend_path: TaprootSpendPath, } -/// Information regarding the signature which includes the schnorr signature itself as well as the -/// pubkey of the signer so that the signature can be verified at the callsite (given a particular -/// message that was signed). +/// Information regarding the signature. +/// +/// It includes the schnorr signature itself as well as the pubkey of the signer so that the +/// signature can be verified at the callsite (given a particular message that was signed). #[derive(Debug, Clone, Copy, Arbitrary, Serialize, Deserialize)] pub struct OperatorPartialSig { /// The schnorr signature for a given message. diff --git a/crates/primitives/src/l1.rs b/crates/primitives/src/l1.rs index 4eea0f47a..cf9dbee37 100644 --- a/crates/primitives/src/l1.rs +++ b/crates/primitives/src/l1.rs @@ -276,9 +276,10 @@ pub struct L1Status { pub published_inscription_count: u64, } -/// A wrapper around the [`bitcoin::Address`] type created in order to implement -/// some useful traits on it such as [`serde::Deserialize`], [`borsh::BorshSerialize`] and -/// [`borsh::BorshDeserialize`]. +/// A wrapper around the [`bitcoin::Address`] type. +/// +/// It's created in order to implement some useful traits on it such as +/// [`serde::Deserialize`], [`borsh::BorshSerialize`] and [`borsh::BorshDeserialize`]. // TODO: implement [`arbitrary::Arbitrary`]? #[derive(Debug, Clone, Serialize, PartialEq, Eq, PartialOrd, Ord)] pub struct BitcoinAddress { diff --git a/crates/proof-impl/btc-blockspace/src/block.rs b/crates/proof-impl/btc-blockspace/src/block.rs index 5d74eb880..93e755f92 100644 --- a/crates/proof-impl/btc-blockspace/src/block.rs +++ b/crates/proof-impl/btc-blockspace/src/block.rs @@ -1,6 +1,8 @@ -//! Utility functions for computing and verifying various cryptographic properties of Bitcoin -//! blocks, including Merkle roots, witness commitments, and proof-of-work validation. These -//! functions are designed to be equivalent to the corresponding methods found in the +//! Utility functions to work with cryptographic properties of Bitcoin blocks. +//! +//! Its function is to compute and verify various primitives including Merkle roots, +//! witness commitments, and proof-of-work validation. These functions are designed +//! to be equivalent to the corresponding methods found in the //! [`bitcoin`](bitcoin::Block), providing custom implementations where necessary. use bitcoin::{ diff --git a/crates/reth/rpc/src/eth/block.rs b/crates/reth/rpc/src/eth/block.rs index 10eab2979..4945d0ab3 100644 --- a/crates/reth/rpc/src/eth/block.rs +++ b/crates/reth/rpc/src/eth/block.rs @@ -40,7 +40,7 @@ where return block .body .transactions() - .into_iter() + .iter() .zip(receipts.iter()) .enumerate() .map(|(idx, (tx, receipt))| { @@ -54,7 +54,7 @@ where timestamp, }; - EthReceiptBuilder::new(&tx, meta, receipt, &receipts) + EthReceiptBuilder::new(tx, meta, receipt, &receipts) .map(|builder| builder.build()) }) .collect::, Self::Error>>() diff --git a/crates/reth/rpc/src/eth/mod.rs b/crates/reth/rpc/src/eth/mod.rs index 2613ec835..7e8e2dd72 100644 --- a/crates/reth/rpc/src/eth/mod.rs +++ b/crates/reth/rpc/src/eth/mod.rs @@ -271,6 +271,7 @@ struct StrataEthApiInner { sequencer_client: Option, } +#[derive(Default)] pub struct StrataEthApiBuilder { /// Sequencer client, configured to forward submitted transactions to sequencer of given OP /// network. diff --git a/crates/rocksdb-store/src/macros.rs b/crates/rocksdb-store/src/macros.rs index 03a5f9632..b441e9591 100644 --- a/crates/rocksdb-store/src/macros.rs +++ b/crates/rocksdb-store/src/macros.rs @@ -67,11 +67,14 @@ macro_rules! define_table_with_default_codec { }; } -/// Macro similar to [`define_table_with_default_codec`], but to be used when -/// your key type should be [`SeekKeyEncoder`](rockbound::SeekKeyEncoder). Borsh serializes integers -/// as little-endian, but RocksDB uses lexicographic ordering which is only -/// compatible with big-endian, so we use [`bincode`] with the big-endian option -/// here. +/// Variation of [`define_table_with_default_codec`]. +/// +/// It shall be used when your key type should be +/// [`SeekKeyEncoder`](rockbound::SeekKeyEncoder). +/// +/// Borsh serializes integers as little-endian, but RocksDB uses lexicographic +/// ordering which is only compatible with big-endian, so we use [`bincode`] +/// with the big-endian option here. #[macro_export] macro_rules! define_table_with_seek_key_codec { ($(#[$docs:meta])+ ($table_name:ident) $key:ty => $value:ty) => { diff --git a/crates/state/src/l1/maturation_queue.rs b/crates/state/src/l1/maturation_queue.rs index 98d888498..91b03435b 100644 --- a/crates/state/src/l1/maturation_queue.rs +++ b/crates/state/src/l1/maturation_queue.rs @@ -3,9 +3,10 @@ use borsh::{BorshDeserialize, BorshSerialize}; use super::{DaTx, DepositUpdateTx, L1BlockId, L1HeaderPayload, L1HeaderRecord}; -/// Entry representing an L1 block that we've acknowledged seems to be on the -/// longest chain but might still reorg. We wait until the block is buried -/// enough before accepting the block and acting on the relevant txs in it. +/// Entry representing an L1 block that we've acknowledged. +/// +/// It seems to be on the longest chain but might still reorg. We wait until the block +/// is buried enough before accepting the block and acting on the relevant txs in it. /// /// Height is implicit by its position in the maturation queue. #[derive(Clone, Debug, Eq, PartialEq, Arbitrary, BorshSerialize, BorshDeserialize)] diff --git a/crates/state/src/operation.rs b/crates/state/src/operation.rs index ff05cd0cd..b037c8ebf 100644 --- a/crates/state/src/operation.rs +++ b/crates/state/src/operation.rs @@ -41,8 +41,9 @@ impl ClientUpdateOutput { } } -/// Describes possible writes to client state that we can make. We use this -/// instead of directly modifying the client state to reduce the volume of data +/// Describes possible writes to client state that we can make. +/// +/// We use this instead of directly modifying the client state to reduce the volume of data /// that we have to clone and save to disk with each sync event. #[derive( Clone, Debug, Eq, PartialEq, Arbitrary, BorshDeserialize, BorshSerialize, Deserialize, Serialize, diff --git a/crates/state/src/state_op.rs b/crates/state/src/state_op.rs index a5ec40f9a..521a5356f 100644 --- a/crates/state/src/state_op.rs +++ b/crates/state/src/state_op.rs @@ -1,5 +1,6 @@ -//! Low-level operations we can make to write to chain state. This currently -//! only can manipulate the manipulate the toplevel chain state, but we might +//! Low-level operations we can make to write to chain state. +//! +//! This currently only can manipulate the toplevel chain state, but we might //! decide to expand the chain state in the future such that we can't keep it //! entire in memory. diff --git a/crates/storage/src/exec.rs b/crates/storage/src/exec.rs index 46a851970..03dcec99d 100644 --- a/crates/storage/src/exec.rs +++ b/crates/storage/src/exec.rs @@ -3,62 +3,12 @@ //! This manages the indirection to spawn async requests onto a threadpool and execute blocking //! calls locally. -use std::sync::Arc; - pub use strata_db::{errors::DbError, DbResult}; pub use tracing::*; /// Handle for receiving a result from a database operation on another thread. pub type DbRecv = tokio::sync::oneshot::Receiver>; -/// Shim to opaquely execute the operation without being aware of the underlying impl. -#[allow(dead_code)] // FIXME: remove this -pub struct OpShim { - executor_fn: Arc DbResult + Sync + Send + 'static>, -} - -impl OpShim -where - T: Sync + Send + 'static, - R: Sync + Send + 'static, -{ - #[allow(dead_code)] // FIXME: remove this - pub fn wrap(op: F) -> Self - where - F: Fn(T) -> DbResult + Sync + Send + 'static, - { - Self { - executor_fn: Arc::new(op), - } - } - - /// Executes the operation on the provided thread pool and returns the result over. - #[allow(dead_code)] // FIXME: remove this - pub async fn exec_async(&self, pool: &threadpool::ThreadPool, arg: T) -> DbResult { - let (resp_tx, resp_rx) = tokio::sync::oneshot::channel(); - - let exec_fn = self.executor_fn.clone(); - - pool.execute(move || { - let res = exec_fn(arg); - if resp_tx.send(res).is_err() { - tracing::warn!("failed to send response"); - } - }); - - match resp_rx.await { - Ok(v) => v, - Err(e) => Err(DbError::Other(format!("{e}"))), - } - } - - /// Executes the operation directly. - #[allow(dead_code)] // FIXME: remove this - pub fn exec_blocking(&self, arg: T) -> DbResult { - (self.executor_fn)(arg) - } -} - macro_rules! inst_ops { { ($base:ident, $ctx:ident $(<$($tparam:ident: $tpconstr:tt),+>)?) { diff --git a/crates/tasks/src/pending_tasks.rs b/crates/tasks/src/pending_tasks.rs index 7afd558e7..2dcbf595b 100644 --- a/crates/tasks/src/pending_tasks.rs +++ b/crates/tasks/src/pending_tasks.rs @@ -24,7 +24,7 @@ impl PendingTasks { } } - #[allow(dead_code)] // FIXME: remove this + #[cfg(test)] pub fn current(&self) -> usize { self.counter.load(Ordering::SeqCst) } From 4071768dfb5c44cbdcc14933f974bcfccd3791f3 Mon Sep 17 00:00:00 2001 From: Evgeniy Zdanovich Date: Fri, 13 Dec 2024 16:23:35 +0100 Subject: [PATCH 3/4] Fix unit-tests: adjust witness_params.json according to new(er) alloy primitives. --- crates/proof-impl/evm-ee-stf/test_data/witness_params.json | 6 +++--- crates/reth/db/test_data/witness_params.json | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/crates/proof-impl/evm-ee-stf/test_data/witness_params.json b/crates/proof-impl/evm-ee-stf/test_data/witness_params.json index fd1d930e7..c539682ec 100644 --- a/crates/proof-impl/evm-ee-stf/test_data/witness_params.json +++ b/crates/proof-impl/evm-ee-stf/test_data/witness_params.json @@ -184,7 +184,7 @@ "signature": { "r": "0x33f5f25dc6d620f41ac2fb5e5ef1c61888912c9261644dc757a8ef8cb043144b", "s": "0x72059e24750f63a500907d0f5b7e436f5b678379d557d96e9aff9ee2b787f9e2", - "v": "0x1c" + "v": "0x0000000000000001" }, "transaction": { "Eip1559": { @@ -206,9 +206,9 @@ "params": { "block_idx": 2, "prev_blockhash": "0x4648c427c6c7ffa89ce722b936b16c7538f57ad0494e6473a114374b94f46a99", - "new_blockhash": "0x65ff74b3f27fd55bd5d70efdf0f521482a94f72cab2ebdad820cbe06665d5716", + "new_blockhash": "0xc8d686a007f62f618ce0204339fd7a9c4dd5abb4365a7ae0ce8478d6bf82c2dc", "new_state_root": "0xcf4cc4f5e65dda69ee3a27a16628fca82da737f878e8b48d86757b22ec7f361e", - "txn_root": "0xb1858cea0ff214647e944eca3a3aaae3c6336117cde810b4c86c81d5521d7e25", + "txn_root": "0x37739b0921c22213f67943f480a8860575c6eb567bd110436237fe9a0e0db57a", "withdrawal_intents": [ { "amt": 1000000000, diff --git a/crates/reth/db/test_data/witness_params.json b/crates/reth/db/test_data/witness_params.json index fd1d930e7..c539682ec 100644 --- a/crates/reth/db/test_data/witness_params.json +++ b/crates/reth/db/test_data/witness_params.json @@ -184,7 +184,7 @@ "signature": { "r": "0x33f5f25dc6d620f41ac2fb5e5ef1c61888912c9261644dc757a8ef8cb043144b", "s": "0x72059e24750f63a500907d0f5b7e436f5b678379d557d96e9aff9ee2b787f9e2", - "v": "0x1c" + "v": "0x0000000000000001" }, "transaction": { "Eip1559": { @@ -206,9 +206,9 @@ "params": { "block_idx": 2, "prev_blockhash": "0x4648c427c6c7ffa89ce722b936b16c7538f57ad0494e6473a114374b94f46a99", - "new_blockhash": "0x65ff74b3f27fd55bd5d70efdf0f521482a94f72cab2ebdad820cbe06665d5716", + "new_blockhash": "0xc8d686a007f62f618ce0204339fd7a9c4dd5abb4365a7ae0ce8478d6bf82c2dc", "new_state_root": "0xcf4cc4f5e65dda69ee3a27a16628fca82da737f878e8b48d86757b22ec7f361e", - "txn_root": "0xb1858cea0ff214647e944eca3a3aaae3c6336117cde810b4c86c81d5521d7e25", + "txn_root": "0x37739b0921c22213f67943f480a8860575c6eb567bd110436237fe9a0e0db57a", "withdrawal_intents": [ { "amt": 1000000000, From 9f3c0fcc6ae78d609b7ce24f336e085f1852689b Mon Sep 17 00:00:00 2001 From: Evgeniy Zdanovich Date: Fri, 13 Dec 2024 17:07:52 +0100 Subject: [PATCH 4/4] Adjust the payload_builder according to ethereum impl. --- Cargo.lock | 2 - crates/reth/node/Cargo.toml | 2 - crates/reth/node/src/evm.rs | 24 ++++++ crates/reth/node/src/node.rs | 13 ++- crates/reth/node/src/payload.rs | 2 +- crates/reth/node/src/payload_builder.rs | 101 +++++++++++++----------- 6 files changed, 89 insertions(+), 55 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 4a3ab50ff..384b94abf 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -13766,8 +13766,6 @@ dependencies = [ "reth-primitives", "reth-provider", "reth-transaction-pool", - "reth-trie", - "reth-trie-common", "reth-trie-db", "revm", "revm-primitives", diff --git a/crates/reth/node/Cargo.toml b/crates/reth/node/Cargo.toml index 5e3628fdc..84775c470 100644 --- a/crates/reth/node/Cargo.toml +++ b/crates/reth/node/Cargo.toml @@ -29,8 +29,6 @@ reth-payload-validator.workspace = true reth-primitives.workspace = true reth-provider.workspace = true reth-transaction-pool.workspace = true -reth-trie.workspace = true -reth-trie-common.workspace = true reth-trie-db.workspace = true revm.workspace = true revm-primitives.workspace = true diff --git a/crates/reth/node/src/evm.rs b/crates/reth/node/src/evm.rs index e71c376fb..aca7f72f1 100644 --- a/crates/reth/node/src/evm.rs +++ b/crates/reth/node/src/evm.rs @@ -4,9 +4,11 @@ use reth_chainspec::ChainSpec; use reth_evm::{ConfigureEvm, ConfigureEvmEnv, NextBlockEnvAttributes}; use reth_node_ethereum::EthEvmConfig; use reth_primitives::{Header, TransactionSigned}; +use revm::{inspector_handle_register, Database, Evm, EvmBuilder, GetInspector}; use revm_primitives::{ Address, AnalysisKind, BlockEnv, Bytes, CfgEnvWithHandlerCfg, Env, TxEnv, U256, }; +use strata_reth_evm::set_evm_handles; /// Custom EVM configuration #[derive(Debug, Clone)] @@ -66,6 +68,28 @@ impl ConfigureEvmEnv for StrataEvmConfig { impl ConfigureEvm for StrataEvmConfig { type DefaultExternalContext<'a> = (); + fn evm(&self, db: DB) -> Evm<'_, Self::DefaultExternalContext<'_>, DB> { + EvmBuilder::default() + .with_db(db) + // add additional precompiles + .append_handler_register(set_evm_handles) + .build() + } + + fn evm_with_inspector(&self, db: DB, inspector: I) -> Evm<'_, I, DB> + where + DB: Database, + I: GetInspector, + { + EvmBuilder::default() + .with_db(db) + .with_external_context(inspector) + // add additional precompiles + .append_handler_register(set_evm_handles) + .append_handler_register(inspector_handle_register) + .build() + } + #[doc = " Provides the default external context."] fn default_external_context<'a>(&self) -> Self::DefaultExternalContext<'a> { self.inner.default_external_context() diff --git a/crates/reth/node/src/node.rs b/crates/reth/node/src/node.rs index 1c3a29bc5..781949458 100644 --- a/crates/reth/node/src/node.rs +++ b/crates/reth/node/src/node.rs @@ -9,7 +9,7 @@ use reth_node_builder::{ }; use reth_node_ethereum::{ node::{EthereumConsensusBuilder, EthereumNetworkBuilder, EthereumPoolBuilder}, - BasicBlockExecutorProvider, EthExecutionStrategyFactory, EthExecutorProvider, + BasicBlockExecutorProvider, EthExecutionStrategyFactory, }; use reth_primitives::{BlockBody, PooledTransactionsElement}; use reth_provider::{ @@ -313,15 +313,20 @@ where Node: FullNodeTypes>, { type EVM = StrataEvmConfig; - type Executor = BasicBlockExecutorProvider; + type Executor = BasicBlockExecutorProvider>; async fn build_evm( self, ctx: &BuilderContext, ) -> eyre::Result<(Self::EVM, Self::Executor)> { + let evm_config = StrataEvmConfig::new(ctx.chain_spec()); + Ok(( - StrataEvmConfig::new(ctx.chain_spec()), - EthExecutorProvider::ethereum(ctx.chain_spec()), + evm_config.clone(), + BasicBlockExecutorProvider::new(EthExecutionStrategyFactory::new( + ctx.chain_spec(), + evm_config, + )), )) } } diff --git a/crates/reth/node/src/payload.rs b/crates/reth/node/src/payload.rs index e9592d084..afe8b5556 100644 --- a/crates/reth/node/src/payload.rs +++ b/crates/reth/node/src/payload.rs @@ -125,7 +125,7 @@ impl BuiltPayload for StrataBuiltPayload { } fn requests(&self) -> Option { - None + self.inner.requests() } } diff --git a/crates/reth/node/src/payload_builder.rs b/crates/reth/node/src/payload_builder.rs index e386d2632..7777e4076 100644 --- a/crates/reth/node/src/payload_builder.rs +++ b/crates/reth/node/src/payload_builder.rs @@ -14,7 +14,7 @@ use reth_basic_payload_builder::*; use reth_chain_state::ExecutedBlock; use reth_chainspec::{ChainSpec, ChainSpecProvider, EthereumHardforks}; use reth_errors::RethError; -use reth_evm::system_calls::SystemCaller; +use reth_evm::{system_calls::SystemCaller, ConfigureEvmEnv, NextBlockEnvAttributes}; use reth_evm_ethereum::{eip6110::parse_deposits_from_receipts, EthEvmConfig}; use reth_node_api::{ ConfigureEvm, FullNodeTypes, NodeTypesWithEngine, PayloadBuilderAttributes, TxTy, @@ -30,14 +30,13 @@ use reth_transaction_pool::{ error::InvalidPoolTransactionError, BestTransactions, BestTransactionsAttributes, PoolTransaction, TransactionPool, }; -use reth_trie::HashedPostState; -use reth_trie_common::KeccakKeyHasher; use revm::{ db::{states::bundle_state::BundleRetention, State}, DatabaseCommit, }; use revm_primitives::{ - calc_excess_blob_gas, EVMError, EnvWithHandlerCfg, InvalidTransaction, ResultAndState, U256, + calc_excess_blob_gas, BlockEnv, CfgEnvWithHandlerCfg, EVMError, EnvWithHandlerCfg, + InvalidTransaction, ResultAndState, TxEnv, U256, }; use strata_reth_evm::collect_withdrawal_intents; use tracing::{debug, trace, warn}; @@ -56,6 +55,24 @@ pub struct StrataPayloadBuilder { evm_config: StrataEvmConfig, } +impl StrataPayloadBuilder { + /// Returns the configured [`CfgEnvWithHandlerCfg`] and [`BlockEnv`] for the targeted payload + /// (that has the `parent` as its parent). + pub fn cfg_and_block_env( + &self, + attributes: &StrataPayloadBuilderAttributes, + parent: &Header, + ) -> Result<(CfgEnvWithHandlerCfg, BlockEnv), ::Error> { + let next_attributes = NextBlockEnvAttributes { + timestamp: attributes.timestamp(), + suggested_fee_recipient: attributes.suggested_fee_recipient(), + prev_randao: attributes.prev_randao(), + }; + self.evm_config + .next_cfg_and_block_env(parent, next_attributes) + } +} + impl PayloadBuilder for StrataPayloadBuilder where Client: StateProviderFactory + ChainSpecProvider, @@ -68,7 +85,11 @@ where &self, args: BuildArguments, ) -> Result, PayloadBuilderError> { - try_build_payload(self.evm_config.clone(), args) + let (cfg_env, block_env) = self + .cfg_and_block_env(&args.config.attributes, &args.config.parent_header) + .map_err(PayloadBuilderError::other)?; + + try_build_payload(self.evm_config.clone(), args, cfg_env, block_env) } fn build_empty_payload( @@ -189,6 +210,8 @@ where pub fn try_build_payload( evm_config: EvmConfig, args: BuildArguments, + initialized_cfg: CfgEnvWithHandlerCfg, + initialized_block_env: BlockEnv, ) -> Result, PayloadBuilderError> where EvmConfig: ConfigureEvm
, @@ -204,42 +227,28 @@ where best_payload, } = args; + let PayloadConfig { + parent_header, + attributes, + extra_data, + } = config; + // convert to eth payload let best_payload = best_payload.map(|p| p.inner); let chain_spec = client.chain_spec(); - let state_provider = client.state_by_block_hash(config.parent_header.hash())?; + let state_provider = client.state_by_block_hash(parent_header.hash())?; let state = StateProviderDatabase::new(state_provider); let mut db = State::builder() - .with_database_ref(cached_reads.as_db(state)) + .with_database(cached_reads.as_db_mut(state)) .with_bundle_update() .build(); - let PayloadConfig { - parent_header, - attributes, - extra_data, - } = config; - debug!(target: "payload_builder", id=%attributes.payload_id(), parent_hash = ?parent_header.hash(), parent_number = parent_header.number, "building new payload"); - let (initialized_cfg, initialized_block_env) = evm_config - .next_cfg_and_block_env( - &parent_header, - reth_evm::NextBlockEnvAttributes { - timestamp: attributes.timestamp(), - suggested_fee_recipient: attributes.suggested_fee_recipient(), - prev_randao: attributes.prev_randao(), - }, - ) - .map_err(PayloadBuilderError::other)?; - let mut cumulative_gas_used = 0; let mut sum_blob_gas_used = 0; - let block_gas_limit: u64 = initialized_block_env - .gas_limit - .try_into() - .unwrap_or(chain_spec.max_gas_limit); + let block_gas_limit: u64 = initialized_block_env.gas_limit.to::(); let base_fee = initialized_block_env.basefee.to::(); let mut executed_senders = Vec::new(); @@ -285,6 +294,13 @@ where ) .map_err(|err| PayloadBuilderError::Internal(err.into()))?; + let env = EnvWithHandlerCfg::new_with_cfg_env( + initialized_cfg.clone(), + initialized_block_env.clone(), + TxEnv::default(), + ); + let mut evm = evm_config.evm_with_env(&mut db, env); + let mut receipts = Vec::new(); // let mut withdrawal_intents = Vec::new(); while let Some(pool_tx) = best_txs.next() { @@ -329,14 +345,8 @@ where } } - let env = EnvWithHandlerCfg::new_with_cfg_env( - initialized_cfg.clone(), - initialized_block_env.clone(), - evm_config.tx_env(tx.as_signed(), tx.signer()), - ); - - // Configure the environment for the block. - let mut evm = evm_config.evm_with_env(&mut db, env); + // Configure the environment for the tx. + *evm.tx_mut() = evm_config.tx_env(tx.as_signed(), tx.signer()); let ResultAndState { result, state } = match evm.transact() { Ok(res) => res, @@ -368,10 +378,8 @@ where } }; debug!(?result, "EVM transaction executed"); - // drop evm so db is released. - drop(evm); // commit changes - db.commit(state); + evm.db_mut().commit(state); // add to the total blob gas used if the transaction successfully executed if let Some(blob_tx) = tx.transaction.as_eip4844() { @@ -410,6 +418,9 @@ where executed_txs.push(tx.into_signed()); } + // drop evm so db is released. + drop(evm); + // check if we have a better block if !is_better_payload(best_payload.as_ref(), total_fees) { // can skip building the block @@ -477,14 +488,14 @@ where // merge all transitions into bundle state, this would apply the withdrawal balance changes // and 4788 contract call - db.merge_transitions(BundleRetention::PlainState); + db.merge_transitions(BundleRetention::Reverts); let requests_hash = requests.as_ref().map(|requests| requests.requests_hash()); let execution_outcome = ExecutionOutcome::new( db.take_bundle(), vec![receipts].into(), block_number, - vec![Requests::default()], + vec![requests.clone().unwrap_or_default()], ); let receipts_root = execution_outcome .receipts_root_slow(block_number) @@ -494,12 +505,10 @@ where .expect("Number is in range"); // calculate the state root - let hashed_state = - HashedPostState::from_bundle_state::(&execution_outcome.state().state); + let hashed_state = db.database.db.hashed_post_state(execution_outcome.state()); let (state_root, trie_output) = { - let state_provider = db.database.0.inner.borrow_mut(); - state_provider - .db + db.database + .inner() .state_root_with_updates(hashed_state.clone()) .inspect_err(|err| { warn!(target: "payload_builder",