From 0daabb8ebf651d4ec6eaff1abb285b20a4581027 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 | 2703 +++++++++-------- Cargo.toml | 99 +- 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/btc.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/mpt.rs | 9 +- crates/proof-impl/evm-ee-stf/src/processor.rs | 28 +- 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 | 40 +- 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 | 510 +++- 52 files changed, 3198 insertions(+), 2039 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 ef5885baa..29f900abd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -147,9 +147,9 @@ dependencies = [ [[package]] name = "alloy-chains" -version = "0.1.51" +version = "0.1.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4e0f0136c085132939da6b753452ebed4efaa73fe523bb855b10c199c2ebfaf" +checksum = "4ab9d1367c6ffb90c93fb4a9a4989530aa85112438c6f73a734067255d348469" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -174,18 +174,20 @@ 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-eips 0.7.3", "alloy-primitives", "alloy-rlp", - "alloy-serde 0.4.2", + "alloy-serde 0.7.3", + "alloy-trie", "arbitrary", "auto_impl", "c-kzg", "derive_more", + "rand", "serde", "serde_with", ] @@ -200,13 +202,27 @@ dependencies = [ "alloy-primitives", "alloy-rlp", "alloy-serde 0.8.3", - "alloy-trie 0.7.8", + "alloy-trie", "auto_impl", "c-kzg", "derive_more", "serde", ] +[[package]] +name = "alloy-consensus-any" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa60357dda9a3d0f738f18844bd6d0f4a5924cc5cf00bfad2ff1369897966123" +dependencies = [ + "alloy-consensus 0.7.3", + "alloy-eips 0.7.3", + "alloy-primitives", + "alloy-rlp", + "alloy-serde 0.7.3", + "serde", +] + [[package]] name = "alloy-consensus-any" version = "0.8.3" @@ -244,9 +260,9 @@ dependencies = [ [[package]] name = "alloy-core" -version = "0.8.15" +version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c618bd382f0bc2ac26a7e4bfae01c9b015ca8f21b37ca40059ae35a7e62b3dc6" +checksum = "648275bb59110f88cc5fa9a176845e52a554ebfebac2d21220bcda8c9220f797" dependencies = [ "alloy-dyn-abi", "alloy-json-abi", @@ -257,9 +273,9 @@ dependencies = [ [[package]] name = "alloy-dyn-abi" -version = "0.8.15" +version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41056bde53ae10ffbbf11618efbe1e0290859e5eab0fe9ef82ebdb62f12a866f" +checksum = "bc9138f4f0912793642d453523c3116bd5d9e11de73b70177aa7cb3e94b98ad2" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -270,7 +286,7 @@ dependencies = [ "itoa", "serde", "serde_json", - "winnow 0.6.21", + "winnow 0.6.24", ] [[package]] @@ -294,11 +310,7 @@ checksum = "ea59dc42102bc9a1905dc57901edc6dd48b9f38115df86c7d252acba70d71d04" dependencies = [ "alloy-primitives", "alloy-rlp", - "arbitrary", - "k256", - "rand", "serde", - "serde_with", ] [[package]] @@ -309,8 +321,12 @@ checksum = "4c986539255fb839d1533c128e190e557e52ff652c9ef62939e233a81dd93f7e" dependencies = [ "alloy-primitives", "alloy-rlp", + "arbitrary", "derive_more", + "k256", + "rand", "serde", + "serde_with", ] [[package]] @@ -333,15 +349,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 0.1.1", + "alloy-eip7702 0.4.2", "alloy-primitives", "alloy-rlp", - "alloy-serde 0.4.2", + "alloy-serde 0.7.3", "arbitrary", "c-kzg", "derive_more", @@ -381,20 +397,21 @@ dependencies = [ [[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 0.4.2", + "alloy-serde 0.7.3", + "alloy-trie", "serde", ] [[package]] name = "alloy-json-abi" -version = "0.8.15" +version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c357da577dfb56998d01f574d81ad7a1958d248740a7981b205d69d65a7da404" +checksum = "24acd2f5ba97c7a320e67217274bc81fe3c3174b8e6144ec875d9d54e760e278" dependencies = [ "alloy-primitives", "alloy-sol-type-parser", @@ -418,15 +435,15 @@ dependencies = [ [[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", "alloy-sol-types", "serde", "serde_json", - "thiserror 1.0.69", + "thiserror 2.0.11", "tracing", ] @@ -440,7 +457,7 @@ dependencies = [ "alloy-sol-types", "serde", "serde_json", - "thiserror 2.0.9", + "thiserror 2.0.11", "tracing", ] @@ -467,23 +484,27 @@ dependencies = [ [[package]] name = "alloy-network" -version = "0.4.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85fa23a6a9d612b52e402c995f2d582c25165ec03ac6edf64c861a76bc5b87cd" +checksum = "209a1882a08e21aca4aac6e2a674dc6fcf614058ef8cb02947d63782b1899552" dependencies = [ - "alloy-consensus 0.4.2", - "alloy-eips 0.4.2", - "alloy-json-rpc 0.4.2", - "alloy-network-primitives 0.4.2", + "alloy-consensus 0.7.3", + "alloy-consensus-any 0.7.3", + "alloy-eips 0.7.3", + "alloy-json-rpc 0.7.3", + "alloy-network-primitives 0.7.3", "alloy-primitives", - "alloy-rpc-types-eth 0.4.2", - "alloy-serde 0.4.2", - "alloy-signer 0.4.2", + "alloy-rpc-types-any 0.7.3", + "alloy-rpc-types-eth 0.7.3", + "alloy-serde 0.7.3", + "alloy-signer 0.7.3", "alloy-sol-types", "async-trait", "auto_impl", "futures-utils-wasm", - "thiserror 1.0.69", + "serde", + "serde_json", + "thiserror 2.0.11", ] [[package]] @@ -493,12 +514,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "510cc00b318db0dfccfdd2d032411cfae64fc144aef9679409e014145d3dacc4" dependencies = [ "alloy-consensus 0.8.3", - "alloy-consensus-any", + "alloy-consensus-any 0.8.3", "alloy-eips 0.8.3", "alloy-json-rpc 0.8.3", "alloy-network-primitives 0.8.3", "alloy-primitives", - "alloy-rpc-types-any", + "alloy-rpc-types-any 0.8.3", "alloy-rpc-types-eth 0.8.3", "alloy-serde 0.8.3", "alloy-signer 0.8.3", @@ -508,7 +529,7 @@ dependencies = [ "futures-utils-wasm", "serde", "serde_json", - "thiserror 2.0.9", + "thiserror 2.0.11", ] [[package]] @@ -525,14 +546,14 @@ dependencies = [ [[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-consensus 0.7.3", + "alloy-eips 0.7.3", "alloy-primitives", - "alloy-serde 0.4.2", + "alloy-serde 0.7.3", "serde", ] @@ -551,9 +572,9 @@ dependencies = [ [[package]] name = "alloy-primitives" -version = "0.8.15" +version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6259a506ab13e1d658796c31e6e39d2e2ee89243bcc505ddc613b35732e0a430" +checksum = "ec878088ec6283ce1e90d280316aadd3d6ce3de06ff63d68953c855e7e447e92" dependencies = [ "alloy-rlp", "arbitrary", @@ -565,8 +586,7 @@ dependencies = [ "foldhash", "getrandom", "hashbrown 0.15.2", - "hex-literal", - "indexmap 2.7.0", + "indexmap 2.7.1", "itoa", "k256", "keccak-asm", @@ -618,23 +638,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", - "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", + "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", @@ -642,14 +662,17 @@ dependencies = [ "futures", "futures-utils-wasm", "lru", + "parking_lot 0.12.3", "pin-project", "reqwest 0.12.12", + "schnellru", "serde", "serde_json", - "thiserror 1.0.69", + "thiserror 2.0.11", "tokio", "tracing", "url", + "wasmtimer", ] [[package]] @@ -673,13 +696,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-json-rpc 0.7.3", "alloy-primitives", - "alloy-transport 0.4.2", + "alloy-transport 0.7.3", "bimap", "futures", "serde", @@ -692,9 +715,9 @@ dependencies = [ [[package]] name = "alloy-rlp" -version = "0.3.10" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f542548a609dca89fcd72b3b9f355928cf844d4363c5eed9c5273a3dd225e097" +checksum = "3d6c1d995bff8d011f7cd6c81820d51825e6e06d6db73914c1630ecf544d83d6" dependencies = [ "alloy-rlp-derive", "arrayvec", @@ -703,13 +726,13 @@ dependencies = [ [[package]] name = "alloy-rlp-derive" -version = "0.3.10" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a833d97bf8a5f0f878daf2c8451fff7de7f9de38baa5a45d936ec718d81255a" +checksum = "a40e1ef334153322fd878d07e86af7a529bcb86b2439525920a88eba87bcf943" dependencies = [ "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.96", ] [[package]] @@ -738,16 +761,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-json-rpc 0.7.3", "alloy-primitives", - "alloy-pubsub 0.4.2", - "alloy-transport 0.4.2", - "alloy-transport-http 0.4.2", - "alloy-transport-ws 0.4.2", + "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.12", @@ -758,6 +781,7 @@ dependencies = [ "tower 0.5.2", "tracing", "url", + "wasmtimer", ] [[package]] @@ -773,24 +797,24 @@ 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", "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-genesis 0.7.3", "alloy-primitives", "serde", "serde_json", @@ -798,45 +822,58 @@ dependencies = [ [[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", - "alloy-serde 0.4.2", + "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 0.7.3", + "alloy-rpc-types-eth 0.7.3", + "alloy-serde 0.7.3", +] + [[package]] name = "alloy-rpc-types-any" version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed98e1af55a7d856bfa385f30f63d8d56be2513593655c904a8f4a7ec963aa3e" dependencies = [ - "alloy-consensus-any", + "alloy-consensus-any 0.8.3", "alloy-rpc-types-eth 0.8.3", "alloy-serde 0.8.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-eips 0.7.3", "alloy-primitives", "alloy-rpc-types-engine", + "alloy-serde 0.7.3", "serde", "serde_with", - "thiserror 1.0.69", + "thiserror 2.0.11", ] [[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", "serde", @@ -844,15 +881,15 @@ dependencies = [ [[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-consensus 0.7.3", + "alloy-eips 0.7.3", "alloy-primitives", "alloy-rlp", - "alloy-serde 0.4.2", + "alloy-serde 0.7.3", "derive_more", "jsonrpsee-types", "jsonwebtoken", @@ -884,16 +921,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-consensus 0.7.3", + "alloy-consensus-any 0.7.3", + "alloy-eips 0.7.3", + "alloy-network-primitives 0.7.3", "alloy-primitives", "alloy-rlp", - "alloy-serde 0.4.2", + "alloy-serde 0.7.3", "alloy-sol-types", "derive_more", "itertools 0.13.0", @@ -909,7 +947,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8737d7a6e37ca7bba9c23e9495c6534caec6760eb24abc9d5ffbaaba147818e1" dependencies = [ "alloy-consensus 0.8.3", - "alloy-consensus-any", + "alloy-consensus-any 0.8.3", "alloy-eips 0.8.3", "alloy-network-primitives 0.8.3", "alloy-primitives", @@ -924,40 +962,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-eips 0.7.3", "alloy-primitives", - "alloy-serde 0.4.2", + "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", - "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", "serde_json", - "thiserror 1.0.69", + "thiserror 2.0.11", ] [[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", - "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", ] @@ -974,9 +1013,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", "arbitrary", @@ -1011,16 +1050,16 @@ dependencies = [ [[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", "async-trait", "auto_impl", "elliptic-curve", "k256", - "thiserror 1.0.69", + "thiserror 2.0.11", ] [[package]] @@ -1034,7 +1073,7 @@ dependencies = [ "auto_impl", "elliptic-curve", "k256", - "thiserror 2.0.9", + "thiserror 2.0.11", ] [[package]] @@ -1055,18 +1094,18 @@ dependencies = [ [[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-consensus 0.7.3", + "alloy-network 0.7.3", "alloy-primitives", - "alloy-signer 0.4.2", + "alloy-signer 0.7.3", "async-trait", "k256", "rand", - "thiserror 1.0.69", + "thiserror 2.0.11", ] [[package]] @@ -1082,71 +1121,71 @@ dependencies = [ "async-trait", "k256", "rand", - "thiserror 2.0.9", + "thiserror 2.0.11", ] [[package]] name = "alloy-sol-macro" -version = "0.8.15" +version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9d64f851d95619233f74b310f12bcf16e0cbc27ee3762b6115c14a84809280a" +checksum = "8d039d267aa5cbb7732fa6ce1fd9b5e9e29368f580f80ba9d7a8450c794de4b2" dependencies = [ "alloy-sol-macro-expander", "alloy-sol-macro-input", "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.96", ] [[package]] name = "alloy-sol-macro-expander" -version = "0.8.15" +version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bf7ed1574b699f48bf17caab4e6e54c6d12bc3c006ab33d58b1e227c1c3559f" +checksum = "620ae5eee30ee7216a38027dec34e0585c55099f827f92f50d11e3d2d3a4a954" dependencies = [ "alloy-sol-macro-input", "const-hex", "heck 0.5.0", - "indexmap 2.7.0", + "indexmap 2.7.1", "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.96", "syn-solidity", "tiny-keccak", ] [[package]] name = "alloy-sol-macro-input" -version = "0.8.15" +version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c02997ccef5f34f9c099277d4145f183b422938ed5322dc57a089fe9b9ad9ee" +checksum = "ad9f7d057e00f8c5994e4ff4492b76532c51ead39353aa2ed63f8c50c0f4d52e" dependencies = [ "const-hex", "dunce", "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.96", "syn-solidity", ] [[package]] name = "alloy-sol-type-parser" -version = "0.8.15" +version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce13ff37285b0870d0a0746992a4ae48efaf34b766ae4c2640fa15e5305f8e73" +checksum = "74e60b084fe1aef8acecda2743ff2d93c18ff3eb67a2d3b12f62582a1e66ef5e" dependencies = [ "serde", - "winnow 0.6.21", + "winnow 0.6.24", ] [[package]] name = "alloy-sol-types" -version = "0.8.15" +version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1174cafd6c6d810711b4e00383037bdb458efc4fe3dbafafa16567e0320c54d8" +checksum = "c1382302752cd751efd275f4d6ef65877ddf61e0e6f5ac84ef4302b79a33a31a" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -1176,21 +1215,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 1.0.69", + "thiserror 2.0.11", "tokio", "tower 0.5.2", "tracing", "url", + "wasmtimer", ] [[package]] @@ -1210,12 +1250,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.12", "serde_json", "tower 0.5.2", @@ -1233,7 +1273,7 @@ dependencies = [ "alloy-transport 0.3.6", "futures", "http 1.2.0", - "rustls 0.23.20", + "rustls 0.23.21", "serde_json", "tokio", "tokio-tungstenite 0.23.1", @@ -1243,15 +1283,15 @@ 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.2.0", - "rustls 0.23.20", + "rustls 0.23.21", "serde_json", "tokio", "tokio-tungstenite 0.24.0", @@ -1259,21 +1299,6 @@ dependencies = [ "ws_stream_wasm", ] -[[package]] -name = "alloy-trie" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9703ce68b97f8faae6f7739d1e003fc97621b856953cbcdbb2b515743f23288" -dependencies = [ - "alloy-primitives", - "alloy-rlp", - "derive_more", - "nybbles 0.2.1", - "serde", - "smallvec", - "tracing", -] - [[package]] name = "alloy-trie" version = "0.7.8" @@ -1355,11 +1380,12 @@ dependencies = [ [[package]] name = "anstyle-wincon" -version = "3.0.6" +version = "3.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125" +checksum = "ca3534e77181a9cc07539ad51f2141fe32f6c3ffd4df76db8ad92346b003ae4e" dependencies = [ "anstyle", + "once_cell", "windows-sys 0.59.0", ] @@ -1371,16 +1397,16 @@ checksum = "34ac096ce696dc2fcabef30516bb13c0a68a11d30131d3df6f04711467681b04" [[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.93", + "syn 2.0.96", ] [[package]] @@ -1412,7 +1438,7 @@ dependencies = [ "argh_shared", "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.96", ] [[package]] @@ -1707,6 +1733,17 @@ dependencies = [ "zstd-safe 7.2.1", ] +[[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.96", +] + [[package]] name = "async-stream" version = "0.3.6" @@ -1726,18 +1763,18 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.96", ] [[package]] name = "async-trait" -version = "0.1.83" +version = "0.1.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" +checksum = "3f934833b4b7233644e5848f235df3f57ed8c80f1528a26c3dfa13d2147fa056" dependencies = [ "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.96", ] [[package]] @@ -1769,13 +1806,13 @@ dependencies = [ [[package]] name = "auto_impl" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" +checksum = "e12882f59de5360c748c4cbf569a042d5fb0eb515f7bea9c1f470b47f6ffbd73" dependencies = [ "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.96", ] [[package]] @@ -2013,7 +2050,7 @@ version = "0.69.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "271383c67ccabffb7381723dea0672a673f292304fcb45c01cc648c7a8d58088" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "cexpr", "clang-sys", "itertools 0.12.1", @@ -2024,7 +2061,7 @@ dependencies = [ "regex", "rustc-hash 1.1.0", "shlex", - "syn 2.0.93", + "syn 2.0.96", ] [[package]] @@ -2033,7 +2070,7 @@ version = "0.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f49d8fed880d473ea71efb9bf597651e77201bdd4893efe54c9e5d65ae04ce6f" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "cexpr", "clang-sys", "itertools 0.13.0", @@ -2044,7 +2081,7 @@ dependencies = [ "regex", "rustc-hash 1.1.0", "shlex", - "syn 2.0.93", + "syn 2.0.96", ] [[package]] @@ -2191,9 +2228,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.6.0" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36" dependencies = [ "serde", ] @@ -2308,10 +2345,10 @@ version = "0.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3a69ee3a749ea36d4e56d92941e7b25076b493d4917c3d155b6cf369e23547d9" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "boa_interner", "boa_macros", - "indexmap 2.7.0", + "indexmap 2.7.1", "num-bigint 0.4.6", "rustc-hash 2.1.0", ] @@ -2323,7 +2360,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06e4559b35b80ceb2e6328481c0eca9a24506663ea33ee1e279be6b5b618b25c" dependencies = [ "arrayvec", - "bitflags 2.6.0", + "bitflags 2.8.0", "boa_ast", "boa_gc", "boa_interner", @@ -2337,7 +2374,7 @@ dependencies = [ "fast-float", "hashbrown 0.14.5", "icu_normalizer", - "indexmap 2.7.0", + "indexmap 2.7.1", "intrusive-collections", "itertools 0.13.0", "num-bigint 0.4.6", @@ -2383,7 +2420,7 @@ dependencies = [ "boa_gc", "boa_macros", "hashbrown 0.14.5", - "indexmap 2.7.0", + "indexmap 2.7.1", "once_cell", "phf", "rustc-hash 2.1.0", @@ -2398,7 +2435,7 @@ checksum = "240f4126219a83519bad05c9a40bfc0303921eeb571fc2d7e44c17ffac99d3f1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.96", "synstructure", ] @@ -2408,7 +2445,7 @@ version = "0.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62b59dc05bf1dc019b11478a92986f590cff43fced4d20e866eefb913493e91c" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "boa_ast", "boa_interner", "boa_macros", @@ -2442,9 +2479,9 @@ dependencies = [ [[package]] name = "bonsai-sdk" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce58205497760ded0e4c743bc7a7aee28da5ca29b4adb7a635bf3bee2d118ebc" +checksum = "1f7ecaa1f078d094627e8413f6d5623c3605b40327194f8e6857b6af7da24587" dependencies = [ "duplicate", "maybe-async", @@ -2455,9 +2492,9 @@ dependencies = [ [[package]] name = "borsh" -version = "1.5.3" +version = "1.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2506947f73ad44e344215ccd6403ac2ae18cd8e046e581a441bf8d199f257f03" +checksum = "5430e3be710b68d984d1391c854eb431a9d548640711faa54eecb1df93db91cc" dependencies = [ "borsh-derive", "cfg_aliases", @@ -2465,15 +2502,15 @@ dependencies = [ [[package]] name = "borsh-derive" -version = "1.5.3" +version = "1.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2593a3b8b938bd68373196c9832f516be11fa487ef4ae745eb282e6a56a7244" +checksum = "f8b668d39970baad5356d7c83a86fee3a539e6f93bf6764c97368243e17a0487" dependencies = [ "once_cell", "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.96", ] [[package]] @@ -2498,9 +2535,9 @@ dependencies = [ [[package]] name = "brotli-decompressor" -version = "4.0.1" +version = "4.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a45bd2e4095a8b518033b128020dd4a55aab1c0a381ba4404a472630f4bc362" +checksum = "74fa05ad7d803d413eb8380983b092cbbaf9a85f151b871360e7b00cd7060b37" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -2515,6 +2552,17 @@ dependencies = [ "tinyvec", ] +[[package]] +name = "bstr" +version = "1.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "531a9155a481e2ee699d4f98f43c0ca4ff8ee1bfd55c31e9e98fb29d2b176fe0" +dependencies = [ + "memchr", + "regex-automata 0.4.9", + "serde", +] + [[package]] name = "bumpalo" version = "3.16.0" @@ -2544,7 +2592,7 @@ checksum = "3fa76293b4f7bb636ab88fd78228235b5248b4d05cc589aed610f954af5d7c7a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.96", ] [[package]] @@ -2624,7 +2672,7 @@ checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" dependencies = [ "camino", "cargo-platform", - "semver 1.0.24", + "semver 1.0.25", "serde", "serde_json", "thiserror 1.0.69", @@ -2638,10 +2686,10 @@ checksum = "8769706aad5d996120af43197bf46ef6ad0fda35216b4505f926a365a232d924" dependencies = [ "camino", "cargo-platform", - "semver 1.0.24", + "semver 1.0.25", "serde", "serde_json", - "thiserror 2.0.9", + "thiserror 2.0.11", ] [[package]] @@ -2667,22 +2715,22 @@ checksum = "3fce8dd7fcfcbf3a0a87d8f515194b49d6135acab73e18bd380d1d93bb1a15eb" dependencies = [ "clap", "heck 0.4.1", - "indexmap 2.7.0", + "indexmap 2.7.1", "log", "proc-macro2", "quote", "serde", "serde_json", - "syn 2.0.93", + "syn 2.0.96", "tempfile", "toml 0.8.19", ] [[package]] name = "cc" -version = "1.2.6" +version = "1.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d6dbb628b8f8555f86d0323c2eb39e3ec81901f4b83e091db8a6a76d316a333" +checksum = "13208fcbb66eaeffe09b99fffbe1af420f00a7b35aa99ad683dfc1aa76145229" dependencies = [ "jobserver", "libc", @@ -2754,9 +2802,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.23" +version = "4.5.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3135e7ec2ef7b10c6ed8950f0f792ed96ee093fa088608f1c76e569722700c84" +checksum = "769b0145982b4b48713e01ec42d61614425f27b7058bda7180a3a41f30104796" dependencies = [ "clap_builder", "clap_derive", @@ -2764,9 +2812,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.23" +version = "4.5.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30582fc632330df2bd26877bde0c1f4470d57c582bbc070376afcd04d8cb4838" +checksum = "1b26884eb4b57140e4d2d93652abfa49498b938b3c9179f9fc487b0acc3edad7" dependencies = [ "anstream", "anstyle", @@ -2776,14 +2824,14 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.18" +version = "4.5.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" +checksum = "54b755194d6389280185988721fffba69495eed5ee9feeee9a599b53db80318c" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.96", ] [[package]] @@ -3063,6 +3111,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.14" @@ -3103,7 +3157,7 @@ version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "829d955a0bb380ef178a640b91779e3987da38c9aea133b20614cfed8cdea9c6" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "crossterm_winapi", "mio 1.0.3", "parking_lot 0.12.3", @@ -3124,9 +3178,9 @@ dependencies = [ [[package]] name = "crunchy" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" +checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929" [[package]] name = "crypto-bigint" @@ -3204,7 +3258,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.96", ] [[package]] @@ -3228,7 +3282,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.93", + "syn 2.0.96", ] [[package]] @@ -3239,7 +3293,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.93", + "syn 2.0.96", ] [[package]] @@ -3349,15 +3403,15 @@ dependencies = [ [[package]] name = "data-encoding" -version = "2.6.0" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" +checksum = "0e60eed09d8c01d3cee5b7d30acb059b76614c918fa0f992e0dd6eeb10daad6f" [[package]] name = "data-encoding-macro" -version = "0.1.15" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1559b6cba622276d6d63706db152618eeb15b89b3e4041446b05876e352e639" +checksum = "5b16d9d0d88a5273d830dac8b78ceb217ffc9b1d5404e5597a3542515329405b" dependencies = [ "data-encoding", "data-encoding-macro-internal", @@ -3365,12 +3419,12 @@ dependencies = [ [[package]] name = "data-encoding-macro-internal" -version = "0.1.13" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "332d754c0af53bc87c108fed664d121ecf59207ec4196041f04d6ab9002ad33f" +checksum = "1145d32e826a7748b69ee8fc62d3e6355ff7f1051df53141e7048162fc90481b" dependencies = [ "data-encoding", - "syn 1.0.109", + "syn 2.0.96", ] [[package]] @@ -3407,11 +3461,12 @@ dependencies = [ [[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", ] @@ -3455,7 +3510,7 @@ checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" dependencies = [ "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.96", ] [[package]] @@ -3476,7 +3531,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.96", ] [[package]] @@ -3486,7 +3541,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" dependencies = [ "derive_builder_core", - "syn 2.0.93", + "syn 2.0.96", ] [[package]] @@ -3507,7 +3562,7 @@ dependencies = [ "convert_case", "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.96", "unicode-xid", ] @@ -3610,9 +3665,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", @@ -3623,7 +3678,7 @@ dependencies = [ "enr", "fnv", "futures", - "hashlink 0.8.4", + "hashlink", "hex", "hkdf", "lazy_static", @@ -3631,13 +3686,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", ] @@ -3649,7 +3704,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.96", ] [[package]] @@ -3827,7 +3882,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.96", ] [[package]] @@ -3848,7 +3903,7 @@ checksum = "f282cfdfe92516eb26c2af8589c274c7c17681f5ecc03c18255fe741c6aa64eb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.96", ] [[package]] @@ -3859,7 +3914,7 @@ checksum = "2f9ed6b3789237c8a0c1c505af1c7eb2c560df6186f01b098c3a1064ea532f38" dependencies = [ "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.96", ] [[package]] @@ -4092,7 +4147,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.96", ] [[package]] @@ -4216,7 +4271,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.96", ] [[package]] @@ -4291,12 +4346,26 @@ dependencies = [ "serde_json", ] +[[package]] +name = "generator" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc6bd114ceda131d3b1d665eba35788690ad37f5916457286b32ab6fd3c438dd" +dependencies = [ + "cfg-if", + "libc", + "log", + "rustversion", + "windows 0.58.0", +] + [[package]] name = "generic-array" version = "0.14.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ + "serde", "typenum", "version_check", "zeroize", @@ -4347,7 +4416,7 @@ version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b903b73e45dc0c6c596f2d37eccece7c1c8bb6e4407b001096387c63d0d93724" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "libc", "libgit2-sys", "log", @@ -4408,9 +4477,9 @@ dependencies = [ [[package]] name = "goblin" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53ab3f32d1d77146981dea5d6b1e8fe31eedcb7013e5e00d6ccd1259a4b4d923" +checksum = "daa0a64d21a7eb230583b4c5f4e23b7e4e57974f96620f42a7e75e08ae66d745" dependencies = [ "log", "plain", @@ -4452,7 +4521,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.7.0", + "indexmap 2.7.1", "slab", "tokio", "tokio-util", @@ -4471,7 +4540,7 @@ dependencies = [ "futures-core", "futures-sink", "http 1.2.0", - "indexmap 2.7.0", + "indexmap 2.7.1", "slab", "tokio", "tokio-util", @@ -4539,15 +4608,6 @@ dependencies = [ "serde", ] -[[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" @@ -4621,6 +4681,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.11", + "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.11", + "tokio", + "tracing", +] + [[package]] name = "hkdf" version = "0.12.4" @@ -4793,7 +4901,7 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", - "socket2 0.5.8", + "socket2", "tokio", "tower-service", "tracing", @@ -4846,7 +4954,7 @@ dependencies = [ "hyper 1.5.2", "hyper-util", "log", - "rustls 0.23.20", + "rustls 0.23.21", "rustls-pki-types", "tokio", "tokio-rustls 0.26.1", @@ -4909,7 +5017,7 @@ dependencies = [ "http-body 1.0.1", "hyper 1.5.2", "pin-project-lite", - "socket2 0.5.8", + "socket2", "tokio", "tower-service", "tracing", @@ -5072,7 +5180,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.96", ] [[package]] @@ -5081,16 +5189,6 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" -[[package]] -name = "idna" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" -dependencies = [ - "unicode-bidi", - "unicode-normalization", -] - [[package]] name = "idna" version = "1.0.3" @@ -5139,7 +5237,7 @@ checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.96", ] [[package]] @@ -5180,9 +5278,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.7.0" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f" +checksum = "8c9c992b02b5b4c94ea26e32fe5bccb7aa7d9f390ab5c1221ff895bc7ea8b652" dependencies = [ "arbitrary", "equivalent", @@ -5253,16 +5351,15 @@ dependencies = [ [[package]] name = "instability" -version = "0.3.5" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "898e106451f7335950c9cc64f8ec67b5f65698679ac67ed00619aeef14e1cf75" +checksum = "0bf9fed6d91cfb734e7476a06bde8300a1b94e217e1b523b6f0cd1a01998c71d" dependencies = [ "darling", "indoc", - "pretty_assertions", "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.96", ] [[package]] @@ -5323,7 +5420,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b58db92f96b720de98181bbbe63c831e87005ab460c1bf306eb2622b4707997f" dependencies = [ - "socket2 0.5.8", + "socket2", "widestring", "windows-sys 0.48.0", "winreg", @@ -5331,9 +5428,9 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.10.1" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" [[package]] name = "iri-string" @@ -5437,9 +5534,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.76" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6717b6b5b077764fb5966237269cb3c64edddde4b14ce42647430a78ced9e7b7" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" dependencies = [ "once_cell", "wasm-bindgen", @@ -5488,7 +5585,7 @@ dependencies = [ "http 1.2.0", "jsonrpsee-core", "pin-project", - "rustls 0.23.20", + "rustls 0.23.21", "rustls-pki-types", "rustls-platform-verifier", "soketto", @@ -5541,7 +5638,7 @@ dependencies = [ "hyper-util", "jsonrpsee-core", "jsonrpsee-types", - "rustls 0.23.20", + "rustls 0.23.21", "rustls-platform-verifier", "serde", "serde_json", @@ -5562,7 +5659,7 @@ dependencies = [ "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.96", ] [[package]] @@ -5699,7 +5796,7 @@ dependencies = [ "byteorder", "log", "security-framework 2.11.1", - "security-framework 3.1.0", + "security-framework 3.2.0", "windows-sys 0.59.0", ] @@ -5758,7 +5855,7 @@ dependencies = [ "proc-macro2", "quote", "regex", - "syn 2.0.93", + "syn 2.0.96", ] [[package]] @@ -5846,7 +5943,7 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "libc", "redox_syscall 0.5.8", ] @@ -5927,9 +6024,9 @@ dependencies = [ [[package]] name = "libz-sys" -version = "1.1.20" +version = "1.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2d16453e800a8cf6dd2fc3eb4bc99b786a9b90c663b8559a5b1a041bf89e472" +checksum = "df9b68e50e6e0b26f672573834882eb57759f6db9b3be2ea3c35c91188bb4eaa" dependencies = [ "cc", "libc", @@ -5950,13 +6047,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bae85b5be22d9843c80e5fc80e9b64c8a3b1f98f867c709956eca3efff4e92e2" dependencies = [ "linked-hash-map", + "serde", ] [[package]] name = "linux-raw-sys" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" [[package]] name = "litemap" @@ -5972,30 +6070,35 @@ checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" dependencies = [ "autocfg", "scopeguard", + "serde", ] [[package]] name = "log" -version = "0.4.22" +version = "0.4.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" +checksum = "04cbf5b083de1c7e0222a7a51dbfdba1cbe1c6ab0b15e29fff3f6c077fd9cd9f" [[package]] -name = "lru" -version = "0.12.5" +name = "loom" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" +checksum = "419e0dc8046cb947daa77eb95ae174acfbddb7673b4151f56d1eed8e93fbfaca" dependencies = [ - "hashbrown 0.15.2", + "cfg-if", + "generator", + "scoped-tls", + "tracing", + "tracing-subscriber 0.3.19", ] [[package]] -name = "lru-cache" -version = "0.1.2" +name = "lru" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c" +checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" dependencies = [ - "linked-hash-map", + "hashbrown 0.15.2", ] [[package]] @@ -6061,7 +6164,7 @@ checksum = "5cf92c10c7e361d6b99666ec1c6f9805b0bea2c3bd8c78dc6fe98ac5bd78db11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.96", ] [[package]] @@ -6100,7 +6203,7 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ecfd3296f8c56b7c1f6fbac3c71cefa9d78ce009850c45000015f206dc7fa21" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "block", "core-graphics-types", "foreign-types 0.5.0", @@ -6109,16 +6212,6 @@ dependencies = [ "paste", ] -[[package]] -name = "metrics" -version = "0.23.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "884adb57038347dfbaf2d5065887b6cf4312330dc8e94bc30a1a839bd79d3261" -dependencies = [ - "ahash", - "portable-atomic", -] - [[package]] name = "metrics" version = "0.24.1" @@ -6138,19 +6231,19 @@ dependencies = [ "proc-macro2", "quote", "regex", - "syn 2.0.93", + "syn 2.0.96", ] [[package]] name = "metrics-exporter-prometheus" -version = "0.15.3" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4f0c8427b39666bf970460908b213ec09b3b350f20c0c2eabcbba51704a08e6" +checksum = "12779523996a67c13c84906a876ac6fe4d07a6e1adb54978378e13f199251a62" dependencies = [ "base64 0.22.1", - "indexmap 2.7.0", - "metrics 0.23.0", - "metrics-util", + "indexmap 2.7.1", + "metrics", + "metrics-util 0.19.0", "quanta", "thiserror 1.0.69", ] @@ -6164,7 +6257,7 @@ dependencies = [ "libc", "libproc", "mach2", - "metrics 0.24.1", + "metrics", "once_cell", "procfs 0.17.0", "rlimit", @@ -6173,16 +6266,26 @@ dependencies = [ [[package]] name = "metrics-util" -version = "0.17.0" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15b482df36c13dd1869d73d14d28cd4855fbd6cfc32294bee109908a9f4a4ed7" +dependencies = [ + "metrics", +] + +[[package]] +name = "metrics-util" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4259040465c955f9f2f1a4a8a16dc46726169bca0f88e8fb2dbeced487c3e828" +checksum = "dbd4884b1dd24f7d6628274a2f5ae22465c337c5ba065ec9b6edccddf8acc673" dependencies = [ "crossbeam-epoch", "crossbeam-utils", - "hashbrown 0.14.5", - "metrics 0.23.0", - "num_cpus", + "hashbrown 0.15.2", + "metrics", "quanta", + "rand", + "rand_xoshiro", "sketches-ddsketch", ] @@ -6221,9 +6324,9 @@ dependencies = [ [[package]] name = "miniz_oxide" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ffbe83022cedc1d264172192511ae958937694cd57ce297164951b8b3568394" +checksum = "b8402cab7aefae129c6977bb0ff1b8fd9a04eb5b51efc50a70bea51cda0c7924" dependencies = [ "adler2", ] @@ -6321,6 +6424,25 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "moka" +version = "0.12.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9321642ca94a4282428e6ea4af8cc2ca4eac48ac7a6a4ea8f33f76d0ce70926" +dependencies = [ + "crossbeam-channel", + "crossbeam-epoch", + "crossbeam-utils", + "loom", + "parking_lot 0.12.3", + "portable-atomic", + "rustc_version 0.4.1", + "smallvec", + "tagptr", + "thiserror 1.0.69", + "uuid", +] + [[package]] name = "more-asserts" version = "0.3.1" @@ -6407,7 +6529,7 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "cfg-if", "cfg_aliases", "libc", @@ -6441,7 +6563,7 @@ version = "6.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6205bd8bb1e454ad2e27422015fb5e4f2bcc7e08fa8f27058670d208324a4d2d" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "filetime", "fsevent-sys", "inotify", @@ -6648,7 +6770,7 @@ dependencies = [ "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.96", ] [[package]] @@ -6685,7 +6807,9 @@ version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8983bb634df7248924ee0c4c3a749609b5abcb082c28fffe3254b3eb3602b307" dependencies = [ + "alloy-rlp", "const-hex", + "proptest", "serde", "smallvec", ] @@ -6713,87 +6837,47 @@ 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-consensus 0.7.3", + "alloy-eips 0.7.3", "alloy-primitives", "alloy-rlp", - "alloy-serde 0.4.2", + "alloy-serde 0.7.3", "arbitrary", "derive_more", "serde", "serde_with", - "spin", -] - -[[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", - "alloy-sol-types", - "serde", - "serde_repr", -] - -[[package]] -name = "op-alloy-protocol" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "310873e4fbfc41986716c4fb6000a8b49d025d932d2c261af58271c434b05288" -dependencies = [ - "alloy-consensus 0.4.2", - "alloy-eips 0.4.2", - "alloy-primitives", - "alloy-rlp", - "alloy-serde 0.4.2", - "derive_more", - "op-alloy-consensus", - "op-alloy-genesis", - "serde", + "thiserror 2.0.11", ] [[package]] name = "op-alloy-rpc-types" -version = "0.4.0" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "323c65880e2561aa87f74f8af260fd15b9cc930c448c88a60ae95af86c88c634" +checksum = "73741855ffaa2041b33cb616d7db7180c1149b648c68c23bee9e15501073fb32" dependencies = [ - "alloy-consensus 0.4.2", - "alloy-eips 0.4.2", - "alloy-network-primitives 0.4.2", + "alloy-consensus 0.7.3", + "alloy-eips 0.7.3", + "alloy-network-primitives 0.7.3", "alloy-primitives", - "alloy-rpc-types-eth 0.4.2", - "alloy-serde 0.4.2", + "alloy-rpc-types-eth 0.7.3", + "alloy-serde 0.7.3", + "derive_more", "op-alloy-consensus", "serde", "serde_json", ] -[[package]] -name = "op-alloy-rpc-types-engine" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349e7b420f45d1a00216ec4c65fcf3f0057a841bc39732c405c85ae782b94121" -dependencies = [ - "alloy-primitives", - "alloy-rpc-types-engine", - "alloy-serde 0.4.2", - "derive_more", - "op-alloy-protocol", - "serde", -] - [[package]] name = "opaque-debug" version = "0.3.1" @@ -6806,7 +6890,7 @@ version = "0.10.68" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6174bc48f102d208783c2c84bf931bb75927a617866870de8a4ea85597f871f5" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "cfg-if", "foreign-types 0.3.2", "libc", @@ -6823,7 +6907,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.96", ] [[package]] @@ -7383,7 +7467,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b7cafe60d6cf8e62e1b9b2ea516a089c008945bb5a275416789e7db0bc199dc" dependencies = [ "memchr", - "thiserror 2.0.9", + "thiserror 2.0.11", "ucd-trie", ] @@ -7399,9 +7483,9 @@ dependencies = [ [[package]] name = "phf" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" +checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" dependencies = [ "phf_macros", "phf_shared", @@ -7409,9 +7493,9 @@ dependencies = [ [[package]] name = "phf_generator" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" +checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" dependencies = [ "phf_shared", "rand", @@ -7419,51 +7503,51 @@ dependencies = [ [[package]] name = "phf_macros" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3444646e286606587e49f3bcf1679b8cef1dc2c5ecc29ddacaffc305180d464b" +checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" dependencies = [ "phf_generator", "phf_shared", "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.96", ] [[package]] name = "phf_shared" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b" +checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" dependencies = [ "siphasher", ] [[package]] name = "pin-project" -version = "1.1.7" +version = "1.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95" +checksum = "1e2ec53ad785f4d35dac0adea7f7dc6f1bb277ad84a680c7afefeae05d1f5916" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.7" +version = "1.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" +checksum = "d56a66c0c55993aa927429d0f8a0abfd74f084e4d9c192cffed01e418d83eefb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.96", ] [[package]] name = "pin-project-lite" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" [[package]] name = "pin-utils" @@ -7574,12 +7658,12 @@ dependencies = [ [[package]] name = "prettyplease" -version = "0.2.25" +version = "0.2.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64d1ec885c64d0457d564db4ec299b2dae3f9c02808b8ad9c3a089c591b18033" +checksum = "6924ced06e1f7dfe3fa48d57b9f74f55d8915f5036121bef647ef4b204895fac" dependencies = [ "proc-macro2", - "syn 2.0.93", + "syn 2.0.96", ] [[package]] @@ -7599,7 +7683,7 @@ checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" dependencies = [ "fixed-hash", "impl-codec", - "uint", + "uint 0.9.5", ] [[package]] @@ -7664,14 +7748,14 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.96", ] [[package]] name = "proc-macro2" -version = "1.0.92" +version = "1.0.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" +checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99" dependencies = [ "unicode-ident", ] @@ -7682,7 +7766,7 @@ version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "731e0d9356b0c25f16f33b5be79b1c57b562f141ebfcdb0ad8ac2c13a24293b4" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "chrono", "flate2", "hex", @@ -7697,7 +7781,7 @@ version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cc5b72d8145275d844d4b5f6d4e1eef00c8cd889edb6035c21675d1bb1f45c9f" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "hex", "procfs-core 0.17.0", "rustix", @@ -7709,7 +7793,7 @@ version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2d3554923a69f4ce04c4a754260c338f505ce22642d3830e049a399fc2059a29" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "chrono", "hex", ] @@ -7720,7 +7804,7 @@ version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "239df02d8349b06fc07398a3a1697b06418223b1c7725085e801e7c0fc6a12ec" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "hex", ] @@ -7747,7 +7831,7 @@ checksum = "14cae93065090804185d3b75f0bf93b8eeda30c7a9b4a33d3bdb3988d6229e50" dependencies = [ "bit-set 0.8.0", "bit-vec 0.8.0", - "bitflags 2.6.0", + "bitflags 2.8.0", "lazy_static", "num-traits", "rand", @@ -7767,7 +7851,7 @@ checksum = "4ee1c9ac207483d5e7db4940700de86a9aae46ef90c48b57f99fe7edb8345e49" dependencies = [ "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.96", ] [[package]] @@ -7800,7 +7884,7 @@ dependencies = [ "itertools 0.12.1", "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.96", ] [[package]] @@ -7813,7 +7897,7 @@ dependencies = [ "itertools 0.13.0", "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.96", ] [[package]] @@ -7824,9 +7908,9 @@ checksum = "106dd99e98437432fed6519dedecfade6a06a73bb7b2a1e019fdd2bee5778d94" [[package]] name = "pyo3" -version = "0.23.3" +version = "0.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e484fd2c8b4cb67ab05a318f1fd6fa8f199fcc30819f08f07d200809dba26c15" +checksum = "57fe09249128b3173d092de9523eaa75136bf7ba85e0d69eca241c7939c933cc" dependencies = [ "cfg-if", "indoc", @@ -7842,9 +7926,9 @@ dependencies = [ [[package]] name = "pyo3-build-config" -version = "0.23.3" +version = "0.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc0e0469a84f208e20044b98965e1561028180219e35352a2afaf2b942beff3b" +checksum = "1cd3927b5a78757a0d71aa9dff669f903b1eb64b54142a9bd9f757f8fde65fd7" dependencies = [ "once_cell", "target-lexicon", @@ -7852,9 +7936,9 @@ dependencies = [ [[package]] name = "pyo3-ffi" -version = "0.23.3" +version = "0.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb1547a7f9966f6f1a0f0227564a9945fe36b90da5a93b3933fc3dc03fae372d" +checksum = "dab6bb2102bd8f991e7749f130a70d05dd557613e39ed2deeee8e9ca0c4d548d" dependencies = [ "libc", "pyo3-build-config", @@ -7862,34 +7946,34 @@ dependencies = [ [[package]] name = "pyo3-macros" -version = "0.23.3" +version = "0.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdb6da8ec6fa5cedd1626c886fc8749bdcbb09424a86461eb8cdf096b7c33257" +checksum = "91871864b353fd5ffcb3f91f2f703a22a9797c91b9ab497b1acac7b07ae509c7" dependencies = [ "proc-macro2", "pyo3-macros-backend", "quote", - "syn 2.0.93", + "syn 2.0.96", ] [[package]] name = "pyo3-macros-backend" -version = "0.23.3" +version = "0.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38a385202ff5a92791168b1136afae5059d3ac118457bb7bc304c197c2d33e7d" +checksum = "43abc3b80bc20f3facd86cd3c60beed58c3e2aa26213f3cda368de39c60a27e4" dependencies = [ "heck 0.5.0", "proc-macro2", "pyo3-build-config", "quote", - "syn 2.0.93", + "syn 2.0.96", ] [[package]] name = "quanta" -version = "0.12.4" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773ce68d0bb9bc7ef20be3536ffe94e223e1f365bd374108b2659fac0c65cfe6" +checksum = "3bd1fe6824cea6538803de3ff1bc0cf3949024db3d43c9643024bfb33a807c0e" dependencies = [ "crossbeam-utils", "libc", @@ -7926,9 +8010,9 @@ dependencies = [ "quinn-proto", "quinn-udp", "rustc-hash 2.1.0", - "rustls 0.23.20", - "socket2 0.5.8", - "thiserror 2.0.9", + "rustls 0.23.21", + "socket2", + "thiserror 2.0.11", "tokio", "tracing", ] @@ -7944,10 +8028,10 @@ dependencies = [ "rand", "ring", "rustc-hash 2.1.0", - "rustls 0.23.20", + "rustls 0.23.21", "rustls-pki-types", "slab", - "thiserror 2.0.9", + "thiserror 2.0.11", "tinyvec", "tracing", "web-time", @@ -7962,7 +8046,7 @@ dependencies = [ "cfg_aliases", "libc", "once_cell", - "socket2 0.5.8", + "socket2", "tracing", "windows-sys 0.59.0", ] @@ -8022,13 +8106,22 @@ dependencies = [ "rand_core", ] +[[package]] +name = "rand_xoshiro" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f97cdb2a36ed4183de61b2f824cc45c9f1037f28afe0a322e9fff4c108b5aaa" +dependencies = [ + "rand_core", +] + [[package]] name = "ratatui" version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdef7f9be5c0122f890d58bdf4d964349ba6a6161f705907526d891efabba57d" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "cassowary", "compact_str", "crossterm", @@ -8045,11 +8138,11 @@ dependencies = [ [[package]] name = "raw-cpuid" -version = "11.2.0" +version = "11.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ab240315c661615f2ee9f0f2cd32d5a7343a84d5ebcccb99d46e6637565e7b0" +checksum = "c6928fa44c097620b706542d428957635951bade7143269085389d42c8a4927e" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", ] [[package]] @@ -8102,7 +8195,7 @@ version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", ] [[package]] @@ -8162,11 +8255,11 @@ checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "regress" -version = "0.10.1" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1541daf4e4ed43a0922b7969bdc2170178bcacc5dabf7e39bc508a9fa3953a7a" +checksum = "78ef7fa9ed0256d64a688a3747d0fef7a88851c18a5e1d57f115f38ec2e09366" dependencies = [ - "hashbrown 0.14.5", + "hashbrown 0.15.2", "memchr", ] @@ -8245,7 +8338,7 @@ dependencies = [ "percent-encoding", "pin-project-lite", "quinn", - "rustls 0.23.20", + "rustls 0.23.21", "rustls-pemfile 2.2.0", "rustls-pki-types", "serde", @@ -8295,14 +8388,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-consensus 0.7.3", + "alloy-eips 0.7.3", "alloy-primitives", "alloy-rlp", - "alloy-rpc-types 0.4.2", + "alloy-rpc-types 0.7.3", "aquamarine", "backon", "clap", @@ -8343,6 +8436,7 @@ dependencies = [ "reth-payload-primitives", "reth-payload-validator", "reth-primitives", + "reth-primitives-traits", "reth-provider", "reth-prune", "reth-revm", @@ -8365,51 +8459,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", - "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-consensus 0.7.3", + "alloy-eips 0.7.3", "alloy-primitives", "alloy-rlp", "futures-core", "futures-util", - "metrics 0.23.0", + "metrics", "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", @@ -8421,15 +8490,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-consensus 0.7.3", + "alloy-eips 0.7.3", "alloy-primitives", "alloy-rpc-types-engine", "futures", "itertools 0.13.0", - "metrics 0.23.0", + "metrics", "reth-blockchain-tree-api", + "reth-codecs", + "reth-db-api", "reth-engine-primitives", "reth-errors", "reth-ethereum-consensus", @@ -8437,9 +8510,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", @@ -8447,7 +8522,7 @@ dependencies = [ "reth-tasks", "reth-tokio-util", "schnellru", - "thiserror 1.0.69", + "thiserror 2.0.11", "tokio", "tokio-stream", "tracing", @@ -8455,14 +8530,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-consensus 0.7.3", + "alloy-eips 0.7.3", "alloy-primitives", "aquamarine", "linked_hash_set", - "metrics 0.23.0", + "metrics", "parking_lot 0.12.3", "reth-blockchain-tree-api", "reth-consensus", @@ -8488,27 +8564,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-consensus 0.7.3", + "alloy-eips 0.7.3", "alloy-primitives", "reth-consensus", "reth-execution-errors", "reth-primitives", + "reth-primitives-traits", "reth-storage-errors", - "thiserror 1.0.69", + "thiserror 2.0.11", ] [[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-consensus 0.7.3", + "alloy-eips 0.7.3", "alloy-primitives", - "auto_impl", "derive_more", - "metrics 0.23.0", + "metrics", "parking_lot 0.12.3", "pin-project", "reth-chainspec", @@ -8516,8 +8595,10 @@ dependencies = [ "reth-execution-types", "reth-metrics", "reth-primitives", + "reth-primitives-traits", "reth-storage-api", "reth-trie", + "revm", "tokio", "tokio-stream", "tracing", @@ -8525,14 +8606,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-consensus 0.7.3", + "alloy-eips 0.7.3", + "alloy-genesis 0.7.3", "alloy-primitives", - "alloy-trie 0.6.0", "auto_impl", "derive_more", "once_cell", @@ -8545,25 +8626,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", - "alloy-eips 0.4.2", + "alloy-consensus 0.7.3", + "alloy-eips 0.7.3", "alloy-primitives", + "alloy-rlp", "backon", "clap", "comfy-table", @@ -8579,6 +8663,7 @@ dependencies = [ "reth-cli", "reth-cli-runner", "reth-cli-util", + "reth-codecs", "reth-config", "reth-consensus", "reth-db", @@ -8594,6 +8679,7 @@ dependencies = [ "reth-network", "reth-network-p2p", "reth-network-peers", + "reth-node-api", "reth-node-builder", "reth-node-core", "reth-node-events", @@ -8616,8 +8702,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", @@ -8626,10 +8712,10 @@ 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-eips 0.7.3", "alloy-primitives", "cfg-if", "eyre", @@ -8637,40 +8723,43 @@ dependencies = [ "rand", "reth-fs-util", "secp256k1", - "thiserror 1.0.69", + "serde", + "thiserror 2.0.11", "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-consensus 0.7.3", + "alloy-eips 0.7.3", + "alloy-genesis 0.7.3", "alloy-primitives", - "alloy-trie 0.6.0", + "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", "quote", - "syn 2.0.93", + "syn 2.0.96", ] [[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", @@ -8683,38 +8772,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-consensus 0.7.3", + "alloy-eips 0.7.3", "alloy-primitives", "auto_impl", "derive_more", "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-consensus 0.7.3", + "alloy-eips 0.7.3", "alloy-primitives", "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-consensus 0.7.3", + "alloy-eips 0.7.3", "alloy-primitives", - "alloy-provider 0.4.2", - "alloy-rpc-types 0.4.2", + "alloy-provider 0.7.3", "alloy-rpc-types-engine", + "alloy-rpc-types-eth 0.7.3", "auto_impl", "eyre", "futures", @@ -8730,16 +8825,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-consensus 0.7.3", "alloy-primitives", "bytes", "derive_more", "eyre", - "metrics 0.23.0", + "metrics", "page_size", - "paste", "reth-db-api", "reth-fs-util", "reth-libmdbx", @@ -8755,20 +8850,21 @@ dependencies = [ "rustc-hash 2.1.0", "serde", "strum", - "sysinfo 0.31.4", - "thiserror 1.0.69", + "sysinfo 0.32.1", + "thiserror 2.0.11", ] [[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-consensus 0.7.3", + "alloy-genesis 0.7.3", "alloy-primitives", "bytes", "derive_more", - "metrics 0.23.0", + "metrics", "modular-bitfield", "parity-scale-codec", "reth-codecs", @@ -8779,15 +8875,17 @@ 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-consensus 0.7.3", + "alloy-genesis 0.7.3", "alloy-primitives", "boyer-moore-magiclen", "eyre", @@ -8806,34 +8904,37 @@ dependencies = [ "reth-trie-db", "serde", "serde_json", - "thiserror 1.0.69", + "thiserror 2.0.11", "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-eips 0.7.3", "alloy-primitives", "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", "alloy-rlp", "discv5", "enr", "generic-array 0.14.7", + "itertools 0.13.0", "parking_lot 0.12.3", + "rand", "reth-ethereum-forks", "reth-net-banlist", "reth-net-nat", @@ -8841,7 +8942,7 @@ dependencies = [ "schnellru", "secp256k1", "serde", - "thiserror 1.0.69", + "thiserror 2.0.11", "tokio", "tokio-stream", "tracing", @@ -8849,8 +8950,8 @@ 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", "alloy-rlp", @@ -8859,26 +8960,27 @@ dependencies = [ "enr", "futures", "itertools 0.13.0", - "metrics 0.23.0", + "metrics", "rand", "reth-chainspec", "reth-ethereum-forks", "reth-metrics", "reth-network-peers", "secp256k1", - "thiserror 1.0.69", + "thiserror 2.0.11", "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", "data-encoding", "enr", + "hickory-resolver", "linked_hash_set", "parking_lot 0.12.3", "reth-ethereum-forks", @@ -8886,25 +8988,27 @@ dependencies = [ "reth-tokio-util", "schnellru", "secp256k1", - "thiserror 1.0.69", + "serde", + "serde_with", + "thiserror 2.0.11", "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-consensus 0.7.3", + "alloy-eips 0.7.3", "alloy-primitives", "alloy-rlp", "futures", "futures-util", "itertools 0.13.0", - "metrics 0.23.0", + "metrics", "pin-project", "rayon", "reth-config", @@ -8913,9 +9017,10 @@ dependencies = [ "reth-network-p2p", "reth-network-peers", "reth-primitives", + "reth-primitives-traits", "reth-storage-api", "reth-tasks", - "thiserror 1.0.69", + "thiserror 2.0.11", "tokio", "tokio-stream", "tokio-util", @@ -8924,8 +9029,8 @@ 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", @@ -8945,7 +9050,7 @@ dependencies = [ "secp256k1", "sha2 0.10.8", "sha3", - "thiserror 1.0.69", + "thiserror 2.0.11", "tokio", "tokio-stream", "tokio-util", @@ -8953,57 +9058,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", + "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-consensus 0.7.3", "alloy-primitives", + "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.11", + "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 1.0.69", + "thiserror 2.0.11", ] [[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-consensus 0.7.3", + "alloy-eips 0.7.3", "alloy-primitives", + "alloy-rlp", "alloy-rpc-types-engine", "futures", - "metrics 0.23.0", + "metrics", + "rayon", "reth-beacon-consensus", "reth-blockchain-tree", "reth-blockchain-tree-api", "reth-chain-state", - "reth-chainspec", "reth-consensus", "reth-engine-primitives", "reth-errors", @@ -9011,33 +9159,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 1.0.69", + "reth-trie-sparse", + "revm-primitives", + "thiserror 2.0.11", "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-consensus 0.7.3", + "alloy-eips 0.7.3", "alloy-primitives", "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", @@ -9059,37 +9213,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 1.0.69", + "thiserror 2.0.11", ] [[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-chains", "alloy-primitives", "alloy-rlp", "bytes", "derive_more", "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 1.0.69", + "thiserror 2.0.11", "tokio", "tokio-stream", "tokio-util", @@ -9098,25 +9254,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-consensus 0.7.3", + "alloy-eips 0.7.3", "alloy-primitives", "alloy-rlp", "bytes", "derive_more", "reth-chainspec", "reth-codecs-derive", + "reth-ethereum-forks", "reth-primitives", - "thiserror 1.0.69", + "reth-primitives-traits", + "serde", + "thiserror 2.0.11", ] [[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", @@ -9125,23 +9285,26 @@ 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-consensus 0.7.3", + "alloy-eips 0.7.3", "alloy-primitives", "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-eips 0.7.3", "alloy-primitives", "alloy-rlp", "alloy-rpc-types-engine", @@ -9149,6 +9312,7 @@ dependencies = [ "reth-chainspec", "reth-engine-primitives", "reth-payload-primitives", + "reth-payload-validator", "reth-primitives", "reth-rpc-types-compat", "serde", @@ -9157,8 +9321,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", @@ -9169,14 +9333,16 @@ dependencies = [ "once_cell", "rustc-hash 2.1.0", "serde", - "thiserror-no-std", + "thiserror 2.0.11", ] [[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-consensus 0.7.3", + "alloy-eips 0.7.3", "alloy-primitives", "reth-basic-payload-builder", "reth-chain-state", @@ -9186,21 +9352,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", @@ -9209,21 +9374,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-consensus 0.7.3", + "alloy-eips 0.7.3", "alloy-primitives", "auto_impl", "futures-util", - "metrics 0.23.0", + "metrics", "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", @@ -9231,49 +9400,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-consensus 0.7.3", + "alloy-eips 0.7.3", "alloy-primitives", "alloy-sol-types", "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-eips 0.7.3", "alloy-primitives", "alloy-rlp", - "derive_more", "nybbles 0.2.1", "reth-consensus", "reth-prune-types", "reth-storage-errors", "revm-primitives", + "thiserror 2.0.11", ] [[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-consensus 0.7.3", + "alloy-eips 0.7.3", "alloy-primitives", "reth-execution-errors", "reth-primitives", + "reth-primitives-traits", "reth-trie", + "reth-trie-common", "revm", "serde", "serde_with", @@ -9281,15 +9453,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-consensus 0.7.3", + "alloy-eips 0.7.3", "alloy-primitives", "eyre", "futures", "itertools 0.13.0", - "metrics 0.23.0", + "metrics", "parking_lot 0.12.3", "reth-chain-state", "reth-chainspec", @@ -9300,7 +9473,6 @@ dependencies = [ "reth-metrics", "reth-node-api", "reth-node-core", - "reth-payload-builder", "reth-primitives", "reth-primitives-traits", "reth-provider", @@ -9317,32 +9489,35 @@ 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-eips 0.7.3", "alloy-primitives", "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 1.0.69", + "thiserror 2.0.11", ] [[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-consensus 0.7.3", "alloy-primitives", "alloy-rlp", "alloy-rpc-types-debug", @@ -9354,6 +9529,7 @@ dependencies = [ "reth-engine-primitives", "reth-evm", "reth-primitives", + "reth-primitives-traits", "reth-provider", "reth-revm", "reth-rpc-api", @@ -9365,8 +9541,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", @@ -9376,7 +9552,7 @@ dependencies = [ "jsonrpsee", "pin-project", "serde_json", - "thiserror 1.0.69", + "thiserror 2.0.11", "tokio", "tokio-stream", "tokio-util", @@ -9386,25 +9562,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", + "bitflags 2.8.0", "byteorder", "dashmap 6.1.0", "derive_more", - "indexmap 2.7.0", + "indexmap 2.7.1", "parking_lot 0.12.3", "reth-mdbx-sys", "smallvec", - "thiserror 1.0.69", + "thiserror 2.0.11", "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", @@ -9412,11 +9588,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 0.23.0", + "metrics", "metrics-derive", "tokio", "tokio-util", @@ -9424,32 +9600,33 @@ 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", ] [[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.12", "serde_with", - "thiserror 1.0.69", + "thiserror 2.0.11", "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-consensus 0.7.3", + "alloy-eips 0.7.3", "alloy-primitives", "alloy-rlp", "aquamarine", @@ -9459,7 +9636,7 @@ dependencies = [ "enr", "futures", "itertools 0.13.0", - "metrics 0.23.0", + "metrics", "parking_lot 0.12.3", "pin-project", "rand", @@ -9470,6 +9647,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", @@ -9478,6 +9657,7 @@ dependencies = [ "reth-network-peers", "reth-network-types", "reth-primitives", + "reth-primitives-traits", "reth-storage-api", "reth-tasks", "reth-tokio-util", @@ -9487,7 +9667,7 @@ dependencies = [ "secp256k1", "serde", "smallvec", - "thiserror 1.0.69", + "thiserror 2.0.11", "tokio", "tokio-stream", "tokio-util", @@ -9496,8 +9676,8 @@ 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", "alloy-rpc-types-admin", @@ -9512,17 +9692,18 @@ dependencies = [ "reth-network-types", "reth-tokio-util", "serde", - "thiserror 1.0.69", + "thiserror 2.0.11", "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-consensus 0.7.3", + "alloy-eips 0.7.3", "alloy-primitives", "auto_impl", "derive_more", @@ -9532,6 +9713,7 @@ dependencies = [ "reth-network-peers", "reth-network-types", "reth-primitives", + "reth-primitives-traits", "reth-storage-errors", "tokio", "tracing", @@ -9539,23 +9721,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", "alloy-rlp", "enr", "secp256k1", "serde_with", - "thiserror 1.0.69", + "thiserror 2.0.11", "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", @@ -9568,8 +9750,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", @@ -9578,43 +9760,46 @@ dependencies = [ "memmap2", "reth-fs-util", "serde", - "thiserror 1.0.69", + "thiserror 2.0.11", "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-consensus 0.7.3", "alloy-primitives", - "alloy-rpc-types 0.4.2", + "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", @@ -9626,6 +9811,7 @@ dependencies = [ "reth-db-api", "reth-db-common", "reth-downloaders", + "reth-engine-local", "reth-engine-service", "reth-engine-tree", "reth-engine-util", @@ -9641,7 +9827,6 @@ dependencies = [ "reth-node-events", "reth-node-metrics", "reth-payload-builder", - "reth-payload-primitives", "reth-payload-validator", "reth-primitives", "reth-provider", @@ -9658,6 +9843,7 @@ dependencies = [ "reth-tokio-util", "reth-tracing", "reth-transaction-pool", + "revm-primitives", "secp256k1", "tokio", "tokio-stream", @@ -9666,9 +9852,11 @@ 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-consensus 0.7.3", + "alloy-eips 0.7.3", "alloy-primitives", "alloy-rpc-types-engine", "clap", @@ -9682,18 +9870,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", @@ -9706,7 +9894,7 @@ dependencies = [ "serde", "shellexpand", "strum", - "thiserror 1.0.69", + "thiserror 2.0.11", "toml 0.8.19", "tracing", "vergen", @@ -9714,17 +9902,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", @@ -9732,50 +9920,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-consensus 0.7.3", + "alloy-eips 0.7.3", "alloy-primitives", "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.2.0", - "jsonrpsee", - "metrics 0.23.0", + "jsonrpsee-server", + "metrics", "metrics-exporter-prometheus", "metrics-process", - "metrics-util", + "metrics-util 0.18.0", "procfs 0.16.0", - "reth-db-api", "reth-metrics", - "reth-provider", "reth-tasks", "tikv-jemalloc-ctl", "tokio", @@ -9786,62 +9976,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", - "alloy-rpc-types 0.4.2", + "alloy-rpc-types 0.7.3", "async-trait", "futures-util", - "metrics 0.23.0", + "metrics", + "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", - "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", + "alloy-rpc-types-engine", "reth-chain-state", "reth-chainspec", "reth-errors", "reth-primitives", - "reth-transaction-pool", + "revm-primitives", "serde", - "thiserror 1.0.69", + "thiserror 2.0.11", "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", + "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", @@ -9849,15 +10060,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-consensus 0.7.3", + "alloy-eips 0.7.3", + "alloy-network 0.7.3", "alloy-primitives", "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", @@ -9871,47 +10084,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-consensus 0.7.3", + "alloy-eips 0.7.3", + "alloy-genesis 0.7.3", "alloy-primitives", "alloy-rlp", + "auto_impl", "byteorder", "bytes", "derive_more", "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-consensus 0.7.3", + "alloy-eips 0.7.3", "alloy-primitives", "alloy-rpc-types-engine", "auto_impl", "dashmap 6.1.0", "itertools 0.13.0", - "metrics 0.23.0", + "metrics", "notify", "parking_lot 0.12.3", "rayon", @@ -9930,6 +10144,7 @@ dependencies = [ "reth-nippy-jar", "reth-node-types", "reth-primitives", + "reth-primitives-traits", "reth-prune-types", "reth-stages-types", "reth-storage-api", @@ -9944,12 +10159,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-consensus 0.7.3", + "alloy-eips 0.7.3", "alloy-primitives", "itertools 0.13.0", - "metrics 0.23.0", + "metrics", "rayon", "reth-chainspec", "reth-config", @@ -9958,20 +10175,21 @@ 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.1.0", - "thiserror 1.0.69", + "thiserror 2.0.11", "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", "bytes", @@ -9979,47 +10197,50 @@ dependencies = [ "modular-bitfield", "reth-codecs", "serde", - "thiserror 1.0.69", + "thiserror 2.0.11", ] [[package]] name = "reth-revm" -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.7.3", "alloy-primitives", - "reth-chainspec", - "reth-consensus-common", "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-eips 0.7.3", + "alloy-genesis 0.7.3", + "alloy-network 0.7.3", "alloy-primitives", "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", "futures", @@ -10032,14 +10253,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", @@ -10050,13 +10274,12 @@ dependencies = [ "reth-rpc-types-compat", "reth-tasks", "reth-transaction-pool", - "reth-trie", "revm", "revm-inspectors", "revm-primitives", "serde", "serde_json", - "thiserror 1.0.69", + "thiserror 2.0.11", "tokio", "tokio-stream", "tower 0.4.13", @@ -10066,43 +10289,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-eips 0.7.3", + "alloy-json-rpc 0.7.3", "alloy-primitives", - "alloy-rpc-types 0.4.2", + "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.2.0", "jsonrpsee", - "metrics 0.23.0", + "metrics", "pin-project", "reth-chainspec", + "reth-consensus", "reth-engine-primitives", "reth-evm", "reth-ipc", @@ -10120,7 +10340,9 @@ dependencies = [ "reth-tasks", "reth-transaction-pool", "serde", - "thiserror 1.0.69", + "thiserror 2.0.11", + "tokio", + "tokio-util", "tower 0.4.13", "tower-http", "tracing", @@ -10128,22 +10350,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-eips 0.7.3", "alloy-primitives", "alloy-rpc-types-engine", "async-trait", "jsonrpsee-core", "jsonrpsee-types", - "metrics 0.23.0", + "metrics", + "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", @@ -10152,24 +10376,26 @@ dependencies = [ "reth-tasks", "reth-transaction-pool", "serde", - "thiserror 1.0.69", + "thiserror 2.0.11", "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-eips 0.7.3", + "alloy-json-rpc 0.7.3", + "alloy-network 0.7.3", "alloy-primitives", - "alloy-rpc-types 0.4.2", - "alloy-rpc-types-eth 0.4.2", + "alloy-rlp", + "alloy-rpc-types-eth 0.7.3", "alloy-rpc-types-mev", + "alloy-serde 0.7.3", "async-trait", "auto_impl", "dyn-clone", @@ -10180,9 +10406,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", @@ -10190,7 +10417,7 @@ dependencies = [ "reth-rpc-types-compat", "reth-tasks", "reth-transaction-pool", - "reth-trie", + "reth-trie-common", "revm", "revm-inspectors", "revm-primitives", @@ -10200,29 +10427,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" +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-consensus 0.7.3", + "alloy-eips 0.7.3", "alloy-primitives", - "alloy-rpc-types 0.4.2", - "alloy-rpc-types-eth 0.4.2", - "alloy-serde 0.4.2", + "alloy-rpc-types-eth 0.7.3", "alloy-sol-types", "derive_more", "futures", + "itertools 0.13.0", "jsonrpsee-core", "jsonrpsee-types", - "metrics 0.23.0", + "metrics", "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", @@ -10235,7 +10461,7 @@ dependencies = [ "revm-primitives", "schnellru", "serde", - "thiserror 1.0.69", + "thiserror 2.0.11", "tokio", "tokio-stream", "tracing", @@ -10243,54 +10469,58 @@ 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.2.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-eips 0.7.3", "alloy-primitives", "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-consensus 0.7.3", + "alloy-eips 0.7.3", "alloy-primitives", "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-consensus 0.7.3", + "alloy-eips 0.7.3", "alloy-primitives", "bincode", "futures-util", @@ -10317,21 +10547,22 @@ dependencies = [ "reth-storage-errors", "reth-trie", "reth-trie-db", - "thiserror 1.0.69", + "thiserror 2.0.11", "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-eips 0.7.3", "alloy-primitives", "aquamarine", "auto_impl", "futures-util", - "metrics 0.23.0", + "metrics", "reth-consensus", "reth-errors", "reth-metrics", @@ -10343,15 +10574,15 @@ dependencies = [ "reth-static-file", "reth-static-file-types", "reth-tokio-util", - "thiserror 1.0.69", + "thiserror 2.0.11", "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", "bytes", @@ -10363,17 +10594,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", "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", @@ -10385,8 +10615,8 @@ 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", "clap", @@ -10397,49 +10627,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-consensus 0.7.3", + "alloy-eips 0.7.3", "alloy-primitives", + "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-eips 0.7.3", "alloy-primitives", "alloy-rlp", "derive_more", "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 0.23.0", + "metrics", "pin-project", "rayon", "reth-metrics", - "thiserror 1.0.69", + "thiserror 2.0.11", "tokio", "tracing", "tracing-futures", @@ -10447,8 +10684,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", @@ -10457,8 +10694,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", @@ -10472,25 +10709,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-consensus 0.7.3", + "alloy-eips 0.7.3", "alloy-primitives", "alloy-rlp", "aquamarine", "auto_impl", - "bitflags 2.6.0", + "bitflags 2.8.0", "futures-util", - "metrics 0.23.0", + "metrics", "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", @@ -10498,7 +10739,7 @@ dependencies = [ "schnellru", "serde", "smallvec", - "thiserror 1.0.69", + "thiserror 2.0.11", "tokio", "tokio-stream", "tracing", @@ -10506,15 +10747,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-consensus 0.7.3", + "alloy-eips 0.7.3", "alloy-primitives", "alloy-rlp", + "alloy-trie", "auto_impl", - "derive_more", "itertools 0.13.0", - "metrics 0.23.0", + "metrics", "rayon", "reth-execution-errors", "reth-metrics", @@ -10522,22 +10765,23 @@ 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-consensus 0.7.3", + "alloy-genesis 0.7.3", "alloy-primitives", "alloy-rlp", - "alloy-trie 0.6.0", + "alloy-rpc-types-eth 0.7.3", + "alloy-serde 0.7.3", + "alloy-trie", "bytes", "derive_more", "itertools 0.13.0", @@ -10546,61 +10790,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", "alloy-rlp", - "auto_impl", "derive_more", - "itertools 0.13.0", - "metrics 0.23.0", - "rayon", + "metrics", "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", "alloy-rlp", "derive_more", "itertools 0.13.0", - "metrics 0.23.0", + "metrics", "rayon", "reth-db", - "reth-db-api", "reth-execution-errors", "reth-metrics", "reth-primitives", "reth-provider", "reth-trie", + "reth-trie-common", "reth-trie-db", - "thiserror 1.0.69", + "thiserror 2.0.11", "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", + "alloy-rlp", + "reth-execution-errors", + "reth-primitives-traits", + "reth-tracing", + "reth-trie-common", + "smallvec", + "thiserror 2.0.11", +] + +[[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", @@ -10613,12 +10876,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", - "alloy-rpc-types-eth 0.4.2", + "alloy-rpc-types-eth 0.7.3", "alloy-rpc-types-trace", "alloy-sol-types", "anstyle", @@ -10632,9 +10895,9 @@ dependencies = [ [[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", @@ -10642,9 +10905,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", @@ -10661,15 +10924,15 @@ 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 0.1.1", + "alloy-eip7702 0.4.2", "alloy-primitives", "auto_impl", - "bitflags 2.6.0", + "bitflags 2.8.0", "bitvec", "c-kzg", "cfg-if", @@ -10721,9 +10984,9 @@ dependencies = [ [[package]] name = "risc0-binfmt" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "901fb75d62d70320adc7adae2abad354a3b7565603115dfb3134465227846475" +checksum = "f2d38498a55589122b195aa5024d2c0b02231efdb01c090881b9d535660f97c9" dependencies = [ "anyhow", "borsh", @@ -10736,9 +10999,9 @@ dependencies = [ [[package]] name = "risc0-build" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f99fb40aeeaf59dddd6b6c3a177c95e8b3c7f0fb6de7d25a0687d12398323292" +checksum = "2b178bec61b5a589feeddcc8f9987119dccfd32f17d98dfedf14921591b35bf4" dependencies = [ "anyhow", "cargo_metadata 0.18.1", @@ -10753,11 +11016,27 @@ dependencies = [ "tempfile", ] +[[package]] +name = "risc0-circuit-keccak" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "723af53138c76e5c167f52c0396071ebd735a79561732de974dabb545ba2d1be" +dependencies = [ + "anyhow", + "bytemuck", + "paste", + "risc0-binfmt", + "risc0-circuit-recursion", + "risc0-core", + "risc0-zkp", + "tracing", +] + [[package]] name = "risc0-circuit-recursion" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8b0736401dd72a60a775e675bd0adba2e0e0e2ce2b73b63fda2899d9d7889b0" +checksum = "13c7665d06d6dd42bff80dd7690fddecc49b664621336ad0542505e139a470ad" dependencies = [ "anyhow", "bytemuck", @@ -10770,9 +11049,9 @@ dependencies = [ [[package]] name = "risc0-circuit-rv32im" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b6d7eb9ae600c2df004bf8849db2df870fd56bd5911a2ad756fb8701350b3c6" +checksum = "53c44a97bf5f90a90a51fcc3667b12592a407431f7bab34dc5e77f097675699d" dependencies = [ "anyhow", "metal", @@ -10786,9 +11065,9 @@ dependencies = [ [[package]] name = "risc0-core" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "733491635d50b742d1f30a923aa3b83d62f35cef724bbf402dfc02e6f10f587a" +checksum = "09f45bab0bb477240e7d45a25e618603ef4196421728a115b6d4b7a6036535a5" dependencies = [ "bytemuck", "rand_core", @@ -10796,9 +11075,9 @@ dependencies = [ [[package]] name = "risc0-groth16" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5babc69b0db6906a6ff4011641109ca2ba06636096356b32208b0dfb26b3809" +checksum = "a73e92874649e10cbdd6b3069c4f0f6a7daab1251d18ba8b190ef9f99b39975c" dependencies = [ "anyhow", "ark-bn254", @@ -10817,9 +11096,9 @@ dependencies = [ [[package]] name = "risc0-zkp" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21eadc5099bf0d8ecaed718810dc5deaf237ae39a2fcb66e542e8f9660132617" +checksum = "b6f1990995a8933cdd1812dc9d8d0e5f04032a045cc47ef00557996b566e2194" dependencies = [ "anyhow", "blake2", @@ -10841,9 +11120,9 @@ dependencies = [ [[package]] name = "risc0-zkvm" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b619085d02d57dcafc41eb74714682797ed666621ced1814c55bbe7ae7762ba" +checksum = "b7dd5caa549aa61f00a69f2b625b0d4e42e40595f3d0b29773c80856baa244fd" dependencies = [ "anyhow", "bincode", @@ -10857,6 +11136,7 @@ dependencies = [ "prost 0.13.4", "risc0-binfmt", "risc0-build", + "risc0-circuit-keccak", "risc0-circuit-recursion", "risc0-circuit-rv32im", "risc0-core", @@ -10864,10 +11144,9 @@ dependencies = [ "risc0-zkp", "risc0-zkvm-platform", "rrs-lib", - "semver 1.0.24", + "semver 1.0.25", "serde", "sha2 0.10.8", - "sha3", "stability", "tempfile", "tracing", @@ -10875,11 +11154,12 @@ dependencies = [ [[package]] name = "risc0-zkvm-platform" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26bbcc486222a0086d36244ae1f388cac1318270bca2dd23d77af2005d679edf" +checksum = "53b825852cf55c5f54f1f21d178055e6959fa5f4e839eab2ad56cfd377d2e7f8" dependencies = [ "bytemuck", + "cfg-if", "getrandom", "libm", "stability", @@ -10928,9 +11208,9 @@ dependencies = [ [[package]] name = "roaring" -version = "0.10.9" +version = "0.10.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41589aba99537475bf697f2118357cad1c31590c5a1b9f6d9fc4ad6d07503661" +checksum = "a652edd001c53df0b3f96a36a8dc93fce6866988efc16808235653c6bcac8bf2" dependencies = [ "bytemuck", "byteorder", @@ -11031,10 +11311,10 @@ version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b838eba278d213a8beaf485bd313fd580ca4505a00d5871caeb1457c55322cae" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "fallible-iterator", "fallible-streaming-iterator", - "hashlink 0.9.1", + "hashlink", "libsqlite3-sys", "smallvec", ] @@ -11087,16 +11367,16 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "semver 1.0.24", + "semver 1.0.25", ] [[package]] name = "rustix" -version = "0.38.42" +version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93dc38ecbab2eb790ff964bb77fa94faf256fd3e73285fd7ba0903b76bedb85" +checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "errno", "libc", "linux-raw-sys", @@ -11117,9 +11397,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.20" +version = "0.23.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5065c3f250cbd332cd894be57c40fa52387247659b14a2d6041d121547903b1b" +checksum = "8f287924602bf649d949c63dc8ac8b235fa5387d394020705b80c4eb597ce5b8" dependencies = [ "log", "once_cell", @@ -11152,7 +11432,7 @@ dependencies = [ "openssl-probe", "rustls-pki-types", "schannel", - "security-framework 3.1.0", + "security-framework 3.2.0", ] [[package]] @@ -11193,7 +11473,7 @@ dependencies = [ "jni", "log", "once_cell", - "rustls 0.23.20", + "rustls 0.23.21", "rustls-native-certs 0.7.3", "rustls-platform-verifier-android", "rustls-webpki 0.102.8", @@ -11290,7 +11570,7 @@ dependencies = [ "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.96", ] [[package]] @@ -11313,15 +11593,21 @@ dependencies = [ [[package]] name = "schnellru" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9a8ef13a93c54d20580de1e5c413e624e53121d42fc7e2c11d10ef7f8b02367" +checksum = "356285bbf17bea63d9e52e96bd18f039672ac92b55b8cb997d6162a2a37d1649" dependencies = [ "ahash", "cfg-if", "hashbrown 0.13.2", ] +[[package]] +name = "scoped-tls" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" + [[package]] name = "scopeguard" version = "1.2.0" @@ -11345,7 +11631,7 @@ checksum = "7f81c2fde025af7e69b1d1420531c8a8811ca898919db177141a85313b1cb932" dependencies = [ "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.96", ] [[package]] @@ -11419,7 +11705,7 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "core-foundation 0.9.4", "core-foundation-sys", "libc", @@ -11429,11 +11715,11 @@ dependencies = [ [[package]] name = "security-framework" -version = "3.1.0" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81d3f8c9bfcc3cbb6b0179eb57042d75b1582bdc65c3cb95f3fa999509c03cbc" +checksum = "271720403f46ca04f7ba6f55d438f8bd878d6b8ca0a1046e8228c4145bcbb316" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "core-foundation 0.10.0", "core-foundation-sys", "libc", @@ -11442,9 +11728,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.13.0" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1863fd3768cd83c56a7f60faa4dc0d403f1b6df0a38c3c25f44b7894e45370d5" +checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" dependencies = [ "core-foundation-sys", "libc", @@ -11461,9 +11747,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.24" +version = "1.0.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cb6eb87a131f756572d7fb904f6e7b68633f09cca868c5df1c4b8d1a694bbba" +checksum = "f79dfe2d285b0488816f30e700a7438c5a73d816b5b7d3ac72fbc48b0d185e03" dependencies = [ "serde", ] @@ -11506,16 +11792,16 @@ checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.96", ] [[package]] name = "serde_json" -version = "1.0.134" +version = "1.0.137" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d00f4175c42ee48b15416f6193a959ba3a0d67fc699a0db9ad12df9f83991c7d" +checksum = "930cfb6e6abf99298aaad7d29abbef7a9999a9a8806a40088f55f0dcec03146b" dependencies = [ - "indexmap 2.7.0", + "indexmap 2.7.1", "itoa", "memchr", "ryu", @@ -11532,17 +11818,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.93", -] - [[package]] name = "serde_spanned" version = "0.6.8" @@ -11574,7 +11849,7 @@ dependencies = [ "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.7.0", + "indexmap 2.7.1", "serde", "serde_derive", "serde_json", @@ -11591,7 +11866,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.96", ] [[package]] @@ -11638,7 +11913,7 @@ checksum = "5d69265a08751de7844521fd15003ae0a888e035773ba05695c5c759a6f89eef" dependencies = [ "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.96", ] [[package]] @@ -11788,37 +12063,42 @@ dependencies = [ [[package]] name = "similar" -version = "2.6.0" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1de1d4f81173b03af4c0cbed3c898f6bff5b870e4a7f5d6f4057d62a7a4b686e" +checksum = "bbbb5d9659141646ae647b42fe094daf6c6192d1620870b449d9557f748b2daa" +dependencies = [ + "bstr", + "unicode-segmentation", +] [[package]] name = "similar-asserts" -version = "1.6.0" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfe85670573cd6f0fa97940f26e7e6601213c3b0555246c24234131f88c5709e" +checksum = "9f08357795f0d604ea7d7130f22c74b03838c959bdb14adde3142aab4d18a293" dependencies = [ "console", + "serde", "similar", ] [[package]] name = "simple_asn1" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adc4e5204eb1910f40f9cfa375f6f05b68c3abac4b6fd879c8ff5e7ae8a0a085" +checksum = "297f631f50729c8c99b84667867963997ec0b50f32b2a7dbcab828ef0541e8bb" dependencies = [ "num-bigint 0.4.6", "num-traits", - "thiserror 1.0.69", + "thiserror 2.0.11", "time", ] [[package]] name = "siphasher" -version = "0.3.11" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" +checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" [[package]] name = "size" @@ -11828,9 +12108,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" @@ -11882,16 +12162,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.8" @@ -11920,9 +12190,9 @@ dependencies = [ [[package]] name = "sp1-build" -version = "4.0.0" +version = "4.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e2e8eaf2d29f8e7170c1d901e7c0133399c7fe557aedea659f171a86f34a9f9" +checksum = "82249c52570bdb8c499e352a5309ca8051f80068df42d4b4500987592f9eb57c" dependencies = [ "anyhow", "cargo_metadata 0.18.1", @@ -11933,9 +12203,9 @@ dependencies = [ [[package]] name = "sp1-core-executor" -version = "4.0.0" +version = "4.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "386bdb534e0cf3643dd9dd67ed06933730913a03dd1ab0e64893cd969c1da57a" +checksum = "bb8ec5621fba6c50f6ec4e0e963227d1ab2229840b0e210a57e1f18428bbcbc8" dependencies = [ "bincode", "bytemuck", @@ -11976,9 +12246,9 @@ dependencies = [ [[package]] name = "sp1-core-machine" -version = "4.0.0" +version = "4.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89881a2078d8e32933e9687a0f146e470842f3674f8a813524d80b7dc42eb7e9" +checksum = "fe96b1962e6c10ac8321c9ea16161467ca27b43a75c02f42c82310d5e05768f5" dependencies = [ "bincode", "cbindgen", @@ -12033,9 +12303,9 @@ dependencies = [ [[package]] name = "sp1-cuda" -version = "4.0.0" +version = "4.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ef50ff96d561bb7e8a000ec35317863a517f7c68f9d1231e1483c4e93c174a1" +checksum = "d2a78f87a3606de46272d2a153408768bf9b1897a37e231aa084425977fe8532" dependencies = [ "bincode", "ctrlc", @@ -12050,9 +12320,9 @@ dependencies = [ [[package]] name = "sp1-curves" -version = "4.0.0" +version = "4.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b325b91b40643b36738a4abcdfde81ba8b158e04c3e1a2d94a1942df84e03c8" +checksum = "1849790f9a7b713fea00a0ec0ccfca13f2cea86249c33d38851c8ee75e0d8d78" dependencies = [ "cfg-if", "dashu", @@ -12072,9 +12342,9 @@ dependencies = [ [[package]] name = "sp1-derive" -version = "4.0.0" +version = "4.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e0d6abd68038a6f688601cdd0cbec17b56f56e5d10e3f34f1a42bee8cc7ca2c" +checksum = "7d988a16a181f3f641677cbe6a98154effc0f22befb8d14470ba1697ddfda4c9" dependencies = [ "quote", "syn 1.0.109", @@ -12082,18 +12352,18 @@ dependencies = [ [[package]] name = "sp1-helper" -version = "4.0.0" +version = "4.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfeb036e069d9c621c99579e90175e71f2a59232b2ecdb3c44a31f5e601e5259" +checksum = "b0fb17d71032c21ba86f741485714a260249afda15c7dd6b92f43f595356cf93" dependencies = [ "sp1-build", ] [[package]] name = "sp1-lib" -version = "4.0.0" +version = "4.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2378a017c2159e1ab89ed73ff797771ab8b00b11ee1d86852c00c2c9fabc76ce" +checksum = "aac3d3deeed25e9cad80e4275faf5954aa63f213ed3422f0e098dd2d0c1b0c0e" dependencies = [ "bincode", "serde", @@ -12102,9 +12372,9 @@ dependencies = [ [[package]] name = "sp1-primitives" -version = "4.0.0" +version = "4.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc7c741d8c2907ac96f71445ed8d7abb0fdbea115c6becbcbc7c35305068320c" +checksum = "09b25a09b455dfae9c688da05718b205e8bd4afab36cd912d54639f5d4035815" dependencies = [ "bincode", "hex", @@ -12120,9 +12390,9 @@ dependencies = [ [[package]] name = "sp1-prover" -version = "4.0.0" +version = "4.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82833ca900c54cd9f933560b433e56be97edd7322f8ec1654037e4326f3f6b7e" +checksum = "40d5713392e803b1e609d626256015ddb5464e2f435fc55fa8f383bae111a4af" dependencies = [ "anyhow", "bincode", @@ -12163,9 +12433,9 @@ dependencies = [ [[package]] name = "sp1-recursion-circuit" -version = "4.0.0" +version = "4.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f0e78b19138ed445e02a2c69ae2115df6be3595bb464fc0e2ade550b7b9601a" +checksum = "bbe6fcf68661a7253c9b7bf253b35c40a641b25d09048c5ac2c549e320428cd5" dependencies = [ "hashbrown 0.14.5", "itertools 0.13.0", @@ -12197,9 +12467,9 @@ dependencies = [ [[package]] name = "sp1-recursion-compiler" -version = "4.0.0" +version = "4.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6cd484565925bc9f10af6358ebe4f8a2193af635299725294a1ee8441854689" +checksum = "5efb23c5b5266e07debb0a0d9a0cc4dcc03b646937a80a7b73d4696ccc9a7152" dependencies = [ "backtrace", "itertools 0.13.0", @@ -12219,9 +12489,9 @@ dependencies = [ [[package]] name = "sp1-recursion-core" -version = "4.0.0" +version = "4.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "781a49a2ade18ebafc090070a3ce62854ee3aed802fe0f36074cd9984e9183ce" +checksum = "2267c384a2106cb5b3235a8b02fa5d91db30c1bfead653f6181d1a17f91c70b2" dependencies = [ "backtrace", "cbindgen", @@ -12262,9 +12532,9 @@ dependencies = [ [[package]] name = "sp1-recursion-derive" -version = "4.0.0" +version = "4.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b8f0f802f8d5b1a3afca56c5b398c16a0382bef8969be8b9a3edc7b8e8b37be" +checksum = "3fe45973782801df096675f29dabbceeaf121b5b9875411f2bad245f128a7b72" dependencies = [ "quote", "syn 1.0.109", @@ -12272,9 +12542,9 @@ dependencies = [ [[package]] name = "sp1-recursion-gnark-ffi" -version = "4.0.0" +version = "4.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff5b4480f59b320bd25beaf3b19c0d3c9b60d140a99964805b18853a611a8eaf" +checksum = "b39cc97057e5240a2ab3062234a60d6ee6dbdb852ef02ea5fe5f943f910f6c9e" dependencies = [ "anyhow", "bincode", @@ -12298,9 +12568,9 @@ dependencies = [ [[package]] name = "sp1-sdk" -version = "4.0.0" +version = "4.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b47b98599a826c8d24976791495bc59c7d8be3af97a515cf5f7a7c3b02daa835" +checksum = "5a6d0773e4cc5f8c2dfea65cbf003d6d6c8fb8f2671d3edb48b5873627f27d20" dependencies = [ "alloy-primitives", "alloy-signer 0.8.3", @@ -12346,9 +12616,9 @@ dependencies = [ [[package]] name = "sp1-stark" -version = "4.0.0" +version = "4.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a4779a915a218d668868fd6d11f6f225e6ec0033121345772214901edc8e9fa" +checksum = "274d0cddd1804a447daaf29deeb2ce46a5c808c626261daf710da8b90bb25f99" dependencies = [ "arrayref", "hashbrown 0.14.5", @@ -12381,22 +12651,22 @@ dependencies = [ [[package]] name = "sp1-verifier" -version = "4.0.0" +version = "4.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613b9d79e1dd8d1b584654710a462340ff6b4b1ad8762830c4c9f772892467f8" +checksum = "626324b2772bbc318d1673b31faa3880891536677d531911f497867e3c94753d" dependencies = [ "hex", "lazy_static", "sha2 0.10.8", "substrate-bn-succinct", - "thiserror 2.0.9", + "thiserror 2.0.11", ] [[package]] name = "sp1-zkvm" -version = "4.0.0" +version = "4.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78c9380c49efdf34e6454a735922f794bb1d4b11114c302675087f110c207b56" +checksum = "f971db10d58b13c9a5d8cee4f7d1195d6f8a2debb9c33bd67f4eea5817432d42" dependencies = [ "cfg-if", "getrandom", @@ -12415,9 +12685,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" @@ -12442,7 +12709,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d904e7009df136af5297832a3ace3370cd14ff1546a232f4f185036c2736fcac" dependencies = [ "quote", - "syn 2.0.93", + "syn 2.0.96", ] [[package]] @@ -12661,7 +12928,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", @@ -12838,7 +13105,8 @@ dependencies = [ 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", @@ -12855,6 +13123,7 @@ dependencies = [ "reth-rpc-eth-api", "reth-rpc-layer", "reth-rpc-types-compat", + "revm-primitives", "serde", "serde_json", "strata-db", @@ -12947,6 +13216,7 @@ dependencies = [ "num_enum 0.7.3", "rand", "reth-primitives", + "revm-primitives", "secp256k1", "serde", "serde_json", @@ -13022,20 +13292,23 @@ dependencies = [ name = "strata-proofimpl-evm-ee-stf" version = "0.1.0" dependencies = [ - "alloy-consensus 0.4.2", - "alloy-eips 0.4.2", + "alloy-consensus 0.7.3", + "alloy-eips 0.7.3", "alloy-primitives", "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", @@ -13069,7 +13342,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", @@ -13157,7 +13430,7 @@ dependencies = [ "musig2", "pyo3", "pyo3-build-config", - "reth-primitives", + "revm-primitives", "secp256k1", "shrex", "strata-btcio", @@ -13172,8 +13445,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", @@ -13208,7 +13481,7 @@ dependencies = [ "anyhow", "bincode", "borsh", - "reth-primitives", + "revm-primitives", "rockbound", "serde", "serde_json", @@ -13237,8 +13510,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", @@ -13251,11 +13524,14 @@ 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 1.0.69", "tokio", @@ -13266,21 +13542,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", @@ -13295,7 +13580,7 @@ name = "strata-reth-primitives" version = "0.1.0" dependencies = [ "alloy-sol-types", - "reth-primitives", + "revm-primitives", "serde", ] @@ -13303,11 +13588,12 @@ dependencies = [ name = "strata-reth-rpc" version = "0.1.0" dependencies = [ - "alloy-eips 0.4.2", - "alloy-network 0.4.2", + "alloy-consensus 0.7.3", + "alloy-eips 0.7.3", + "alloy-network 0.7.3", "alloy-primitives", - "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", "bincode", "eyre", "hex", @@ -13330,6 +13616,7 @@ dependencies = [ "reth-tasks", "reth-transaction-pool", "revm", + "revm-primitives", "serde", "serde_json", "strata-proofimpl-evm-ee-stf", @@ -13675,7 +13962,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.93", + "syn 2.0.96", ] [[package]] @@ -13739,9 +14026,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.93" +version = "2.0.96" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c786062daee0d6db1132800e623df74274a0a87322d8e183338e01b3d98d058" +checksum = "d5d0adab1ae378d7f53bdebc67a39f1f151407ef230f0ce2883572f5d8985c80" dependencies = [ "proc-macro2", "quote", @@ -13750,14 +14037,14 @@ dependencies = [ [[package]] name = "syn-solidity" -version = "0.8.15" +version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "219389c1ebe89f8333df8bdfb871f6631c552ff399c23cac02480b6088aad8f0" +checksum = "b84e4d83a0a6704561302b917a932484e1cae2d8c6354c64be8b7bac1c1fe057" dependencies = [ "paste", "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.96", ] [[package]] @@ -13783,7 +14070,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.96", ] [[package]] @@ -13803,9 +14090,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", @@ -13831,7 +14118,7 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "core-foundation 0.9.4", "system-configuration-sys 0.6.0", ] @@ -13856,6 +14143,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" @@ -13881,12 +14174,13 @@ checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" [[package]] name = "tempfile" -version = "3.14.0" +version = "3.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c" +checksum = "9a8a559c81686f576e8cd0290cd2a24a2a9ad80c98b3478856500fcbd7acd704" dependencies = [ "cfg-if", "fastrand", + "getrandom", "once_cell", "rustix", "windows-sys 0.59.0", @@ -13921,11 +14215,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.9" +version = "2.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f072643fd0190df67a8bab670c20ef5d8737177d6ac6b2e9a236cb096206b2cc" +checksum = "d452f284b73e6d76dd36758a0c8684b1d5be31f92b89d07fd5822175732206fc" dependencies = [ - "thiserror-impl 2.0.9", + "thiserror-impl 2.0.11", ] [[package]] @@ -13936,38 +14230,18 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.96", ] [[package]] name = "thiserror-impl" -version = "2.0.9" +version = "2.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b50fa271071aae2e6ee85f842e2e28ba8cd2c5fb67f11fcb1fd70b276f9e7d4" +checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.93", -] - -[[package]] -name = "thiserror-impl-no-std" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58e6318948b519ba6dc2b442a6d0b904ebfb8d411a3ad3e07843615a72249758" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "thiserror-no-std" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3ad459d94dd517257cc96add8a43190ee620011bb6e6cdc82dafd97dfafafea" -dependencies = [ - "thiserror-impl-no-std", + "syn 2.0.96", ] [[package]] @@ -14090,9 +14364,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.42.0" +version = "1.43.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cec9b21b0450273377fc97bd4c33a8acffc8c996c987a7c5b319a0083707551" +checksum = "3d61fa4ffa3de412bfea335c6ecff681de2b609ba3c77ef3e00e521813a9ed9e" dependencies = [ "backtrace", "bytes", @@ -14101,20 +14375,20 @@ dependencies = [ "parking_lot 0.12.3", "pin-project-lite", "signal-hook-registry", - "socket2 0.5.8", + "socket2", "tokio-macros", "windows-sys 0.52.0", ] [[package]] name = "tokio-macros" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" +checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.96", ] [[package]] @@ -14143,7 +14417,7 @@ version = "0.26.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f6d0975eaace0cf0fcadee4e4aaa5da15b5c079146f2cffb67c113be122bf37" dependencies = [ - "rustls 0.23.20", + "rustls 0.23.21", "tokio", ] @@ -14179,7 +14453,7 @@ checksum = "c6989540ced10490aaf14e6bad2e3d33728a2813310a0c71d1574304c49631cd" dependencies = [ "futures-util", "log", - "rustls 0.23.20", + "rustls 0.23.21", "rustls-pki-types", "tokio", "tokio-rustls 0.26.1", @@ -14195,7 +14469,7 @@ checksum = "edc5f74e248dc973e0dbb7b74c7e0d6fcc301c694ff50049504004ef4d0cdcd9" dependencies = [ "futures-util", "log", - "rustls 0.23.20", + "rustls 0.23.21", "rustls-pki-types", "tokio", "tokio-rustls 0.26.1", @@ -14254,7 +14528,7 @@ version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap 2.7.0", + "indexmap 2.7.1", "toml_datetime", "winnow 0.5.40", ] @@ -14265,11 +14539,11 @@ version = "0.22.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" dependencies = [ - "indexmap 2.7.0", + "indexmap 2.7.1", "serde", "serde_spanned", "toml_datetime", - "winnow 0.6.21", + "winnow 0.6.24", ] [[package]] @@ -14295,7 +14569,7 @@ dependencies = [ "prost 0.13.4", "rustls-native-certs 0.8.1", "rustls-pemfile 2.2.0", - "socket2 0.5.8", + "socket2", "tokio", "tokio-rustls 0.26.1", "tokio-stream", @@ -14344,13 +14618,13 @@ 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", - "bitflags 2.6.0", + "base64 0.22.1", + "bitflags 2.8.0", "bytes", "futures-core", "futures-util", @@ -14366,7 +14640,7 @@ dependencies = [ "pin-project-lite", "tokio", "tokio-util", - "tower 0.4.13", + "tower 0.5.2", "tower-layer", "tower-service", "tracing", @@ -14417,7 +14691,7 @@ checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.96", ] [[package]] @@ -14545,52 +14819,6 @@ dependencies = [ "tracing-serde", ] -[[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 1.0.69", - "tinyvec", - "tokio", - "tracing", - "url", -] - -[[package]] -name = "trust-dns-resolver" -version = "0.23.2" -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 1.0.69", - "tokio", - "tracing", - "trust-dns-proto", -] - [[package]] name = "try-lock" version = "0.2.5" @@ -14610,7 +14838,7 @@ dependencies = [ "httparse", "log", "rand", - "rustls 0.23.20", + "rustls 0.23.21", "rustls-pki-types", "sha1", "thiserror 1.0.69", @@ -14630,7 +14858,7 @@ dependencies = [ "httparse", "log", "rand", - "rustls 0.23.20", + "rustls 0.23.21", "rustls-pki-types", "sha1", "thiserror 1.0.69", @@ -14683,6 +14911,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" @@ -14695,12 +14935,6 @@ version = "2.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" -[[package]] -name = "unicode-bidi" -version = "0.3.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" - [[package]] name = "unicode-ident" version = "1.0.14" @@ -14786,8 +15020,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" dependencies = [ "form_urlencoded", - "idna 1.0.3", + "idna", "percent-encoding", + "serde", ] [[package]] @@ -14816,9 +15051,9 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.11.0" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8c5f0a0af699448548ad1a2fbf920fb4bee257eae39953ba95cb84891a0446a" +checksum = "b3758f5e68192bb96cc8f9b7e2c2cfdabb435499a28499a42f8f984092adad4b" dependencies = [ "getrandom", "serde", @@ -14826,9 +15061,9 @@ dependencies = [ [[package]] name = "valuable" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" [[package]] name = "vcpkg" @@ -14902,34 +15137,35 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.99" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a474f6281d1d70c17ae7aa6a613c87fce69a127e2624002df63dcb39d6cf6396" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" dependencies = [ "cfg-if", "once_cell", + "rustversion", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.99" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f89bb38646b4f81674e8f5c3fb81b562be1fd936d84320f3264486418519c79" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" dependencies = [ "bumpalo", "log", "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.96", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.49" +version = "0.4.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38176d9b44ea84e9184eff0bc34cc167ed044f816accfe5922e54d84cf48eca2" +checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" dependencies = [ "cfg-if", "js-sys", @@ -14940,9 +15176,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.99" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cc6181fd9a7492eef6fef1f33961e3695e4579b9872a6f7c83aee556666d4fe" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -14950,22 +15186,25 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.99" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30d7a95b763d3c45903ed6c81f156801839e5ee968bb07e534c44df0fcd330c2" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.96", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.99" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "943aab3fdaaa029a6e0271b35ea10b72b943135afe9bffca82384098ad0e06a6" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] [[package]] name = "wasm-streams" @@ -14980,11 +15219,25 @@ 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.76" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04dd7223427d52553d3702c004d3b2fe07c148165faa56313cb00211e31c12bc" +checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" dependencies = [ "js-sys", "wasm-bindgen", @@ -15136,7 +15389,7 @@ checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.96", ] [[package]] @@ -15147,7 +15400,7 @@ checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.96", ] [[package]] @@ -15158,7 +15411,7 @@ checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.96", ] [[package]] @@ -15169,7 +15422,7 @@ checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" dependencies = [ "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.96", ] [[package]] @@ -15370,9 +15623,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.6.21" +version = "0.6.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6f5bb5257f2407a5425c6e749bfd9692192a73e70a6060516ac04f889087d68" +checksum = "c8d71a593cc5c42ad7876e2c1fda56f314f3754c084128833e64f1345ff8a03a" dependencies = [ "memchr", ] @@ -15429,9 +15682,9 @@ dependencies = [ [[package]] name = "xattr" -version = "1.3.1" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8da84f1a25939b27f6820d92aed108f83ff920fdf11a7b19366c27c4cda81d4f" +checksum = "e105d177a3871454f754b33bb0ee637ecaaac997446375fd3e5d43a2ed00c909" dependencies = [ "libc", "linux-raw-sys", @@ -15473,7 +15726,7 @@ checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" dependencies = [ "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.96", "synstructure", ] @@ -15495,7 +15748,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.96", ] [[package]] @@ -15515,7 +15768,7 @@ checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" dependencies = [ "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.96", "synstructure", ] @@ -15536,7 +15789,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.96", ] [[package]] @@ -15558,7 +15811,7 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.93", + "syn 2.0.96", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index acd9ddb08..822fbc59a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -124,62 +124,69 @@ strata-zkvm-hosts = { path = "crates/zkvm/hosts" } # 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-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-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 c3f2a38e5..74e07ad0a 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 216878ce3..f1c98e349 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 9c40c759e..a3905eec0 100644 --- a/crates/primitives/Cargo.toml +++ b/crates/primitives/Cargo.toml @@ -15,6 +15,7 @@ musig2 = { workspace = true, features = ["serde"] } num_enum.workspace = true 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 44aa5541d..47a68b2d6 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, Wtxid, }; -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/btc.rs b/crates/primitives/src/l1/btc.rs index 1c0509d26..9ec80d8f1 100644 --- a/crates/primitives/src/l1/btc.rs +++ b/crates/primitives/src/l1/btc.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}; 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 c3b22e8f7..aca2de2b9 100644 --- a/crates/primitives/src/utils.rs +++ b/crates/primitives/src/utils.rs @@ -85,7 +85,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 81dd56e4d..c31363381 100644 --- a/crates/proof-impl/evm-ee-stf/Cargo.toml +++ b/crates/proof-impl/evm-ee-stf/Cargo.toml @@ -17,14 +17,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, features = ["serde-bincode-compat"] } -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 6df1472fc..bd625b8e6 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/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 d28c457de..45ebe50f4 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::{constants::BRIDGEOUT_ADDRESS, 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; @@ -249,10 +249,10 @@ where .into_iter() .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 849455211..ade237246 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::EvmBlockStfInput; diff --git a/crates/reth/db/src/rocksdb/db.rs b/crates/reth/db/src/rocksdb/db.rs index 06e302479..0414c13bd 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::EvmBlockStfInput; 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 a8a6e5359..0ad271704 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, TransactionSigned, -}; +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, EvmBlockStfInput}; 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, @@ -154,11 +162,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); } @@ -171,11 +180,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 aad08d7de..1ab35d48f 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 138b0646e..25184ff73 100644 --- a/crates/util/python-utils/Cargo.toml +++ b/crates/util/python-utils/Cargo.toml @@ -22,7 +22,7 @@ bdk_wallet.workspace = true musig2.workspace = true # "abi3-py310" tells pyo3 (and maturin) to build using the stable ABI with minimum Python version 3.10 pyo3 = { version = "0.23.3", 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 52b893a03..6346687f4 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 0b3595c1f..5894152b9 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" @@ -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" @@ -2180,6 +2409,7 @@ dependencies = [ "num_enum", "rand", "reth-primitives", + "revm-primitives", "secp256k1", "serde", "serde_json", @@ -2252,6 +2482,12 @@ dependencies = [ "tracing", ] +[[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" @@ -2419,6 +2655,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" @@ -2440,7 +2707,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", ] @@ -2551,6 +2818,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" @@ -2691,3 +3021,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 f0bbc2d89ef8011ed0c2a74d4cc3b79be5fbe878 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 ++++++---- crates/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/btc.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/tasks/src/pending_tasks.rs | 2 +- 16 files changed, 65 insertions(+), 44 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 e8948b8b8..fccf0f668 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 f2b232516..3fd419962 100644 --- a/crates/consensus-logic/src/csm/state_tracker.rs +++ b/crates/consensus-logic/src/csm/state_tracker.rs @@ -100,7 +100,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 4c011a2c9..237a8f2d3 100644 --- a/crates/db/src/traits.rs +++ b/crates/db/src/traits.rs @@ -194,12 +194,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/btc.rs b/crates/primitives/src/l1/btc.rs index 9ec80d8f1..f464560d3 100644 --- a/crates/primitives/src/l1/btc.rs +++ b/crates/primitives/src/l1/btc.rs @@ -90,9 +90,10 @@ impl<'a> Arbitrary<'a> for OutputRef { Ok(OutputRef(OutPoint { txid, vout })) } } -/// 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 39e761ec8..adfe18cbf 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 0e8a4f0aa..339448702 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/tasks/src/pending_tasks.rs b/crates/tasks/src/pending_tasks.rs index a918cfad4..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 1092f0dd9cad4a3a974a446c8c4cddba95aa0e5b Mon Sep 17 00:00:00 2001 From: Evgeniy Zdanovich Date: Fri, 13 Dec 2024 17:07:52 +0100 Subject: [PATCH 3/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 29f900abd..0abc0f26f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -13563,8 +13563,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", From 2b4f076684a529a1028a10eee81b4b06060a4c04 Mon Sep 17 00:00:00 2001 From: Evgeniy Zdanovich Date: Wed, 22 Jan 2025 16:17:49 +0100 Subject: [PATCH 4/4] Rebase fixes. --- Cargo.lock | 24 ++++--------------- Cargo.toml | 3 ++- crates/proof-impl/evm-ee-stf/Cargo.toml | 4 ---- crates/proof-impl/evm-ee-stf/src/lib.rs | 5 ++-- .../proof-impl/evm-ee-stf/src/primitives.rs | 6 ++--- crates/proof-impl/evm-ee-stf/src/processor.rs | 11 ++++----- crates/reth/exex/src/prover_exex.rs | 9 +------ 7 files changed, 18 insertions(+), 44 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0abc0f26f..156c09167 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1301,15 +1301,15 @@ dependencies = [ [[package]] name = "alloy-trie" -version = "0.7.8" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6917c79e837aa7b77b7a6dae9f89cbe15313ac161c4d3cfaf8909ef21f3d22d8" +checksum = "3a5fd8fea044cc9a8c8a50bb6f28e31f0385d820f116c5b98f6f4e55d6e5590b" dependencies = [ "alloy-primitives", "alloy-rlp", "arrayvec", "derive_more", - "nybbles 0.3.4", + "nybbles", "serde", "smallvec", "tracing", @@ -6801,19 +6801,6 @@ dependencies = [ "smallvec", ] -[[package]] -name = "nybbles" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8983bb634df7248924ee0c4c3a749609b5abcb082c28fffe3254b3eb3602b307" -dependencies = [ - "alloy-rlp", - "const-hex", - "proptest", - "serde", - "smallvec", -] - [[package]] name = "objc" version = "0.2.7" @@ -9425,7 +9412,7 @@ dependencies = [ "alloy-eips 0.7.3", "alloy-primitives", "alloy-rlp", - "nybbles 0.2.1", + "nybbles", "reth-consensus", "reth-prune-types", "reth-storage-errors", @@ -10785,7 +10772,7 @@ dependencies = [ "bytes", "derive_more", "itertools 0.13.0", - "nybbles 0.2.1", + "nybbles", "reth-codecs", "reth-primitives-traits", "revm-primitives", @@ -13306,7 +13293,6 @@ dependencies = [ "k256", "reth-primitives", "reth-primitives-traits", - "reth-trie-common", "revm", "revm-primitives", "rlp", diff --git a/Cargo.toml b/Cargo.toml index 822fbc59a..b79e71895 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -139,7 +139,8 @@ alloy-rpc-types-eth = { version = "0.7.3", default-features = false, features = ] } alloy-serde = { version = "0.7.3", default-features = false } alloy-sol-types = "0.8.11" -alloy-trie = { version = "0.7", default-features = false } +# TODO: fix exact version during the next reth bump. +alloy-trie = { version = "=0.7.6", default-features = false } revm = { version = "18.0.0", features = ["std"], default-features = false } revm-primitives = { version = "14.0.0", features = [ "std", diff --git a/crates/proof-impl/evm-ee-stf/Cargo.toml b/crates/proof-impl/evm-ee-stf/Cargo.toml index c31363381..63438dfe7 100644 --- a/crates/proof-impl/evm-ee-stf/Cargo.toml +++ b/crates/proof-impl/evm-ee-stf/Cargo.toml @@ -26,10 +26,6 @@ k256 = { version = "=0.13.3", features = [ ], default-features = false } reth-primitives = { workspace = true, features = ["serde-bincode-compat"] } 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" diff --git a/crates/proof-impl/evm-ee-stf/src/lib.rs b/crates/proof-impl/evm-ee-stf/src/lib.rs index e904b16dc..fb868c938 100644 --- a/crates/proof-impl/evm-ee-stf/src/lib.rs +++ b/crates/proof-impl/evm-ee-stf/src/lib.rs @@ -25,8 +25,8 @@ use db::InMemoryDBHelper; use mpt::keccak; pub use primitives::{EvmBlockStfInput, EvmBlockStfOutput}; use processor::{EvmConfig, EvmProcessor}; -use reth_primitives::revm_primitives::alloy_primitives::B256; use revm::{primitives::SpecId, InMemoryDB}; +use revm_primitives::alloy_primitives::B256; use strata_reth_evm::collect_withdrawal_intents; use strata_zkvm::ZkVmEnv; use utils::generate_exec_update; @@ -72,8 +72,7 @@ pub fn process_block_transaction( // TODO: Optimize receipt iteration by implementing bloom filters or adding hints to // `ElBlockStfInput`. This will allow for efficient filtering of`WithdrawalIntentEvents`. let withdrawal_intents = - collect_withdrawal_intents(receipts.into_iter().map(|el| Some(el.receipt))) - .collect::>(); + collect_withdrawal_intents(receipts.into_iter().map(Some)).collect::>(); // Construct the public parameters for the proof EvmBlockStfOutput { diff --git a/crates/proof-impl/evm-ee-stf/src/primitives.rs b/crates/proof-impl/evm-ee-stf/src/primitives.rs index 32296cccb..bdcb60f32 100644 --- a/crates/proof-impl/evm-ee-stf/src/primitives.rs +++ b/crates/proof-impl/evm-ee-stf/src/primitives.rs @@ -1,11 +1,11 @@ use std::collections::HashMap; use alloy_consensus::{serde_bincode_compat as serde_bincode_compat_header, Header}; +use alloy_eips::eip4895::Withdrawal; use reth_primitives::{ - revm_primitives::alloy_primitives::{Address, Bytes, FixedBytes, B256}, - transaction::serde_bincode_compat as serde_bincode_compat_tx, - TransactionSigned, Withdrawal, + transaction::serde_bincode_compat as serde_bincode_compat_tx, TransactionSigned, }; +use revm_primitives::alloy_primitives::{Address, Bytes, FixedBytes, B256}; use serde::{Deserialize, Serialize}; use serde_with::serde_as; use strata_reth_primitives::WithdrawalIntent; diff --git a/crates/proof-impl/evm-ee-stf/src/processor.rs b/crates/proof-impl/evm-ee-stf/src/processor.rs index 45ebe50f4..256571be5 100644 --- a/crates/proof-impl/evm-ee-stf/src/processor.rs +++ b/crates/proof-impl/evm-ee-stf/src/processor.rs @@ -18,13 +18,13 @@ use std::{mem, mem::take}; use alloy_consensus::constants::{GWEI_TO_WEI, MAXIMUM_EXTRA_DATA_SIZE}; -use alloy_eips::eip1559::BaseFeeParams; +use alloy_eips::{eip1559::BaseFeeParams, eip2718::Encodable2718}; use alloy_primitives::map::DefaultHashBuilder; -use alloy_rlp::{BufMut, Encodable}; +use alloy_rlp::BufMut; use alloy_rpc_types_eth::TransactionTrait; use alloy_trie::root::ordered_trie_root_with_encoder; use anyhow::anyhow; -use reth_primitives::{Header, Receipt, ReceiptWithBloom, Transaction, TransactionSigned}; +use reth_primitives::{Header, Receipt, Transaction, TransactionSigned}; use reth_primitives_traits::{constants::MINIMUM_GAS_LIMIT, SignedTransaction}; use revm::{ db::{AccountState, InMemoryDB}, @@ -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) @@ -225,7 +225,6 @@ where // Update logs bloom. logs_bloom.accrue_bloom(&receipt.bloom_slow()); - let receipt = ReceiptWithBloom::from(receipt); receipts.push(receipt); // Commit state changes. @@ -252,7 +251,7 @@ where tx.eip2718_encode(&tx.signature, buf); }); h.receipts_root = ordered_trie_root_with_encoder(&receipts, |receipt, buf| { - receipt.encode(buf); + receipt.with_bloom_ref().encode_2718(buf); }); h.withdrawals_root = Some(ordered_trie_root_with_encoder( &self.input.withdrawals, diff --git a/crates/reth/exex/src/prover_exex.rs b/crates/reth/exex/src/prover_exex.rs index 0ad271704..75a49426f 100644 --- a/crates/reth/exex/src/prover_exex.rs +++ b/crates/reth/exex/src/prover_exex.rs @@ -140,13 +140,6 @@ fn extract_zkvm_input>(); - let prev_state_root = prev_block.state_root; let mut parent_proofs: HashMap = HashMap::new(); @@ -203,7 +196,7 @@ fn extract_zkvm_input