From 2039189c317c7847d010a0c1f3e103824d3b0f1d Mon Sep 17 00:00:00 2001 From: Sahilgill24 Date: Fri, 26 Jun 2026 05:39:41 +0530 Subject: [PATCH 01/26] feat: initialize reth-engine for embedding --- Cargo.lock | 6768 +++++++++++++++++++++++++++++++-- Cargo.toml | 2 + crates/common/reth/Cargo.toml | 29 + crates/common/reth/src/lib.rs | 1 + 4 files changed, 6541 insertions(+), 259 deletions(-) create mode 100644 crates/common/reth/Cargo.toml create mode 100644 crates/common/reth/src/lib.rs diff --git a/Cargo.lock b/Cargo.lock index e418902d7..89e10e339 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -317,18 +317,59 @@ version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" +[[package]] +name = "alloy-chains" +version = "0.2.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84e0378e959aa6a885897522080a990e80eb317f1e9a222a604492ea50e13096" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "num_enum", + "serde", + "strum", +] + [[package]] name = "alloy-consensus" version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f16daaf7e1f95f62c6c3bf8a3fc3d78b08ae9777810c0bb5e94966c7cd57ef0" dependencies = [ - "alloy-eips", + "alloy-eips 1.8.3", + "alloy-primitives", + "alloy-rlp", + "alloy-serde 1.8.3", + "alloy-trie", + "alloy-tx-macros 1.8.3", + "auto_impl", + "borsh", + "c-kzg", + "derive_more", + "either", + "k256", + "once_cell", + "rand 0.8.5", + "secp256k1 0.30.0", + "serde", + "serde_json", + "serde_with", + "thiserror 2.0.18", +] + +[[package]] +name = "alloy-consensus" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b44937ce84d2cbf1ee4010667bd9214bb7db134a91dd9ffa6b1b8b1d6b030449" +dependencies = [ + "alloy-eips 2.1.0", "alloy-primitives", "alloy-rlp", - "alloy-serde", + "alloy-serde 2.1.0", "alloy-trie", - "alloy-tx-macros", + "alloy-tx-macros 2.1.0", + "arbitrary", "auto_impl", "borsh", "c-kzg", @@ -337,7 +378,7 @@ dependencies = [ "k256", "once_cell", "rand 0.8.5", - "secp256k1", + "secp256k1 0.30.0", "serde", "serde_json", "serde_with", @@ -350,14 +391,46 @@ version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "118998d9015332ab1b4720ae1f1e3009491966a0349938a1f43ff45a8a4c6299" dependencies = [ - "alloy-consensus", - "alloy-eips", + "alloy-consensus 1.8.3", + "alloy-eips 1.8.3", "alloy-primitives", "alloy-rlp", - "alloy-serde", + "alloy-serde 1.8.3", "serde", ] +[[package]] +name = "alloy-consensus-any" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bb0bdd61ddff726026676450e7e6a52c68aa39d98f2d60d05ad7caaea5b8100" +dependencies = [ + "alloy-consensus 2.1.0", + "alloy-eips 2.1.0", + "alloy-primitives", + "alloy-rlp", + "alloy-serde 2.1.0", + "arbitrary", + "serde", +] + +[[package]] +name = "alloy-dyn-abi" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a475bb02d9cef2dbb99065c1664ab3fe1f9352e21d6d5ed3f02cdbfc06ed1abc" +dependencies = [ + "alloy-json-abi", + "alloy-primitives", + "alloy-sol-type-parser", + "alloy-sol-types", + "derive_more", + "itoa", + "serde", + "serde_json", + "winnow 1.0.1", +] + [[package]] name = "alloy-eip2124" version = "0.2.0" @@ -366,7 +439,9 @@ checksum = "741bdd7499908b3aa0b159bba11e71c8cddd009a2c2eb7a06e825f1ec87900a5" dependencies = [ "alloy-primitives", "alloy-rlp", + "arbitrary", "crc", + "rand 0.8.5", "serde", "thiserror 2.0.18", ] @@ -379,7 +454,9 @@ checksum = "9441120fa82df73e8959ae0e4ab8ade03de2aaae61be313fbf5746277847ce25" dependencies = [ "alloy-primitives", "alloy-rlp", + "arbitrary", "borsh", + "rand 0.8.5", "serde", ] @@ -391,8 +468,12 @@ checksum = "2919c5a56a1007492da313e7a3b6d45ef5edc5d33416fdec63c0d7a2702a0d20" dependencies = [ "alloy-primitives", "alloy-rlp", + "arbitrary", "borsh", + "k256", + "rand 0.8.5", "serde", + "serde_with", "thiserror 2.0.18", ] @@ -408,6 +489,21 @@ dependencies = [ "serde", ] +[[package]] +name = "alloy-eip7928" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3b12337f74cbfa451cb04dac173974814a6ff463079e1793aa09600ba8813ab" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "arbitrary", + "borsh", + "once_cell", + "serde", + "thiserror 2.0.18", +] + [[package]] name = "alloy-eips" version = "1.8.3" @@ -417,25 +513,100 @@ dependencies = [ "alloy-eip2124", "alloy-eip2930", "alloy-eip7702", - "alloy-eip7928", + "alloy-eip7928 0.3.3", + "alloy-primitives", + "alloy-rlp", + "alloy-serde 1.8.3", + "auto_impl", + "borsh", + "c-kzg", + "derive_more", + "either", + "serde", + "serde_with", + "sha2", +] + +[[package]] +name = "alloy-eips" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "154b0f566ebbfc256b63c8d643c6a299f40a6fcd50a9d756c1d191487dd06483" +dependencies = [ + "alloy-eip2124", + "alloy-eip2930", + "alloy-eip7702", + "alloy-eip7928 0.4.5", "alloy-primitives", "alloy-rlp", - "alloy-serde", + "alloy-serde 2.1.0", + "arbitrary", "auto_impl", "borsh", "c-kzg", "derive_more", "either", + "ethereum_ssz", + "ethereum_ssz_derive", "serde", "serde_with", "sha2", ] +[[package]] +name = "alloy-evm" +version = "0.36.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6e494529570a4d25eb4d1a7456d8f969c3202aceaf703e4006cec5f730aee96" +dependencies = [ + "alloy-consensus 2.1.0", + "alloy-eips 2.1.0", + "alloy-hardforks", + "alloy-primitives", + "alloy-rpc-types-engine 2.1.0", + "alloy-rpc-types-eth 2.1.0", + "alloy-sol-types", + "auto_impl", + "derive_more", + "revm", + "thiserror 2.0.18", + "tracing", +] + +[[package]] +name = "alloy-genesis" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0a930a68a6f0ac19231bc2f5f0bf13fad3a26fa7df2525354890c72366c2998" +dependencies = [ + "alloy-eips 2.1.0", + "alloy-primitives", + "alloy-serde 2.1.0", + "alloy-trie", + "borsh", + "serde", + "serde_with", +] + +[[package]] +name = "alloy-hardforks" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83ba208044232d14d4adbfa77e57d6329f51bc1acc21f5667bb7db72d88a0831" +dependencies = [ + "alloy-chains", + "alloy-eip2124", + "alloy-primitives", + "auto_impl", + "dyn-clone", + "serde", +] + [[package]] name = "alloy-json-abi" -version = "1.5.7" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9dbe713da0c737d9e5e387b0ba790eb98b14dd207fe53eef50e19a5a8ec3dac" +checksum = "7c36c9d7f9021601b04bfef14a4b64849f6d73116a4e91e071d7fbfe10247901" dependencies = [ "alloy-primitives", "alloy-sol-type-parser", @@ -443,44 +614,168 @@ dependencies = [ "serde_json", ] +[[package]] +name = "alloy-json-rpc" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e92108767c8c95b5e521570e039e374e65198c4179a98d200412c083d6c26d5" +dependencies = [ + "alloy-primitives", + "alloy-sol-types", + "http 1.4.0", + "serde", + "serde_json", + "thiserror 2.0.18", + "tracing", +] + +[[package]] +name = "alloy-network" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4546c9fae2861d4159ee3b25c44ab3edb90f21b849e86cf2086cacb1d56d8ac" +dependencies = [ + "alloy-consensus 2.1.0", + "alloy-consensus-any 2.1.0", + "alloy-eips 2.1.0", + "alloy-json-rpc", + "alloy-network-primitives 2.1.0", + "alloy-primitives", + "alloy-rpc-types-any", + "alloy-rpc-types-eth 2.1.0", + "alloy-serde 2.1.0", + "alloy-signer", + "alloy-sol-types", + "async-trait", + "auto_impl", + "derive_more", + "futures-utils-wasm", + "serde", + "serde_json", + "thiserror 2.0.18", +] + [[package]] name = "alloy-network-primitives" version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eb82711d59a43fdfd79727c99f270b974c784ec4eb5728a0d0d22f26716c87ef" dependencies = [ - "alloy-consensus", - "alloy-eips", + "alloy-consensus 1.8.3", + "alloy-eips 1.8.3", "alloy-primitives", - "alloy-serde", + "alloy-serde 1.8.3", + "serde", +] + +[[package]] +name = "alloy-network-primitives" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca2c325d5934445209c8d22fc67d27e2cf9fb79054b8154d9e522d6a4ee3a4f7" +dependencies = [ + "alloy-consensus 2.1.0", + "alloy-eips 2.1.0", + "alloy-primitives", + "alloy-serde 2.1.0", "serde", ] [[package]] name = "alloy-primitives" -version = "1.5.7" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de3b431b4e72cd8bd0ec7a50b4be18e73dab74de0dba180eef171055e5d5926e" +checksum = "4885c1409b6936c4898e646ef58baf6ec54edaf6d8179f79df805a7b85b7cf3e" dependencies = [ "alloy-rlp", + "arbitrary", "bytes", "cfg-if", "const-hex", "derive_more", "foldhash 0.2.0", - "hashbrown 0.16.1", + "getrandom 0.4.2", + "hashbrown 0.17.1", "indexmap 2.13.1", "itoa", "k256", "keccak-asm", "paste", "proptest", + "proptest-derive 0.8.0", "rand 0.9.2", "rapidhash", "ruint", "rustc-hash", + "secp256k1 0.31.1", "serde", - "sha3 0.10.8", + "sha3 0.11.0", +] + +[[package]] +name = "alloy-provider" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff4536d25780fcf51a338c26153c526c99649be1273600684ef10b397a207d4a" +dependencies = [ + "alloy-chains", + "alloy-consensus 2.1.0", + "alloy-eips 2.1.0", + "alloy-json-rpc", + "alloy-network", + "alloy-network-primitives 2.1.0", + "alloy-primitives", + "alloy-pubsub", + "alloy-rpc-client", + "alloy-rpc-types-debug", + "alloy-rpc-types-eth 2.1.0", + "alloy-rpc-types-trace", + "alloy-signer", + "alloy-sol-types", + "alloy-transport", + "alloy-transport-http", + "alloy-transport-ipc", + "alloy-transport-ws", + "async-stream", + "async-trait", + "auto_impl", + "dashmap", + "either", + "futures", + "futures-utils-wasm", + "lru", + "parking_lot", + "pin-project", + "reqwest 0.13.4", + "serde", + "serde_json", + "thiserror 2.0.18", + "tokio", + "tracing", + "url", + "wasmtimer", +] + +[[package]] +name = "alloy-pubsub" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9393d7f1fbe02ec0cff205943cf1b899200312bed0d150b2b99dc6c729203414" +dependencies = [ + "alloy-json-rpc", + "alloy-primitives", + "alloy-transport", + "auto_impl", + "bimap", + "futures", + "parking_lot", + "serde", + "serde_json", + "tokio", + "tokio-stream", + "tower", + "tracing", + "wasmtimer", ] [[package]] @@ -506,74 +801,332 @@ dependencies = [ ] [[package]] -name = "alloy-rpc-types-eth" -version = "1.8.3" +name = "alloy-rpc-client" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59c095f92c4e1ff4981d89e9aa02d5f98c762a1980ab66bec49c44be11349da2" +checksum = "7f8d765656f02f993fa0565abeb3554ccd6a0d72ea44ce0558b983136639bd6b" dependencies = [ - "alloy-consensus", - "alloy-consensus-any", - "alloy-eips", - "alloy-network-primitives", + "alloy-json-rpc", "alloy-primitives", - "alloy-rlp", - "alloy-serde", - "alloy-sol-types", - "itertools 0.14.0", + "alloy-pubsub", + "alloy-transport", + "alloy-transport-http", + "alloy-transport-ipc", + "alloy-transport-ws", + "futures", + "pin-project", + "reqwest 0.13.4", "serde", "serde_json", - "serde_with", - "thiserror 2.0.18", + "tokio", + "tokio-stream", + "tower", + "tracing", + "url", + "wasmtimer", ] [[package]] -name = "alloy-serde" -version = "1.8.3" +name = "alloy-rpc-types" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11ece63b89294b8614ab3f483560c08d016930f842bf36da56bf0b764a15c11e" +checksum = "2a05ef5b11fad72068e6f011c21445bc5b596ac850644c4a14c30d845ce56de8" +dependencies = [ + "alloy-primitives", + "alloy-rpc-types-engine 2.1.0", + "alloy-rpc-types-eth 2.1.0", + "alloy-serde 2.1.0", + "serde", +] + +[[package]] +name = "alloy-rpc-types-admin" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5df4d6f40079a2e726ed433ce8d68ced771fb408f4f943fd5182fec012f7b02b" dependencies = [ + "alloy-genesis", "alloy-primitives", "serde", "serde_json", ] [[package]] -name = "alloy-sol-macro" -version = "1.5.7" +name = "alloy-rpc-types-anvil" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab81bab693da9bb79f7a95b64b394718259fdd7e41dceeced4cad57cb71c4f6a" +checksum = "7c1fa8062c379d4fb51d28361cd02cd6a18a49fa79831c16831449b65408aa6c" dependencies = [ - "alloy-sol-macro-expander", - "alloy-sol-macro-input", - "proc-macro-error2", - "proc-macro2", - "quote", - "syn 2.0.117", + "alloy-primitives", + "alloy-rpc-types-eth 2.1.0", + "alloy-serde 2.1.0", + "serde", ] [[package]] -name = "alloy-sol-macro-expander" -version = "1.5.7" +name = "alloy-rpc-types-any" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "489f1620bb7e2483fb5819ed01ab6edc1d2f93939dce35a5695085a1afd1d699" +checksum = "b06bfe79149dd53de5b196aa3c96db0500b7cf0ed72dbd1a31bac7660bc7cc65" dependencies = [ - "alloy-sol-macro-input", - "const-hex", - "heck", - "indexmap 2.13.1", + "alloy-consensus-any 2.1.0", + "alloy-network-primitives 2.1.0", + "alloy-primitives", + "alloy-rpc-types-eth 2.1.0", + "alloy-serde 2.1.0", + "serde", + "serde_json", +] + +[[package]] +name = "alloy-rpc-types-beacon" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57af0eb1ee47312e8c92ddf2669308249015fc2cf733eb17251e7343c27b70c7" +dependencies = [ + "alloy-eips 2.1.0", + "alloy-primitives", + "alloy-rpc-types-engine 2.1.0", + "derive_more", + "ethereum_ssz", + "ethereum_ssz_derive", + "serde", + "serde_json", + "serde_with", + "thiserror 2.0.18", + "tree_hash", + "tree_hash_derive", +] + +[[package]] +name = "alloy-rpc-types-debug" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ff0a296b58194c7464aa56f2bdad065c5a24b43a6de5d62b8a985ae3969ecd0" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "derive_more", + "serde", + "serde_with", +] + +[[package]] +name = "alloy-rpc-types-engine" +version = "1.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb9b97b6e7965679ad22df297dda809b11cebc13405c1b537e5cffecc95834fa" +dependencies = [ + "alloy-consensus 1.8.3", + "alloy-eips 1.8.3", + "alloy-primitives", + "alloy-rlp", + "alloy-serde 1.8.3", + "derive_more", + "jsonwebtoken 9.3.1", + "rand 0.8.5", + "serde", + "strum", +] + +[[package]] +name = "alloy-rpc-types-engine" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "851167851209fac75c31833b3a4ec5d9c3efa2b14563605dc6a1d58f576e390c" +dependencies = [ + "alloy-consensus 2.1.0", + "alloy-eips 2.1.0", + "alloy-primitives", + "alloy-rlp", + "alloy-serde 2.1.0", + "derive_more", + "ethereum_ssz", + "ethereum_ssz_derive", + "jsonwebtoken 10.4.0", + "rand 0.8.5", + "serde", + "strum", +] + +[[package]] +name = "alloy-rpc-types-eth" +version = "1.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59c095f92c4e1ff4981d89e9aa02d5f98c762a1980ab66bec49c44be11349da2" +dependencies = [ + "alloy-consensus 1.8.3", + "alloy-consensus-any 1.8.3", + "alloy-eips 1.8.3", + "alloy-network-primitives 1.8.3", + "alloy-primitives", + "alloy-rlp", + "alloy-serde 1.8.3", + "alloy-sol-types", + "itertools 0.14.0", + "serde", + "serde_json", + "serde_with", + "thiserror 2.0.18", +] + +[[package]] +name = "alloy-rpc-types-eth" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b41d1a11f58b456c199e04591befc64cb236fa2574a7275a07b98b173727bd39" +dependencies = [ + "alloy-consensus 2.1.0", + "alloy-consensus-any 2.1.0", + "alloy-eips 2.1.0", + "alloy-network-primitives 2.1.0", + "alloy-primitives", + "alloy-rlp", + "alloy-serde 2.1.0", + "alloy-sol-types", + "arbitrary", + "itertools 0.14.0", + "serde", + "serde_json", + "serde_with", + "thiserror 2.0.18", +] + +[[package]] +name = "alloy-rpc-types-mev" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af3404fa2db0372330f451319dc000f03bd868ed5cd25b5c349d3ec16420169a" +dependencies = [ + "alloy-consensus 2.1.0", + "alloy-eips 2.1.0", + "alloy-primitives", + "alloy-rpc-types-eth 2.1.0", + "alloy-serde 2.1.0", + "serde", + "serde_json", +] + +[[package]] +name = "alloy-rpc-types-trace" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f813a34cce29d4a340633310e5da5ac182450887333be38490c51f7776543ac2" +dependencies = [ + "alloy-primitives", + "alloy-rpc-types-eth 2.1.0", + "alloy-serde 2.1.0", + "serde", + "serde_json", + "thiserror 2.0.18", +] + +[[package]] +name = "alloy-rpc-types-txpool" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6149b3ef1ec411016127baeb3ff2f479290721da9f2d936b882df50d83c3133" +dependencies = [ + "alloy-primitives", + "alloy-rpc-types-eth 2.1.0", + "alloy-serde 2.1.0", + "serde", +] + +[[package]] +name = "alloy-serde" +version = "1.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11ece63b89294b8614ab3f483560c08d016930f842bf36da56bf0b764a15c11e" +dependencies = [ + "alloy-primitives", + "serde", + "serde_json", +] + +[[package]] +name = "alloy-serde" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcf028ac8bcb161ad7c104243e710cece8e1a794f65ee6c35c4c4d693c8e80ee" +dependencies = [ + "alloy-primitives", + "arbitrary", + "serde", + "serde_json", +] + +[[package]] +name = "alloy-signer" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a5f392f2f56b2417ea6b74e1e116c6f35df5ab5fce4dc422e277d72ee18ff7b" +dependencies = [ + "alloy-primitives", + "async-trait", + "auto_impl", + "either", + "elliptic-curve", + "k256", + "thiserror 2.0.18", +] + +[[package]] +name = "alloy-signer-local" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78de3d4ed62e2c90e16be166d0ddfe41944bb5979752703199073acf976083f2" +dependencies = [ + "alloy-consensus 2.1.0", + "alloy-network", + "alloy-primitives", + "alloy-signer", + "async-trait", + "coins-bip32", + "coins-bip39", + "k256", + "rand 0.8.5", + "thiserror 2.0.18", + "zeroize", +] + +[[package]] +name = "alloy-sol-macro" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "840128ed2b2971d6d4668a553fe403a82683d3acc646c73e75887e7157408033" +dependencies = [ + "alloy-sol-macro-expander", + "alloy-sol-macro-input", "proc-macro-error2", "proc-macro2", "quote", - "sha3 0.10.8", + "syn 2.0.117", +] + +[[package]] +name = "alloy-sol-macro-expander" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63ec265e5d65d725175f6ca7711c970824c90ef9c0d1f1973711d4150ee612dd" +dependencies = [ + "alloy-sol-macro-input", + "const-hex", + "heck", + "indexmap 2.13.1", + "proc-macro-error2", + "proc-macro2", + "quote", + "sha3 0.11.0", "syn 2.0.117", "syn-solidity", ] [[package]] name = "alloy-sol-macro-input" -version = "1.5.7" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56cef806ad22d4392c5fc83cf8f2089f988eb99c7067b4e0c6f1971fc1cca318" +checksum = "89bf01077f18650876cfa682eb1f949967b5cde03f1a51c955c469d2c9b4aa67" dependencies = [ "const-hex", "dunce", @@ -587,19 +1140,19 @@ dependencies = [ [[package]] name = "alloy-sol-type-parser" -version = "1.5.7" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6df77fea9d6a2a75c0ef8d2acbdfd92286cc599983d3175ccdc170d3433d249" +checksum = "857b470ecdd2ed38beaf82ad1a38c516a8ff75266750f38b9eeed001d575241b" dependencies = [ "serde", - "winnow 0.7.15", + "winnow 1.0.1", ] [[package]] name = "alloy-sol-types" -version = "1.5.7" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64612d29379782a5dde6f4b6570d9c756d734d760c0c94c254d361e678a6591f" +checksum = "384cf252de0db2dec52821eac037a7f57e2aa33fe5b900ce6fe39973402341f1" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -607,6 +1160,84 @@ dependencies = [ "serde", ] +[[package]] +name = "alloy-transport" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39f42ee1ef30d4d3d8b4ea5794937fccfc69e2bb1cd5bcf42d62afc57b049081" +dependencies = [ + "alloy-json-rpc", + "auto_impl", + "base64 0.22.1", + "derive_more", + "futures", + "futures-utils-wasm", + "parking_lot", + "serde", + "serde_json", + "thiserror 2.0.18", + "tokio", + "tower", + "tracing", + "url", + "wasmtimer", +] + +[[package]] +name = "alloy-transport-http" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee68bc7d713e033eeaaecb8fd13d5d8a41af97226c4388930ad459285b8e9f70" +dependencies = [ + "alloy-json-rpc", + "alloy-transport", + "itertools 0.14.0", + "reqwest 0.13.4", + "serde_json", + "tower", + "tracing", + "url", +] + +[[package]] +name = "alloy-transport-ipc" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d110e862e4869de0b3a6b7f7382cf035ab5a7e0668eb56df32efd7c39eb1a5da" +dependencies = [ + "alloy-json-rpc", + "alloy-pubsub", + "alloy-transport", + "bytes", + "futures", + "interprocess", + "pin-project", + "serde", + "serde_json", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "alloy-transport-ws" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bc2011694071e6dcf8ad418479ee21c4ed0e9ca20906484ea9336b99f28a59f" +dependencies = [ + "alloy-pubsub", + "alloy-transport", + "futures", + "http 1.4.0", + "rustls 0.23.37", + "serde_json", + "tokio", + "tokio-tungstenite", + "tracing", + "url", + "ws_stream_wasm", +] + [[package]] name = "alloy-trie" version = "0.9.5" @@ -615,8 +1246,12 @@ checksum = "3f14b5d9b2c2173980202c6ff470d96e7c5e202c65a9f67884ad565226df7fbb" dependencies = [ "alloy-primitives", "alloy-rlp", + "arbitrary", + "derive_arbitrary", "derive_more", "nybbles", + "proptest", + "proptest-derive 0.7.0", "serde", "smallvec", "thiserror 2.0.18", @@ -629,7 +1264,19 @@ version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d69722eddcdf1ce096c3ab66cf8116999363f734eb36fe94a148f4f71c85da84" dependencies = [ - "darling", + "darling 0.23.0", + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "alloy-tx-macros" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc2cd27809c88c413e5542dbd5a8eff8c12f0086af920e881ae586d3a787d5e5" +dependencies = [ + "darling 0.23.0", "proc-macro2", "quote", "syn 2.0.117", @@ -710,10 +1357,27 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" [[package]] -name = "arbitrary" -version = "1.4.2" +name = "aquamarine" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f50776554130342de4836ba542aa85a4ddb361690d7e8df13774d7284c3d5c2" +dependencies = [ + "include_dir", + "itertools 0.10.5", + "proc-macro-error2", + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "arbitrary" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1" +dependencies = [ + "derive_arbitrary", +] [[package]] name = "arc-swap" @@ -724,6 +1388,57 @@ dependencies = [ "rustversion", ] +[[package]] +name = "archery" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70e0a5f99dfebb87bb342d0f53bb92c81842e100bbb915223e38349580e5441d" + +[[package]] +name = "ark-bls12-381" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3df4dcc01ff89867cd86b0da835f23c3f02738353aaee7dde7495af71363b8d5" +dependencies = [ + "ark-ec", + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", +] + +[[package]] +name = "ark-bn254" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d69eab57e8d2663efa5c63135b2af4f396d66424f88954c21104125ab6b3e6bc" +dependencies = [ + "ark-ec", + "ark-ff 0.5.0", + "ark-r1cs-std", + "ark-std 0.5.0", +] + +[[package]] +name = "ark-ec" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43d68f2d516162846c1238e755a7c4d131b892b70cc70c471a8e3ca3ed818fce" +dependencies = [ + "ahash", + "ark-ff 0.5.0", + "ark-poly", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "educe", + "fnv", + "hashbrown 0.15.5", + "itertools 0.13.0", + "num-bigint", + "num-integer", + "num-traits", + "zeroize", +] + [[package]] name = "ark-ff" version = "0.3.0" @@ -850,6 +1565,50 @@ dependencies = [ "syn 2.0.117", ] +[[package]] +name = "ark-poly" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "579305839da207f02b89cd1679e50e67b4331e2f9294a57693e5051b7703fe27" +dependencies = [ + "ahash", + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "educe", + "fnv", + "hashbrown 0.15.5", +] + +[[package]] +name = "ark-r1cs-std" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "941551ef1df4c7a401de7068758db6503598e6f01850bdb2cfdb614a1f9dbea1" +dependencies = [ + "ark-ec", + "ark-ff 0.5.0", + "ark-relations", + "ark-std 0.5.0", + "educe", + "num-bigint", + "num-integer", + "num-traits", + "tracing", +] + +[[package]] +name = "ark-relations" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec46ddc93e7af44bcab5230937635b06fb5744464dd6a7e7b083e80ebd274384" +dependencies = [ + "ark-ff 0.5.0", + "ark-std 0.5.0", + "tracing", + "tracing-subscriber 0.2.25", +] + [[package]] name = "ark-serialize" version = "0.3.0" @@ -877,12 +1636,24 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f4d068aaf107ebcd7dfb52bc748f8030e0fc930ac8e360146ca54c1203088f7" dependencies = [ + "ark-serialize-derive", "ark-std 0.5.0", "arrayvec", "digest 0.10.7", "num-bigint", ] +[[package]] +name = "ark-serialize-derive" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "213888f660fddcca0d257e88e54ac05bca01885f258ccdf695bafd77031bb69d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "ark-std" version = "0.3.0" @@ -924,6 +1695,9 @@ name = "arrayvec" version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" +dependencies = [ + "serde", +] [[package]] name = "ascii" @@ -988,6 +1762,18 @@ dependencies = [ "pin-project-lite", ] +[[package]] +name = "async-compression" +version = "0.4.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e79b3f8a79cccc2898f31920fc69f304859b3bd567490f75ebf51ae1c792a9ac" +dependencies = [ + "compression-codecs", + "compression-core", + "pin-project-lite", + "tokio", +] + [[package]] name = "async-io" version = "2.6.0" @@ -1006,6 +1792,28 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "async-stream" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" +dependencies = [ + "async-stream-impl", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-stream-impl" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "async-trait" version = "0.1.89" @@ -1017,6 +1825,17 @@ dependencies = [ "syn 2.0.117", ] +[[package]] +name = "async_io_stream" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6d7b9decdf35d8908a7e3ef02f64c5e9b1695e230154c0e8de3969142d9b94c" +dependencies = [ + "futures", + "pharos", + "rustc_version 0.4.1", +] + [[package]] name = "asynchronous-codec" version = "0.7.0" @@ -1057,6 +1876,16 @@ dependencies = [ "url", ] +[[package]] +name = "aurora-engine-modexp" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "518bc5745a6264b5fd7b09dffb9667e400ee9e2bbe18555fac75e1fe9afa0df9" +dependencies = [ + "hex", + "num", +] + [[package]] name = "auto_impl" version = "1.3.0" @@ -1074,6 +1903,29 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" +[[package]] +name = "aws-lc-rs" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ec2f1fc3ec205783a5da9a7e6c1509cc69dedf09a1949e412c1e18469326d00" +dependencies = [ + "aws-lc-sys", + "untrusted 0.7.1", + "zeroize", +] + +[[package]] +name = "aws-lc-sys" +version = "0.41.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a2f9779ce85b93ab6170dd940ad0169b5766ff848247aff13bb788b832fe3f4" +dependencies = [ + "cc", + "cmake", + "dunce", + "fs_extra", +] + [[package]] name = "backend" version = "0.1.0" @@ -1168,6 +2020,45 @@ dependencies = [ "tokio", ] +[[package]] +name = "bech32" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445" + +[[package]] +name = "bimap" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "230c5f1ca6a325a32553f8640d31ac9b49f2411e901e427570154868b46da4f7" + +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + +[[package]] +name = "bindgen" +version = "0.72.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" +dependencies = [ + "bitflags", + "cexpr", + "clang-sys", + "itertools 0.13.0", + "proc-macro2", + "quote", + "regex", + "rustc-hash", + "shlex 1.3.0", + "syn 2.0.117", +] + [[package]] name = "bip39" version = "2.2.2" @@ -1217,6 +2108,15 @@ name = "bitflags" version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" +dependencies = [ + "serde_core", +] + +[[package]] +name = "bitmaps" +version = "3.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d084b0137aaa901caf9f1e8b21daa6aa24d41cd806e111335541eff9683bd6" [[package]] name = "bitvec" @@ -1226,6 +2126,7 @@ checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" dependencies = [ "funty", "radium", + "serde", "tap", "wyz", ] @@ -1257,6 +2158,15 @@ dependencies = [ "hybrid-array", ] +[[package]] +name = "block-padding" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8894febbff9f758034a5b8e12d87918f56dfc64a8e1fe757d65e29041538d93" +dependencies = [ + "generic-array", +] + [[package]] name = "bls12_381" version = "0.8.0" @@ -1314,7 +2224,7 @@ version = "3.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6dee98b0db6a962de883bf5d20362dee4d7ca0d12fe39a7c6c73c844e1cd7c1f" dependencies = [ - "darling", + "darling 0.23.0", "ident_case", "prettyplease", "proc-macro2", @@ -1347,6 +2257,15 @@ dependencies = [ "syn 2.0.117", ] +[[package]] +name = "boyer-moore-magiclen" +version = "0.2.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43f0fdabfbc8017645223fd529c6077df2c491277e44e88ed8afd5afe54e715a" +dependencies = [ + "debug-helper", +] + [[package]] name = "brotli" version = "8.0.2" @@ -1374,6 +2293,7 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" dependencies = [ + "sha2", "tinyvec", ] @@ -1389,6 +2309,12 @@ version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7575182f7272186991736b70173b0ea045398f984bf5ebbb3804736ce1330c9d" +[[package]] +name = "bytemuck" +version = "1.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8efb64bd706a16a1bdde310ae86b351e4d21550d98d056f22f8a7f7a2183fec" + [[package]] name = "byteorder" version = "1.5.0" @@ -1413,12 +2339,23 @@ dependencies = [ "bytes", ] +[[package]] +name = "bzip2-sys" +version = "0.1.13+1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225bff33b2141874fe80d71e07d6eec4f85c5c216453dd96388240f96e1acc14" +dependencies = [ + "cc", + "pkg-config", +] + [[package]] name = "c-kzg" version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6648ed1e4ea8e8a1a4a2c78e1cda29a3fd500bc622899c340d8525ea9a76b24a" dependencies = [ + "arbitrary", "blst", "cc", "glob", @@ -1428,16 +2365,64 @@ dependencies = [ "serde", ] +[[package]] +name = "camino" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4ce8d3bd5823c7504d3f579f13e7b2f3da252fcb938c594d5680ee508bf846f" +dependencies = [ + "serde_core", +] + +[[package]] +name = "cargo-platform" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd0061da739915fae12ea00e16397555ed4371a6bb285431aab930f61b0aa4ba" +dependencies = [ + "serde", + "serde_core", +] + +[[package]] +name = "cargo_metadata" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef987d17b0a113becdd19d3d0022d04d7ef41f9efe4f3fb63ac44ba61df3ade9" +dependencies = [ + "camino", + "cargo-platform", + "semver 1.0.28", + "serde", + "serde_json", + "thiserror 2.0.18", +] + [[package]] name = "cc" -version = "1.2.59" +version = "1.2.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7a4d3ec6524d28a329fc53654bbadc9bdd7b0431f5d65f1a56ffb28a1ee5283" +checksum = "e228eec9be7c17ccb640b59b36a5cd805ea2a564a4c5e162c2f659fea30d3b96" dependencies = [ "find-msvc-tools", "jobserver", "libc", - "shlex", + "shlex 2.0.1", +] + +[[package]] +name = "cesu8" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" + +[[package]] +name = "cexpr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +dependencies = [ + "nom", ] [[package]] @@ -1494,8 +2479,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0" dependencies = [ "iana-time-zone", + "js-sys", "num-traits", "serde", + "wasm-bindgen", "windows-link", ] @@ -1516,6 +2503,17 @@ dependencies = [ "zeroize", ] +[[package]] +name = "clang-sys" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" +dependencies = [ + "glob", + "libc", + "libloading", +] + [[package]] name = "clap" version = "4.6.0" @@ -1556,6 +2554,15 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9" +[[package]] +name = "cmake" +version = "0.1.58" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0f78a02292a74a88ac736019ab962ece0bc380e3f977bf72e376c5d78ff0678" +dependencies = [ + "cc", +] + [[package]] name = "cobs" version = "0.3.0" @@ -1565,12 +2572,102 @@ dependencies = [ "thiserror 2.0.18", ] +[[package]] +name = "coins-bip32" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2073678591747aed4000dd468b97b14d7007f7936851d3f2f01846899f5ebf08" +dependencies = [ + "bs58", + "coins-core", + "digest 0.10.7", + "hmac", + "k256", + "serde", + "sha2", + "thiserror 1.0.69", +] + +[[package]] +name = "coins-bip39" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74b169b26623ff17e9db37a539fe4f15342080df39f129ef7631df7683d6d9d4" +dependencies = [ + "bitvec", + "coins-bip32", + "hmac", + "once_cell", + "pbkdf2", + "rand 0.8.5", + "sha2", + "thiserror 1.0.69", +] + +[[package]] +name = "coins-core" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b962ad8545e43a28e14e87377812ba9ae748dd4fd963f4c10e9fcc6d13475b" +dependencies = [ + "base64 0.21.7", + "bech32", + "bs58", + "const-hex", + "digest 0.10.7", + "generic-array", + "ripemd", + "serde", + "sha2", + "sha3 0.10.8", + "thiserror 1.0.69", +] + [[package]] name = "colorchoice" version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" +[[package]] +name = "combine" +version = "4.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" +dependencies = [ + "bytes", + "memchr", +] + +[[package]] +name = "compression-codecs" +version = "0.4.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce2548391e9c1929c21bf6aa2680af86fe4c1b33e6cea9ac1cfeec0bd11218cf" +dependencies = [ + "brotli", + "compression-core", + "flate2", + "memchr", + "zstd", + "zstd-safe", +] + +[[package]] +name = "compression-core" +version = "0.4.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc14f565cf027a105f7a44ccf9e5b424348421a1d8952a8fc9d499d313107789" + +[[package]] +name = "concat-kdf" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d72c1252426a83be2092dd5884a5f6e3b8e7180f6891b6263d2c21b92ec8816" +dependencies = [ + "digest 0.10.7", +] + [[package]] name = "concurrent-queue" version = "2.5.0" @@ -1660,6 +2757,16 @@ dependencies = [ "libc", ] +[[package]] +name = "core-foundation" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "core-foundation-sys" version = "0.8.7" @@ -1798,6 +2905,15 @@ dependencies = [ "crossbeam-utils", ] +[[package]] +name = "crossbeam-queue" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f58bbc28f91df819d0aa2a2c00cd19754769c2fad90579b3592b1c9ba7a3115" +dependencies = [ + "crossbeam-utils", +] + [[package]] name = "crossbeam-utils" version = "0.8.21" @@ -1899,14 +3015,38 @@ dependencies = [ "syn 2.0.117", ] +[[package]] +name = "darling" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" +dependencies = [ + "darling_core 0.20.11", + "darling_macro 0.20.11", +] + [[package]] name = "darling" version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d" dependencies = [ - "darling_core", - "darling_macro", + "darling_core 0.23.0", + "darling_macro 0.23.0", +] + +[[package]] +name = "darling_core" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.117", ] [[package]] @@ -1923,29 +3063,42 @@ dependencies = [ "syn 2.0.117", ] +[[package]] +name = "darling_macro" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" +dependencies = [ + "darling_core 0.20.11", + "quote", + "syn 2.0.117", +] + [[package]] name = "darling_macro" version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" dependencies = [ - "darling_core", + "darling_core 0.23.0", "quote", "syn 2.0.117", ] [[package]] name = "dashmap" -version = "6.1.0" +version = "6.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf" +checksum = "e6361d5c062261c78a176addb82d4c821ae42bed6089de0e12603cd25de2059c" dependencies = [ + "arbitrary", "cfg-if", "crossbeam-utils", "hashbrown 0.14.5", "lock_api", "once_cell", "parking_lot_core", + "serde", ] [[package]] @@ -1974,6 +3127,12 @@ dependencies = [ "syn 2.0.117", ] +[[package]] +name = "debug-helper" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f578e8e2c440e7297e008bb5486a3a8a194775224bbc23729b0dbdfaeebf162e" + [[package]] name = "delay_map" version = "0.4.1" @@ -2031,6 +3190,59 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "derive-where" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d08b3a0bcc0d079199cd476b2cae8435016ec11d1c0986c6901c5ac223041534" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "derive_arbitrary" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "derive_builder" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "507dfb09ea8b7fa618fcf76e953f4f5e192547945816d5358edffe39f6f94947" +dependencies = [ + "derive_builder_macro", +] + +[[package]] +name = "derive_builder_core" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d5bcf7b024d6835cfb3d473887cd966994907effbe9227e8c8219824d06c4e8" +dependencies = [ + "darling 0.20.11", + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "derive_builder_macro" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" +dependencies = [ + "derive_builder_core", + "syn 2.0.117", +] + [[package]] name = "derive_more" version = "2.1.1" @@ -2054,6 +3266,12 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "diff" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8" + [[package]] name = "digest" version = "0.9.0" @@ -2104,6 +3322,16 @@ dependencies = [ "dirs-sys", ] +[[package]] +name = "dirs-next" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" +dependencies = [ + "cfg-if", + "dirs-sys-next", +] + [[package]] name = "dirs-sys" version = "0.5.0" @@ -2112,10 +3340,21 @@ checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab" dependencies = [ "libc", "option-ext", - "redox_users", + "redox_users 0.5.2", "windows-sys 0.61.2", ] +[[package]] +name = "dirs-sys-next" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" +dependencies = [ + "libc", + "redox_users 0.4.6", + "winapi", +] + [[package]] name = "discv5" version = "0.10.4" @@ -2148,6 +3387,37 @@ dependencies = [ "zeroize", ] +[[package]] +name = "discv5" +version = "0.10.4" +source = "git+https://github.com/sigp/discv5?rev=7663c00#7663c00ee0837ea98547caaedede95d9d6736f4d" +dependencies = [ + "aes", + "aes-gcm", + "alloy-rlp", + "arrayvec", + "ctr", + "delay_map", + "enr", + "fnv", + "futures", + "hashlink 0.11.0", + "hex", + "hkdf", + "lazy_static", + "libp2p-identity", + "more-asserts", + "multiaddr", + "parking_lot", + "rand 0.8.5", + "smallvec", + "socket2 0.6.3", + "tokio", + "tracing", + "uint 0.10.0", + "zeroize", +] + [[package]] name = "displaydoc" version = "0.2.5" @@ -2159,6 +3429,12 @@ dependencies = [ "syn 2.0.117", ] +[[package]] +name = "doctest-file" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2db04e74f0a9a93103b50e90b96024c9b2bdca8bce6a632ec71b88736d3d359" + [[package]] name = "dtoa" version = "1.0.11" @@ -2233,7 +3509,7 @@ dependencies = [ name = "ef-tests" version = "0.1.0" dependencies = [ - "alloy-consensus", + "alloy-consensus 1.8.3", "alloy-primitives", "anyhow", "const-hex", @@ -2263,9 +3539,9 @@ dependencies = [ [[package]] name = "either" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" +checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e" dependencies = [ "serde", ] @@ -2326,6 +3602,7 @@ dependencies = [ "k256", "log", "rand 0.8.5", + "secp256k1 0.30.0", "serde", "sha3 0.10.8", "zeroize", @@ -2414,9 +3691,9 @@ dependencies = [ [[package]] name = "ethereum_ssz" -version = "0.10.1" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2128a84f7a3850d54ee343334e3392cca61f9f6aa9441eec481b9394b43c238b" +checksum = "e462875ad8693755ea8913d6e905715c76ea4836e2254e18c9cf0f7a8f8c2a13" dependencies = [ "alloy-primitives", "ethereum_serde_utils", @@ -2429,11 +3706,11 @@ dependencies = [ [[package]] name = "ethereum_ssz_derive" -version = "0.10.1" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd596f91cff004fc8d02be44c21c0f9b93140a04b66027ae052f5f8e05b48eba" +checksum = "daf022360bdbe9456eda5f35718a50476d5b2a0d51a97ed4eae27420737a6fba" dependencies = [ - "darling", + "darling 0.23.0", "proc-macro2", "quote", "syn 2.0.117", @@ -2470,13 +3747,34 @@ dependencies = [ "futures", "hyper 0.14.32", "hyper-rustls 0.24.2", - "hyper-timeout", + "hyper-timeout 0.4.1", "log", "pin-project", "rand 0.8.5", "tokio", ] +[[package]] +name = "evmap" +version = "11.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b8874945f036109c72242964c1174cf99434e30cfa45bf45fedc983f50046f8" +dependencies = [ + "hashbag", + "left-right", + "smallvec", +] + +[[package]] +name = "eyre" +version = "0.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cd915d99f24784cdc19fd37ef22b97e3ff0ae756c7e492e9fbfe897d61e2aec" +dependencies = [ + "indenter", + "once_cell", +] + [[package]] name = "fastrand" version = "2.4.1" @@ -2505,6 +3803,16 @@ dependencies = [ "bytes", ] +[[package]] +name = "fdlimit" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e182f7dbc2ef73d9ef67351c5fbbea084729c48362d3ce9dd44c28e32e277fe5" +dependencies = [ + "libc", + "thiserror 1.0.69", +] + [[package]] name = "ff" version = "0.13.1" @@ -2528,6 +3836,17 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" +[[package]] +name = "fixed-cache" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fe63500644ef0269fe6b744e7e5dc5c20b5eebf3d881bc2be53f194636f6583" +dependencies = [ + "equivalent", + "rapidhash", + "typeid", +] + [[package]] name = "fixed-hash" version = "0.8.0" @@ -2540,6 +3859,27 @@ dependencies = [ "static_assertions", ] +[[package]] +name = "fixed-map" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86ed19add84e8cb9e8cc5f7074de0324247149ffef0b851e215fb0edc50c229b" +dependencies = [ + "fixed-map-derive", + "serde", +] + +[[package]] +name = "fixed-map-derive" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dc7a9cb3326bafb80642c5ce99b39a2c0702d4bfa8ee8a3e773791a6cbe2407" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "flate2" version = "1.1.9" @@ -2577,6 +3917,21 @@ dependencies = [ "percent-encoding", ] +[[package]] +name = "fs_extra" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" + +[[package]] +name = "fsevent-sys" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76ee7a02da4d231650c7cea31349b889be2f45ddb3ef3032d2ec8185f6313fd2" +dependencies = [ + "libc", +] + [[package]] name = "fuchsia-cprng" version = "0.1.1" @@ -2696,6 +4051,10 @@ name = "futures-timer" version = "3.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" +dependencies = [ + "gloo-timers", + "send_wrapper 0.4.0", +] [[package]] name = "futures-util" @@ -2714,6 +4073,27 @@ dependencies = [ "slab", ] +[[package]] +name = "futures-utils-wasm" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42012b0f064e01aa58b545fe3727f90f7dd4020f4a3ea735b50344965f5a57e9" + +[[package]] +name = "generator" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3b854b0e584ead1a33f18b2fcad7cf7be18b3875c78816b753639aa501513ae" +dependencies = [ + "cc", + "cfg-if", + "libc", + "log", + "rustversion", + "windows-link", + "windows-result", +] + [[package]] name = "generic-array" version = "0.14.7" @@ -2776,6 +4156,19 @@ dependencies = [ "polyval", ] +[[package]] +name = "git2" +version = "0.20.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b88256088d75a56f8ecfa070513a775dd9107f6530ef14919dac831af9cfe2b" +dependencies = [ + "bitflags", + "libc", + "libgit2-sys", + "log", + "url", +] + [[package]] name = "git2" version = "0.21.0" @@ -2794,6 +4187,52 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" +[[package]] +name = "gloo-net" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c06f627b1a58ca3d42b45d6104bf1e1a03799df472df00988b6ba21accc10580" +dependencies = [ + "futures-channel", + "futures-core", + "futures-sink", + "gloo-utils", + "http 1.4.0", + "js-sys", + "pin-project", + "serde", + "serde_json", + "thiserror 1.0.69", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "gloo-timers" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c" +dependencies = [ + "futures-channel", + "futures-core", + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "gloo-utils" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b5555354113b18c547c1d3a98fbf7fb32a9ff4f6fa112ce823a21641a0ba3aa" +dependencies = [ + "js-sys", + "serde", + "serde_json", + "wasm-bindgen", + "web-sys", +] + [[package]] name = "gossip-validation" version = "0.1.0" @@ -2870,6 +4309,12 @@ dependencies = [ "tracing", ] +[[package]] +name = "hash-db" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d23bd4e7b5eda0d0f3a307e8b381fdc8ba9000f26fbe912250c0a4cc3956364a" + [[package]] name = "hash32" version = "0.2.1" @@ -2879,12 +4324,24 @@ dependencies = [ "byteorder", ] +[[package]] +name = "hashbag" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7040a10f52cba493ddb09926e15d10a9d8a28043708a405931fe4c6f19fac064" + [[package]] name = "hashbrown" version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +[[package]] +name = "hashbrown" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" + [[package]] name = "hashbrown" version = "0.14.5" @@ -2914,6 +4371,15 @@ dependencies = [ "allocator-api2", "equivalent", "foldhash 0.2.0", +] + +[[package]] +name = "hashbrown" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" +dependencies = [ + "foldhash 0.2.0", "serde", "serde_core", ] @@ -2945,6 +4411,16 @@ dependencies = [ "hashbrown 0.16.1", ] +[[package]] +name = "hdrhistogram" +version = "7.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "765c9198f173dd59ce26ff9f95ef0aafd0a0fe01fb9d72841bc5066a4c06511d" +dependencies = [ + "byteorder", + "num-traits", +] + [[package]] name = "heapless" version = "0.7.17" @@ -2992,6 +4468,30 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b07f60793ff0a4d9cef0f18e63b5357e06209987153a64648c972c1e5aff336f" +[[package]] +name = "hickory-net" +version = "0.26.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2295ed2f9c31e471e1428a8f88a3f0e1f4b27c15049592138d1eebe9c35b183" +dependencies = [ + "async-trait", + "cfg-if", + "data-encoding", + "futures-channel", + "futures-io", + "futures-util", + "hickory-proto 0.26.1", + "idna", + "ipnet", + "jni 0.22.4", + "rand 0.10.0", + "thiserror 2.0.18", + "tinyvec", + "tokio", + "tracing", + "url", +] + [[package]] name = "hickory-proto" version = "0.25.2" @@ -3018,6 +4518,27 @@ dependencies = [ "url", ] +[[package]] +name = "hickory-proto" +version = "0.26.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bab31817bfb44672a252e97fe81cd0c18d1b2cf892108922f6818820df8c643" +dependencies = [ + "data-encoding", + "idna", + "ipnet", + "jni 0.22.4", + "once_cell", + "prefix-trie", + "rand 0.10.0", + "ring", + "serde", + "thiserror 2.0.18", + "tinyvec", + "tracing", + "url", +] + [[package]] name = "hickory-resolver" version = "0.25.2" @@ -3026,7 +4547,7 @@ checksum = "dc62a9a99b0bfb44d2ab95a7208ac952d31060efc16241c87eaf36406fecf87a" dependencies = [ "cfg-if", "futures-util", - "hickory-proto", + "hickory-proto 0.25.2", "ipconfig", "moka", "once_cell", @@ -3039,6 +4560,33 @@ dependencies = [ "tracing", ] +[[package]] +name = "hickory-resolver" +version = "0.26.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0d58d28879ceecde6607729660c2667a081ccdc082e082675042793960f178c" +dependencies = [ + "cfg-if", + "futures-util", + "hickory-net", + "hickory-proto 0.26.1", + "ipconfig", + "ipnet", + "jni 0.22.4", + "moka", + "ndk-context", + "once_cell", + "parking_lot", + "rand 0.10.0", + "resolv-conf", + "serde", + "smallvec", + "system-configuration", + "thiserror 2.0.18", + "tokio", + "tracing", +] + [[package]] name = "hkdf" version = "0.12.4" @@ -3112,6 +4660,12 @@ dependencies = [ "pin-project-lite", ] +[[package]] +name = "http-range-header" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9171a2ea8a68358193d15dd5d70c1c10a2afc3e7e4c5bc92bc9f025cebd7359c" + [[package]] name = "httparse" version = "1.10.1" @@ -3124,6 +4678,22 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" +[[package]] +name = "humantime" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "135b12329e5e3ce057a9f972339ea52bc954fe1e9358ef27f95e89716fbc5424" + +[[package]] +name = "humantime-serde" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57a3db5ea5923d99402c94e9feb261dc5ee9b4efa158b0315f788cf549cc200c" +dependencies = [ + "humantime", + "serde", +] + [[package]] name = "hybrid-array" version = "0.4.10" @@ -3171,6 +4741,7 @@ dependencies = [ "http 1.4.0", "http-body 1.0.1", "httparse", + "httpdate", "itoa", "pin-project-lite", "smallvec", @@ -3189,7 +4760,7 @@ dependencies = [ "hyper 0.14.32", "log", "rustls 0.21.12", - "rustls-native-certs", + "rustls-native-certs 0.6.3", "tokio", "tokio-rustls 0.24.1", ] @@ -3203,12 +4774,14 @@ dependencies = [ "http 1.4.0", "hyper 1.9.0", "hyper-util", + "log", "rustls 0.23.37", + "rustls-native-certs 0.8.4", "rustls-pki-types", "tokio", "tokio-rustls 0.26.4", "tower-service", - "webpki-roots", + "webpki-roots 1.0.6", ] [[package]] @@ -3223,6 +4796,19 @@ dependencies = [ "tokio-io-timeout", ] +[[package]] +name = "hyper-timeout" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0" +dependencies = [ + "hyper 1.9.0", + "hyper-util", + "pin-project-lite", + "tokio", + "tower-service", +] + [[package]] name = "hyper-util" version = "0.1.20" @@ -3385,6 +4971,16 @@ dependencies = [ "icu_properties", ] +[[package]] +name = "if-addrs" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf39cc0423ee66021dc5eccface85580e4a001e0c5288bae8bea7ecb69225e90" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + [[package]] name = "if-addrs" version = "0.15.0" @@ -3402,10 +4998,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "71c02a5161c313f0cbdbadc511611893584a10a7b6153cb554bdf83ddce99ec2" dependencies = [ "async-io", - "core-foundation", + "core-foundation 0.9.4", "fnv", "futures", - "if-addrs", + "if-addrs 0.15.0", "ipnet", "log", "netlink-packet-core", @@ -3439,6 +5035,31 @@ dependencies = [ "xmltree", ] +[[package]] +name = "imbl" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e525189e5f603908d0c6e0d402cb5de9c4b2c8866151fabc4ebd771ed2630a2e" +dependencies = [ + "archery", + "bitmaps", + "imbl-sized-chunks", + "rand_core 0.9.5", + "rand_xoshiro", + "serde_core", + "version_check", + "wide", +] + +[[package]] +name = "imbl-sized-chunks" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f4241005618a62f8d57b2febd02510fb96e0137304728543dfc5fd6f052c22d" +dependencies = [ + "bitmaps", +] + [[package]] name = "impl-codec" version = "0.6.0" @@ -3484,6 +5105,12 @@ dependencies = [ "quote", ] +[[package]] +name = "indenter" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "964de6e86d545b246d84badc0fef527924ace5134f30641c203ef52ba83f58d5" + [[package]] name = "indexmap" version = "1.9.3" @@ -3501,21 +5128,58 @@ version = "2.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "45a8a2b9cb3e0b0c1803dbb0758ffac5de2f425b23c28f518faabd9d805342ff" dependencies = [ + "arbitrary", "equivalent", "hashbrown 0.16.1", "serde", "serde_core", ] +[[package]] +name = "inotify" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "533e68a5842e734946fe159fb03fc9bbbb254f590dd0d8ad321ae5ff7beca2c1" +dependencies = [ + "bitflags", + "inotify-sys", + "libc", +] + +[[package]] +name = "inotify-sys" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb" +dependencies = [ + "libc", +] + [[package]] name = "inout" version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" dependencies = [ + "block-padding", "generic-array", ] +[[package]] +name = "interprocess" +version = "2.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "069323743400cb7ab06a8fe5c1ed911d36b6919ec531661d034c89083629595b" +dependencies = [ + "doctest-file", + "futures-core", + "libc", + "recvmsg", + "tokio", + "widestring", + "windows-sys 0.61.2", +] + [[package]] name = "ipconfig" version = "0.3.4" @@ -3534,6 +5198,9 @@ name = "ipnet" version = "2.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2" +dependencies = [ + "serde", +] [[package]] name = "iri-string" @@ -3585,14 +5252,88 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] -name = "jobserver" -version = "0.1.34" +name = "jni" +version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" +checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" dependencies = [ - "getrandom 0.3.4", - "libc", -] + "cesu8", + "cfg-if", + "combine", + "jni-sys 0.3.1", + "log", + "thiserror 1.0.69", + "walkdir", + "windows-sys 0.45.0", +] + +[[package]] +name = "jni" +version = "0.22.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5efd9a482cf3a427f00d6b35f14332adc7902ce91efb778580e180ff90fa3498" +dependencies = [ + "cfg-if", + "combine", + "jni-macros", + "jni-sys 0.4.1", + "log", + "simd_cesu8", + "thiserror 2.0.18", + "walkdir", + "windows-link", +] + +[[package]] +name = "jni-macros" +version = "0.22.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a00109accc170f0bdb141fed3e393c565b6f5e072365c3bd58f5b062591560a3" +dependencies = [ + "proc-macro2", + "quote", + "rustc_version 0.4.1", + "simd_cesu8", + "syn 2.0.117", +] + +[[package]] +name = "jni-sys" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41a652e1f9b6e0275df1f15b32661cf0d4b78d4d87ddec5e0c3c20f097433258" +dependencies = [ + "jni-sys 0.4.1", +] + +[[package]] +name = "jni-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6377a88cb3910bee9b0fa88d4f42e1d2da8e79915598f65fb0c7ee14c878af2" +dependencies = [ + "jni-sys-macros", +] + +[[package]] +name = "jni-sys-macros" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" +dependencies = [ + "quote", + "syn 2.0.117", +] + +[[package]] +name = "jobserver" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" +dependencies = [ + "getrandom 0.3.4", + "libc", +] [[package]] name = "js-sys" @@ -3606,6 +5347,178 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "jsonrpsee" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f3f48dc3e6b8bd21e15436c1ddd0bc22a6a54e8ec46fedd6adf3425f396ec6a" +dependencies = [ + "jsonrpsee-client-transport", + "jsonrpsee-core", + "jsonrpsee-http-client", + "jsonrpsee-proc-macros", + "jsonrpsee-server", + "jsonrpsee-types", + "jsonrpsee-wasm-client", + "jsonrpsee-ws-client", + "tokio", + "tracing", +] + +[[package]] +name = "jsonrpsee-client-transport" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf36eb27f8e13fa93dcb50ccb44c417e25b818cfa1a481b5470cd07b19c60b98" +dependencies = [ + "base64 0.22.1", + "futures-channel", + "futures-util", + "gloo-net", + "http 1.4.0", + "jsonrpsee-core", + "pin-project", + "rustls 0.23.37", + "rustls-pki-types", + "rustls-platform-verifier 0.5.3", + "soketto", + "thiserror 2.0.18", + "tokio", + "tokio-rustls 0.26.4", + "tokio-util", + "tracing", + "url", +] + +[[package]] +name = "jsonrpsee-core" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "316c96719901f05d1137f19ba598b5fe9c9bc39f4335f67f6be8613921946480" +dependencies = [ + "async-trait", + "bytes", + "futures-timer", + "futures-util", + "http 1.4.0", + "http-body 1.0.1", + "http-body-util", + "jsonrpsee-types", + "parking_lot", + "pin-project", + "rand 0.9.2", + "rustc-hash", + "serde", + "serde_json", + "thiserror 2.0.18", + "tokio", + "tokio-stream", + "tower", + "tracing", + "wasm-bindgen-futures", +] + +[[package]] +name = "jsonrpsee-http-client" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "790bedefcec85321e007ff3af84b4e417540d5c87b3c9779b9e247d1bcc3dab8" +dependencies = [ + "base64 0.22.1", + "http-body 1.0.1", + "hyper 1.9.0", + "hyper-rustls 0.27.7", + "hyper-util", + "jsonrpsee-core", + "jsonrpsee-types", + "rustls 0.23.37", + "rustls-platform-verifier 0.5.3", + "serde", + "serde_json", + "thiserror 2.0.18", + "tokio", + "tower", + "url", +] + +[[package]] +name = "jsonrpsee-proc-macros" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2da3f8ab5ce1bb124b6d082e62dffe997578ceaf0aeb9f3174a214589dc00f07" +dependencies = [ + "heck", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "jsonrpsee-server" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c51b7c290bb68ce3af2d029648148403863b982f138484a73f02a9dd52dbd7f" +dependencies = [ + "futures-util", + "http 1.4.0", + "http-body 1.0.1", + "http-body-util", + "hyper 1.9.0", + "hyper-util", + "jsonrpsee-core", + "jsonrpsee-types", + "pin-project", + "route-recognizer", + "serde", + "serde_json", + "soketto", + "thiserror 2.0.18", + "tokio", + "tokio-stream", + "tokio-util", + "tower", + "tracing", +] + +[[package]] +name = "jsonrpsee-types" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc88ff4688e43cc3fa9883a8a95c6fa27aa2e76c96e610b737b6554d650d7fd5" +dependencies = [ + "http 1.4.0", + "serde", + "serde_json", + "thiserror 2.0.18", +] + +[[package]] +name = "jsonrpsee-wasm-client" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7902885de4779f711a95d82c8da2d7e5f9f3a7c7cfa44d51c067fd1c29d72a3c" +dependencies = [ + "jsonrpsee-client-transport", + "jsonrpsee-core", + "jsonrpsee-types", + "tower", +] + +[[package]] +name = "jsonrpsee-ws-client" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b6fceceeb05301cc4c065ab3bd2fa990d41ff4eb44e4ca1b30fa99c057c3e79" +dependencies = [ + "http 1.4.0", + "jsonrpsee-client-transport", + "jsonrpsee-core", + "jsonrpsee-types", + "tower", + "url", +] + [[package]] name = "jsonwebtoken" version = "9.3.1" @@ -3621,6 +5534,24 @@ dependencies = [ "simple_asn1", ] +[[package]] +name = "jsonwebtoken" +version = "10.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eba32bfb4ffdeaca3e34431072faf01745c9b26d25504aa7a6cf5684334fc4fc" +dependencies = [ + "aws-lc-rs", + "base64 0.22.1", + "getrandom 0.2.17", + "js-sys", + "pem", + "serde", + "serde_json", + "signature", + "simple_asn1", + "zeroize", +] + [[package]] name = "k256" version = "0.13.4" @@ -3665,6 +5596,26 @@ dependencies = [ "sha3-asm", ] +[[package]] +name = "kqueue" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "273c0752728918e0ac4976f2b275b6fefb9ecd400585dec929419f3844cd87b5" +dependencies = [ + "kqueue-sys", + "libc", +] + +[[package]] +name = "kqueue-sys" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07293a4e297ac234359b510362495713f75ea345d5307140414f20c69ffeb087" +dependencies = [ + "bitflags", + "libc", +] + [[package]] name = "kzg" version = "0.1.0" @@ -3747,7 +5698,7 @@ dependencies = [ "ssz_types", "tokio", "tracing", - "tracing-subscriber", + "tracing-subscriber 0.3.23", "tree_hash", ] @@ -3923,6 +5874,17 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" +[[package]] +name = "left-right" +version = "0.11.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f0c21e4c8ff95f487fb34e6f9182875f42c84cef966d29216bf115d9bba835a" +dependencies = [ + "crossbeam-utils", + "loom", + "slab", +] + [[package]] name = "libc" version = "0.2.184" @@ -3941,6 +5903,16 @@ dependencies = [ "pkg-config", ] +[[package]] +name = "libloading" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" +dependencies = [ + "cfg-if", + "windows-link", +] + [[package]] name = "libm" version = "0.2.16" @@ -4037,7 +6009,7 @@ checksum = "0b770c1c8476736ca98c578cba4b505104ff8e842c2876b528925f9766379f9a" dependencies = [ "async-trait", "futures", - "hickory-resolver", + "hickory-resolver 0.25.2", "libp2p-core", "libp2p-identity", "parking_lot", @@ -4155,7 +6127,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c66872d0f1ffcded2788683f76931be1c52e27f343edb93bc6d0bcd8887be443" dependencies = [ "futures", - "hickory-proto", + "hickory-proto 0.25.2", "if-watch", "libp2p-core", "libp2p-identity", @@ -4379,6 +6351,17 @@ dependencies = [ "yamux 0.13.10", ] +[[package]] +name = "libproc" +version = "0.14.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a54ad7278b8bc5301d5ffd2a94251c004feb971feba96c971ea4063645990757" +dependencies = [ + "bindgen", + "errno", + "libc", +] + [[package]] name = "libredox" version = "0.1.15" @@ -4388,6 +6371,21 @@ dependencies = [ "libc", ] +[[package]] +name = "librocksdb-sys" +version = "0.17.3+10.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cef2a00ee60fe526157c9023edab23943fae1ce2ab6f4abb2a807c1746835de9" +dependencies = [ + "bindgen", + "bzip2-sys", + "cc", + "libc", + "libz-sys", + "lz4-sys", + "zstd-sys", +] + [[package]] name = "libz-sys" version = "1.1.28" @@ -4400,6 +6398,22 @@ dependencies = [ "vcpkg", ] +[[package]] +name = "linked-hash-map" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" + +[[package]] +name = "linked_hash_set" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "984fb35d06508d1e69fc91050cceba9c0b748f983e6739fa2c7a9237154c52c8" +dependencies = [ + "linked-hash-map", + "serde_core", +] + [[package]] name = "linux-raw-sys" version = "0.12.1" @@ -4436,6 +6450,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" dependencies = [ "scopeguard", + "serde", ] [[package]] @@ -4445,10 +6460,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" [[package]] -name = "lru" -version = "0.16.3" +name = "loom" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1dc47f592c06f33f8e3aea9591776ec7c9f9e4124778ff8a3c3b87159f7e593" +checksum = "419e0dc8046cb947daa77eb95ae174acfbddb7673b4151f56d1eed8e93fbfaca" +dependencies = [ + "cfg-if", + "generator", + "scoped-tls", + "tracing", + "tracing-subscriber 0.3.23", +] + +[[package]] +name = "lru" +version = "0.16.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1dc47f592c06f33f8e3aea9591776ec7c9f9e4124778ff8a3c3b87159f7e593" dependencies = [ "hashbrown 0.16.1", ] @@ -4459,6 +6487,22 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" +[[package]] +name = "lz4-sys" +version = "1.11.1+lz4-1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bd8c0d6c6ed0cd30b3652886bb8711dc4bb01d637a68105a3d5158039b418e6" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "lz4_flex" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90071f8077f8e40adfc4b7fe9cd495ce316263f19e75c2211eeff3fdf475a3d9" + [[package]] name = "lz4_flex" version = "0.13.0" @@ -4468,11 +6512,26 @@ dependencies = [ "twox-hash", ] +[[package]] +name = "mach2" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a1b95cd5421ec55b445b5ae102f5ea0e768de1f82bd3001e11f426c269c3aea" +dependencies = [ + "libc", +] + +[[package]] +name = "mach2" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dae608c151f68243f2b000364e1f7b186d9c29845f7d2d85bd31b9ad77ad552b" + [[package]] name = "macro-string" -version = "0.1.4" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b27834086c65ec3f9387b096d66e99f221cf081c2b738042aa252bcd41204e3" +checksum = "59a9dbbfc75d2688ed057456ce8a3ee3f48d12eec09229f560f3643b9f275653" dependencies = [ "proc-macro2", "quote", @@ -4505,12 +6564,100 @@ version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" +[[package]] +name = "memmap2" +version = "0.9.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1219ed1b7f229ee7104d281dd01d6802fe28bb6e95d292942c4daacdeb798c0" +dependencies = [ + "libc", +] + +[[package]] +name = "metrics" +version = "0.24.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89550ee9f79e88fef3119de263694973a8adb26c21d75322164fb8c493039fe2" +dependencies = [ + "portable-atomic", + "rapidhash", +] + +[[package]] +name = "metrics-derive" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "161ab904c2c62e7bda0f7562bf22f96440ca35ff79e66c800cbac298f2f4f5ec" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "metrics-exporter-prometheus" +version = "0.18.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1db0d8f1fc9e62caebd0319e11eaec5822b0186c171568f0480b46a0137f9108" +dependencies = [ + "base64 0.22.1", + "evmap", + "indexmap 2.13.1", + "metrics", + "metrics-util", + "quanta", + "thiserror 2.0.18", +] + +[[package]] +name = "metrics-process" +version = "2.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4268d87f64a752f5a651314fc683f04da10be65701ea3e721ba4d74f79163cac" +dependencies = [ + "libc", + "libproc", + "mach2 0.6.0", + "metrics", + "once_cell", + "procfs", + "rlimit", + "windows", +] + +[[package]] +name = "metrics-util" +version = "0.20.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96f8722f8562635f92f8ed992f26df0532266eb03d5202607c20c0d7e9745e13" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", + "hashbrown 0.16.1", + "metrics", + "quanta", + "rand 0.9.2", + "rand_xoshiro", + "rapidhash", + "sketches-ddsketch", +] + [[package]] name = "mime" version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" +[[package]] +name = "mime_guess" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" +dependencies = [ + "mime", + "unicase", +] + [[package]] name = "minimal-lexical" version = "0.2.1" @@ -4539,6 +6686,27 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "modular-bitfield" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2956e537fc68236d2aa048f55704f231cc93f1c4de42fe1ecb5bd7938061fc4a" +dependencies = [ + "modular-bitfield-impl", + "static_assertions", +] + +[[package]] +name = "modular-bitfield-impl" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59b43b4fd69e3437618106f7754f34021b831a514f9e1a98ae863cabcd8d8dad" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "moka" version = "0.12.15" @@ -4860,6 +7028,12 @@ dependencies = [ "unsigned-varint 0.7.2", ] +[[package]] +name = "ndk-context" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" + [[package]] name = "netlink-packet-core" version = "0.8.1" @@ -4936,6 +7110,51 @@ dependencies = [ "minimal-lexical", ] +[[package]] +name = "nonmax" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "610a5acd306ec67f907abe5567859a3c693fb9886eb1f012ab8f2a47bef3db51" +dependencies = [ + "serde", +] + +[[package]] +name = "notify" +version = "8.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d3d07927151ff8575b7087f245456e549fea62edf0ec4e565a5ee50c8402bc3" +dependencies = [ + "bitflags", + "fsevent-sys", + "inotify", + "kqueue", + "libc", + "log", + "mio", + "notify-types", + "walkdir", + "windows-sys 0.60.2", +] + +[[package]] +name = "notify-types" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42b8cfee0e339a0337359f3c88165702ac6e600dc01c0cc9579a92d62b08477a" +dependencies = [ + "bitflags", +] + +[[package]] +name = "ntapi" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3b335231dfd352ffb0f8017f3b6027a4917f7df785ea2143d8af2adc66980ae" +dependencies = [ + "winapi", +] + [[package]] name = "nu-ansi-term" version = "0.50.3" @@ -4945,6 +7164,20 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "num" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" +dependencies = [ + "num-bigint", + "num-complex", + "num-integer", + "num-iter", + "num-rational", + "num-traits", +] + [[package]] name = "num-bigint" version = "0.4.6" @@ -4955,6 +7188,15 @@ dependencies = [ "num-traits", ] +[[package]] +name = "num-complex" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" +dependencies = [ + "num-traits", +] + [[package]] name = "num-conv" version = "0.2.1" @@ -4970,6 +7212,28 @@ dependencies = [ "num-traits", ] +[[package]] +name = "num-iter" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" +dependencies = [ + "num-bigint", + "num-integer", + "num-traits", +] + [[package]] name = "num-traits" version = "0.2.19" @@ -4990,6 +7254,27 @@ dependencies = [ "libc", ] +[[package]] +name = "num_enum" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d0bca838442ec211fa11de3a8b0e0e8f3a4522575b5c4c06ed722e005036f26" +dependencies = [ + "num_enum_derive", + "rustversion", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "680998035259dcfcafe653688bf2aa6d3e2dc05e98be6ab46afb089dc84f1df8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "num_threads" version = "0.1.7" @@ -5006,6 +7291,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0d49ff0c0d00d4a502b39df9af3a525e1efeb14b9dabb5bb83335284c1309210" dependencies = [ "alloy-rlp", + "arbitrary", "cfg-if", "proptest", "ruint", @@ -5022,6 +7308,15 @@ dependencies = [ "objc2-encode", ] +[[package]] +name = "objc2-core-foundation" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" +dependencies = [ + "bitflags", +] + [[package]] name = "objc2-encode" version = "4.1.0" @@ -5038,6 +7333,16 @@ dependencies = [ "objc2", ] +[[package]] +name = "objc2-io-kit" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33fafba39597d6dc1fb709123dfa8289d39406734be322956a69f0931c73bb15" +dependencies = [ + "libc", + "objc2-core-foundation", +] + [[package]] name = "oid-registry" version = "0.8.1" @@ -5075,6 +7380,92 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" +[[package]] +name = "openssl-probe" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe" + +[[package]] +name = "opentelemetry" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b84bcd6ae87133e903af7ef497404dda70c60d0ea14895fc8a5e6722754fc2a0" +dependencies = [ + "futures-core", + "futures-sink", + "js-sys", + "pin-project-lite", + "thiserror 2.0.18", + "tracing", +] + +[[package]] +name = "opentelemetry-http" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7a6d09a73194e6b66df7c8f1b680f156d916a1a942abf2de06823dd02b7855d" +dependencies = [ + "async-trait", + "bytes", + "http 1.4.0", + "opentelemetry", + "reqwest 0.12.28", +] + +[[package]] +name = "opentelemetry-otlp" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f69cd6acbb9af919df949cd1ec9e5e7fdc2ef15d234b6b795aaa525cc02f71f" +dependencies = [ + "http 1.4.0", + "opentelemetry", + "opentelemetry-http", + "opentelemetry-proto", + "opentelemetry_sdk", + "prost", + "reqwest 0.12.28", + "thiserror 2.0.18", + "tokio", + "tonic", + "tracing", +] + +[[package]] +name = "opentelemetry-proto" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7175df06de5eaee9909d4805a3d07e28bb752c34cab57fa9cff549da596b30f" +dependencies = [ + "opentelemetry", + "opentelemetry_sdk", + "prost", + "tonic", + "tonic-prost", +] + +[[package]] +name = "opentelemetry-semantic-conventions" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e62e29dfe041afb8ed2a6c9737ab57db4907285d999ef8ad3a59092a36bdc846" + +[[package]] +name = "opentelemetry_sdk" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e14ae4f5991976fd48df6d843de219ca6d31b01daaab2dad5af2badeded372bd" +dependencies = [ + "futures-channel", + "futures-executor", + "futures-util", + "opentelemetry", + "percent-encoding", + "rand 0.9.2", + "thiserror 2.0.18", +] + [[package]] name = "option-ext" version = "0.2.0" @@ -5261,6 +7652,16 @@ dependencies = [ "transpose", ] +[[package]] +name = "page_size" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30d5b2194ed13191c1999ae0704b7839fb18384fa22e49b57eeaa97d79ce40da" +dependencies = [ + "libc", + "winapi", +] + [[package]] name = "pairing" version = "0.23.0" @@ -5295,6 +7696,7 @@ dependencies = [ "arrayvec", "bitvec", "byte-slice-cast", + "bytes", "const_format", "impl-trait-for-tuples", "parity-scale-codec-derive", @@ -5349,6 +7751,16 @@ version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" +[[package]] +name = "pbkdf2" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" +dependencies = [ + "digest 0.10.7", + "hmac", +] + [[package]] name = "pem" version = "3.0.6" @@ -5417,20 +7829,73 @@ dependencies = [ "sha2", ] +[[package]] +name = "pharos" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9567389417feee6ce15dd6527a8a1ecac205ef62c2932bcf3d9f6fc5b78b414" +dependencies = [ + "futures", + "rustc_version 0.4.1", +] + +[[package]] +name = "phf" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1562dc717473dbaa4c1f85a36410e03c047b2e7df7f45ee938fbef64ae7fadf" +dependencies = [ + "phf_macros", + "phf_shared", + "serde", +] + +[[package]] +name = "phf_generator" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "135ace3a761e564ec88c03a77317a7c6b80bb7f7135ef2544dbe054243b89737" +dependencies = [ + "fastrand", + "phf_shared", +] + +[[package]] +name = "phf_macros" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "812f032b54b1e759ccd5f8b6677695d5268c588701effba24601f6932f8269ef" +dependencies = [ + "phf_generator", + "phf_shared", + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "phf_shared" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e57fef6bc5981e38c2ce2d63bfa546861309f875b8a75f092d1d54ae2d64f266" +dependencies = [ + "siphasher", +] + [[package]] name = "pin-project" -version = "1.1.11" +version = "1.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1749c7ed4bcaf4c3d0a3efc28538844fb29bcdd7d2b67b2be7e20ba861ff517" +checksum = "2466b2336ed02bcdca6b294417127b90ec92038d1d5c4fbeac971a922e0e0924" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.11" +version = "1.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b20ed30f105399776b9c883e68e536ef602a16ae6f596d2c473591d6ad64c6" +checksum = "c96395f0a926bc13b1c17622aaddda1ecb55d49c8f1bf9777e4d877800a43f8b" dependencies = [ "proc-macro2", "quote", @@ -5443,6 +7908,12 @@ version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + [[package]] name = "pkcs8" version = "0.10.2" @@ -5459,6 +7930,15 @@ version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" +[[package]] +name = "plain_hasher" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e19e6491bdde87c2c43d70f4c194bc8a758f2eb732df00f61e43f7362e3b4cc" +dependencies = [ + "crunchy", +] + [[package]] name = "polling" version = "3.11.0" @@ -5539,6 +8019,27 @@ dependencies = [ "zerocopy", ] +[[package]] +name = "prefix-trie" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cf6e3177f0684016a5c209b00882e15f8bdd3f3bb48f0491df10cd102d0c6e7" +dependencies = [ + "either", + "ipnet", + "num-traits", +] + +[[package]] +name = "pretty_assertions" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ae130e2f271fbc2ac3a40fb1d07180839cdbbe443c7a27e1e3c13c5cac0116d" +dependencies = [ + "diff", + "yansi", +] + [[package]] name = "prettyplease" version = "0.2.37" @@ -5609,6 +8110,30 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "procfs" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25485360a54d6861439d60facef26de713b1e126bf015ec8f98239467a2b82f7" +dependencies = [ + "bitflags", + "chrono", + "flate2", + "procfs-core", + "rustix", +] + +[[package]] +name = "procfs-core" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6401bf7b6af22f78b563665d15a22e9aef27775b79b149a66ca022468a4e405" +dependencies = [ + "bitflags", + "chrono", + "hex", +] + [[package]] name = "prometheus" version = "0.13.4" @@ -5678,6 +8203,76 @@ dependencies = [ "unarray", ] +[[package]] +name = "proptest-arbitrary-interop" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1981e49bd2432249da8b0e11e5557099a8e74690d6b94e721f7dc0bb7f3555f" +dependencies = [ + "arbitrary", + "proptest", +] + +[[package]] +name = "proptest-derive" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb6dc647500e84a25a85b100e76c85b8ace114c209432dc174f20aac11d4ed6c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "proptest-derive" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c57924a81864dddafba92e1bf92f9bf82f97096c44489548a60e888e1547549b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "prost" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "528ac67416ff8646872a3c02cad9cc4ee5dc9f9540c9b10771855c95cb2e5ae1" +dependencies = [ + "bytes", + "prost-derive", +] + +[[package]] +name = "prost-derive" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b570b25f7617e43d59005d0990ccb79e950a423952cea19671b7a876da390adf" +dependencies = [ + "anyhow", + "itertools 0.14.0", + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "quanta" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3ab5a9d756f0d97bdc89019bd2e4ea098cf9cde50ee7564dde6b81ccc8f06c7" +dependencies = [ + "crossbeam-utils", + "libc", + "once_cell", + "raw-cpuid", + "wasi", + "web-sys", + "winapi", +] + [[package]] name = "quick-error" version = "1.2.3" @@ -5733,6 +8328,7 @@ version = "0.11.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "434b42fec591c96ef50e21e886936e66d3cc3f737104fdb9b737c40ffb94c098" dependencies = [ + "aws-lc-rs", "bytes", "getrandom 0.3.4", "lru-slab", @@ -5914,15 +8510,34 @@ dependencies = [ "rand_core 0.9.5", ] +[[package]] +name = "rand_xoshiro" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f703f4665700daf5512dcca5f43afa6af89f09db47fb56be587f80636bda2d41" +dependencies = [ + "rand_core 0.9.5", +] + [[package]] name = "rapidhash" version = "4.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b5e48930979c155e2f33aa36ab3119b5ee81332beb6482199a8ecd6029b80b59" dependencies = [ + "rand 0.9.2", "rustversion", ] +[[package]] +name = "raw-cpuid" +version = "11.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "498cd0dc59d73224351ee52a95fee0f1a617a2eae0e7d9d720cc622c73a54186" +dependencies = [ + "bitflags", +] + [[package]] name = "rayon" version = "1.11.0" @@ -5973,7 +8588,7 @@ dependencies = [ "anyhow", "bip39", "clap", - "discv5", + "discv5 0.10.4 (registry+https://github.com/rust-lang/crates.io-index)", "ethereum_ssz", "hashbrown 0.16.1", "leansig", @@ -6022,7 +8637,7 @@ dependencies = [ "tikv-jemallocator", "tokio", "tracing", - "tracing-subscriber", + "tracing-subscriber 0.3.23", "tree_hash", "unicode-normalization", "url", @@ -6053,7 +8668,7 @@ dependencies = [ "ream-consensus-misc", "ream-execution-rpc-types", "ream-peer", - "reqwest", + "reqwest 0.12.28", "serde", "serde_json", "thiserror 2.0.18", @@ -6066,7 +8681,7 @@ version = "0.1.0" dependencies = [ "actix-web", "alloy-primitives", - "reqwest", + "reqwest 0.12.28", "serde", "thiserror 2.0.18", ] @@ -6168,7 +8783,7 @@ dependencies = [ "ream-fork-choice-beacon", "ream-network-spec", "ream-storage", - "reqwest", + "reqwest 0.12.28", "serde", "serde_json", "serde_yaml", @@ -6187,7 +8802,7 @@ dependencies = [ "ream-consensus-lean", "ream-consensus-misc", "ream-post-quantum-crypto", - "reqwest", + "reqwest 0.12.28", "ssz_types", "tokio", "tracing", @@ -6198,12 +8813,12 @@ dependencies = [ name = "ream-consensus-beacon" version = "0.1.0" dependencies = [ - "alloy-consensus", + "alloy-consensus 1.8.3", "alloy-primitives", "alloy-rlp", "anyhow", "async-trait", - "discv5", + "discv5 0.10.4 (registry+https://github.com/rust-lang/crates.io-index)", "ethereum_hashing 0.7.0", "ethereum_serde_utils", "ethereum_ssz", @@ -6278,7 +8893,7 @@ dependencies = [ "alloy-primitives", "alloy-rlp", "anyhow", - "discv5", + "discv5 0.10.4 (registry+https://github.com/rust-lang/crates.io-index)", "ethereum_ssz", "ethereum_ssz_derive", "futures", @@ -6322,16 +8937,16 @@ version = "0.1.0" dependencies = [ "alloy-primitives", "alloy-rlp", - "alloy-rpc-types-eth", + "alloy-rpc-types-eth 1.8.3", "anyhow", "async-trait", "ethereum_serde_utils", "ethereum_ssz", "ethereum_ssz_derive", - "jsonwebtoken", + "jsonwebtoken 9.3.1", "ream-consensus-misc", "ream-execution-rpc-types", - "reqwest", + "reqwest 0.12.28", "serde", "serde_json", "serde_yaml", @@ -6345,7 +8960,7 @@ dependencies = [ name = "ream-execution-rpc-types" version = "0.1.0" dependencies = [ - "alloy-consensus", + "alloy-consensus 1.8.3", "alloy-primitives", "alloy-rlp", "ethereum_serde_utils", @@ -6373,7 +8988,7 @@ dependencies = [ name = "ream-fork-choice-beacon" version = "0.1.0" dependencies = [ - "alloy-consensus", + "alloy-consensus 1.8.3", "alloy-primitives", "alloy-rlp", "anyhow", @@ -6412,7 +9027,7 @@ dependencies = [ name = "ream-fork-choice-lean" version = "0.1.0" dependencies = [ - "alloy-consensus", + "alloy-consensus 1.8.3", "alloy-primitives", "alloy-rlp", "anyhow", @@ -6506,7 +9121,7 @@ version = "0.1.0" dependencies = [ "alloy-primitives", "anyhow", - "discv5", + "discv5 0.10.4 (registry+https://github.com/rust-lang/crates.io-index)", "ethereum_ssz", "ethereum_ssz_derive", "libp2p", @@ -6565,8 +9180,8 @@ dependencies = [ name = "ream-node" version = "0.1.0" dependencies = [ - "vergen", - "vergen-git2", + "vergen 10.0.0", + "vergen-git2 10.0.0", ] [[package]] @@ -6588,7 +9203,7 @@ dependencies = [ "anyhow", "asynchronous-codec", "delay_map", - "discv5", + "discv5 0.10.4 (registry+https://github.com/rust-lang/crates.io-index)", "enr", "ethereum_serde_utils", "ethereum_ssz", @@ -6625,7 +9240,7 @@ dependencies = [ "tokio-io-timeout", "tokio-util", "tracing", - "tracing-subscriber", + "tracing-subscriber 0.3.23", "tracing-test", "tree_hash", "unsigned-varint 0.8.0", @@ -6643,7 +9258,7 @@ dependencies = [ name = "ream-polynomial-commitments" version = "0.1.0" dependencies = [ - "alloy-consensus", + "alloy-consensus 1.8.3", "alloy-primitives", "alloy-rlp", "anyhow", @@ -6696,7 +9311,7 @@ dependencies = [ "anyhow", "asynchronous-codec", "delay_map", - "discv5", + "discv5 0.10.4 (registry+https://github.com/rust-lang/crates.io-index)", "enr", "ethereum_serde_utils", "ethereum_ssz", @@ -6721,7 +9336,7 @@ dependencies = [ "tokio-io-timeout", "tokio-util", "tracing", - "tracing-subscriber", + "tracing-subscriber 0.3.23", "tree_hash", "unsigned-varint 0.8.0", ] @@ -6733,7 +9348,7 @@ dependencies = [ "actix-web", "actix-web-lab", "alloy-primitives", - "discv5", + "discv5 0.10.4 (registry+https://github.com/rust-lang/crates.io-index)", "ethereum_serde_utils", "ethereum_ssz", "ethereum_ssz_derive", @@ -6934,7 +9549,7 @@ dependencies = [ "ream-executor", "ream-keystore", "ream-network-spec", - "reqwest", + "reqwest 0.12.28", "serde", "serde_json", "serde_yaml", @@ -6982,7 +9597,7 @@ dependencies = [ "lean_prover 0.1.0 (git+https://github.com/leanEthereum/leanVM.git?rev=2498896ca4d32a545a98a1b1cf1ca78f7f13f553)", "lean_vm 0.1.0 (git+https://github.com/leanEthereum/leanVM.git?rev=2498896ca4d32a545a98a1b1cf1ca78f7f13f553)", "leansig_wrapper 0.1.0 (git+https://github.com/leanEthereum/leanVM.git?rev=2498896ca4d32a545a98a1b1cf1ca78f7f13f553)", - "lz4_flex", + "lz4_flex 0.13.0", "objc2", "objc2-foundation", "postcard", @@ -7006,7 +9621,7 @@ dependencies = [ "lean_prover 0.1.0 (git+https://github.com/leanEthereum/leanMultisig.git?rev=e2592df4e30fdddbbf8ae26a333116c68cec7026)", "lean_vm 0.1.0 (git+https://github.com/leanEthereum/leanMultisig.git?rev=e2592df4e30fdddbbf8ae26a333116c68cec7026)", "leansig_wrapper 0.1.0 (git+https://github.com/leanEthereum/leanMultisig.git?rev=e2592df4e30fdddbbf8ae26a333116c68cec7026)", - "lz4_flex", + "lz4_flex 0.13.0", "objc2", "objc2-foundation", "postcard", @@ -7019,6 +9634,12 @@ dependencies = [ "zk-alloc 0.1.0 (git+https://github.com/leanEthereum/leanMultisig.git?rev=e2592df4e30fdddbbf8ae26a333116c68cec7026)", ] +[[package]] +name = "recvmsg" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3edd4d5d42c92f0a659926464d4cce56b562761267ecf0f469d85b7de384175" + [[package]] name = "redb" version = "3.1.3" @@ -7037,6 +9658,17 @@ dependencies = [ "bitflags", ] +[[package]] +name = "redox_users" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" +dependencies = [ + "getrandom 0.2.17", + "libredox", + "thiserror 1.0.69", +] + [[package]] name = "redox_users" version = "0.5.2" @@ -7049,118 +9681,2888 @@ dependencies = [ ] [[package]] -name = "ref-cast" -version = "1.0.25" +name = "ref-cast" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d" +dependencies = [ + "ref-cast-impl", +] + +[[package]] +name = "ref-cast-impl" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "regex" +version = "1.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-lite" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cab834c73d247e67f4fae452806d17d3c7501756d98c8808d7c9c7aa7d18f973" + +[[package]] +name = "regex-syntax" +version = "0.8.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" + +[[package]] +name = "relative-path" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba39f3699c378cd8970968dcbff9c43159ea4cfbd88d43c00b22f2ef10a435d2" + +[[package]] +name = "remove_dir_all" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" +dependencies = [ + "winapi", +] + +[[package]] +name = "reqwest" +version = "0.12.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147" +dependencies = [ + "base64 0.22.1", + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "http 1.4.0", + "http-body 1.0.1", + "http-body-util", + "hyper 1.9.0", + "hyper-rustls 0.27.7", + "hyper-util", + "js-sys", + "log", + "percent-encoding", + "pin-project-lite", + "quinn", + "rustls 0.23.37", + "rustls-native-certs 0.8.4", + "rustls-pki-types", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tokio-rustls 0.26.4", + "tower", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "webpki-roots 1.0.6", +] + +[[package]] +name = "reqwest" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "219c5811de6525e5416c7d5d53bb656d3afdbc6c5af816e0802bcfa42dbdc1c3" +dependencies = [ + "base64 0.22.1", + "bytes", + "futures-core", + "futures-util", + "http 1.4.0", + "http-body 1.0.1", + "http-body-util", + "hyper 1.9.0", + "hyper-rustls 0.27.7", + "hyper-util", + "js-sys", + "log", + "percent-encoding", + "pin-project-lite", + "quinn", + "rustls 0.23.37", + "rustls-pki-types", + "rustls-platform-verifier 0.7.0", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tokio-rustls 0.26.4", + "tokio-util", + "tower", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-streams", + "web-sys", +] + +[[package]] +name = "resolv-conf" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e061d1b48cb8d38042de4ae0a7a6401009d6143dc80d2e2d6f31f0bdd6470c7" + +[[package]] +name = "reth-basic-payload-builder" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-consensus 2.1.0", + "alloy-eips 2.1.0", + "alloy-primitives", + "futures-core", + "futures-util", + "metrics", + "reth-chain-state", + "reth-execution-cache", + "reth-metrics", + "reth-payload-builder", + "reth-payload-builder-primitives", + "reth-payload-primitives", + "reth-primitives-traits", + "reth-revm", + "reth-storage-api", + "reth-tasks", + "reth-trie-parallel", + "serde", + "tokio", + "tracing", +] + +[[package]] +name = "reth-chain-state" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-consensus 2.1.0", + "alloy-eips 2.1.0", + "alloy-primitives", + "alloy-signer", + "alloy-signer-local", + "derive_more", + "metrics", + "parking_lot", + "pin-project", + "rand 0.9.2", + "rayon", + "reth-chainspec", + "reth-errors", + "reth-ethereum-primitives", + "reth-execution-types", + "reth-metrics", + "reth-primitives-traits", + "reth-storage-api", + "reth-tasks", + "reth-trie", + "revm-database", + "revm-state", + "serde", + "tokio", + "tokio-stream", + "tracing", +] + +[[package]] +name = "reth-chainspec" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-chains", + "alloy-consensus 2.1.0", + "alloy-eips 2.1.0", + "alloy-evm", + "alloy-genesis", + "alloy-primitives", + "alloy-trie", + "auto_impl", + "derive_more", + "reth-ethereum-forks", + "reth-network-peers", + "reth-primitives-traits", + "serde_json", +] + +[[package]] +name = "reth-cli-util" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-eips 2.1.0", + "alloy-primitives", + "cfg-if", + "eyre", + "libc", + "rand 0.8.5", + "reth-fs-util", + "secp256k1 0.30.0", + "serde", + "thiserror 2.0.18", +] + +[[package]] +name = "reth-codecs" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9c37bb4d1bac98661bf9128e1141b969034640d68697b22f70377e492fd332c" +dependencies = [ + "alloy-consensus 2.1.0", + "alloy-eips 2.1.0", + "alloy-genesis", + "alloy-primitives", + "alloy-trie", + "arbitrary", + "bytes", + "modular-bitfield", + "parity-scale-codec", + "reth-codecs-derive", + "reth-zstd-compressors", + "serde", + "visibility", +] + +[[package]] +name = "reth-codecs-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ceeb8dab90194305d3f7e3f043a22d2db1fb54b6dcf5d8e75c5a4fa8540e1f57" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "reth-config" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "eyre", + "humantime-serde", + "reth-network-types", + "reth-prune-types", + "reth-stages-types", + "reth-static-file-types", + "serde", + "toml", + "url", +] + +[[package]] +name = "reth-consensus" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-consensus 2.1.0", + "alloy-eip7928 0.4.5", + "alloy-primitives", + "auto_impl", + "reth-execution-types", + "reth-primitives-traits", + "thiserror 2.0.18", +] + +[[package]] +name = "reth-consensus-common" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-consensus 2.1.0", + "alloy-eips 2.1.0", + "alloy-primitives", + "reth-chainspec", + "reth-consensus", + "reth-primitives-traits", +] + +[[package]] +name = "reth-consensus-debug-client" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-consensus 2.1.0", + "alloy-eips 2.1.0", + "alloy-json-rpc", + "alloy-primitives", + "alloy-provider", + "alloy-rpc-types-engine 2.1.0", + "alloy-transport", + "auto_impl", + "derive_more", + "eyre", + "futures", + "reqwest 0.13.4", + "reth-node-api", + "reth-tracing", + "ringbuffer", + "serde", + "serde_json", + "tokio", +] + +[[package]] +name = "reth-db" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-primitives", + "derive_more", + "eyre", + "libc", + "metrics", + "page_size", + "parking_lot", + "quanta", + "reth-db-api", + "reth-fs-util", + "reth-libmdbx", + "reth-metrics", + "reth-nippy-jar", + "reth-static-file-types", + "reth-storage-errors", + "reth-tracing", + "rustc-hash", + "strum", + "sysinfo", + "tempfile", + "thiserror 2.0.18", + "tracing", +] + +[[package]] +name = "reth-db-api" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-consensus 2.1.0", + "alloy-primitives", + "arbitrary", + "arrayvec", + "bytes", + "derive_more", + "metrics", + "modular-bitfield", + "proptest", + "reth-codecs", + "reth-db-models", + "reth-ethereum-primitives", + "reth-primitives-traits", + "reth-prune-types", + "reth-stages-types", + "reth-storage-errors", + "reth-trie-common", + "roaring", + "serde", +] + +[[package]] +name = "reth-db-common" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-consensus 2.1.0", + "alloy-genesis", + "alloy-primitives", + "boyer-moore-magiclen", + "eyre", + "reth-chainspec", + "reth-codecs", + "reth-config", + "reth-db-api", + "reth-etl", + "reth-execution-errors", + "reth-fs-util", + "reth-node-types", + "reth-primitives-traits", + "reth-provider", + "reth-stages-types", + "reth-static-file-types", + "reth-trie", + "reth-trie-db", + "serde", + "serde_json", + "thiserror 2.0.18", + "tracing", +] + +[[package]] +name = "reth-db-models" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-eips 2.1.0", + "alloy-primitives", + "arbitrary", + "bytes", + "modular-bitfield", + "reth-codecs", + "reth-primitives-traits", + "serde", +] + +[[package]] +name = "reth-discv4" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "discv5 0.10.4 (git+https://github.com/sigp/discv5?rev=7663c00)", + "enr", + "itertools 0.14.0", + "parking_lot", + "rand 0.8.5", + "reth-ethereum-forks", + "reth-net-banlist", + "reth-net-nat", + "reth-network-peers", + "schnellru", + "secp256k1 0.30.0", + "serde", + "thiserror 2.0.18", + "tokio", + "tokio-stream", + "tracing", +] + +[[package]] +name = "reth-discv5" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "derive_more", + "discv5 0.10.4 (git+https://github.com/sigp/discv5?rev=7663c00)", + "enr", + "futures", + "itertools 0.14.0", + "metrics", + "rand 0.9.2", + "reth-chainspec", + "reth-ethereum-forks", + "reth-metrics", + "reth-network-peers", + "secp256k1 0.30.0", + "thiserror 2.0.18", + "tokio", + "tracing", +] + +[[package]] +name = "reth-dns-discovery" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-primitives", + "dashmap", + "data-encoding", + "enr", + "hickory-resolver 0.26.1", + "linked_hash_set", + "reth-ethereum-forks", + "reth-network-peers", + "reth-tokio-util", + "schnellru", + "secp256k1 0.30.0", + "serde", + "serde_with", + "thiserror 2.0.18", + "tokio", + "tokio-stream", + "tracing", +] + +[[package]] +name = "reth-downloaders" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-consensus 2.1.0", + "alloy-eips 2.1.0", + "alloy-primitives", + "futures", + "futures-util", + "metrics", + "pin-project", + "rayon", + "reth-config", + "reth-consensus", + "reth-ethereum-primitives", + "reth-metrics", + "reth-network-p2p", + "reth-network-peers", + "reth-primitives-traits", + "reth-provider", + "reth-storage-api", + "reth-tasks", + "reth-testing-utils", + "tempfile", + "thiserror 2.0.18", + "tokio", + "tokio-stream", + "tokio-util", + "tracing", +] + +[[package]] +name = "reth-ecies" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "aes", + "alloy-primitives", + "alloy-rlp", + "block-padding", + "byteorder", + "cipher", + "concat-kdf", + "ctr", + "digest 0.10.7", + "futures", + "hmac", + "pin-project", + "rand 0.8.5", + "reth-network-peers", + "secp256k1 0.30.0", + "sha2", + "thiserror 2.0.18", + "tokio", + "tokio-stream", + "tokio-util", + "tracing", +] + +[[package]] +name = "reth-engine" +version = "0.1.0" +dependencies = [ + "alloy-genesis", + "alloy-primitives", + "alloy-rpc-types-engine 1.8.3", + "eyre", + "futures-util", + "reth-ethereum", + "reth-payload-builder", + "serde_json", + "sha2", + "tokio", +] + +[[package]] +name = "reth-engine-local" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-consensus 2.1.0", + "alloy-primitives", + "alloy-rpc-types-engine 2.1.0", + "eyre", + "futures-util", + "reth-chainspec", + "reth-engine-primitives", + "reth-ethereum-engine-primitives", + "reth-payload-builder", + "reth-payload-primitives", + "reth-primitives-traits", + "reth-storage-api", + "reth-transaction-pool", + "tokio", + "tokio-stream", + "tracing", +] + +[[package]] +name = "reth-engine-primitives" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-consensus 2.1.0", + "alloy-eips 2.1.0", + "alloy-primitives", + "alloy-rpc-types-engine 2.1.0", + "auto_impl", + "futures", + "reth-chain-state", + "reth-errors", + "reth-ethereum-primitives", + "reth-evm", + "reth-execution-types", + "reth-payload-builder-primitives", + "reth-payload-primitives", + "reth-primitives-traits", + "reth-trie-common", + "serde", + "thiserror 2.0.18", + "tokio", +] + +[[package]] +name = "reth-engine-tree" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-consensus 2.1.0", + "alloy-eip7928 0.4.5", + "alloy-eips 2.1.0", + "alloy-evm", + "alloy-primitives", + "alloy-rlp", + "alloy-rpc-types-engine 2.1.0", + "crossbeam-channel", + "derive_more", + "futures", + "indexmap 2.13.1", + "metrics", + "moka", + "parking_lot", + "rayon", + "reth-chain-state", + "reth-chainspec", + "reth-consensus", + "reth-db", + "reth-engine-primitives", + "reth-errors", + "reth-ethereum-primitives", + "reth-evm", + "reth-execution-cache", + "reth-execution-types", + "reth-metrics", + "reth-network-p2p", + "reth-payload-builder", + "reth-payload-primitives", + "reth-primitives-traits", + "reth-provider", + "reth-prune", + "reth-prune-types", + "reth-revm", + "reth-stages", + "reth-stages-api", + "reth-static-file", + "reth-tasks", + "reth-tracing", + "reth-trie", + "reth-trie-common", + "reth-trie-db", + "reth-trie-parallel", + "reth-trie-sparse", + "revm", + "revm-primitives", + "revm-state", + "schnellru", + "thiserror 2.0.18", + "tokio", + "tracing", +] + +[[package]] +name = "reth-engine-util" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-consensus 2.1.0", + "alloy-primitives", + "alloy-rlp", + "alloy-rpc-types-engine 2.1.0", + "eyre", + "futures", + "itertools 0.14.0", + "pin-project", + "reth-chainspec", + "reth-engine-primitives", + "reth-engine-tree", + "reth-errors", + "reth-evm", + "reth-fs-util", + "reth-payload-primitives", + "reth-primitives-traits", + "reth-revm", + "reth-storage-api", + "serde", + "serde_json", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "reth-era" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-consensus 2.1.0", + "alloy-eips 2.1.0", + "alloy-primitives", + "alloy-rlp", + "ethereum_ssz", + "ethereum_ssz_derive", + "sha2", + "snap", + "thiserror 2.0.18", +] + +[[package]] +name = "reth-era-downloader" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-primitives", + "bytes", + "eyre", + "futures-util", + "reqwest 0.13.4", + "reth-era", + "reth-fs-util", + "sha2", + "tokio", +] + +[[package]] +name = "reth-era-utils" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-consensus 2.1.0", + "alloy-primitives", + "eyre", + "futures-util", + "reth-db-api", + "reth-era", + "reth-era-downloader", + "reth-etl", + "reth-fs-util", + "reth-primitives-traits", + "reth-provider", + "reth-stages-types", + "reth-storage-api", + "tokio", + "tracing", +] + +[[package]] +name = "reth-errors" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "reth-consensus", + "reth-execution-errors", + "reth-storage-errors", + "thiserror 2.0.18", +] + +[[package]] +name = "reth-eth-wire" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-chains", + "alloy-primitives", + "alloy-rlp", + "bytes", + "derive_more", + "futures", + "pin-project", + "reth-codecs", + "reth-ecies", + "reth-eth-wire-types", + "reth-ethereum-forks", + "reth-metrics", + "reth-network-peers", + "reth-primitives-traits", + "serde", + "snap", + "thiserror 2.0.18", + "tokio", + "tokio-stream", + "tokio-util", + "tracing", +] + +[[package]] +name = "reth-eth-wire-types" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-chains", + "alloy-consensus 2.1.0", + "alloy-eip7928 0.4.5", + "alloy-eips 2.1.0", + "alloy-hardforks", + "alloy-primitives", + "alloy-rlp", + "bytes", + "derive_more", + "reth-chainspec", + "reth-codecs-derive", + "reth-ethereum-primitives", + "reth-primitives-traits", + "serde", + "thiserror 2.0.18", +] + +[[package]] +name = "reth-ethereum" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-rpc-types-engine 2.1.0", + "alloy-rpc-types-eth 2.1.0", + "reth-chainspec", + "reth-codecs", + "reth-consensus", + "reth-consensus-common", + "reth-db", + "reth-engine-local", + "reth-eth-wire", + "reth-ethereum-consensus", + "reth-ethereum-primitives", + "reth-evm", + "reth-evm-ethereum", + "reth-network", + "reth-network-api", + "reth-node-api", + "reth-node-builder", + "reth-node-core", + "reth-node-ethereum", + "reth-primitives-traits", + "reth-provider", + "reth-revm", + "reth-rpc", + "reth-rpc-api", + "reth-rpc-builder", + "reth-rpc-eth-types", + "reth-storage-api", + "reth-tasks", + "reth-transaction-pool", + "reth-trie", + "reth-trie-db", +] + +[[package]] +name = "reth-ethereum-consensus" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-consensus 2.1.0", + "alloy-eips 2.1.0", + "alloy-primitives", + "reth-chainspec", + "reth-consensus", + "reth-consensus-common", + "reth-execution-types", + "reth-primitives-traits", + "tracing", +] + +[[package]] +name = "reth-ethereum-engine-primitives" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-eips 2.1.0", + "alloy-primitives", + "alloy-rpc-types-engine 2.1.0", + "reth-engine-primitives", + "reth-ethereum-primitives", + "reth-payload-primitives", + "reth-primitives-traits", + "serde", + "thiserror 2.0.18", +] + +[[package]] +name = "reth-ethereum-forks" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-eip2124", + "alloy-hardforks", + "alloy-primitives", + "auto_impl", + "once_cell", + "rustc-hash", +] + +[[package]] +name = "reth-ethereum-payload-builder" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-consensus 2.1.0", + "alloy-eips 2.1.0", + "alloy-primitives", + "alloy-rlp", + "alloy-rpc-types-engine 2.1.0", + "reth-basic-payload-builder", + "reth-chainspec", + "reth-consensus-common", + "reth-errors", + "reth-ethereum-primitives", + "reth-evm", + "reth-evm-ethereum", + "reth-execution-cache", + "reth-payload-builder", + "reth-payload-builder-primitives", + "reth-payload-primitives", + "reth-payload-validator", + "reth-primitives-traits", + "reth-revm", + "reth-storage-api", + "reth-transaction-pool", + "revm", + "tracing", +] + +[[package]] +name = "reth-ethereum-primitives" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-consensus 2.1.0", + "alloy-eips 2.1.0", + "alloy-primitives", + "alloy-rpc-types-eth 2.1.0", + "reth-codecs", + "reth-primitives-traits", + "serde", +] + +[[package]] +name = "reth-etl" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "rayon", + "reth-db-api", + "tempfile", +] + +[[package]] +name = "reth-evm" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-consensus 2.1.0", + "alloy-eip7928 0.4.5", + "alloy-eips 2.1.0", + "alloy-evm", + "alloy-primitives", + "auto_impl", + "derive_more", + "futures-util", + "metrics", + "rayon", + "reth-execution-errors", + "reth-execution-types", + "reth-metrics", + "reth-primitives-traits", + "reth-storage-api", + "reth-storage-errors", + "reth-trie-common", + "revm", +] + +[[package]] +name = "reth-evm-ethereum" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-consensus 2.1.0", + "alloy-eips 2.1.0", + "alloy-evm", + "alloy-primitives", + "alloy-rpc-types-engine 2.1.0", + "reth-chainspec", + "reth-ethereum-forks", + "reth-ethereum-primitives", + "reth-evm", + "reth-execution-types", + "reth-primitives-traits", + "reth-storage-errors", + "revm", +] + +[[package]] +name = "reth-execution-cache" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-primitives", + "fixed-cache", + "metrics", + "parking_lot", + "reth-errors", + "reth-metrics", + "reth-primitives-traits", + "reth-provider", + "reth-revm", + "reth-trie", + "tracing", +] + +[[package]] +name = "reth-execution-errors" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-evm", + "alloy-primitives", + "alloy-rlp", + "nybbles", + "reth-storage-errors", + "thiserror 2.0.18", +] + +[[package]] +name = "reth-execution-types" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-consensus 2.1.0", + "alloy-eips 2.1.0", + "alloy-evm", + "alloy-primitives", + "alloy-rlp", + "derive_more", + "reth-ethereum-primitives", + "reth-primitives-traits", + "reth-trie-common", + "revm", + "serde", + "serde_with", +] + +[[package]] +name = "reth-exex" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-consensus 2.1.0", + "alloy-eips 2.1.0", + "alloy-primitives", + "eyre", + "futures", + "itertools 0.14.0", + "metrics", + "parking_lot", + "reth-chain-state", + "reth-chainspec", + "reth-config", + "reth-ethereum-primitives", + "reth-evm", + "reth-exex-types", + "reth-fs-util", + "reth-metrics", + "reth-node-api", + "reth-node-core", + "reth-payload-builder", + "reth-primitives-traits", + "reth-provider", + "reth-prune-types", + "reth-revm", + "reth-stages-api", + "reth-tasks", + "reth-tracing", + "rmp-serde", + "thiserror 2.0.18", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "reth-exex-types" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-eips 2.1.0", + "alloy-primitives", + "reth-chain-state", + "reth-execution-types", + "reth-primitives-traits", + "serde", + "serde_with", +] + +[[package]] +name = "reth-fs-util" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "serde", + "serde_json", + "thiserror 2.0.18", +] + +[[package]] +name = "reth-invalid-block-hooks" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-consensus 2.1.0", + "alloy-primitives", + "alloy-rlp", + "alloy-rpc-types-debug", + "eyre", + "futures", + "jsonrpsee", + "pretty_assertions", + "reth-engine-primitives", + "reth-evm", + "reth-primitives-traits", + "reth-provider", + "reth-revm", + "reth-rpc-api", + "reth-tracing", + "reth-trie", + "revm", + "revm-bytecode", + "revm-database", + "serde", + "serde_json", +] + +[[package]] +name = "reth-ipc" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "bytes", + "futures", + "futures-util", + "interprocess", + "jsonrpsee", + "pin-project", + "serde_json", + "thiserror 2.0.18", + "tokio", + "tokio-stream", + "tokio-util", + "tower", + "tracing", +] + +[[package]] +name = "reth-libmdbx" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "bitflags", + "byteorder", + "crossbeam-queue", + "dashmap", + "derive_more", + "parking_lot", + "reth-mdbx-sys", + "smallvec", + "thiserror 2.0.18", + "tracing", +] + +[[package]] +name = "reth-mdbx-sys" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "bindgen", + "cc", +] + +[[package]] +name = "reth-metrics" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "futures", + "metrics", + "metrics-derive", + "reth-primitives-traits", + "tokio", + "tokio-util", +] + +[[package]] +name = "reth-net-banlist" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-primitives", + "ipnet", +] + +[[package]] +name = "reth-net-nat" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "futures-util", + "if-addrs 0.14.0", + "reqwest 0.13.4", + "serde_with", + "thiserror 2.0.18", + "tokio", + "tracing", +] + +[[package]] +name = "reth-network" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-consensus 2.1.0", + "alloy-eips 2.1.0", + "alloy-primitives", + "alloy-rlp", + "aquamarine", + "auto_impl", + "derive_more", + "discv5 0.10.4 (git+https://github.com/sigp/discv5?rev=7663c00)", + "enr", + "futures", + "itertools 0.14.0", + "metrics", + "parking_lot", + "pin-project", + "rand 0.8.5", + "rand 0.9.2", + "rayon", + "reth-chainspec", + "reth-consensus", + "reth-discv4", + "reth-discv5", + "reth-dns-discovery", + "reth-ecies", + "reth-eth-wire", + "reth-eth-wire-types", + "reth-ethereum-forks", + "reth-ethereum-primitives", + "reth-evm-ethereum", + "reth-fs-util", + "reth-metrics", + "reth-net-banlist", + "reth-network-api", + "reth-network-p2p", + "reth-network-peers", + "reth-network-types", + "reth-primitives-traits", + "reth-storage-api", + "reth-tasks", + "reth-tokio-util", + "reth-transaction-pool", + "rustc-hash", + "schnellru", + "secp256k1 0.30.0", + "serde", + "smallvec", + "socket2 0.6.3", + "thiserror 2.0.18", + "tokio", + "tokio-stream", + "tokio-util", + "tracing", +] + +[[package]] +name = "reth-network-api" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-consensus 2.1.0", + "alloy-primitives", + "alloy-rpc-types-admin", + "alloy-rpc-types-eth 2.1.0", + "auto_impl", + "derive_more", + "enr", + "futures", + "reth-eth-wire-types", + "reth-ethereum-forks", + "reth-network-p2p", + "reth-network-peers", + "reth-network-types", + "reth-tokio-util", + "serde", + "thiserror 2.0.18", + "tokio", + "tokio-stream", +] + +[[package]] +name = "reth-network-p2p" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-consensus 2.1.0", + "alloy-eips 2.1.0", + "alloy-primitives", + "auto_impl", + "derive_more", + "futures", + "parking_lot", + "reth-consensus", + "reth-eth-wire-types", + "reth-ethereum-primitives", + "reth-network-peers", + "reth-network-types", + "reth-primitives-traits", + "reth-storage-errors", + "tokio", + "tracing", +] + +[[package]] +name = "reth-network-peers" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "enr", + "secp256k1 0.30.0", + "serde_with", + "thiserror 2.0.18", + "tokio", + "url", +] + +[[package]] +name = "reth-network-types" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-eip2124", + "humantime-serde", + "reth-net-banlist", + "reth-network-peers", + "serde", + "serde_json", + "tracing", +] + +[[package]] +name = "reth-nippy-jar" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "anyhow", + "bincode", + "derive_more", + "lz4_flex 0.12.2", + "memmap2", + "reth-fs-util", + "serde", + "thiserror 2.0.18", + "tracing", + "zstd", +] + +[[package]] +name = "reth-node-api" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-rpc-types-engine 2.1.0", + "eyre", + "reth-basic-payload-builder", + "reth-consensus", + "reth-db-api", + "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-provider", + "reth-tasks", + "reth-tokio-util", + "reth-transaction-pool", +] + +[[package]] +name = "reth-node-builder" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-consensus 2.1.0", + "alloy-eips 2.1.0", + "alloy-primitives", + "alloy-provider", + "alloy-rpc-types", + "alloy-rpc-types-engine 2.1.0", + "aquamarine", + "eyre", + "fdlimit", + "futures", + "jsonrpsee", + "parking_lot", + "rayon", + "reth-basic-payload-builder", + "reth-chain-state", + "reth-chainspec", + "reth-config", + "reth-consensus", + "reth-consensus-debug-client", + "reth-db", + "reth-db-api", + "reth-db-common", + "reth-downloaders", + "reth-engine-local", + "reth-engine-primitives", + "reth-engine-tree", + "reth-engine-util", + "reth-evm", + "reth-exex", + "reth-fs-util", + "reth-invalid-block-hooks", + "reth-network", + "reth-network-api", + "reth-network-p2p", + "reth-node-api", + "reth-node-core", + "reth-node-ethstats", + "reth-node-events", + "reth-node-metrics", + "reth-payload-builder", + "reth-primitives-traits", + "reth-provider", + "reth-prune", + "reth-rpc", + "reth-rpc-api", + "reth-rpc-builder", + "reth-rpc-engine-api", + "reth-rpc-eth-types", + "reth-rpc-layer", + "reth-stages", + "reth-static-file", + "reth-tasks", + "reth-tokio-util", + "reth-tracing", + "reth-transaction-pool", + "reth-trie-db", + "secp256k1 0.30.0", + "serde_json", + "tokio", + "tokio-stream", + "tracing", +] + +[[package]] +name = "reth-node-core" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-consensus 2.1.0", + "alloy-eips 2.1.0", + "alloy-primitives", + "alloy-rpc-types-engine 2.1.0", + "clap", + "derive_more", + "dirs-next", + "eyre", + "futures", + "humantime", + "ipnet", + "rand 0.9.2", + "reth-chainspec", + "reth-cli-util", + "reth-config", + "reth-consensus", + "reth-db", + "reth-discv4", + "reth-discv5", + "reth-engine-local", + "reth-engine-primitives", + "reth-ethereum-forks", + "reth-net-banlist", + "reth-net-nat", + "reth-network", + "reth-network-p2p", + "reth-network-peers", + "reth-primitives-traits", + "reth-prune-types", + "reth-rpc-convert", + "reth-rpc-eth-types", + "reth-rpc-server-types", + "reth-stages-types", + "reth-storage-api", + "reth-storage-errors", + "reth-tasks", + "reth-tracing", + "reth-tracing-otlp", + "reth-transaction-pool", + "secp256k1 0.30.0", + "serde", + "strum", + "thiserror 2.0.18", + "toml", + "tracing", + "url", + "vergen 9.1.0", + "vergen-git2 9.1.0", +] + +[[package]] +name = "reth-node-ethereum" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-consensus 2.1.0", + "alloy-eips 2.1.0", + "alloy-network", + "alloy-primitives", + "alloy-rpc-types-engine 2.1.0", + "alloy-rpc-types-eth 2.1.0", + "ethereum_ssz", + "eyre", + "http-body-util", + "jsonrpsee", + "reth-chainspec", + "reth-engine-local", + "reth-engine-primitives", + "reth-ethereum-consensus", + "reth-ethereum-engine-primitives", + "reth-ethereum-payload-builder", + "reth-ethereum-primitives", + "reth-evm", + "reth-evm-ethereum", + "reth-network", + "reth-node-api", + "reth-node-builder", + "reth-node-core", + "reth-payload-primitives", + "reth-primitives-traits", + "reth-provider", + "reth-revm", + "reth-rpc", + "reth-rpc-api", + "reth-rpc-builder", + "reth-rpc-eth-api", + "reth-rpc-eth-types", + "reth-rpc-server-types", + "reth-tracing", + "reth-transaction-pool", + "revm", + "serde", + "serde_json", + "tokio", + "tower", +] + +[[package]] +name = "reth-node-ethstats" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-consensus 2.1.0", + "alloy-primitives", + "chrono", + "futures-util", + "reth-chain-state", + "reth-network-api", + "reth-primitives-traits", + "reth-storage-api", + "reth-transaction-pool", + "serde", + "serde_json", + "thiserror 2.0.18", + "tokio", + "tokio-stream", + "tokio-tungstenite", + "tracing", + "url", +] + +[[package]] +name = "reth-node-events" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-consensus 2.1.0", + "alloy-eips 2.1.0", + "alloy-primitives", + "alloy-rpc-types-engine 2.1.0", + "derive_more", + "futures", + "humantime", + "pin-project", + "reth-engine-primitives", + "reth-network-api", + "reth-primitives-traits", + "reth-prune-types", + "reth-stages", + "reth-static-file-types", + "reth-storage-api", + "tokio", + "tracing", +] + +[[package]] +name = "reth-node-metrics" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "bytes", + "eyre", + "http 1.4.0", + "http-body-util", + "jsonrpsee-server", + "metrics", + "metrics-exporter-prometheus", + "metrics-process", + "metrics-util", + "procfs", + "reqwest 0.13.4", + "reth-metrics", + "reth-tasks", + "tokio", + "tower", + "tracing", +] + +[[package]] +name = "reth-node-types" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "reth-chainspec", + "reth-db-api", + "reth-engine-primitives", + "reth-payload-primitives", + "reth-primitives-traits", +] + +[[package]] +name = "reth-payload-builder" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-consensus 2.1.0", + "alloy-primitives", + "alloy-rpc-types", + "derive_more", + "futures-util", + "metrics", + "reth-chain-state", + "reth-ethereum-engine-primitives", + "reth-execution-cache", + "reth-metrics", + "reth-payload-builder-primitives", + "reth-payload-primitives", + "reth-primitives-traits", + "reth-trie-parallel", + "tokio", + "tokio-stream", + "tracing", +] + +[[package]] +name = "reth-payload-builder-primitives" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "pin-project", + "reth-payload-primitives", + "tokio", + "tokio-stream", + "tracing", +] + +[[package]] +name = "reth-payload-primitives" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-consensus 2.1.0", + "alloy-eips 2.1.0", + "alloy-primitives", + "alloy-rlp", + "alloy-rpc-types-engine 2.1.0", + "auto_impl", + "either", + "reth-chainspec", + "reth-errors", + "reth-execution-types", + "reth-primitives-traits", + "reth-trie-common", + "serde", + "sha2", + "thiserror 2.0.18", + "tokio", +] + +[[package]] +name = "reth-payload-validator" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-consensus 2.1.0", + "alloy-rpc-types-engine 2.1.0", + "reth-primitives-traits", +] + +[[package]] +name = "reth-primitives-traits" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9102518f0bbf99bc8f0e656a56fb2a7513248630275b608d3706076a82fde42b" +dependencies = [ + "alloy-consensus 2.1.0", + "alloy-eips 2.1.0", + "alloy-genesis", + "alloy-primitives", + "alloy-rlp", + "alloy-rpc-types-eth 2.1.0", + "alloy-trie", + "arbitrary", + "byteorder", + "bytes", + "dashmap", + "derive_more", + "modular-bitfield", + "once_cell", + "proptest", + "proptest-arbitrary-interop", + "quanta", + "rayon", + "reth-codecs", + "revm-bytecode", + "revm-primitives", + "revm-state", + "secp256k1 0.30.0", + "serde", + "thiserror 2.0.18", +] + +[[package]] +name = "reth-provider" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-consensus 2.1.0", + "alloy-eip7928 0.4.5", + "alloy-eips 2.1.0", + "alloy-genesis", + "alloy-primitives", + "alloy-rpc-types-engine 2.1.0", + "eyre", + "itertools 0.14.0", + "metrics", + "notify", + "parking_lot", + "rayon", + "reth-chain-state", + "reth-chainspec", + "reth-codecs", + "reth-db", + "reth-db-api", + "reth-errors", + "reth-ethereum-engine-primitives", + "reth-ethereum-primitives", + "reth-execution-types", + "reth-fs-util", + "reth-metrics", + "reth-nippy-jar", + "reth-node-types", + "reth-primitives-traits", + "reth-prune-types", + "reth-stages-types", + "reth-static-file-types", + "reth-storage-api", + "reth-storage-errors", + "reth-tasks", + "reth-tokio-util", + "reth-trie", + "reth-trie-db", + "revm-database", + "revm-state", + "rocksdb", + "smallvec", + "strum", + "tokio", + "tracing", +] + +[[package]] +name = "reth-prune" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-consensus 2.1.0", + "alloy-primitives", + "itertools 0.14.0", + "metrics", + "rayon", + "reth-config", + "reth-db-api", + "reth-errors", + "reth-exex-types", + "reth-metrics", + "reth-primitives-traits", + "reth-provider", + "reth-prune-types", + "reth-stages-types", + "reth-static-file-types", + "reth-storage-api", + "reth-tokio-util", + "rustc-hash", + "thiserror 2.0.18", + "tokio", + "tracing", +] + +[[package]] +name = "reth-prune-types" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-primitives", + "arbitrary", + "derive_more", + "modular-bitfield", + "reth-codecs", + "serde", + "strum", + "thiserror 2.0.18", + "tracing", +] + +[[package]] +name = "reth-revm" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "alloy-rpc-types-debug", + "reth-primitives-traits", + "reth-storage-api", + "reth-storage-errors", + "reth-trie", + "revm", +] + +[[package]] +name = "reth-rpc" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-consensus 2.1.0", + "alloy-dyn-abi", + "alloy-eips 2.1.0", + "alloy-evm", + "alloy-genesis", + "alloy-network", + "alloy-primitives", + "alloy-rlp", + "alloy-rpc-client", + "alloy-rpc-types", + "alloy-rpc-types-admin", + "alloy-rpc-types-beacon", + "alloy-rpc-types-debug", + "alloy-rpc-types-engine 2.1.0", + "alloy-rpc-types-eth 2.1.0", + "alloy-rpc-types-mev", + "alloy-rpc-types-trace", + "alloy-rpc-types-txpool", + "alloy-serde 2.1.0", + "alloy-signer", + "alloy-signer-local", + "async-trait", + "derive_more", + "dyn-clone", + "futures", + "itertools 0.14.0", + "jsonrpsee", + "jsonrpsee-types", + "parking_lot", + "pin-project", + "reth-chain-state", + "reth-chainspec", + "reth-consensus", + "reth-consensus-common", + "reth-engine-primitives", + "reth-errors", + "reth-ethereum-engine-primitives", + "reth-ethereum-primitives", + "reth-evm", + "reth-evm-ethereum", + "reth-execution-types", + "reth-metrics", + "reth-network-api", + "reth-network-peers", + "reth-network-types", + "reth-node-api", + "reth-primitives-traits", + "reth-revm", + "reth-rpc-api", + "reth-rpc-convert", + "reth-rpc-engine-api", + "reth-rpc-eth-api", + "reth-rpc-eth-types", + "reth-rpc-server-types", + "reth-storage-api", + "reth-tasks", + "reth-transaction-pool", + "reth-trie-common", + "revm", + "revm-inspectors", + "revm-primitives", + "serde", + "serde_json", + "sha2", + "thiserror 2.0.18", + "tokio", + "tokio-stream", + "tracing", + "tracing-futures", +] + +[[package]] +name = "reth-rpc-api" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-eips 2.1.0", + "alloy-genesis", + "alloy-json-rpc", + "alloy-primitives", + "alloy-rpc-types", + "alloy-rpc-types-admin", + "alloy-rpc-types-anvil", + "alloy-rpc-types-beacon", + "alloy-rpc-types-debug", + "alloy-rpc-types-engine 2.1.0", + "alloy-rpc-types-eth 2.1.0", + "alloy-rpc-types-mev", + "alloy-rpc-types-trace", + "alloy-rpc-types-txpool", + "alloy-serde 2.1.0", + "jsonrpsee", + "reth-chain-state", + "reth-engine-primitives", + "reth-network-peers", + "reth-rpc-eth-api", + "reth-trie-common", + "serde", + "serde_json", +] + +[[package]] +name = "reth-rpc-builder" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-network", + "alloy-provider", + "dyn-clone", + "http 1.4.0", + "jsonrpsee", + "metrics", + "pin-project", + "reth-chain-state", + "reth-chainspec", + "reth-consensus", + "reth-engine-primitives", + "reth-evm", + "reth-ipc", + "reth-metrics", + "reth-network-api", + "reth-node-core", + "reth-payload-primitives", + "reth-primitives-traits", + "reth-rpc", + "reth-rpc-api", + "reth-rpc-engine-api", + "reth-rpc-eth-api", + "reth-rpc-eth-types", + "reth-rpc-layer", + "reth-rpc-server-types", + "reth-storage-api", + "reth-tasks", + "reth-tokio-util", + "reth-transaction-pool", + "serde", + "thiserror 2.0.18", + "tokio", + "tokio-util", + "tower", + "tower-http", + "tracing", +] + +[[package]] +name = "reth-rpc-convert" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-consensus 2.1.0", + "alloy-evm", + "alloy-json-rpc", + "alloy-network", + "alloy-primitives", + "alloy-rpc-types-eth 2.1.0", + "auto_impl", + "dyn-clone", + "jsonrpsee-types", + "reth-evm", + "reth-primitives-traits", + "reth-rpc-traits", + "thiserror 2.0.18", +] + +[[package]] +name = "reth-rpc-engine-api" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-eips 2.1.0", + "alloy-primitives", + "alloy-rlp", + "alloy-rpc-types-engine 2.1.0", + "async-trait", + "jsonrpsee-core", + "jsonrpsee-types", + "metrics", + "reth-chainspec", + "reth-engine-primitives", + "reth-metrics", + "reth-network-api", + "reth-payload-builder", + "reth-payload-builder-primitives", + "reth-payload-primitives", + "reth-primitives-traits", + "reth-rpc-api", + "reth-storage-api", + "reth-tasks", + "reth-transaction-pool", + "serde", + "thiserror 2.0.18", + "tokio", + "tracing", +] + +[[package]] +name = "reth-rpc-eth-api" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-consensus 2.1.0", + "alloy-dyn-abi", + "alloy-eip7928 0.4.5", + "alloy-eips 2.1.0", + "alloy-evm", + "alloy-json-rpc", + "alloy-network", + "alloy-primitives", + "alloy-rlp", + "alloy-rpc-types-eth 2.1.0", + "alloy-rpc-types-mev", + "alloy-serde 2.1.0", + "async-trait", + "auto_impl", + "dyn-clone", + "futures", + "jsonrpsee", + "jsonrpsee-types", + "parking_lot", + "reth-chain-state", + "reth-chainspec", + "reth-errors", + "reth-evm", + "reth-network-api", + "reth-node-api", + "reth-primitives-traits", + "reth-prune-types", + "reth-revm", + "reth-rpc-convert", + "reth-rpc-eth-types", + "reth-rpc-server-types", + "reth-storage-api", + "reth-tasks", + "reth-transaction-pool", + "reth-trie-common", + "revm", + "revm-inspectors", + "serde_json", + "tokio", + "tracing", +] + +[[package]] +name = "reth-rpc-eth-types" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-chains", + "alloy-consensus 2.1.0", + "alloy-eip7928 0.4.5", + "alloy-eips 2.1.0", + "alloy-evm", + "alloy-network", + "alloy-primitives", + "alloy-rpc-client", + "alloy-rpc-types-eth 2.1.0", + "alloy-serde 2.1.0", + "alloy-sol-types", + "alloy-transport", + "derive_more", + "futures", + "itertools 0.14.0", + "jsonrpsee-core", + "jsonrpsee-types", + "metrics", + "rand 0.9.2", + "reqwest 0.13.4", + "reth-chain-state", + "reth-chainspec", + "reth-errors", + "reth-ethereum-primitives", + "reth-evm", + "reth-execution-types", + "reth-metrics", + "reth-primitives-traits", + "reth-revm", + "reth-rpc-convert", + "reth-rpc-server-types", + "reth-storage-api", + "reth-tasks", + "reth-transaction-pool", + "reth-trie", + "revm", + "revm-inspectors", + "schnellru", + "serde", + "thiserror 2.0.18", + "tokio", + "tokio-stream", + "tracing", + "url", +] + +[[package]] +name = "reth-rpc-layer" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-rpc-types-engine 2.1.0", + "http 1.4.0", + "jsonrpsee-http-client", + "pin-project", + "tower", + "tower-http", + "tracing", +] + +[[package]] +name = "reth-rpc-server-types" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-eips 2.1.0", + "alloy-primitives", + "alloy-rpc-types-engine 2.1.0", + "jsonrpsee-core", + "jsonrpsee-types", + "reth-errors", + "reth-network-api", + "serde", + "strum", +] + +[[package]] +name = "reth-rpc-traits" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa03a2c9681c385ae1c72b169ac9c3525163b71db0b3362f16e8929e19e45fd" +dependencies = [ + "alloy-consensus 2.1.0", + "alloy-network", + "alloy-primitives", + "alloy-rpc-types-eth 2.1.0", + "alloy-signer", + "reth-primitives-traits", + "thiserror 2.0.18", +] + +[[package]] +name = "reth-stages" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-consensus 2.1.0", + "alloy-primitives", + "alloy-rlp", + "eyre", + "futures-util", + "itertools 0.14.0", + "num-traits", + "page_size", + "rayon", + "reqwest 0.13.4", + "reth-chainspec", + "reth-codecs", + "reth-config", + "reth-consensus", + "reth-db", + "reth-db-api", + "reth-era", + "reth-era-downloader", + "reth-era-utils", + "reth-ethereum-primitives", + "reth-etl", + "reth-evm", + "reth-execution-types", + "reth-exex", + "reth-fs-util", + "reth-libmdbx", + "reth-network-p2p", + "reth-primitives-traits", + "reth-provider", + "reth-prune", + "reth-prune-types", + "reth-revm", + "reth-stages-api", + "reth-static-file-types", + "reth-storage-api", + "reth-storage-errors", + "reth-tasks", + "reth-testing-utils", + "reth-trie", + "reth-trie-db", + "tempfile", + "thiserror 2.0.18", + "tokio", + "tracing", +] + +[[package]] +name = "reth-stages-api" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-eips 2.1.0", + "alloy-primitives", + "aquamarine", + "auto_impl", + "futures-util", + "metrics", + "reth-codecs", + "reth-consensus", + "reth-errors", + "reth-metrics", + "reth-network-p2p", + "reth-primitives-traits", + "reth-provider", + "reth-prune", + "reth-stages-types", + "reth-static-file", + "reth-static-file-types", + "reth-tokio-util", + "thiserror 2.0.18", + "tokio", + "tracing", +] + +[[package]] +name = "reth-stages-types" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-primitives", + "arbitrary", + "bytes", + "modular-bitfield", + "reth-codecs", + "reth-trie-common", + "serde", +] + +[[package]] +name = "reth-static-file" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-primitives", + "parking_lot", + "rayon", + "reth-codecs", + "reth-db-api", + "reth-primitives-traits", + "reth-provider", + "reth-prune-types", + "reth-stages-types", + "reth-static-file-types", + "reth-storage-errors", + "reth-tokio-util", + "tracing", +] + +[[package]] +name = "reth-static-file-types" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-primitives", + "derive_more", + "fixed-map", + "reth-stages-types", + "serde", + "strum", + "tracing", +] + +[[package]] +name = "reth-storage-api" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-consensus 2.1.0", + "alloy-eip7928 0.4.5", + "alloy-eips 2.1.0", + "alloy-primitives", + "alloy-rpc-types-engine 2.1.0", + "auto_impl", + "reth-chainspec", + "reth-db-api", + "reth-db-models", + "reth-ethereum-primitives", + "reth-execution-types", + "reth-primitives-traits", + "reth-prune-types", + "reth-stages-types", + "reth-storage-errors", + "reth-tokio-util", + "reth-trie-common", + "revm-database", + "serde_json", +] + +[[package]] +name = "reth-storage-errors" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-eips 2.1.0", + "alloy-primitives", + "alloy-rlp", + "derive_more", + "reth-codecs", + "reth-primitives-traits", + "reth-prune-types", + "reth-static-file-types", + "revm-database-interface", + "revm-state", + "thiserror 2.0.18", +] + +[[package]] +name = "reth-tasks" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "crossbeam-utils", + "dashmap", + "futures-util", + "libc", + "metrics", + "parking_lot", + "pin-project", + "rayon", + "reth-metrics", + "thiserror 2.0.18", + "thread-priority", + "tokio", + "tracing", + "tracing-futures", +] + +[[package]] +name = "reth-testing-utils" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-consensus 2.1.0", + "alloy-eips 2.1.0", + "alloy-genesis", + "alloy-primitives", + "rand 0.8.5", + "rand 0.9.2", + "reth-ethereum-primitives", + "reth-primitives-traits", + "secp256k1 0.30.0", +] + +[[package]] +name = "reth-tokio-util" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "tokio", + "tokio-stream", + "tracing", +] + +[[package]] +name = "reth-tracing" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "clap", + "eyre", + "reth-tracing-otlp", + "rolling-file", + "tracing", + "tracing-appender", + "tracing-chrome", + "tracing-journald", + "tracing-logfmt", + "tracing-samply", + "tracing-subscriber 0.3.23", +] + +[[package]] +name = "reth-tracing-otlp" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "base64 0.22.1", + "clap", + "eyre", + "opentelemetry", + "opentelemetry-otlp", + "opentelemetry-semantic-conventions", + "opentelemetry_sdk", + "tracing", + "tracing-opentelemetry", + "tracing-subscriber 0.3.23", + "url", +] + +[[package]] +name = "reth-transaction-pool" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-consensus 2.1.0", + "alloy-eips 2.1.0", + "alloy-primitives", + "alloy-rlp", + "aquamarine", + "auto_impl", + "bitflags", + "futures-util", + "imbl", + "metrics", + "parking_lot", + "paste", + "pin-project", + "rand 0.9.2", + "reth-chain-state", + "reth-chainspec", + "reth-eth-wire-types", + "reth-ethereum-primitives", + "reth-evm", + "reth-evm-ethereum", + "reth-execution-types", + "reth-fs-util", + "reth-metrics", + "reth-primitives-traits", + "reth-storage-api", + "reth-tasks", + "revm", + "revm-interpreter", + "revm-primitives", + "rustc-hash", + "schnellru", + "serde", + "serde_json", + "smallvec", + "thiserror 2.0.18", + "tokio", + "tokio-stream", + "tracing", +] + +[[package]] +name = "reth-trie" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-consensus 2.1.0", + "alloy-eips 2.1.0", + "alloy-primitives", + "alloy-rlp", + "alloy-trie", + "auto_impl", + "itertools 0.14.0", + "metrics", + "parking_lot", + "reth-execution-errors", + "reth-metrics", + "reth-primitives-traits", + "reth-stages-types", + "reth-storage-errors", + "reth-trie-common", + "reth-trie-sparse", + "revm-database", + "tracing", + "triehash", +] + +[[package]] +name = "reth-trie-common" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-consensus 2.1.0", + "alloy-primitives", + "alloy-rlp", + "alloy-rpc-types-eth 2.1.0", + "alloy-serde 2.1.0", + "alloy-trie", + "arbitrary", + "arrayvec", + "bytes", + "derive_more", + "hash-db", + "itertools 0.14.0", + "nybbles", + "plain_hasher", + "rayon", + "reth-codecs", + "reth-primitives-traits", + "revm-database", + "serde", + "serde_with", +] + +[[package]] +name = "reth-trie-db" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-primitives", + "metrics", + "parking_lot", + "reth-db-api", + "reth-execution-errors", + "reth-metrics", + "reth-primitives-traits", + "reth-stages-types", + "reth-storage-api", + "reth-storage-errors", + "reth-trie", + "reth-trie-common", + "tracing", +] + +[[package]] +name = "reth-trie-parallel" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-eip7928 0.4.5", + "alloy-evm", + "alloy-primitives", + "alloy-rlp", + "crossbeam-channel", + "crossbeam-utils", + "derive_more", + "itertools 0.14.0", + "metrics", + "rayon", + "reth-execution-errors", + "reth-metrics", + "reth-primitives-traits", + "reth-provider", + "reth-storage-errors", + "reth-tasks", + "reth-trie", + "reth-trie-sparse", + "revm-state", + "thiserror 2.0.18", + "tracing", +] + +[[package]] +name = "reth-trie-sparse" +version = "2.3.0" +source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "alloy-trie", + "either", + "metrics", + "rayon", + "reth-execution-errors", + "reth-metrics", + "reth-primitives-traits", + "reth-trie-common", + "serde", + "serde_json", + "slotmap", + "smallvec", + "tracing", +] + +[[package]] +name = "reth-zstd-compressors" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc0e86cf594718932d42cebce1fa48292fb7b92721f7c914631add1ca970e814" +dependencies = [ + "zstd", +] + +[[package]] +name = "revm" +version = "40.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "823da6e5509bb8e5dcd91295870e494917a030ad506fc83301f3f08ad8b15b17" +dependencies = [ + "revm-bytecode", + "revm-context", + "revm-context-interface", + "revm-database", + "revm-database-interface", + "revm-handler", + "revm-inspector", + "revm-interpreter", + "revm-precompile", + "revm-primitives", + "revm-state", +] + +[[package]] +name = "revm-bytecode" +version = "11.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8b378c2653331fe60969d9745e802cd773d82a20d8aaced914dfcf26ab8f0d9" +dependencies = [ + "bitvec", + "phf", + "revm-primitives", + "serde", +] + +[[package]] +name = "revm-context" +version = "18.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bafa298114f3cab706945de14c04e73e6e6d7896302e4183dae273f968e52f80" +dependencies = [ + "bitvec", + "cfg-if", + "derive-where", + "revm-bytecode", + "revm-context-interface", + "revm-database-interface", + "revm-primitives", + "revm-state", + "serde", +] + +[[package]] +name = "revm-context-interface" +version = "19.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db9c13f1dfc79425931fd184b6bd373dfac7baba50859b01107d5c0e20549cbb" +dependencies = [ + "alloy-eip2930", + "alloy-eip7702", + "auto_impl", + "either", + "revm-database-interface", + "revm-primitives", + "revm-state", + "serde", +] + +[[package]] +name = "revm-database" +version = "15.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d" +checksum = "a69c3ce73454a09ef89a66177239d7c4f5f697227ae27254c99451866603b19d" dependencies = [ - "ref-cast-impl", + "alloy-eips 2.1.0", + "derive_more", + "revm-bytecode", + "revm-database-interface", + "revm-primitives", + "revm-state", + "serde", ] [[package]] -name = "ref-cast-impl" -version = "1.0.25" +name = "revm-database-interface" +version = "12.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" +checksum = "4a2656187f9f9c22ef9dd9300ed71aeaeca3506a6a0a229a07f264649b960d68" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", + "auto_impl", + "either", + "revm-primitives", + "revm-state", + "serde", + "thiserror 2.0.18", ] [[package]] -name = "regex" -version = "1.12.3" +name = "revm-handler" +version = "20.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" +checksum = "3ce1d66037ca1394128313bb995fa9f50d834927a389386bb34f8f0ef914648f" dependencies = [ - "aho-corasick", - "memchr", - "regex-automata", - "regex-syntax", + "auto_impl", + "derive-where", + "revm-bytecode", + "revm-context", + "revm-context-interface", + "revm-database-interface", + "revm-interpreter", + "revm-precompile", + "revm-primitives", + "revm-state", + "serde", ] [[package]] -name = "regex-automata" -version = "0.4.14" +name = "revm-inspector" +version = "21.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +checksum = "9fe3635d3411e8318849546570ca0220e783443319e28f5397c9f80b05bf4344" dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax", + "auto_impl", + "either", + "revm-context", + "revm-database-interface", + "revm-handler", + "revm-interpreter", + "revm-primitives", + "revm-state", + "serde", + "serde_json", ] [[package]] -name = "regex-lite" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cab834c73d247e67f4fae452806d17d3c7501756d98c8808d7c9c7aa7d18f973" - -[[package]] -name = "regex-syntax" -version = "0.8.10" +name = "revm-inspectors" +version = "0.40.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" +checksum = "15e0cdc845c8dbf41255c9add80923b45df7bf1dd0473e41483ac398005dba12" +dependencies = [ + "alloy-primitives", + "alloy-rpc-types-eth 2.1.0", + "alloy-rpc-types-trace", + "alloy-sol-types", + "anstyle", + "colorchoice", + "revm", + "serde", + "serde_json", + "thiserror 2.0.18", +] [[package]] -name = "relative-path" -version = "1.9.3" +name = "revm-interpreter" +version = "37.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba39f3699c378cd8970968dcbff9c43159ea4cfbd88d43c00b22f2ef10a435d2" +checksum = "bae56c57ddca1f5c4abd443f826f1b3e49a86a528e7e1ea0fc207cdc4671a37e" +dependencies = [ + "revm-bytecode", + "revm-context-interface", + "revm-primitives", + "revm-state", + "serde", +] [[package]] -name = "remove_dir_all" -version = "0.5.3" +name = "revm-precompile" +version = "36.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" +checksum = "191db865091e07ecb80b12ce3048192c76071ca3d2b0a315b111b271cd4ced37" dependencies = [ - "winapi", + "ark-bls12-381", + "ark-bn254", + "ark-ec", + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "arrayref", + "aurora-engine-modexp", + "aws-lc-rs", + "blst", + "c-kzg", + "cfg-if", + "k256", + "p256", + "revm-context-interface", + "revm-primitives", + "ripemd", + "secp256k1 0.31.1", + "sha2", ] [[package]] -name = "reqwest" -version = "0.12.28" +name = "revm-primitives" +version = "24.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147" +checksum = "fe5102d804892908d4ebf68da29b8562895922dffa26c230ff2c4dadcf93916f" dependencies = [ - "base64 0.22.1", - "bytes", - "futures-core", - "http 1.4.0", - "http-body 1.0.1", - "http-body-util", - "hyper 1.9.0", - "hyper-rustls 0.27.7", - "hyper-util", - "js-sys", - "log", - "percent-encoding", - "pin-project-lite", - "quinn", - "rustls 0.23.37", - "rustls-pki-types", + "alloy-primitives", + "once_cell", "serde", - "serde_json", - "serde_urlencoded", - "sync_wrapper", - "tokio", - "tokio-rustls 0.26.4", - "tower", - "tower-http", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "webpki-roots", ] [[package]] -name = "resolv-conf" -version = "0.7.6" +name = "revm-state" +version = "12.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e061d1b48cb8d38042de4ae0a7a6401009d6143dc80d2e2d6f31f0bdd6470c7" +checksum = "40eff6067185cf80932e06f6a9c8045b012ecb6f99a8d6edc618ec2792373e14" +dependencies = [ + "alloy-eip7928 0.4.5", + "bitflags", + "nonmax", + "revm-bytecode", + "revm-primitives", + "serde", +] [[package]] name = "rfc6979" @@ -7182,10 +12584,34 @@ dependencies = [ "cfg-if", "getrandom 0.2.17", "libc", - "untrusted", + "untrusted 0.9.0", "windows-sys 0.52.0", ] +[[package]] +name = "ringbuffer" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57b0b88a509053cbfd535726dcaaceee631313cef981266119527a1d110f6d2b" + +[[package]] +name = "ripemd" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "rlimit" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f35ee2729c56bb610f6dba436bf78135f728b7373bdffae2ec815b2d3eb98cc3" +dependencies = [ + "libc", +] + [[package]] name = "rlp" version = "0.5.2" @@ -7196,6 +12622,60 @@ dependencies = [ "rustc-hex", ] +[[package]] +name = "rmp" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ba8be72d372b2c9b35542551678538b562e7cf86c3315773cae48dfbfe7790c" +dependencies = [ + "num-traits", +] + +[[package]] +name = "rmp-serde" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72f81bee8c8ef9b577d1681a70ebbc962c232461e397b22c208c43c04b67a155" +dependencies = [ + "rmp", + "serde", +] + +[[package]] +name = "roaring" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dedc5658c6ecb3bdb5ef5f3295bb9253f42dcf3fd1402c03f6b1f7659c3c4a9" +dependencies = [ + "bytemuck", + "byteorder", +] + +[[package]] +name = "rocksdb" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddb7af00d2b17dbd07d82c0063e25411959748ff03e8d4f96134c2ff41fce34f" +dependencies = [ + "libc", + "librocksdb-sys", +] + +[[package]] +name = "rolling-file" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8395b4f860856b740f20a296ea2cd4d823e81a2658cf05ef61be22916026a906" +dependencies = [ + "chrono", +] + +[[package]] +name = "route-recognizer" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afab94fb28594581f62d981211a9a4d53cc8130bbcbbb89a0440d9b8e81a7746" + [[package]] name = "rstest" version = "0.26.1" @@ -7250,6 +12730,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c141e807189ad38a07276942c6623032d3753c8859c146104ac2e4d68865945a" dependencies = [ "alloy-rlp", + "arbitrary", "ark-ff 0.3.0", "ark-ff 0.4.2", "ark-ff 0.5.0", @@ -7310,6 +12791,9 @@ name = "rustc-hash" version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe" +dependencies = [ + "rand 0.8.5", +] [[package]] name = "rustc-hex" @@ -7375,6 +12859,8 @@ version = "0.23.37" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "758025cb5fccfd3bc2fd74708fd4682be41d99e5dff73c377c0646c6012c73a4" dependencies = [ + "aws-lc-rs", + "log", "once_cell", "ring", "rustls-pki-types", @@ -7389,10 +12875,22 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" dependencies = [ - "openssl-probe", + "openssl-probe 0.1.6", "rustls-pemfile", "schannel", - "security-framework", + "security-framework 2.11.1", +] + +[[package]] +name = "rustls-native-certs" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dab5152771c58876a2146916e53e35057e1a4dfa2b9df0f0305b07f611fdea4d" +dependencies = [ + "openssl-probe 0.2.1", + "rustls-pki-types", + "schannel", + "security-framework 3.7.0", ] [[package]] @@ -7414,6 +12912,54 @@ dependencies = [ "zeroize", ] +[[package]] +name = "rustls-platform-verifier" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19787cda76408ec5404443dc8b31795c87cd8fec49762dc75fa727740d34acc1" +dependencies = [ + "core-foundation 0.10.1", + "core-foundation-sys", + "jni 0.21.1", + "log", + "once_cell", + "rustls 0.23.37", + "rustls-native-certs 0.8.4", + "rustls-platform-verifier-android", + "rustls-webpki 0.103.10", + "security-framework 3.7.0", + "security-framework-sys", + "webpki-root-certs 0.26.11", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustls-platform-verifier" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d1e2536ce4f35f4846aa13bff16bd0ff40157cdb14cc056c7b14ba41233ba0" +dependencies = [ + "core-foundation 0.10.1", + "core-foundation-sys", + "jni 0.22.4", + "log", + "once_cell", + "rustls 0.23.37", + "rustls-native-certs 0.8.4", + "rustls-platform-verifier-android", + "rustls-webpki 0.103.10", + "security-framework 3.7.0", + "security-framework-sys", + "webpki-root-certs 1.0.8", + "windows-sys 0.61.2", +] + +[[package]] +name = "rustls-platform-verifier-android" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f" + [[package]] name = "rustls-webpki" version = "0.101.7" @@ -7421,7 +12967,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" dependencies = [ "ring", - "untrusted", + "untrusted 0.9.0", ] [[package]] @@ -7430,9 +12976,10 @@ version = "0.103.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df33b2b81ac578cabaf06b89b0631153a3f416b0a886e8a7a1707fb51abbd1ef" dependencies = [ + "aws-lc-rs", "ring", "rustls-pki-types", - "untrusted", + "untrusted 0.9.0", ] [[package]] @@ -7470,6 +13017,24 @@ version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" +[[package]] +name = "safe_arch" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96b02de82ddbe1b636e6170c21be622223aea188ef2e139be0a5b219ec215323" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + [[package]] name = "scc" version = "2.4.0" @@ -7512,6 +13077,23 @@ dependencies = [ "serde_json", ] +[[package]] +name = "schnellru" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +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" @@ -7525,7 +13107,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" dependencies = [ "ring", - "untrusted", + "untrusted 0.9.0", ] [[package]] @@ -7557,10 +13139,21 @@ checksum = "b50c5943d326858130af85e049f2661ba3c78b26589b8ab98e65e80ae44a1252" dependencies = [ "bitcoin_hashes", "rand 0.8.5", - "secp256k1-sys", + "secp256k1-sys 0.10.1", "serde", ] +[[package]] +name = "secp256k1" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c3c81b43dc2d8877c216a3fccf76677ee1ebccd429566d3e67447290d0c42b2" +dependencies = [ + "bitcoin_hashes", + "rand 0.9.2", + "secp256k1-sys 0.11.0", +] + [[package]] name = "secp256k1-sys" version = "0.10.1" @@ -7570,14 +13163,36 @@ dependencies = [ "cc", ] +[[package]] +name = "secp256k1-sys" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcb913707158fadaf0d8702c2db0e857de66eb003ccfdda5924b5f5ac98efb38" +dependencies = [ + "cc", +] + +[[package]] +name = "security-framework" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +dependencies = [ + "bitflags", + "core-foundation 0.9.4", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + [[package]] name = "security-framework" -version = "2.11.1" +version = "3.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +checksum = "b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d" dependencies = [ "bitflags", - "core-foundation", + "core-foundation 0.10.1", "core-foundation-sys", "libc", "security-framework-sys", @@ -7607,6 +13222,10 @@ name = "semver" version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" +dependencies = [ + "serde", + "serde_core", +] [[package]] name = "semver-parser" @@ -7617,6 +13236,18 @@ dependencies = [ "pest", ] +[[package]] +name = "send_wrapper" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f638d531eccd6e23b980caf34876660d38e265409d8e99b397ab71eb3612fad0" + +[[package]] +name = "send_wrapper" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" + [[package]] name = "serde" version = "1.0.228" @@ -7666,6 +13297,7 @@ version = "1.0.149" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" dependencies = [ + "indexmap 2.13.1", "itoa", "memchr", "serde", @@ -7684,6 +13316,15 @@ dependencies = [ "serde_core", ] +[[package]] +name = "serde_spanned" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26" +dependencies = [ + "serde_core", +] + [[package]] name = "serde_urlencoded" version = "0.7.1" @@ -7721,7 +13362,7 @@ version = "3.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3db8978e608f1fe7357e211969fd9abdcae80bac1ba7a3369bb7eb6b404eb65" dependencies = [ - "darling", + "darling 0.23.0", "proc-macro2", "quote", "syn 2.0.117", @@ -7843,6 +13484,12 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +[[package]] +name = "shlex" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" + [[package]] name = "signal-hook-registry" version = "1.4.8" @@ -7869,6 +13516,22 @@ version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214" +[[package]] +name = "simd_cesu8" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94f90157bb87cddf702797c5dadfa0be7d266cdf49e22da2fcaa32eff75b2c33" +dependencies = [ + "rustc_version 0.4.1", + "simdutf8", +] + +[[package]] +name = "simdutf8" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" + [[package]] name = "simple_asn1" version = "0.6.4" @@ -7887,18 +13550,34 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b2aa850e253778c88a04c3d7323b043aeda9d3e30d5971937c1855769763678e" +[[package]] +name = "sketches-ddsketch" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c6f73aeb92d671e0cc4dca167e59b2deb6387c375391bc99ee743f326994a2b" + [[package]] name = "slab" version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" +[[package]] +name = "slotmap" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdd58c3c93c3d278ca835519292445cb4b0d4dc59ccfdf7ceadaab3f8aeb4038" +dependencies = [ + "version_check", +] + [[package]] name = "smallvec" version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" dependencies = [ + "arbitrary", "serde", ] @@ -7945,6 +13624,22 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "soketto" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e859df029d160cb88608f5d7df7fb4753fd20fdfb4de5644f3d8b8440841721" +dependencies = [ + "base64 0.22.1", + "bytes", + "futures", + "http 1.4.0", + "httparse", + "log", + "rand 0.8.5", + "sha1", +] + [[package]] name = "spin" version = "0.9.8" @@ -8012,6 +13707,27 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" +[[package]] +name = "strum" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf" +dependencies = [ + "strum_macros", +] + +[[package]] +name = "strum_macros" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "sub_protocols" version = "0.1.0" @@ -8041,6 +13757,12 @@ version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" +[[package]] +name = "symlink" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7973cce6668464ea31f176d85b13c7ab3bba2cb3b77a2ed26abd7801688010a" + [[package]] name = "syn" version = "1.0.109" @@ -8065,9 +13787,9 @@ dependencies = [ [[package]] name = "syn-solidity" -version = "1.5.7" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53f425ae0b12e2f5ae65542e00898d500d4d318b4baf09f40fd0d410454e9947" +checksum = "ec005042c7d952febc1a3ef5b0f6674e9054aa836877a31c90b20e25b3d31744" dependencies = [ "paste", "proc-macro2", @@ -8095,6 +13817,20 @@ dependencies = [ "syn 2.0.117", ] +[[package]] +name = "sysinfo" +version = "0.38.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92ab6a2f8bfe508deb3c6406578252e491d299cbbf3bc0529ecc3313aee4a52f" +dependencies = [ + "libc", + "memchr", + "ntapi", + "objc2-core-foundation", + "objc2-io-kit", + "windows", +] + [[package]] name = "system-configuration" version = "0.7.0" @@ -8102,7 +13838,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a13f3d0daba03132c0aa9767f98351b3488edc2c100cda2d2ec2b04f3d8d3c8b" dependencies = [ "bitflags", - "core-foundation", + "core-foundation 0.9.4", "system-configuration-sys", ] @@ -8207,6 +13943,20 @@ dependencies = [ "syn 2.0.117", ] +[[package]] +name = "thread-priority" +version = "3.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d2e834949be5111506bb252643498af1514f600d9e1dceedaa42afae155b67f" +dependencies = [ + "bitflags", + "cfg-if", + "libc", + "log", + "rustversion", + "windows", +] + [[package]] name = "thread_local" version = "1.1.9" @@ -8317,9 +14067,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.51.1" +version = "1.52.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f66bf9585cda4b724d3e78ab34b73fb2bbaba9011b9bfdf69dc836382ea13b8c" +checksum = "8fc7f01b389ac15039e4dc9531aa973a135d7a4135281b12d7c1bc79fd57fffe" dependencies = [ "bytes", "libc", @@ -8382,6 +14132,24 @@ dependencies = [ "futures-core", "pin-project-lite", "tokio", + "tokio-util", +] + +[[package]] +name = "tokio-tungstenite" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d25a406cddcc431a75d3d9afc6a7c0f7428d4891dd973e4d54c56b46127bf857" +dependencies = [ + "futures-util", + "log", + "rustls 0.23.37", + "rustls-native-certs 0.8.4", + "rustls-pki-types", + "tokio", + "tokio-rustls 0.26.4", + "tungstenite", + "webpki-roots 0.26.11", ] [[package]] @@ -8399,6 +14167,30 @@ dependencies = [ "tokio", ] +[[package]] +name = "toml" +version = "0.9.12+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf92845e79fc2e2def6a5d828f0801e29a2f8acc037becc5ab08595c7d5e9863" +dependencies = [ + "indexmap 2.13.1", + "serde_core", + "serde_spanned", + "toml_datetime 0.7.5+spec-1.1.0", + "toml_parser", + "toml_writer", + "winnow 0.7.15", +] + +[[package]] +name = "toml_datetime" +version = "0.7.5+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" +dependencies = [ + "serde_core", +] + [[package]] name = "toml_datetime" version = "1.1.1+spec-1.1.0" @@ -8415,7 +14207,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b59c4d22ed448339746c59b905d24568fcbb3ab65a500494f7b8c3e97739f2b" dependencies = [ "indexmap 2.13.1", - "toml_datetime", + "toml_datetime 1.1.1+spec-1.1.0", "toml_parser", "winnow 1.0.1", ] @@ -8429,6 +14221,49 @@ dependencies = [ "winnow 1.0.1", ] +[[package]] +name = "toml_writer" +version = "1.1.1+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "756daf9b1013ebe47a8776667b466417e2d4c5679d441c26230efd9ef78692db" + +[[package]] +name = "tonic" +version = "0.14.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac2a5518c70fa84342385732db33fb3f44bc4cc748936eb5833d2df34d6445ef" +dependencies = [ + "async-trait", + "base64 0.22.1", + "bytes", + "http 1.4.0", + "http-body 1.0.1", + "http-body-util", + "hyper 1.9.0", + "hyper-timeout 0.5.2", + "hyper-util", + "percent-encoding", + "pin-project", + "sync_wrapper", + "tokio", + "tokio-stream", + "tower", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tonic-prost" +version = "0.14.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50849f68853be452acf590cde0b146665b8d507b3b8af17261df47e02c209ea0" +dependencies = [ + "bytes", + "prost", + "tonic", +] + [[package]] name = "tower" version = "0.5.3" @@ -8437,11 +14272,16 @@ checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" dependencies = [ "futures-core", "futures-util", + "hdrhistogram", + "indexmap 2.13.1", "pin-project-lite", + "slab", "sync_wrapper", "tokio", + "tokio-util", "tower-layer", "tower-service", + "tracing", ] [[package]] @@ -8450,16 +14290,29 @@ version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8" dependencies = [ + "async-compression", + "base64 0.22.1", "bitflags", "bytes", + "futures-core", "futures-util", "http 1.4.0", "http-body 1.0.1", + "http-body-util", + "http-range-header", + "httpdate", "iri-string", + "mime", + "mime_guess", + "percent-encoding", "pin-project-lite", + "tokio", + "tokio-util", "tower", "tower-layer", "tower-service", + "tracing", + "uuid", ] [[package]] @@ -8475,59 +14328,167 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] -name = "tracing" -version = "0.1.44" +name = "tracing" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" +dependencies = [ + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-appender" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "050686193eb999b4bb3bc2acfa891a13da00f79734704c4b8b4ef1a10b368a3c" +dependencies = [ + "crossbeam-channel", + "symlink", + "thiserror 2.0.18", + "time", + "tracing-subscriber 0.3.23", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "tracing-chrome" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf0a738ed5d6450a9fb96e86a23ad808de2b727fd1394585da5cdd6788ffe724" +dependencies = [ + "serde_json", + "tracing-core", + "tracing-subscriber 0.3.23", +] + +[[package]] +name = "tracing-core" +version = "0.1.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-forest" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f09cb459317a3811f76644334473239d696cd8efc606963ae7d1c308cead3b74" +dependencies = [ + "ansi_term", + "smallvec", + "thiserror 2.0.18", + "tracing", + "tracing-subscriber 0.3.23", +] + +[[package]] +name = "tracing-futures" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" +dependencies = [ + "pin-project", + "tracing", +] + +[[package]] +name = "tracing-journald" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d3a81ed245bfb62592b1e2bc153e77656d94ee6a0497683a65a12ccaf2438d0" +dependencies = [ + "libc", + "tracing-core", + "tracing-subscriber 0.3.23", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" dependencies = [ "log", - "pin-project-lite", - "tracing-attributes", + "once_cell", "tracing-core", ] [[package]] -name = "tracing-attributes" -version = "0.1.31" +name = "tracing-logfmt" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" +checksum = "a250055a3518b5efba928a18ffac8d32d42ea607a9affff4532144cd5b2e378e" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", + "time", + "tracing", + "tracing-core", + "tracing-subscriber 0.3.23", ] [[package]] -name = "tracing-core" -version = "0.1.36" +name = "tracing-opentelemetry" +version = "0.32.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" +checksum = "1ac28f2d093c6c477eaa76b23525478f38de514fa9aeb1285738d4b97a9552fc" dependencies = [ - "once_cell", - "valuable", + "js-sys", + "opentelemetry", + "smallvec", + "tracing", + "tracing-core", + "tracing-log", + "tracing-subscriber 0.3.23", + "web-time", ] [[package]] -name = "tracing-forest" -version = "0.3.1" +name = "tracing-samply" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f09cb459317a3811f76644334473239d696cd8efc606963ae7d1c308cead3b74" +checksum = "c175f7ecc002b6ef04776a39f440503e4e788790ddbdbfac8259b7a069526334" dependencies = [ - "ansi_term", + "cfg-if", + "itoa", + "libc", + "mach2 0.5.0", + "memmap2", "smallvec", - "thiserror 2.0.18", - "tracing", - "tracing-subscriber", + "tracing-core", + "tracing-subscriber 0.3.23", ] [[package]] -name = "tracing-log" +name = "tracing-serde" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +checksum = "704b1aeb7be0d0a84fc9828cae51dab5970fee5088f83d1dd7ee6f6246fc6ff1" +dependencies = [ + "serde", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.2.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e0d2eaa99c3c2e41547cfa109e910a68ea03823cccad4a0525dcbc9b01e8c71" dependencies = [ - "log", - "once_cell", "tracing-core", ] @@ -8541,12 +14502,15 @@ dependencies = [ "nu-ansi-term", "once_cell", "regex-automata", + "serde", + "serde_json", "sharded-slab", "smallvec", "thread_local", "tracing", "tracing-core", "tracing-log", + "tracing-serde", ] [[package]] @@ -8556,7 +14520,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "19a4c448db514d4f24c5ddb9f73f2ee71bfb24c526cf0c570ba142d1119e0051" dependencies = [ "tracing-core", - "tracing-subscriber", + "tracing-subscriber 0.3.23", "tracing-test-macro", ] @@ -8599,24 +14563,59 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8840ad4d852e325d3afa7fde8a50b2412f89dce47d7eb291c0cc7f87cd040f38" dependencies = [ - "darling", + "darling 0.23.0", "proc-macro2", "quote", "syn 2.0.117", ] +[[package]] +name = "triehash" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1631b201eb031b563d2e85ca18ec8092508e262a3196ce9bd10a67ec87b9f5c" +dependencies = [ + "hash-db", + "rlp", +] + [[package]] name = "try-lock" version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" +[[package]] +name = "tungstenite" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8628dcc84e5a09eb3d8423d6cb682965dea9133204e8fb3efee74c2a0c259442" +dependencies = [ + "bytes", + "data-encoding", + "http 1.4.0", + "httparse", + "log", + "rand 0.9.2", + "rustls 0.23.37", + "rustls-pki-types", + "sha1", + "thiserror 2.0.18", + "utf-8", +] + [[package]] name = "twox-hash" version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ea3136b675547379c4bd395ca6b938e5ad3c3d20fad76e7fe85f9e0d011419c" +[[package]] +name = "typeid" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" + [[package]] name = "typenum" version = "1.19.0" @@ -8659,6 +14658,12 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" +[[package]] +name = "unicase" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142" + [[package]] name = "unicode-ident" version = "1.0.24" @@ -8719,6 +14724,12 @@ dependencies = [ "tokio-util", ] +[[package]] +name = "untrusted" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" + [[package]] name = "untrusted" version = "0.9.0" @@ -8735,8 +14746,15 @@ dependencies = [ "idna", "percent-encoding", "serde", + "serde_derive", ] +[[package]] +name = "utf-8" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + [[package]] name = "utf8_iter" version = "1.0.4" @@ -8757,7 +14775,7 @@ dependencies = [ "backend 0.1.0 (git+https://github.com/leanEthereum/leanVM.git?rev=2498896ca4d32a545a98a1b1cf1ca78f7f13f553)", "tracing", "tracing-forest", - "tracing-subscriber", + "tracing-subscriber 0.3.23", ] [[package]] @@ -8768,7 +14786,7 @@ dependencies = [ "backend 0.1.0 (git+https://github.com/leanEthereum/leanMultisig.git?rev=e2592df4e30fdddbbf8ae26a333116c68cec7026)", "tracing", "tracing-forest", - "tracing-subscriber", + "tracing-subscriber 0.3.23", ] [[package]] @@ -8795,6 +14813,21 @@ version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" +[[package]] +name = "vergen" +version = "9.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b849a1f6d8639e8de261e81ee0fc881e3e3620db1af9f2e0da015d4382ceaf75" +dependencies = [ + "anyhow", + "cargo_metadata", + "derive_builder", + "regex", + "rustversion", + "time", + "vergen-lib 9.1.0", +] + [[package]] name = "vergen" version = "10.0.0" @@ -8806,7 +14839,22 @@ dependencies = [ "rustc_version 0.4.1", "rustversion", "time", - "vergen-lib", + "vergen-lib 10.0.0", +] + +[[package]] +name = "vergen-git2" +version = "9.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d51ab55ddf1188c8d679f349775362b0fa9e90bd7a4ac69838b2a087623f0d57" +dependencies = [ + "anyhow", + "derive_builder", + "git2 0.20.4", + "rustversion", + "time", + "vergen 9.1.0", + "vergen-lib 9.1.0", ] [[package]] @@ -8817,11 +14865,22 @@ checksum = "b6e1ddb3075d894c0796fa8e592b778b1a6c034cb95d254372e5c2270adbfbfe" dependencies = [ "anyhow", "bon", - "git2", + "git2 0.21.0", "rustversion", "time", - "vergen", - "vergen-lib", + "vergen 10.0.0", + "vergen-lib 10.0.0", +] + +[[package]] +name = "vergen-lib" +version = "9.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b34a29ba7e9c59e62f229ae1932fb1b8fb8a6fdcc99215a641913f5f5a59a569" +dependencies = [ + "anyhow", + "derive_builder", + "rustversion", ] [[package]] @@ -8841,6 +14900,17 @@ version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" +[[package]] +name = "visibility" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d674d135b4a8c1d7e813e2f8d1c9a58308aee4a680323066025e53132218bd91" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "wait-timeout" version = "0.2.1" @@ -8850,6 +14920,16 @@ dependencies = [ "libc", ] +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + [[package]] name = "want" version = "0.3.1" @@ -8960,6 +15040,19 @@ dependencies = [ "wasmparser", ] +[[package]] +name = "wasm-streams" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d1ec4f6517c9e11ae630e200b2b65d193279042e28edd4a2cda233e46670bbb" +dependencies = [ + "futures-util", + "js-sys", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + [[package]] name = "wasmparser" version = "0.244.0" @@ -8972,6 +15065,20 @@ dependencies = [ "semver 1.0.28", ] +[[package]] +name = "wasmtimer" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c598d6b99ea013e35844697fc4670d08339d5cda15588f193c6beedd12f644b" +dependencies = [ + "futures", + "js-sys", + "parking_lot", + "pin-utils", + "slab", + "wasm-bindgen", +] + [[package]] name = "web-sys" version = "0.3.94" @@ -8992,6 +15099,33 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "webpki-root-certs" +version = "0.26.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75c7f0ef91146ebfb530314f5f1d24528d7f0767efbfd31dce919275413e393e" +dependencies = [ + "webpki-root-certs 1.0.8", +] + +[[package]] +name = "webpki-root-certs" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d46a5a140e6f7afeccd8eae97eff335163939eac8b929834875168b29b3d267" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "webpki-roots" +version = "0.26.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" +dependencies = [ + "webpki-roots 1.0.6", +] + [[package]] name = "webpki-roots" version = "1.0.6" @@ -9001,6 +15135,16 @@ dependencies = [ "rustls-pki-types", ] +[[package]] +name = "wide" +version = "0.7.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce5da8ecb62bcd8ec8b7ea19f69a51275e91299be594ea5cc6ef7819e16cd03" +dependencies = [ + "bytemuck", + "safe_arch", +] + [[package]] name = "widestring" version = "1.2.1" @@ -9023,6 +15167,15 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" +[[package]] +name = "winapi-util" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" +dependencies = [ + "windows-sys 0.61.2", +] + [[package]] name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" @@ -9141,6 +15294,15 @@ dependencies = [ "windows-link", ] +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets 0.42.2", +] + [[package]] name = "windows-sys" version = "0.52.0" @@ -9150,6 +15312,15 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + [[package]] name = "windows-sys" version = "0.60.2" @@ -9168,6 +15339,21 @@ dependencies = [ "windows-link", ] +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + [[package]] name = "windows-targets" version = "0.52.6" @@ -9210,6 +15396,12 @@ dependencies = [ "windows-link", ] +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" + [[package]] name = "windows_aarch64_gnullvm" version = "0.52.6" @@ -9222,6 +15414,12 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" + [[package]] name = "windows_aarch64_msvc" version = "0.52.6" @@ -9234,6 +15432,12 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" +[[package]] +name = "windows_i686_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" + [[package]] name = "windows_i686_gnu" version = "0.52.6" @@ -9258,6 +15462,12 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" +[[package]] +name = "windows_i686_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" + [[package]] name = "windows_i686_msvc" version = "0.52.6" @@ -9270,6 +15480,12 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" + [[package]] name = "windows_x86_64_gnu" version = "0.52.6" @@ -9282,6 +15498,12 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" + [[package]] name = "windows_x86_64_gnullvm" version = "0.52.6" @@ -9294,6 +15516,12 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" + [[package]] name = "windows_x86_64_msvc" version = "0.52.6" @@ -9311,9 +15539,6 @@ name = "winnow" version = "0.7.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" -dependencies = [ - "memchr", -] [[package]] name = "winnow" @@ -9418,6 +15643,25 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4" +[[package]] +name = "ws_stream_wasm" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c173014acad22e83f16403ee360115b38846fe754e735c5d9d3803fe70c6abc" +dependencies = [ + "async_io_stream", + "futures", + "js-sys", + "log", + "pharos", + "rustc_version 0.4.1", + "send_wrapper 0.6.0", + "thiserror 2.0.18", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + [[package]] name = "wyz" version = "0.5.1" @@ -9502,6 +15746,12 @@ dependencies = [ "web-time", ] +[[package]] +name = "yansi" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" + [[package]] name = "yasna" version = "0.5.2" diff --git a/Cargo.toml b/Cargo.toml index 3afac41b7..77cff4f29 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -25,6 +25,7 @@ members = [ "crates/common/node", "crates/common/operation_pool", "crates/common/polynomial_commitments", + "crates/common/reth", "crates/common/sync", "crates/common/sync_committee_pool", "crates/common/validator/beacon", @@ -222,6 +223,7 @@ ream-syncer = { path = "crates/networking/syncer", default-features = false } ream-test-utils = { path = "testing/test_utils", default-features = false } ream-validator-beacon = { path = "crates/common/validator/beacon" } ream-validator-lean = { path = "crates/common/validator/lean", default-features = false } +reth-engine = { path = "crates/common/reth", default-features = false } [patch.crates-io] ethereum_hashing = { git = "https://github.com/ReamLabs/ethereum_hashing.git", rev = "c14a9ad96436e6b8b631faf49a3666e4558b71ae" } diff --git a/crates/common/reth/Cargo.toml b/crates/common/reth/Cargo.toml new file mode 100644 index 000000000..042dc4423 --- /dev/null +++ b/crates/common/reth/Cargo.toml @@ -0,0 +1,29 @@ +[package] +name = "reth-engine" +authors.workspace = true +edition.workspace = true +keywords.workspace = true +license.workspace = true +readme.workspace = true +repository.workspace = true +rust-version.workspace = true +version.workspace = true + +[dependencies] +tokio.workspace = true +reth-ethereum = { git = "https://github.com/paradigmxyz/reth.git", rev = "9384bc53d8c0c77e59cac83fdaaf3b372c6d2216", features = [ + "node", + "test-utils", +] } +reth-payload-builder = { git = "https://github.com/paradigmxyz/reth.git", rev = "9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" } +alloy-genesis = "2.1.0" +alloy-primitives.workspace = true +sha2.workspace = true +futures-util = "0.3.32" +eyre = "0.6.12" +serde_json.workspace = true +alloy-rpc-types-engine = "1.6.3" + + +[lints] +workspace = true diff --git a/crates/common/reth/src/lib.rs b/crates/common/reth/src/lib.rs new file mode 100644 index 000000000..69acf284a --- /dev/null +++ b/crates/common/reth/src/lib.rs @@ -0,0 +1 @@ +// reth integration with ream \ No newline at end of file From 859c7d820d8dfb26fdb5d1c4578c1b17fc8c554f Mon Sep 17 00:00:00 2001 From: Sahilgill24 Date: Fri, 26 Jun 2026 07:19:46 +0530 Subject: [PATCH 02/26] feat: reth node setup and handle initialized --- Cargo.lock | 374 ++++++++++++++++--------------- Cargo.toml | 2 +- crates/common/reth/Cargo.toml | 6 +- crates/common/reth/src/handle.rs | 109 +++++++++ crates/common/reth/src/lib.rs | 2 +- 5 files changed, 313 insertions(+), 180 deletions(-) create mode 100644 crates/common/reth/src/handle.rs diff --git a/Cargo.lock b/Cargo.lock index 89e10e339..d3b60ce93 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -555,9 +555,9 @@ dependencies = [ [[package]] name = "alloy-evm" -version = "0.36.0" +version = "0.37.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6e494529570a4d25eb4d1a7456d8f969c3202aceaf703e4006cec5f730aee96" +checksum = "acde665074b478c97047dc2a461b4916cac77922d690e5b7415d1941ae7ff7bf" dependencies = [ "alloy-consensus 2.1.0", "alloy-eips 2.1.0", @@ -4776,7 +4776,6 @@ dependencies = [ "hyper-util", "log", "rustls 0.23.37", - "rustls-native-certs 0.8.4", "rustls-pki-types", "tokio", "tokio-rustls 0.26.4", @@ -7388,9 +7387,9 @@ checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe" [[package]] name = "opentelemetry" -version = "0.31.0" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b84bcd6ae87133e903af7ef497404dda70c60d0ea14895fc8a5e6722754fc2a0" +checksum = "b0142c63252a9e054e68a4c61a5778f7b14f576274d593f8ce883d191a099682" dependencies = [ "futures-core", "futures-sink", @@ -7402,22 +7401,22 @@ dependencies = [ [[package]] name = "opentelemetry-http" -version = "0.31.0" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7a6d09a73194e6b66df7c8f1b680f156d916a1a942abf2de06823dd02b7855d" +checksum = "5683015d09e2df236ef005b17f6f196f0d5f6313c4fa43a7b6a53b52776e4331" dependencies = [ "async-trait", "bytes", "http 1.4.0", "opentelemetry", - "reqwest 0.12.28", + "reqwest 0.13.4", ] [[package]] name = "opentelemetry-otlp" -version = "0.31.1" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f69cd6acbb9af919df949cd1ec9e5e7fdc2ef15d234b6b795aaa525cc02f71f" +checksum = "9966929966d17620d7c316c643ba62631826e10021409357772d5eea84f62c35" dependencies = [ "http 1.4.0", "opentelemetry", @@ -7425,18 +7424,18 @@ dependencies = [ "opentelemetry-proto", "opentelemetry_sdk", "prost", - "reqwest 0.12.28", + "reqwest 0.13.4", "thiserror 2.0.18", "tokio", "tonic", - "tracing", + "tonic-types", ] [[package]] name = "opentelemetry-proto" -version = "0.31.0" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7175df06de5eaee9909d4805a3d07e28bb752c34cab57fa9cff549da596b30f" +checksum = "56d658ba1faf63f7b9c492cfbe6e0ec365440a16132d3270c1065f7b33f1b638" dependencies = [ "opentelemetry", "opentelemetry_sdk", @@ -7447,21 +7446,22 @@ dependencies = [ [[package]] name = "opentelemetry-semantic-conventions" -version = "0.31.0" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e62e29dfe041afb8ed2a6c9737ab57db4907285d999ef8ad3a59092a36bdc846" +checksum = "6ca2f98a0437b427b4b08f19f1caa3c44db885a202bc12cfea13d6c702243d68" [[package]] name = "opentelemetry_sdk" -version = "0.31.0" +version = "0.32.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e14ae4f5991976fd48df6d843de219ca6d31b01daaab2dad5af2badeded372bd" +checksum = "9b59f80e1ac4d5ff7a2db8fb6c80badb7f0f3f858211fba08dd9aaec750894f9" dependencies = [ "futures-channel", "futures-executor", "futures-util", "opentelemetry", "percent-encoding", + "portable-atomic", "rand 0.9.2", "thiserror 2.0.18", ] @@ -8258,6 +8258,15 @@ dependencies = [ "syn 2.0.117", ] +[[package]] +name = "prost-types" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f94967dc7688f3054c7fac87473ffae4cc4c3904800e2d9f5b857246d8963b0a" +dependencies = [ + "prost", +] + [[package]] name = "quanta" version = "0.12.6" @@ -9341,6 +9350,22 @@ dependencies = [ "unsigned-varint 0.8.0", ] +[[package]] +name = "ream-reth-engine" +version = "0.1.0" +dependencies = [ + "alloy-genesis", + "alloy-primitives", + "alloy-rpc-types-engine 1.8.3", + "eyre", + "futures-util", + "reth-ethereum", + "reth-payload-builder", + "serde_json", + "sha2", + "tokio", +] + [[package]] name = "ream-rpc-beacon" version = "0.1.0" @@ -9758,9 +9783,7 @@ checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147" dependencies = [ "base64 0.22.1", "bytes", - "futures-channel", "futures-core", - "futures-util", "http 1.4.0", "http-body 1.0.1", "http-body-util", @@ -9773,7 +9796,6 @@ dependencies = [ "pin-project-lite", "quinn", "rustls 0.23.37", - "rustls-native-certs 0.8.4", "rustls-pki-types", "serde", "serde_json", @@ -9799,6 +9821,7 @@ checksum = "219c5811de6525e5416c7d5d53bb656d3afdbc6c5af816e0802bcfa42dbdc1c3" dependencies = [ "base64 0.22.1", "bytes", + "futures-channel", "futures-core", "futures-util", "http 1.4.0", @@ -9841,7 +9864,7 @@ checksum = "1e061d1b48cb8d38042de4ae0a7a6401009d6143dc80d2e2d6f31f0bdd6470c7" [[package]] name = "reth-basic-payload-builder" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-consensus 2.1.0", "alloy-eips 2.1.0", @@ -9868,7 +9891,7 @@ dependencies = [ [[package]] name = "reth-chain-state" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-consensus 2.1.0", "alloy-eips 2.1.0", @@ -9901,7 +9924,7 @@ dependencies = [ [[package]] name = "reth-chainspec" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-chains", "alloy-consensus 2.1.0", @@ -9921,7 +9944,7 @@ dependencies = [ [[package]] name = "reth-cli-util" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-eips 2.1.0", "alloy-primitives", @@ -9937,9 +9960,9 @@ dependencies = [ [[package]] name = "reth-codecs" -version = "0.4.2" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9c37bb4d1bac98661bf9128e1141b969034640d68697b22f70377e492fd332c" +checksum = "eb43f4858fef4e3b42b80954d2edf1ff67c8ad7498347083cdc7d0f6eff2f081" dependencies = [ "alloy-consensus 2.1.0", "alloy-eips 2.1.0", @@ -9958,9 +9981,9 @@ dependencies = [ [[package]] name = "reth-codecs-derive" -version = "0.4.2" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ceeb8dab90194305d3f7e3f043a22d2db1fb54b6dcf5d8e75c5a4fa8540e1f57" +checksum = "5798ae4d6b264764bc0d742468bd32c7fb515e774645d4930f95ff6311f3ae14" dependencies = [ "proc-macro2", "quote", @@ -9970,7 +9993,7 @@ dependencies = [ [[package]] name = "reth-config" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "eyre", "humantime-serde", @@ -9986,7 +10009,7 @@ dependencies = [ [[package]] name = "reth-consensus" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-consensus 2.1.0", "alloy-eip7928 0.4.5", @@ -10000,7 +10023,7 @@ dependencies = [ [[package]] name = "reth-consensus-common" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-consensus 2.1.0", "alloy-eips 2.1.0", @@ -10013,7 +10036,7 @@ dependencies = [ [[package]] name = "reth-consensus-debug-client" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-consensus 2.1.0", "alloy-eips 2.1.0", @@ -10038,7 +10061,7 @@ dependencies = [ [[package]] name = "reth-db" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-primitives", "derive_more", @@ -10067,7 +10090,7 @@ dependencies = [ [[package]] name = "reth-db-api" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-consensus 2.1.0", "alloy-primitives", @@ -10093,7 +10116,7 @@ dependencies = [ [[package]] name = "reth-db-common" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-consensus 2.1.0", "alloy-genesis", @@ -10123,7 +10146,7 @@ dependencies = [ [[package]] name = "reth-db-models" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-eips 2.1.0", "alloy-primitives", @@ -10138,7 +10161,7 @@ dependencies = [ [[package]] name = "reth-discv4" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -10163,7 +10186,7 @@ dependencies = [ [[package]] name = "reth-discv5" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -10187,7 +10210,7 @@ dependencies = [ [[package]] name = "reth-dns-discovery" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-primitives", "dashmap", @@ -10211,7 +10234,7 @@ dependencies = [ [[package]] name = "reth-downloaders" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-consensus 2.1.0", "alloy-eips 2.1.0", @@ -10243,7 +10266,7 @@ dependencies = [ [[package]] name = "reth-ecies" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "aes", "alloy-primitives", @@ -10268,26 +10291,10 @@ dependencies = [ "tracing", ] -[[package]] -name = "reth-engine" -version = "0.1.0" -dependencies = [ - "alloy-genesis", - "alloy-primitives", - "alloy-rpc-types-engine 1.8.3", - "eyre", - "futures-util", - "reth-ethereum", - "reth-payload-builder", - "serde_json", - "sha2", - "tokio", -] - [[package]] name = "reth-engine-local" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-consensus 2.1.0", "alloy-primitives", @@ -10310,7 +10317,7 @@ dependencies = [ [[package]] name = "reth-engine-primitives" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-consensus 2.1.0", "alloy-eips 2.1.0", @@ -10335,7 +10342,7 @@ dependencies = [ [[package]] name = "reth-engine-tree" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-consensus 2.1.0", "alloy-eip7928 0.4.5", @@ -10393,7 +10400,7 @@ dependencies = [ [[package]] name = "reth-engine-util" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-consensus 2.1.0", "alloy-primitives", @@ -10423,12 +10430,14 @@ dependencies = [ [[package]] name = "reth-era" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-consensus 2.1.0", "alloy-eips 2.1.0", "alloy-primitives", "alloy-rlp", + "alloy-rpc-types-beacon", + "alloy-rpc-types-engine 2.1.0", "ethereum_ssz", "ethereum_ssz_derive", "sha2", @@ -10439,7 +10448,7 @@ dependencies = [ [[package]] name = "reth-era-downloader" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-primitives", "bytes", @@ -10455,10 +10464,11 @@ dependencies = [ [[package]] name = "reth-era-utils" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-consensus 2.1.0", "alloy-primitives", + "alloy-rlp", "eyre", "futures-util", "reth-db-api", @@ -10477,7 +10487,7 @@ dependencies = [ [[package]] name = "reth-errors" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "reth-consensus", "reth-execution-errors", @@ -10488,7 +10498,7 @@ dependencies = [ [[package]] name = "reth-eth-wire" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-chains", "alloy-primitives", @@ -10516,7 +10526,7 @@ dependencies = [ [[package]] name = "reth-eth-wire-types" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-chains", "alloy-consensus 2.1.0", @@ -10538,7 +10548,7 @@ dependencies = [ [[package]] name = "reth-ethereum" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-rpc-types-engine 2.1.0", "alloy-rpc-types-eth 2.1.0", @@ -10576,7 +10586,7 @@ dependencies = [ [[package]] name = "reth-ethereum-consensus" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-consensus 2.1.0", "alloy-eips 2.1.0", @@ -10592,7 +10602,7 @@ dependencies = [ [[package]] name = "reth-ethereum-engine-primitives" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-eips 2.1.0", "alloy-primitives", @@ -10608,7 +10618,7 @@ dependencies = [ [[package]] name = "reth-ethereum-forks" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-eip2124", "alloy-hardforks", @@ -10621,7 +10631,7 @@ dependencies = [ [[package]] name = "reth-ethereum-payload-builder" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-consensus 2.1.0", "alloy-eips 2.1.0", @@ -10651,7 +10661,7 @@ dependencies = [ [[package]] name = "reth-ethereum-primitives" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-consensus 2.1.0", "alloy-eips 2.1.0", @@ -10665,7 +10675,7 @@ dependencies = [ [[package]] name = "reth-etl" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "rayon", "reth-db-api", @@ -10675,7 +10685,7 @@ dependencies = [ [[package]] name = "reth-evm" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-consensus 2.1.0", "alloy-eip7928 0.4.5", @@ -10700,7 +10710,7 @@ dependencies = [ [[package]] name = "reth-evm-ethereum" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-consensus 2.1.0", "alloy-eips 2.1.0", @@ -10720,7 +10730,7 @@ dependencies = [ [[package]] name = "reth-execution-cache" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-primitives", "fixed-cache", @@ -10738,7 +10748,7 @@ dependencies = [ [[package]] name = "reth-execution-errors" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-evm", "alloy-primitives", @@ -10751,7 +10761,7 @@ dependencies = [ [[package]] name = "reth-execution-types" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-consensus 2.1.0", "alloy-eips 2.1.0", @@ -10770,7 +10780,7 @@ dependencies = [ [[package]] name = "reth-exex" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-consensus 2.1.0", "alloy-eips 2.1.0", @@ -10808,7 +10818,7 @@ dependencies = [ [[package]] name = "reth-exex-types" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-eips 2.1.0", "alloy-primitives", @@ -10822,7 +10832,7 @@ dependencies = [ [[package]] name = "reth-fs-util" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "serde", "serde_json", @@ -10832,7 +10842,7 @@ dependencies = [ [[package]] name = "reth-invalid-block-hooks" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-consensus 2.1.0", "alloy-primitives", @@ -10860,7 +10870,7 @@ dependencies = [ [[package]] name = "reth-ipc" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "bytes", "futures", @@ -10880,7 +10890,7 @@ dependencies = [ [[package]] name = "reth-libmdbx" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "bitflags", "byteorder", @@ -10897,7 +10907,7 @@ dependencies = [ [[package]] name = "reth-mdbx-sys" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "bindgen", "cc", @@ -10906,7 +10916,7 @@ dependencies = [ [[package]] name = "reth-metrics" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "futures", "metrics", @@ -10919,7 +10929,7 @@ dependencies = [ [[package]] name = "reth-net-banlist" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-primitives", "ipnet", @@ -10928,7 +10938,7 @@ dependencies = [ [[package]] name = "reth-net-nat" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "futures-util", "if-addrs 0.14.0", @@ -10942,7 +10952,7 @@ dependencies = [ [[package]] name = "reth-network" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-consensus 2.1.0", "alloy-eips 2.1.0", @@ -11000,7 +11010,7 @@ dependencies = [ [[package]] name = "reth-network-api" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-consensus 2.1.0", "alloy-primitives", @@ -11025,9 +11035,10 @@ dependencies = [ [[package]] name = "reth-network-p2p" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-consensus 2.1.0", + "alloy-eip7928 0.4.5", "alloy-eips 2.1.0", "alloy-primitives", "auto_impl", @@ -11048,7 +11059,7 @@ dependencies = [ [[package]] name = "reth-network-peers" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -11063,7 +11074,7 @@ dependencies = [ [[package]] name = "reth-network-types" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-eip2124", "humantime-serde", @@ -11077,7 +11088,7 @@ dependencies = [ [[package]] name = "reth-nippy-jar" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "anyhow", "bincode", @@ -11094,7 +11105,7 @@ dependencies = [ [[package]] name = "reth-node-api" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-rpc-types-engine 2.1.0", "eyre", @@ -11118,7 +11129,7 @@ dependencies = [ [[package]] name = "reth-node-builder" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-consensus 2.1.0", "alloy-eips 2.1.0", @@ -11186,7 +11197,7 @@ dependencies = [ [[package]] name = "reth-node-core" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-consensus 2.1.0", "alloy-eips 2.1.0", @@ -11241,7 +11252,7 @@ dependencies = [ [[package]] name = "reth-node-ethereum" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-consensus 2.1.0", "alloy-eips 2.1.0", @@ -11288,7 +11299,7 @@ dependencies = [ [[package]] name = "reth-node-ethstats" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-consensus 2.1.0", "alloy-primitives", @@ -11312,7 +11323,7 @@ dependencies = [ [[package]] name = "reth-node-events" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-consensus 2.1.0", "alloy-eips 2.1.0", @@ -11336,7 +11347,7 @@ dependencies = [ [[package]] name = "reth-node-metrics" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "bytes", "eyre", @@ -11359,7 +11370,7 @@ dependencies = [ [[package]] name = "reth-node-types" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "reth-chainspec", "reth-db-api", @@ -11371,7 +11382,7 @@ dependencies = [ [[package]] name = "reth-payload-builder" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-consensus 2.1.0", "alloy-primitives", @@ -11395,7 +11406,7 @@ dependencies = [ [[package]] name = "reth-payload-builder-primitives" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "pin-project", "reth-payload-primitives", @@ -11407,7 +11418,7 @@ dependencies = [ [[package]] name = "reth-payload-primitives" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-consensus 2.1.0", "alloy-eips 2.1.0", @@ -11430,7 +11441,7 @@ dependencies = [ [[package]] name = "reth-payload-validator" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-consensus 2.1.0", "alloy-rpc-types-engine 2.1.0", @@ -11439,9 +11450,9 @@ dependencies = [ [[package]] name = "reth-primitives-traits" -version = "0.4.2" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9102518f0bbf99bc8f0e656a56fb2a7513248630275b608d3706076a82fde42b" +checksum = "f59c928b2865af5bcdbce94800270b7f7798f27a22ca0aabdd2b7d3e6587c9ce" dependencies = [ "alloy-consensus 2.1.0", "alloy-eips 2.1.0", @@ -11473,7 +11484,7 @@ dependencies = [ [[package]] name = "reth-provider" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-consensus 2.1.0", "alloy-eip7928 0.4.5", @@ -11522,7 +11533,7 @@ dependencies = [ [[package]] name = "reth-prune" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-consensus 2.1.0", "alloy-primitives", @@ -11550,7 +11561,7 @@ dependencies = [ [[package]] name = "reth-prune-types" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-primitives", "arbitrary", @@ -11566,7 +11577,7 @@ dependencies = [ [[package]] name = "reth-revm" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -11581,10 +11592,11 @@ dependencies = [ [[package]] name = "reth-rpc" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-consensus 2.1.0", "alloy-dyn-abi", + "alloy-eip7928 0.4.5", "alloy-eips 2.1.0", "alloy-evm", "alloy-genesis", @@ -11629,6 +11641,7 @@ dependencies = [ "reth-network-peers", "reth-network-types", "reth-node-api", + "reth-payload-primitives", "reth-primitives-traits", "reth-revm", "reth-rpc-api", @@ -11657,7 +11670,7 @@ dependencies = [ [[package]] name = "reth-rpc-api" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-eips 2.1.0", "alloy-genesis", @@ -11687,7 +11700,7 @@ dependencies = [ [[package]] name = "reth-rpc-builder" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-network", "alloy-provider", @@ -11730,7 +11743,7 @@ dependencies = [ [[package]] name = "reth-rpc-convert" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-consensus 2.1.0", "alloy-evm", @@ -11750,7 +11763,7 @@ dependencies = [ [[package]] name = "reth-rpc-engine-api" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-eips 2.1.0", "alloy-primitives", @@ -11781,7 +11794,7 @@ dependencies = [ [[package]] name = "reth-rpc-eth-api" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-consensus 2.1.0", "alloy-dyn-abi", @@ -11828,7 +11841,7 @@ dependencies = [ [[package]] name = "reth-rpc-eth-types" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-chains", "alloy-consensus 2.1.0", @@ -11879,7 +11892,7 @@ dependencies = [ [[package]] name = "reth-rpc-layer" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-rpc-types-engine 2.1.0", "http 1.4.0", @@ -11893,7 +11906,7 @@ dependencies = [ [[package]] name = "reth-rpc-server-types" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-eips 2.1.0", "alloy-primitives", @@ -11908,9 +11921,9 @@ dependencies = [ [[package]] name = "reth-rpc-traits" -version = "0.4.2" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fa03a2c9681c385ae1c72b169ac9c3525163b71db0b3362f16e8929e19e45fd" +checksum = "ace77dbcdd59c014fda4565ebfec76cd1fe6f5d98584b4655e8d22a947b9eee3" dependencies = [ "alloy-consensus 2.1.0", "alloy-network", @@ -11924,7 +11937,7 @@ dependencies = [ [[package]] name = "reth-stages" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-consensus 2.1.0", "alloy-primitives", @@ -11975,7 +11988,7 @@ dependencies = [ [[package]] name = "reth-stages-api" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-eips 2.1.0", "alloy-primitives", @@ -12003,7 +12016,7 @@ dependencies = [ [[package]] name = "reth-stages-types" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-primitives", "arbitrary", @@ -12017,7 +12030,7 @@ dependencies = [ [[package]] name = "reth-static-file" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-primitives", "parking_lot", @@ -12037,7 +12050,7 @@ dependencies = [ [[package]] name = "reth-static-file-types" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-primitives", "derive_more", @@ -12051,7 +12064,7 @@ dependencies = [ [[package]] name = "reth-storage-api" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-consensus 2.1.0", "alloy-eip7928 0.4.5", @@ -12077,7 +12090,7 @@ dependencies = [ [[package]] name = "reth-storage-errors" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-eips 2.1.0", "alloy-primitives", @@ -12095,7 +12108,7 @@ dependencies = [ [[package]] name = "reth-tasks" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "crossbeam-utils", "dashmap", @@ -12116,7 +12129,7 @@ dependencies = [ [[package]] name = "reth-testing-utils" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-consensus 2.1.0", "alloy-eips 2.1.0", @@ -12132,7 +12145,7 @@ dependencies = [ [[package]] name = "reth-tokio-util" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "tokio", "tokio-stream", @@ -12142,7 +12155,7 @@ dependencies = [ [[package]] name = "reth-tracing" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "clap", "eyre", @@ -12160,7 +12173,7 @@ dependencies = [ [[package]] name = "reth-tracing-otlp" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "base64 0.22.1", "clap", @@ -12178,7 +12191,7 @@ dependencies = [ [[package]] name = "reth-transaction-pool" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-consensus 2.1.0", "alloy-eips 2.1.0", @@ -12223,7 +12236,7 @@ dependencies = [ [[package]] name = "reth-trie" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-consensus 2.1.0", "alloy-eips 2.1.0", @@ -12249,7 +12262,7 @@ dependencies = [ [[package]] name = "reth-trie-common" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-consensus 2.1.0", "alloy-primitives", @@ -12269,6 +12282,7 @@ dependencies = [ "reth-codecs", "reth-primitives-traits", "revm-database", + "revm-state", "serde", "serde_with", ] @@ -12276,7 +12290,7 @@ dependencies = [ [[package]] name = "reth-trie-db" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-primitives", "metrics", @@ -12285,7 +12299,6 @@ dependencies = [ "reth-execution-errors", "reth-metrics", "reth-primitives-traits", - "reth-stages-types", "reth-storage-api", "reth-storage-errors", "reth-trie", @@ -12296,7 +12309,7 @@ dependencies = [ [[package]] name = "reth-trie-parallel" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-eip7928 0.4.5", "alloy-evm", @@ -12324,10 +12337,9 @@ dependencies = [ [[package]] name = "reth-trie-sparse" version = "2.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=9384bc53d8c0c77e59cac83fdaaf3b372c6d2216#9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" +source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-primitives", - "alloy-rlp", "alloy-trie", "either", "metrics", @@ -12345,18 +12357,18 @@ dependencies = [ [[package]] name = "reth-zstd-compressors" -version = "0.4.2" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc0e86cf594718932d42cebce1fa48292fb7b92721f7c914631add1ca970e814" +checksum = "e1bd4ae4f54a2ba813eef082910bc646bd31cab8ed134308fa71f1068331fb84" dependencies = [ "zstd", ] [[package]] name = "revm" -version = "40.0.3" +version = "41.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "823da6e5509bb8e5dcd91295870e494917a030ad506fc83301f3f08ad8b15b17" +checksum = "9d51c254839fb36357d0b02d02e46ba57e683d7b017e2da33b47ae74685a9e59" dependencies = [ "revm-bytecode", "revm-context", @@ -12373,9 +12385,9 @@ dependencies = [ [[package]] name = "revm-bytecode" -version = "11.0.1" +version = "41.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8b378c2653331fe60969d9745e802cd773d82a20d8aaced914dfcf26ab8f0d9" +checksum = "e33493cf6d996e9242db4f2002caef48ec9aa8c4f3fff3b18aed10ef3942eec7" dependencies = [ "bitvec", "phf", @@ -12385,9 +12397,9 @@ dependencies = [ [[package]] name = "revm-context" -version = "18.0.3" +version = "41.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bafa298114f3cab706945de14c04e73e6e6d7896302e4183dae273f968e52f80" +checksum = "86e48fc736d9542c082ea5305be44b6a14b53a615f0147ad57f62189fd813068" dependencies = [ "bitvec", "cfg-if", @@ -12402,9 +12414,9 @@ dependencies = [ [[package]] name = "revm-context-interface" -version = "19.0.3" +version = "41.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db9c13f1dfc79425931fd184b6bd373dfac7baba50859b01107d5c0e20549cbb" +checksum = "ac68282a454318246817486835a446519291dd0a8167d09de14c7e96f2147696" dependencies = [ "alloy-eip2930", "alloy-eip7702", @@ -12418,12 +12430,13 @@ dependencies = [ [[package]] name = "revm-database" -version = "15.0.2" +version = "41.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a69c3ce73454a09ef89a66177239d7c4f5f697227ae27254c99451866603b19d" +checksum = "d761681a43e48408ea23f7f66ff56ff7b6128cadb8f9135d1b94787d0c0fc6b4" dependencies = [ "alloy-eips 2.1.0", "derive_more", + "either", "revm-bytecode", "revm-database-interface", "revm-primitives", @@ -12433,9 +12446,9 @@ dependencies = [ [[package]] name = "revm-database-interface" -version = "12.1.1" +version = "41.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a2656187f9f9c22ef9dd9300ed71aeaeca3506a6a0a229a07f264649b960d68" +checksum = "b96e37d62fa60b45987b408486c84ebef4af4e7ddf1b3b96b4955a7263fd4e92" dependencies = [ "auto_impl", "either", @@ -12447,9 +12460,9 @@ dependencies = [ [[package]] name = "revm-handler" -version = "20.0.3" +version = "41.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ce1d66037ca1394128313bb995fa9f50d834927a389386bb34f8f0ef914648f" +checksum = "f5e043ebfc0899c435e44475796285898e4f822e637bd67856da79cc170bd9df" dependencies = [ "auto_impl", "derive-where", @@ -12466,9 +12479,9 @@ dependencies = [ [[package]] name = "revm-inspector" -version = "21.0.3" +version = "41.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fe3635d3411e8318849546570ca0220e783443319e28f5397c9f80b05bf4344" +checksum = "2e470b2a5e177918944d8cd26174455b61b8fbfbbe7fe411d28b4097e410d11e" dependencies = [ "auto_impl", "either", @@ -12484,9 +12497,9 @@ dependencies = [ [[package]] name = "revm-inspectors" -version = "0.40.1" +version = "0.41.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15e0cdc845c8dbf41255c9add80923b45df7bf1dd0473e41483ac398005dba12" +checksum = "ac492384995d832d6910920a932c000436623ec18668ff9291cb78f96c8b710f" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth 2.1.0", @@ -12502,9 +12515,9 @@ dependencies = [ [[package]] name = "revm-interpreter" -version = "37.0.3" +version = "41.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bae56c57ddca1f5c4abd443f826f1b3e49a86a528e7e1ea0fc207cdc4671a37e" +checksum = "fa5547f653f9e4c47b4f9a9075a0b7c0faea5fa29b7873f392733a943837825d" dependencies = [ "revm-bytecode", "revm-context-interface", @@ -12515,9 +12528,9 @@ dependencies = [ [[package]] name = "revm-precompile" -version = "36.0.3" +version = "41.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "191db865091e07ecb80b12ce3048192c76071ca3d2b0a315b111b271cd4ced37" +checksum = "6d785931e4b8750cf9d79c808c22f05979c8d191baafc8badd4651db82584c1c" dependencies = [ "ark-bls12-381", "ark-bn254", @@ -12541,9 +12554,9 @@ dependencies = [ [[package]] name = "revm-primitives" -version = "24.0.1" +version = "41.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe5102d804892908d4ebf68da29b8562895922dffa26c230ff2c4dadcf93916f" +checksum = "66f39151a31afe93d97f7ac894dd9dcc989368d5ccba19ce079bfc1d73b77452" dependencies = [ "alloy-primitives", "once_cell", @@ -12552,9 +12565,9 @@ dependencies = [ [[package]] name = "revm-state" -version = "12.0.1" +version = "41.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40eff6067185cf80932e06f6a9c8045b012ecb6f99a8d6edc618ec2792373e14" +checksum = "73ef2fffc28acc41e8ef7525f2b1d16288a10f80579a1b33e7e62abc9892314a" dependencies = [ "alloy-eip7928 0.4.5", "bitflags", @@ -14264,6 +14277,17 @@ dependencies = [ "tonic", ] +[[package]] +name = "tonic-types" +version = "0.14.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73ab1b02061f83d519bba3caa167f88f261ef05720ab8ebc954ade70de3348e8" +dependencies = [ + "prost", + "prost-types", + "tonic", +] + [[package]] name = "tower" version = "0.5.3" @@ -14443,9 +14467,9 @@ dependencies = [ [[package]] name = "tracing-opentelemetry" -version = "0.32.1" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ac28f2d093c6c477eaa76b23525478f38de514fa9aeb1285738d4b97a9552fc" +checksum = "adbc64cba7137545b8044cb1fe9814f7aacf3c6b5f9b45be8bb5db538befdb26" dependencies = [ "js-sys", "opentelemetry", diff --git a/Cargo.toml b/Cargo.toml index 77cff4f29..34bbd3dd4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -223,7 +223,7 @@ ream-syncer = { path = "crates/networking/syncer", default-features = false } ream-test-utils = { path = "testing/test_utils", default-features = false } ream-validator-beacon = { path = "crates/common/validator/beacon" } ream-validator-lean = { path = "crates/common/validator/lean", default-features = false } -reth-engine = { path = "crates/common/reth", default-features = false } +ream-reth-engine = { path = "crates/common/reth", default-features = false } [patch.crates-io] ethereum_hashing = { git = "https://github.com/ReamLabs/ethereum_hashing.git", rev = "c14a9ad96436e6b8b631faf49a3666e4558b71ae" } diff --git a/crates/common/reth/Cargo.toml b/crates/common/reth/Cargo.toml index 042dc4423..af63c4022 100644 --- a/crates/common/reth/Cargo.toml +++ b/crates/common/reth/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "reth-engine" +name = "ream-reth-engine" authors.workspace = true edition.workspace = true keywords.workspace = true @@ -11,11 +11,11 @@ version.workspace = true [dependencies] tokio.workspace = true -reth-ethereum = { git = "https://github.com/paradigmxyz/reth.git", rev = "9384bc53d8c0c77e59cac83fdaaf3b372c6d2216", features = [ +reth-ethereum = { git = "https://github.com/paradigmxyz/reth.git", rev = "5d027e5ff72f31270b862f8e000d1cc79621be2e", features = [ "node", "test-utils", ] } -reth-payload-builder = { git = "https://github.com/paradigmxyz/reth.git", rev = "9384bc53d8c0c77e59cac83fdaaf3b372c6d2216" } +reth-payload-builder = { git = "https://github.com/paradigmxyz/reth.git", rev = "5d027e5ff72f31270b862f8e000d1cc79621be2e" } alloy-genesis = "2.1.0" alloy-primitives.workspace = true sha2.workspace = true diff --git a/crates/common/reth/src/handle.rs b/crates/common/reth/src/handle.rs new file mode 100644 index 000000000..cd73d9bd1 --- /dev/null +++ b/crates/common/reth/src/handle.rs @@ -0,0 +1,109 @@ +#![warn(unused)] + +use alloy_genesis::Genesis; +use alloy_primitives::{B256, b256, hex}; +use reth_ethereum::{ + chainspec::ChainSpec, + node::{ + EthEngineTypes, EthereumNode, + builder::{NodeBuilder, NodeHandle}, + core::node_config::NodeConfig, + }, + tasks::Runtime, +}; +use std::sync::Arc; + +use reth_ethereum::node::api::{ConsensusEngineHandle, PayloadTypes}; +use reth_payload_builder::PayloadBuilderHandle; + +#[derive(Debug)] +pub struct ReamRethHandle { + pub consensus_engine_handle: ConsensusEngineHandle, + pub payload_builder_handle: PayloadBuilderHandle, +} + +impl ReamRethHandle { + pub fn new( + consensus_engine_handle: ConsensusEngineHandle, + payload_builder_handle: PayloadBuilderHandle, + ) -> Self { + Self { + consensus_engine_handle, + payload_builder_handle, + } + } +} + +pub async fn start_reth() -> eyre::Result> { + let runtime = Runtime::test(); + + let node_config = NodeConfig::test() + .dev() + .with_chain(custom_chain()) + .with_unused_ports(); + + let NodeHandle { + node, + node_exit_future, + } = NodeBuilder::new(node_config) + .testing_node(runtime) + .node(EthereumNode::default()) + .launch_with_debug_capabilities() + .await?; + + let reth_handles = ReamRethHandle::new( + node.consensus_engine_handle().clone(), + node.payload_builder_handle.clone(), + ); + + tokio::spawn(async move { + let _node = node; + let _ = node_exit_future.await; + }); + + Ok(reth_handles) +} + +fn custom_chain() -> Arc { + let custom_genesis = r#" +{ + "nonce": "0x42", + "timestamp": "0x0", + "extraData": "0x5343", + "gasLimit": "0x1C9C380", + "difficulty": "0x400000000", + "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "coinbase": "0x0000000000000000000000000000000000000000", + "alloc": { + "0x6Be02d1d3665660d22FF9624b7BE0551ee1Ac91b": { + "balance": "0x4a47e3c12448f4ad000000" + } + }, + "number": "0x0", + "gasUsed": "0x0", + "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "config": { + "ethash": {}, + "chainId": 2600, + "homesteadBlock": 0, + "eip150Block": 0, + "eip155Block": 0, + "eip158Block": 0, + "byzantiumBlock": 0, + "constantinopleBlock": 0, + "petersburgBlock": 0, + "istanbulBlock": 0, + "berlinBlock": 0, + "londonBlock": 0, + "terminalTotalDifficulty": 0, + "terminalTotalDifficultyPassed": true, + "shanghaiTime": 0, + "cancunTime": 0, + "pragueTime": 0, + "amsterdamTime": 0 + } +} +"#; + let genesis: Genesis = serde_json::from_str(custom_genesis).unwrap(); + Arc::new(genesis.into()) +} diff --git a/crates/common/reth/src/lib.rs b/crates/common/reth/src/lib.rs index 69acf284a..5d699cda0 100644 --- a/crates/common/reth/src/lib.rs +++ b/crates/common/reth/src/lib.rs @@ -1 +1 @@ -// reth integration with ream \ No newline at end of file +pub mod handle; \ No newline at end of file From 46c65df3523ea5799523166601428b5e5250d27c Mon Sep 17 00:00:00 2001 From: Sahilgill24 Date: Sat, 27 Jun 2026 04:40:55 +0530 Subject: [PATCH 03/26] feat: adding fork choice updated function and relevant helper functions --- crates/common/reth/src/fork_choice.rs | 74 +++++++++++++++++++++++++++ crates/common/reth/src/lib.rs | 3 +- 2 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 crates/common/reth/src/fork_choice.rs diff --git a/crates/common/reth/src/fork_choice.rs b/crates/common/reth/src/fork_choice.rs new file mode 100644 index 000000000..9873bddf1 --- /dev/null +++ b/crates/common/reth/src/fork_choice.rs @@ -0,0 +1,74 @@ +use alloy_primitives::{Address, B256}; +use alloy_rpc_types_engine::ForkchoiceState; +use reth_ethereum::engine::EthPayloadAttributes; +use sha2::{Digest, Sha256}; + +/// Creates a `ForkchoiceState` used by the Engine API. +/// +/// The fork choice state specifies the current head, justified, and finalized +/// block hashes from ream. +pub fn create_fork_choice_state( + head_block_hash: B256, + safe_block_hash: B256, + finalized_block_hash: B256, +) -> ForkchoiceState { + ForkchoiceState { + head_block_hash, + safe_block_hash, + finalized_block_hash, + } +} + +/// Creates an `EthPayloadAttributes` request for payload building. +/// +/// These attributes are supplied to the execution layer during +/// to initiate the construction of a new payload. +/// +/// Withdrawals are currently omitted and set to None. +pub fn create_payload_attributes( + timestamp: u64, + prev_randao: B256, + suggested_fee_recipient: Address, + parent_beacon_block_root: Option, + slot_number: Option, + target_gas_limit: Option, +) -> EthPayloadAttributes { + EthPayloadAttributes { + timestamp, + prev_randao, + suggested_fee_recipient, + withdrawals: None, + parent_beacon_block_root, + slot_number, + target_gas_limit, + } +} + +/// Creates payload attributes for a Ream block proposal. +/// +/// The timestamp is computed from the slot and genesis time. The +/// `prev_randao` value is deterministically derived from the parent Lean +/// block root and slot. +pub fn create_ream_payload_attributes( + slot: u64, + parent_lean_block_root: B256, + genesis_time: u64, + seconds_per_slot: u64, +) -> EthPayloadAttributes { + let prev_randao = { + // prev_randao = SHA256(parent_lean_block_root || slot) + let mut h = Sha256::new(); + h.update(parent_lean_block_root.as_slice()); + h.update(slot.to_le_bytes()); + B256::from_slice(&h.finalize()) + }; + + create_payload_attributes( + genesis_time + slot * seconds_per_slot, + prev_randao, + Address::ZERO, + Some(parent_lean_block_root), + Some(slot), + None, + ) +} diff --git a/crates/common/reth/src/lib.rs b/crates/common/reth/src/lib.rs index 5d699cda0..822032992 100644 --- a/crates/common/reth/src/lib.rs +++ b/crates/common/reth/src/lib.rs @@ -1 +1,2 @@ -pub mod handle; \ No newline at end of file +pub mod fork_choice; +pub mod handle; From ed1c55402672a346356e5e3056829d25c3670f2e Mon Sep 17 00:00:00 2001 From: Sahilgill24 Date: Sat, 27 Jun 2026 04:41:46 +0530 Subject: [PATCH 04/26] test: adding tests for handle and FCU --- Cargo.lock | 76 ++++++++++++------------------ Cargo.toml | 2 +- crates/common/reth/Cargo.toml | 21 +++++---- crates/common/reth/src/handle.rs | 79 ++++++++++++++++++++++++++++---- 4 files changed, 112 insertions(+), 66 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d3b60ce93..d82a1e1d1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -563,7 +563,7 @@ dependencies = [ "alloy-eips 2.1.0", "alloy-hardforks", "alloy-primitives", - "alloy-rpc-types-engine 2.1.0", + "alloy-rpc-types-engine", "alloy-rpc-types-eth 2.1.0", "alloy-sol-types", "auto_impl", @@ -833,7 +833,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a05ef5b11fad72068e6f011c21445bc5b596ac850644c4a14c30d845ce56de8" dependencies = [ "alloy-primitives", - "alloy-rpc-types-engine 2.1.0", + "alloy-rpc-types-engine", "alloy-rpc-types-eth 2.1.0", "alloy-serde 2.1.0", "serde", @@ -886,7 +886,7 @@ checksum = "57af0eb1ee47312e8c92ddf2669308249015fc2cf733eb17251e7343c27b70c7" dependencies = [ "alloy-eips 2.1.0", "alloy-primitives", - "alloy-rpc-types-engine 2.1.0", + "alloy-rpc-types-engine", "derive_more", "ethereum_ssz", "ethereum_ssz_derive", @@ -911,24 +911,6 @@ dependencies = [ "serde_with", ] -[[package]] -name = "alloy-rpc-types-engine" -version = "1.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb9b97b6e7965679ad22df297dda809b11cebc13405c1b537e5cffecc95834fa" -dependencies = [ - "alloy-consensus 1.8.3", - "alloy-eips 1.8.3", - "alloy-primitives", - "alloy-rlp", - "alloy-serde 1.8.3", - "derive_more", - "jsonwebtoken 9.3.1", - "rand 0.8.5", - "serde", - "strum", -] - [[package]] name = "alloy-rpc-types-engine" version = "2.1.0" @@ -9356,12 +9338,14 @@ version = "0.1.0" dependencies = [ "alloy-genesis", "alloy-primitives", - "alloy-rpc-types-engine 1.8.3", + "alloy-rpc-types-engine", "eyre", "futures-util", + "reqwest 0.12.28", "reth-ethereum", "reth-payload-builder", "serde_json", + "serial_test", "sha2", "tokio", ] @@ -10043,7 +10027,7 @@ dependencies = [ "alloy-json-rpc", "alloy-primitives", "alloy-provider", - "alloy-rpc-types-engine 2.1.0", + "alloy-rpc-types-engine", "alloy-transport", "auto_impl", "derive_more", @@ -10298,7 +10282,7 @@ source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f dependencies = [ "alloy-consensus 2.1.0", "alloy-primitives", - "alloy-rpc-types-engine 2.1.0", + "alloy-rpc-types-engine", "eyre", "futures-util", "reth-chainspec", @@ -10322,7 +10306,7 @@ dependencies = [ "alloy-consensus 2.1.0", "alloy-eips 2.1.0", "alloy-primitives", - "alloy-rpc-types-engine 2.1.0", + "alloy-rpc-types-engine", "auto_impl", "futures", "reth-chain-state", @@ -10350,7 +10334,7 @@ dependencies = [ "alloy-evm", "alloy-primitives", "alloy-rlp", - "alloy-rpc-types-engine 2.1.0", + "alloy-rpc-types-engine", "crossbeam-channel", "derive_more", "futures", @@ -10405,7 +10389,7 @@ dependencies = [ "alloy-consensus 2.1.0", "alloy-primitives", "alloy-rlp", - "alloy-rpc-types-engine 2.1.0", + "alloy-rpc-types-engine", "eyre", "futures", "itertools 0.14.0", @@ -10437,7 +10421,7 @@ dependencies = [ "alloy-primitives", "alloy-rlp", "alloy-rpc-types-beacon", - "alloy-rpc-types-engine 2.1.0", + "alloy-rpc-types-engine", "ethereum_ssz", "ethereum_ssz_derive", "sha2", @@ -10550,7 +10534,7 @@ name = "reth-ethereum" version = "2.3.0" source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ - "alloy-rpc-types-engine 2.1.0", + "alloy-rpc-types-engine", "alloy-rpc-types-eth 2.1.0", "reth-chainspec", "reth-codecs", @@ -10606,7 +10590,7 @@ source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f dependencies = [ "alloy-eips 2.1.0", "alloy-primitives", - "alloy-rpc-types-engine 2.1.0", + "alloy-rpc-types-engine", "reth-engine-primitives", "reth-ethereum-primitives", "reth-payload-primitives", @@ -10637,7 +10621,7 @@ dependencies = [ "alloy-eips 2.1.0", "alloy-primitives", "alloy-rlp", - "alloy-rpc-types-engine 2.1.0", + "alloy-rpc-types-engine", "reth-basic-payload-builder", "reth-chainspec", "reth-consensus-common", @@ -10716,7 +10700,7 @@ dependencies = [ "alloy-eips 2.1.0", "alloy-evm", "alloy-primitives", - "alloy-rpc-types-engine 2.1.0", + "alloy-rpc-types-engine", "reth-chainspec", "reth-ethereum-forks", "reth-ethereum-primitives", @@ -11107,7 +11091,7 @@ name = "reth-node-api" version = "2.3.0" source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ - "alloy-rpc-types-engine 2.1.0", + "alloy-rpc-types-engine", "eyre", "reth-basic-payload-builder", "reth-consensus", @@ -11136,7 +11120,7 @@ dependencies = [ "alloy-primitives", "alloy-provider", "alloy-rpc-types", - "alloy-rpc-types-engine 2.1.0", + "alloy-rpc-types-engine", "aquamarine", "eyre", "fdlimit", @@ -11202,7 +11186,7 @@ dependencies = [ "alloy-consensus 2.1.0", "alloy-eips 2.1.0", "alloy-primitives", - "alloy-rpc-types-engine 2.1.0", + "alloy-rpc-types-engine", "clap", "derive_more", "dirs-next", @@ -11258,7 +11242,7 @@ dependencies = [ "alloy-eips 2.1.0", "alloy-network", "alloy-primitives", - "alloy-rpc-types-engine 2.1.0", + "alloy-rpc-types-engine", "alloy-rpc-types-eth 2.1.0", "ethereum_ssz", "eyre", @@ -11328,7 +11312,7 @@ dependencies = [ "alloy-consensus 2.1.0", "alloy-eips 2.1.0", "alloy-primitives", - "alloy-rpc-types-engine 2.1.0", + "alloy-rpc-types-engine", "derive_more", "futures", "humantime", @@ -11424,7 +11408,7 @@ dependencies = [ "alloy-eips 2.1.0", "alloy-primitives", "alloy-rlp", - "alloy-rpc-types-engine 2.1.0", + "alloy-rpc-types-engine", "auto_impl", "either", "reth-chainspec", @@ -11444,7 +11428,7 @@ version = "2.3.0" source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ "alloy-consensus 2.1.0", - "alloy-rpc-types-engine 2.1.0", + "alloy-rpc-types-engine", "reth-primitives-traits", ] @@ -11491,7 +11475,7 @@ dependencies = [ "alloy-eips 2.1.0", "alloy-genesis", "alloy-primitives", - "alloy-rpc-types-engine 2.1.0", + "alloy-rpc-types-engine", "eyre", "itertools 0.14.0", "metrics", @@ -11608,7 +11592,7 @@ dependencies = [ "alloy-rpc-types-admin", "alloy-rpc-types-beacon", "alloy-rpc-types-debug", - "alloy-rpc-types-engine 2.1.0", + "alloy-rpc-types-engine", "alloy-rpc-types-eth 2.1.0", "alloy-rpc-types-mev", "alloy-rpc-types-trace", @@ -11681,7 +11665,7 @@ dependencies = [ "alloy-rpc-types-anvil", "alloy-rpc-types-beacon", "alloy-rpc-types-debug", - "alloy-rpc-types-engine 2.1.0", + "alloy-rpc-types-engine", "alloy-rpc-types-eth 2.1.0", "alloy-rpc-types-mev", "alloy-rpc-types-trace", @@ -11768,7 +11752,7 @@ dependencies = [ "alloy-eips 2.1.0", "alloy-primitives", "alloy-rlp", - "alloy-rpc-types-engine 2.1.0", + "alloy-rpc-types-engine", "async-trait", "jsonrpsee-core", "jsonrpsee-types", @@ -11894,7 +11878,7 @@ name = "reth-rpc-layer" version = "2.3.0" source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f8e000d1cc79621be2e#5d027e5ff72f31270b862f8e000d1cc79621be2e" dependencies = [ - "alloy-rpc-types-engine 2.1.0", + "alloy-rpc-types-engine", "http 1.4.0", "jsonrpsee-http-client", "pin-project", @@ -11910,7 +11894,7 @@ source = "git+https://github.com/paradigmxyz/reth.git?rev=5d027e5ff72f31270b862f dependencies = [ "alloy-eips 2.1.0", "alloy-primitives", - "alloy-rpc-types-engine 2.1.0", + "alloy-rpc-types-engine", "jsonrpsee-core", "jsonrpsee-types", "reth-errors", @@ -12070,7 +12054,7 @@ dependencies = [ "alloy-eip7928 0.4.5", "alloy-eips 2.1.0", "alloy-primitives", - "alloy-rpc-types-engine 2.1.0", + "alloy-rpc-types-engine", "auto_impl", "reth-chainspec", "reth-db-api", diff --git a/Cargo.toml b/Cargo.toml index 34bbd3dd4..7b0a63a32 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -213,6 +213,7 @@ ream-peer = { path = "crates/networking/peer" } ream-polynomial-commitments = { path = "crates/common/polynomial_commitments" } ream-post-quantum-crypto = { path = "crates/crypto/post_quantum", default-features = false } ream-req-resp = { path = "crates/networking/req_resp", default-features = false } +ream-reth-engine = { path = "crates/common/reth", default-features = false } ream-rpc-beacon = { path = "crates/rpc/beacon", default-features = false } ream-rpc-common = { path = "crates/rpc/common" } ream-rpc-lean = { path = "crates/rpc/lean", default-features = false } @@ -223,7 +224,6 @@ ream-syncer = { path = "crates/networking/syncer", default-features = false } ream-test-utils = { path = "testing/test_utils", default-features = false } ream-validator-beacon = { path = "crates/common/validator/beacon" } ream-validator-lean = { path = "crates/common/validator/lean", default-features = false } -ream-reth-engine = { path = "crates/common/reth", default-features = false } [patch.crates-io] ethereum_hashing = { git = "https://github.com/ReamLabs/ethereum_hashing.git", rev = "c14a9ad96436e6b8b631faf49a3666e4558b71ae" } diff --git a/crates/common/reth/Cargo.toml b/crates/common/reth/Cargo.toml index af63c4022..20ff6fed1 100644 --- a/crates/common/reth/Cargo.toml +++ b/crates/common/reth/Cargo.toml @@ -10,20 +10,23 @@ rust-version.workspace = true version.workspace = true [dependencies] -tokio.workspace = true -reth-ethereum = { git = "https://github.com/paradigmxyz/reth.git", rev = "5d027e5ff72f31270b862f8e000d1cc79621be2e", features = [ - "node", - "test-utils", -] } -reth-payload-builder = { git = "https://github.com/paradigmxyz/reth.git", rev = "5d027e5ff72f31270b862f8e000d1cc79621be2e" } alloy-genesis = "2.1.0" alloy-primitives.workspace = true -sha2.workspace = true -futures-util = "0.3.32" +alloy-rpc-types-engine = "2.1.0" eyre = "0.6.12" +futures-util = "0.3.32" +reqwest.workspace = true +reth-ethereum = { git = "https://github.com/paradigmxyz/reth.git", rev = "5d027e5ff72f31270b862f8e000d1cc79621be2e", features = [ + "node", + "test-utils", +] } +reth-payload-builder = { git = "https://github.com/paradigmxyz/reth.git", rev = "5d027e5ff72f31270b862f8e000d1cc79621be2e" } serde_json.workspace = true -alloy-rpc-types-engine = "1.6.3" +sha2.workspace = true +tokio.workspace = true +[dev-dependencies] +serial_test = "3.4.0" [lints] workspace = true diff --git a/crates/common/reth/src/handle.rs b/crates/common/reth/src/handle.rs index cd73d9bd1..8d48c3603 100644 --- a/crates/common/reth/src/handle.rs +++ b/crates/common/reth/src/handle.rs @@ -1,19 +1,18 @@ -#![warn(unused)] +#![warn(unused_imports)] + +use std::sync::Arc; use alloy_genesis::Genesis; -use alloy_primitives::{B256, b256, hex}; use reth_ethereum::{ chainspec::ChainSpec, node::{ EthEngineTypes, EthereumNode, + api::{ConsensusEngineHandle, PayloadTypes}, builder::{NodeBuilder, NodeHandle}, - core::node_config::NodeConfig, + core::{args::RpcServerArgs, node_config::NodeConfig}, }, tasks::Runtime, }; -use std::sync::Arc; - -use reth_ethereum::node::api::{ConsensusEngineHandle, PayloadTypes}; use reth_payload_builder::PayloadBuilderHandle; #[derive(Debug)] @@ -39,8 +38,8 @@ pub async fn start_reth() -> eyre::Result> { let node_config = NodeConfig::test() .dev() - .with_chain(custom_chain()) - .with_unused_ports(); + .with_rpc(RpcServerArgs::default().with_http()) + .with_chain(custom_chain()); let NodeHandle { node, @@ -64,7 +63,7 @@ pub async fn start_reth() -> eyre::Result> { Ok(reth_handles) } -fn custom_chain() -> Arc { +pub fn custom_chain() -> Arc { let custom_genesis = r#" { "nonce": "0x42", @@ -104,6 +103,66 @@ fn custom_chain() -> Arc { } } "#; - let genesis: Genesis = serde_json::from_str(custom_genesis).unwrap(); + let genesis: Genesis = serde_json::from_str(custom_genesis).expect("genesis failed"); Arc::new(genesis.into()) } + +#[cfg(test)] +mod test { + use alloy_primitives::{B256, hex}; + use alloy_rpc_types_engine::{ForkchoiceState, PayloadStatusEnum}; + use serial_test::serial; + + use super::*; + use crate::fork_choice::{create_fork_choice_state, create_ream_payload_attributes}; + + #[tokio::test] + #[serial] + async fn test_fork_choice_update() { + let handle = start_reth().await.unwrap(); + let genesis_hash = custom_chain().genesis_hash(); + let fork_choice_state: ForkchoiceState = + create_fork_choice_state(genesis_hash, B256::ZERO, B256::ZERO); + let payload_attrs = create_ream_payload_attributes(1, B256::ZERO, 0, 4); + + let fork_choice_updated = handle + .consensus_engine_handle + .fork_choice_updated(fork_choice_state, Some(payload_attrs)) + .await + .unwrap(); + + assert_eq!( + fork_choice_updated.payload_status.status, + PayloadStatusEnum::Valid + ); + } + + #[tokio::test] + #[serial] + async fn test_transaction_received() -> eyre::Result<()> { + let _node = start_reth().await.unwrap(); + let _raw_tx = hex!( + "02f876820a28808477359400847735940082520894ab0840c0e43688012c1adb0f5e3fc665188f83d28a029d394a5d630544000080c080a0a044076b7e67b5deecc63f61a8d7913fab86ca365b344b5759d1fe3563b4c39ea019eab979dd000da04dfc72bb0377c092d30fd9e1cab5ae487de49586cc8b0090" + ); + // Only for test here, no need in actual node + tokio::time::sleep(std::time::Duration::from_millis(100)).await; + + let client = reqwest::Client::new(); + let response = client + .post("http://127.0.0.1:8545") + .json(&serde_json::json!({ + "jsonrpc": "2.0", + "method": "eth_sendRawTransaction", + "params": [ + "0x02f876820a28808477359400847735940082520894ab0840c0e43688012c1adb0f5e3fc665188f83d28a029d394a5d630544000080c080a0a044076b7e67b5deecc63f61a8d7913fab86ca365b344b5759d1fe3563b4c39ea019eab979dd000da04dfc72bb0377c092d30fd9e1cab5ae487de49586cc8b0090" + ], + "id": 1 + })) + .send() + .await?; + + println!("{}", response.text().await?); + + Ok(()) + } +} From 751809e4451d6f2f1b07f0a5bcfbc92969c4a9fb Mon Sep 17 00:00:00 2001 From: Soham Zemse <22412996+zemse@users.noreply.github.com> Date: Thu, 2 Jul 2026 20:44:45 +0530 Subject: [PATCH 05/26] feat: payload module for building & importing --- crates/common/reth/src/lib.rs | 1 + crates/common/reth/src/payload.rs | 81 +++++++++++++++++++++++++++++++ 2 files changed, 82 insertions(+) create mode 100644 crates/common/reth/src/payload.rs diff --git a/crates/common/reth/src/lib.rs b/crates/common/reth/src/lib.rs index 822032992..bef56f63b 100644 --- a/crates/common/reth/src/lib.rs +++ b/crates/common/reth/src/lib.rs @@ -1,2 +1,3 @@ pub mod fork_choice; pub mod handle; +pub mod payload; diff --git a/crates/common/reth/src/payload.rs b/crates/common/reth/src/payload.rs new file mode 100644 index 000000000..c45220900 --- /dev/null +++ b/crates/common/reth/src/payload.rs @@ -0,0 +1,81 @@ +use alloy_primitives::{Address, B256}; +use alloy_rpc_types_engine::{ + CancunPayloadFields, ExecutionData, ExecutionPayload, ExecutionPayloadEnvelopeV3, + ExecutionPayloadSidecar, ExecutionPayloadV3, PayloadStatus, +}; +use eyre::OptionExt; +use reth_ethereum::{ + engine::EthPayloadAttributes, + node::{EthEngineTypes, api::ConsensusEngineHandle}, +}; +use reth_payload_builder::{BuildNewPayload, PayloadBuilderHandle, PayloadKind}; + +pub struct ElPayloadRequest { + pub parent_hash: B256, + pub timestamp: u64, + pub prev_randao: B256, + pub fee_recipient: Address, + pub parent_lean_block_root: B256, + pub slot_number: u64, +} + +/// Builds an execution payload for a Lean block, equivalent to +/// `engine_getPayloadV3`. +/// +/// Returns an `ExecutionPayloadEnvelopeV3`, which splits into an +/// `ExecutionPayloadV3` for the Lean block body and a `BlobsBundleV1` for the +/// DA layer. +pub async fn build( + payload_builder: &PayloadBuilderHandle, + request: ElPayloadRequest, +) -> eyre::Result { + let attributes = EthPayloadAttributes { + timestamp: request.timestamp, + prev_randao: request.prev_randao, + suggested_fee_recipient: request.fee_recipient, + withdrawals: Some(Vec::new()), // TODO currently no deposit/withdrawal on Lean + parent_beacon_block_root: Some(request.parent_lean_block_root), + slot_number: Some(request.slot_number), + target_gas_limit: None, // TODO newly introduced in glamsterdam + }; + + let payload_id = payload_builder + .send_new_payload(BuildNewPayload { + attributes, + parent_hash: request.parent_hash, + cache: None, + trie_handle: None, + }) + .await??; + + let built = payload_builder + .resolve_kind(payload_id, PayloadKind::WaitForPending) + .await + .ok_or_eyre("payload could not be resolved")??; + + Ok(built.try_into_v3()?) +} + +/// Imports an execution payload from a Lean block into the execution layer via +/// `engine_newPayloadV3`. +/// +/// Returns a `PayloadStatus` reporting whether the EL accepted the payload +/// (`Valid`, `Invalid`, or `Syncing`), so the caller must inspect it. +pub async fn import( + consensus_engine_handle: &ConsensusEngineHandle, + payload: ExecutionPayloadV3, + parent_beacon_block_root: B256, + versioned_hashes: Vec, +) -> eyre::Result { + let execution_data = ExecutionData::new( + ExecutionPayload::from(payload), + ExecutionPayloadSidecar::v3(CancunPayloadFields { + parent_beacon_block_root, + versioned_hashes, + }), + ); + + let status = consensus_engine_handle.new_payload(execution_data).await?; + + Ok(status) +} From 70bbbadf2a23f31abea98f6116d91ae9d8881867 Mon Sep 17 00:00:00 2001 From: Soham Zemse <22412996+zemse@users.noreply.github.com> Date: Thu, 2 Jul 2026 21:06:59 +0530 Subject: [PATCH 06/26] ref: reth handle --- crates/common/reth/src/handle.rs | 75 ++++++++++++-------------------- 1 file changed, 29 insertions(+), 46 deletions(-) diff --git a/crates/common/reth/src/handle.rs b/crates/common/reth/src/handle.rs index 8d48c3603..ac5391af3 100644 --- a/crates/common/reth/src/handle.rs +++ b/crates/common/reth/src/handle.rs @@ -6,61 +6,42 @@ use alloy_genesis::Genesis; use reth_ethereum::{ chainspec::ChainSpec, node::{ - EthEngineTypes, EthereumNode, - api::{ConsensusEngineHandle, PayloadTypes}, - builder::{NodeBuilder, NodeHandle}, + EthereumNode, + builder::{NodeBuilder, NodeHandleFor}, core::{args::RpcServerArgs, node_config::NodeConfig}, }, - tasks::Runtime, + provider::db::{DatabaseEnv, test_utils::TempDatabase}, + tasks::{RuntimeBuilder, RuntimeConfig, TokioConfig}, }; -use reth_payload_builder::PayloadBuilderHandle; +use tokio::runtime::Handle; #[derive(Debug)] -pub struct ReamRethHandle { - pub consensus_engine_handle: ConsensusEngineHandle, - pub payload_builder_handle: PayloadBuilderHandle, +pub struct RethHandle { + pub reth: NodeHandleFor>>, } -impl ReamRethHandle { - pub fn new( - consensus_engine_handle: ConsensusEngineHandle, - payload_builder_handle: PayloadBuilderHandle, - ) -> Self { - Self { - consensus_engine_handle, - payload_builder_handle, +impl RethHandle { + pub async fn start(ream_rt: Option) -> eyre::Result { + let mut config = RuntimeConfig::default(); + if let Some(handle) = ream_rt { + config = config.with_tokio(TokioConfig::existing_handle(handle)); } - } -} -pub async fn start_reth() -> eyre::Result> { - let runtime = Runtime::test(); - - let node_config = NodeConfig::test() - .dev() - .with_rpc(RpcServerArgs::default().with_http()) - .with_chain(custom_chain()); - - let NodeHandle { - node, - node_exit_future, - } = NodeBuilder::new(node_config) - .testing_node(runtime) - .node(EthereumNode::default()) - .launch_with_debug_capabilities() - .await?; + let reth_rt = RuntimeBuilder::new(config).build()?; - let reth_handles = ReamRethHandle::new( - node.consensus_engine_handle().clone(), - node.payload_builder_handle.clone(), - ); + let node_config = NodeConfig::test() + .dev() + .with_rpc(RpcServerArgs::default().with_http()) + .with_chain(custom_chain()); - tokio::spawn(async move { - let _node = node; - let _ = node_exit_future.await; - }); + let reth = NodeBuilder::new(node_config) + .testing_node(reth_rt) + .node(EthereumNode::default()) + .launch_with_debug_capabilities() + .await?; - Ok(reth_handles) + Ok(RethHandle { reth }) + } } pub fn custom_chain() -> Arc { @@ -119,14 +100,16 @@ mod test { #[tokio::test] #[serial] async fn test_fork_choice_update() { - let handle = start_reth().await.unwrap(); + let handle = RethHandle::start(None).await.unwrap(); let genesis_hash = custom_chain().genesis_hash(); let fork_choice_state: ForkchoiceState = create_fork_choice_state(genesis_hash, B256::ZERO, B256::ZERO); let payload_attrs = create_ream_payload_attributes(1, B256::ZERO, 0, 4); let fork_choice_updated = handle - .consensus_engine_handle + .reth + .node + .consensus_engine_handle() .fork_choice_updated(fork_choice_state, Some(payload_attrs)) .await .unwrap(); @@ -140,7 +123,7 @@ mod test { #[tokio::test] #[serial] async fn test_transaction_received() -> eyre::Result<()> { - let _node = start_reth().await.unwrap(); + let _node = RethHandle::start(None).await.unwrap(); let _raw_tx = hex!( "02f876820a28808477359400847735940082520894ab0840c0e43688012c1adb0f5e3fc665188f83d28a029d394a5d630544000080c080a0a044076b7e67b5deecc63f61a8d7913fab86ca365b344b5759d1fe3563b4c39ea019eab979dd000da04dfc72bb0377c092d30fd9e1cab5ae487de49586cc8b0090" ); From 640269308d553cc2b85535bbd0f976dedf991b79 Mon Sep 17 00:00:00 2001 From: Soham Zemse <22412996+zemse@users.noreply.github.com> Date: Thu, 2 Jul 2026 21:32:27 +0530 Subject: [PATCH 07/26] feat: add reth to bin/ream --- Cargo.lock | 1 + bin/ream/Cargo.toml | 2 ++ bin/ream/src/main.rs | 27 +++++++++++++++++++++++++++ 3 files changed, 30 insertions(+) diff --git a/Cargo.lock b/Cargo.lock index d82a1e1d1..4c8a3615b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8612,6 +8612,7 @@ dependencies = [ "ream-operation-pool", "ream-p2p", "ream-post-quantum-crypto", + "ream-reth-engine", "ream-rpc-beacon", "ream-rpc-common", "ream-rpc-lean", diff --git a/bin/ream/Cargo.toml b/bin/ream/Cargo.toml index f1d01e87c..788ef71dc 100644 --- a/bin/ream/Cargo.toml +++ b/bin/ream/Cargo.toml @@ -38,6 +38,7 @@ devnet5 = [ "ream-storage/devnet5", "ream-validator-lean/devnet5", ] +reth = ["dep:ream-reth-engine"] [dependencies] alloy-primitives.workspace = true @@ -90,6 +91,7 @@ ream-node.workspace = true ream-operation-pool.workspace = true ream-p2p.workspace = true ream-post-quantum-crypto.workspace = true +ream-reth-engine = { workspace = true, optional = true } ream-rpc-beacon.workspace = true ream-rpc-common.workspace = true ream-rpc-lean.workspace = true diff --git a/bin/ream/src/main.rs b/bin/ream/src/main.rs index 7f6faa22e..8842c9a06 100644 --- a/bin/ream/src/main.rs +++ b/bin/ream/src/main.rs @@ -83,6 +83,8 @@ use ream_post_quantum_crypto::leansig::signature::Signature; use ream_post_quantum_crypto::leansig::{ private_key::PrivateKey as LeanSigPrivateKey, public_key::PublicKey, }; +#[cfg(feature = "reth")] +use ream_reth_engine::handle::RethHandle; use ream_rpc_common::config::RpcServerConfig; use ream_rpc_lean::{handlers::test_driver::test_driver_enabled, server::start_test_driver}; use ream_storage::{ @@ -443,6 +445,28 @@ pub async fn run_lean_node(config: LeanNodeConfig, executor: ReamExecutor, ream_ config.http_allow_origin, ); + // Start the reth EL embedded in the same process. `reth_handle` owns the node, so it must + // live at function scope for the whole run; the block returns the owned handle. + #[cfg(feature = "reth")] + let mut reth_handle = { + let handle = RethHandle::start(Some(executor.runtime().handle().clone())) + .await + .expect("failed to boot embedded reth execution layer"); + + info!( + "Embedded reth is started with genesis hash: {:?}", + handle.reth.node.chain_spec().genesis_hash() + ); + + handle + }; + + #[cfg(feature = "reth")] + let reth_exit = &mut reth_handle.reth.node_exit_future; + + #[cfg(not(feature = "reth"))] + let reth_exit = std::future::pending::<()>(); + // Start the services concurrently. let mut chain_task = AbortOnDrop(executor.spawn(async move { chain_service.start().await }.in_current_span())); @@ -485,6 +509,9 @@ pub async fn run_lean_node(config: LeanNodeConfig, executor: ReamExecutor, ream_ result = &mut http_task.0 => { error!("RPC service has stopped unexpectedly: {result:?}"); } + result = reth_exit => { + error!("Embedded reth execution layer has stopped unexpectedly: {result:?}"); + } } } From 70237961cba9c06365934f4dcfe4de50121d94c8 Mon Sep 17 00:00:00 2001 From: Soham Zemse <22412996+zemse@users.noreply.github.com> Date: Thu, 2 Jul 2026 22:01:44 +0530 Subject: [PATCH 08/26] feat: add build_payload & import_payload to RethHandle --- crates/common/reth/src/handle.rs | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/crates/common/reth/src/handle.rs b/crates/common/reth/src/handle.rs index ac5391af3..9104ada72 100644 --- a/crates/common/reth/src/handle.rs +++ b/crates/common/reth/src/handle.rs @@ -3,6 +3,8 @@ use std::sync::Arc; use alloy_genesis::Genesis; +use alloy_primitives::B256; +use alloy_rpc_types_engine::{ExecutionPayloadEnvelopeV3, ExecutionPayloadV3, PayloadStatus}; use reth_ethereum::{ chainspec::ChainSpec, node::{ @@ -15,6 +17,8 @@ use reth_ethereum::{ }; use tokio::runtime::Handle; +use crate::payload::{self, ElPayloadRequest}; + #[derive(Debug)] pub struct RethHandle { pub reth: NodeHandleFor>>, @@ -42,6 +46,28 @@ impl RethHandle { Ok(RethHandle { reth }) } + + pub async fn build_payload( + &self, + request: ElPayloadRequest, + ) -> eyre::Result { + payload::build(&self.reth.node.payload_builder_handle, request).await + } + + pub async fn import_payload( + &self, + payload: ExecutionPayloadV3, + parent_beacon_block_root: B256, + versioned_hashes: Vec, + ) -> eyre::Result { + payload::import( + &self.reth.node.consensus_engine_handle(), + payload, + parent_beacon_block_root, + versioned_hashes, + ) + .await + } } pub fn custom_chain() -> Arc { From 43ee4797e3bfb222a6efadb2bccabe0dfdfa3603 Mon Sep 17 00:00:00 2001 From: Soham Zemse <22412996+zemse@users.noreply.github.com> Date: Thu, 2 Jul 2026 23:34:38 +0530 Subject: [PATCH 09/26] feat: add data dir to the reth node --- bin/ream/src/cli/lean_node.rs | 7 ++++ bin/ream/src/main.rs | 9 +++-- crates/common/reth/src/handle.rs | 69 +++++++++++++++++++++++++------- 3 files changed, 67 insertions(+), 18 deletions(-) diff --git a/bin/ream/src/cli/lean_node.rs b/bin/ream/src/cli/lean_node.rs index 683e01df6..da61bc63b 100644 --- a/bin/ream/src/cli/lean_node.rs +++ b/bin/ream/src/cli/lean_node.rs @@ -92,6 +92,13 @@ pub struct LeanNodeConfig { help = "Number of attestation committees (subnets). Each validator's subnet is `validator_id % count`." )] pub attestation_committee_count: u64, + + #[arg( + long, + default_value = "./reth-data", + help = "Data directory for the embedded reth execution layer (MDBX database). Only used when built with `--features reth`." + )] + pub reth_datadir: PathBuf, } impl LeanNodeConfig { diff --git a/bin/ream/src/main.rs b/bin/ream/src/main.rs index 8842c9a06..8a2225790 100644 --- a/bin/ream/src/main.rs +++ b/bin/ream/src/main.rs @@ -449,9 +449,12 @@ pub async fn run_lean_node(config: LeanNodeConfig, executor: ReamExecutor, ream_ // live at function scope for the whole run; the block returns the owned handle. #[cfg(feature = "reth")] let mut reth_handle = { - let handle = RethHandle::start(Some(executor.runtime().handle().clone())) - .await - .expect("failed to boot embedded reth execution layer"); + let handle = RethHandle::start( + Some(executor.runtime().handle().clone()), + config.reth_datadir.clone(), + ) + .await + .expect("failed to boot embedded reth execution layer"); info!( "Embedded reth is started with genesis hash: {:?}", diff --git a/crates/common/reth/src/handle.rs b/crates/common/reth/src/handle.rs index 9104ada72..a5c7591bf 100644 --- a/crates/common/reth/src/handle.rs +++ b/crates/common/reth/src/handle.rs @@ -1,6 +1,6 @@ #![warn(unused_imports)] -use std::sync::Arc; +use std::{path::PathBuf, sync::Arc}; use alloy_genesis::Genesis; use alloy_primitives::B256; @@ -10,22 +10,31 @@ use reth_ethereum::{ node::{ EthereumNode, builder::{NodeBuilder, NodeHandleFor}, - core::{args::RpcServerArgs, node_config::NodeConfig}, + core::{ + args::{DatadirArgs, RpcServerArgs}, + node_config::NodeConfig, + }, + }, + provider::db::{ + ClientVersion, Database, DatabaseEnv, database_metrics::DatabaseMetrics, init_db, + mdbx::DatabaseArguments, test_utils::TempDatabase, }, - provider::db::{DatabaseEnv, test_utils::TempDatabase}, tasks::{RuntimeBuilder, RuntimeConfig, TokioConfig}, }; use tokio::runtime::Handle; use crate::payload::{self, ElPayloadRequest}; -#[derive(Debug)] -pub struct RethHandle { - pub reth: NodeHandleFor>>, +pub struct RethHandle +where + DB: Database + DatabaseMetrics + Clone + Unpin + 'static, +{ + pub reth: NodeHandleFor, } -impl RethHandle { - pub async fn start(ream_rt: Option) -> eyre::Result { +impl RethHandle { + // Start a reth node with the given tokio runtime handle and persistent data directory. + pub async fn start(ream_rt: Option, datadir: PathBuf) -> eyre::Result { let mut config = RuntimeConfig::default(); if let Some(handle) = ream_rt { config = config.with_tokio(TokioConfig::existing_handle(handle)); @@ -33,20 +42,50 @@ impl RethHandle { let reth_rt = RuntimeBuilder::new(config).build()?; - let node_config = NodeConfig::test() - .dev() + let node_config = NodeConfig::new(custom_chain()) .with_rpc(RpcServerArgs::default().with_http()) - .with_chain(custom_chain()); + .with_datadir_args(DatadirArgs { + datadir: datadir.into(), + ..Default::default() + }); + + let database = init_db( + node_config.datadir().db(), + DatabaseArguments::new(ClientVersion::default()), + )?; let reth = NodeBuilder::new(node_config) - .testing_node(reth_rt) + .with_database(database) + .with_launch_context(reth_rt) .node(EthereumNode::default()) .launch_with_debug_capabilities() .await?; Ok(RethHandle { reth }) } +} +impl RethHandle>> { + // Start a reth node with a temporary in-memory database for testing. + pub async fn test() -> eyre::Result { + let reth_rt = RuntimeBuilder::new(RuntimeConfig::default()).build()?; + + let reth = NodeBuilder::new( + NodeConfig::new(custom_chain()).with_rpc(RpcServerArgs::default().with_http()), + ) + .testing_node(reth_rt) + .node(EthereumNode::default()) + .launch_with_debug_capabilities() + .await?; + + Ok(RethHandle { reth }) + } +} + +impl RethHandle +where + DB: Database + DatabaseMetrics + Clone + Unpin + 'static, +{ pub async fn build_payload( &self, request: ElPayloadRequest, @@ -61,7 +100,7 @@ impl RethHandle { versioned_hashes: Vec, ) -> eyre::Result { payload::import( - &self.reth.node.consensus_engine_handle(), + self.reth.node.consensus_engine_handle(), payload, parent_beacon_block_root, versioned_hashes, @@ -126,7 +165,7 @@ mod test { #[tokio::test] #[serial] async fn test_fork_choice_update() { - let handle = RethHandle::start(None).await.unwrap(); + let handle = RethHandle::test().await.unwrap(); let genesis_hash = custom_chain().genesis_hash(); let fork_choice_state: ForkchoiceState = create_fork_choice_state(genesis_hash, B256::ZERO, B256::ZERO); @@ -149,7 +188,7 @@ mod test { #[tokio::test] #[serial] async fn test_transaction_received() -> eyre::Result<()> { - let _node = RethHandle::start(None).await.unwrap(); + let _node = RethHandle::test().await.unwrap(); let _raw_tx = hex!( "02f876820a28808477359400847735940082520894ab0840c0e43688012c1adb0f5e3fc665188f83d28a029d394a5d630544000080c080a0a044076b7e67b5deecc63f61a8d7913fab86ca365b344b5759d1fe3563b4c39ea019eab979dd000da04dfc72bb0377c092d30fd9e1cab5ae487de49586cc8b0090" ); From b0c6c5d270af05e165ee0a501986aa0fb501fa89 Mon Sep 17 00:00:00 2001 From: Sahilgill24 Date: Fri, 3 Jul 2026 02:27:12 +0530 Subject: [PATCH 10/26] feat: changes in payload building --- crates/common/reth/src/payload.rs | 69 +++++-------------------------- 1 file changed, 10 insertions(+), 59 deletions(-) diff --git a/crates/common/reth/src/payload.rs b/crates/common/reth/src/payload.rs index c45220900..9aa456fc3 100644 --- a/crates/common/reth/src/payload.rs +++ b/crates/common/reth/src/payload.rs @@ -1,81 +1,32 @@ -use alloy_primitives::{Address, B256}; -use alloy_rpc_types_engine::{ - CancunPayloadFields, ExecutionData, ExecutionPayload, ExecutionPayloadEnvelopeV3, - ExecutionPayloadSidecar, ExecutionPayloadV3, PayloadStatus, -}; +use alloy_rpc_types_engine::{ExecutionData, PayloadStatus}; use eyre::OptionExt; -use reth_ethereum::{ - engine::EthPayloadAttributes, - node::{EthEngineTypes, api::ConsensusEngineHandle}, -}; -use reth_payload_builder::{BuildNewPayload, PayloadBuilderHandle, PayloadKind}; - -pub struct ElPayloadRequest { - pub parent_hash: B256, - pub timestamp: u64, - pub prev_randao: B256, - pub fee_recipient: Address, - pub parent_lean_block_root: B256, - pub slot_number: u64, -} +use reth_ethereum::node::{EthEngineTypes, api::ConsensusEngineHandle}; +use reth_payload_builder::{PayloadBuilderHandle, PayloadId, PayloadKind}; /// Builds an execution payload for a Lean block, equivalent to -/// `engine_getPayloadV3`. -/// -/// Returns an `ExecutionPayloadEnvelopeV3`, which splits into an -/// `ExecutionPayloadV3` for the Lean block body and a `BlobsBundleV1` for the -/// DA layer. +/// `engine_getPayloadV4`. pub async fn build( payload_builder: &PayloadBuilderHandle, - request: ElPayloadRequest, -) -> eyre::Result { - let attributes = EthPayloadAttributes { - timestamp: request.timestamp, - prev_randao: request.prev_randao, - suggested_fee_recipient: request.fee_recipient, - withdrawals: Some(Vec::new()), // TODO currently no deposit/withdrawal on Lean - parent_beacon_block_root: Some(request.parent_lean_block_root), - slot_number: Some(request.slot_number), - target_gas_limit: None, // TODO newly introduced in glamsterdam - }; - - let payload_id = payload_builder - .send_new_payload(BuildNewPayload { - attributes, - parent_hash: request.parent_hash, - cache: None, - trie_handle: None, - }) - .await??; - + payload_id: PayloadId, +) -> eyre::Result { + // we can Ideally extract out WaitForPending to be more idiomatic let built = payload_builder .resolve_kind(payload_id, PayloadKind::WaitForPending) .await .ok_or_eyre("payload could not be resolved")??; - Ok(built.try_into_v3()?) + Ok(built.into_execution_data()) } /// Imports an execution payload from a Lean block into the execution layer via -/// `engine_newPayloadV3`. +/// `engine_newPayloadV4`. /// /// Returns a `PayloadStatus` reporting whether the EL accepted the payload /// (`Valid`, `Invalid`, or `Syncing`), so the caller must inspect it. pub async fn import( consensus_engine_handle: &ConsensusEngineHandle, - payload: ExecutionPayloadV3, - parent_beacon_block_root: B256, - versioned_hashes: Vec, + execution_data: ExecutionData, ) -> eyre::Result { - let execution_data = ExecutionData::new( - ExecutionPayload::from(payload), - ExecutionPayloadSidecar::v3(CancunPayloadFields { - parent_beacon_block_root, - versioned_hashes, - }), - ); - let status = consensus_engine_handle.new_payload(execution_data).await?; - Ok(status) } From 3adae65b8e8a7b2fb3d64d8b3fb4b3d88bea8599 Mon Sep 17 00:00:00 2001 From: Sahilgill24 Date: Fri, 3 Jul 2026 03:00:49 +0530 Subject: [PATCH 11/26] feat: updating test to full payload flow for a proposer --- crates/common/reth/src/fork_choice.rs | 29 +++++++-- crates/common/reth/src/handle.rs | 90 +++++++++++++++++++-------- 2 files changed, 88 insertions(+), 31 deletions(-) diff --git a/crates/common/reth/src/fork_choice.rs b/crates/common/reth/src/fork_choice.rs index 9873bddf1..6046dcde0 100644 --- a/crates/common/reth/src/fork_choice.rs +++ b/crates/common/reth/src/fork_choice.rs @@ -1,6 +1,9 @@ use alloy_primitives::{Address, B256}; -use alloy_rpc_types_engine::ForkchoiceState; -use reth_ethereum::engine::EthPayloadAttributes; +use alloy_rpc_types_engine::{ForkchoiceState, ForkchoiceUpdated}; +use reth_ethereum::{ + engine::EthPayloadAttributes, + node::{EthEngineTypes, api::ConsensusEngineHandle}, +}; use sha2::{Digest, Sha256}; /// Creates a `ForkchoiceState` used by the Engine API. @@ -19,9 +22,27 @@ pub fn create_fork_choice_state( } } +/// Applies a fork choice update to the execution layer, equivalent to +/// `engine_forkchoiceUpdatedV4`. +/// +/// This calls the consensus engine handle directly rather than the JSON-RPC +/// layer, so it is version-agnostic: the effective version is determined by the +/// `payload_attributes` passed. `EthPayloadAttributes` carries the Amsterdam +/// (V4) fields `slot_number` and `target_gas_limit` +pub async fn update( + consensus_engine_handle: &ConsensusEngineHandle, + state: ForkchoiceState, + payload_attributes: Option, +) -> eyre::Result { + let updated = consensus_engine_handle + .fork_choice_updated(state, payload_attributes) + .await?; + Ok(updated) +} + /// Creates an `EthPayloadAttributes` request for payload building. /// -/// These attributes are supplied to the execution layer during +/// These attributes are supplied to the execution layer /// to initiate the construction of a new payload. /// /// Withdrawals are currently omitted and set to None. @@ -37,7 +58,7 @@ pub fn create_payload_attributes( timestamp, prev_randao, suggested_fee_recipient, - withdrawals: None, + withdrawals: Some(vec![]), parent_beacon_block_root, slot_number, target_gas_limit, diff --git a/crates/common/reth/src/handle.rs b/crates/common/reth/src/handle.rs index a5c7591bf..dd8c42970 100644 --- a/crates/common/reth/src/handle.rs +++ b/crates/common/reth/src/handle.rs @@ -3,10 +3,10 @@ use std::{path::PathBuf, sync::Arc}; use alloy_genesis::Genesis; -use alloy_primitives::B256; -use alloy_rpc_types_engine::{ExecutionPayloadEnvelopeV3, ExecutionPayloadV3, PayloadStatus}; +use alloy_rpc_types_engine::{ExecutionData, ForkchoiceState, ForkchoiceUpdated, PayloadStatus}; use reth_ethereum::{ chainspec::ChainSpec, + engine::EthPayloadAttributes, node::{ EthereumNode, builder::{NodeBuilder, NodeHandleFor}, @@ -21,9 +21,10 @@ use reth_ethereum::{ }, tasks::{RuntimeBuilder, RuntimeConfig, TokioConfig}, }; +use reth_payload_builder::PayloadId; use tokio::runtime::Handle; -use crate::payload::{self, ElPayloadRequest}; +use crate::{fork_choice, payload}; pub struct RethHandle where @@ -86,26 +87,45 @@ impl RethHandle where DB: Database + DatabaseMetrics + Clone + Unpin + 'static, { - pub async fn build_payload( + /// Sends a fork choice update to the execution layer. + /// + /// Called with `payload_attributes` to start building a payload for a + /// proposal (the returned `payload_id` is fed to [`Self::build_payload`]), + /// and with `None` to canonicalize the head after a block is imported. + pub async fn update_forkchoice( &self, - request: ElPayloadRequest, - ) -> eyre::Result { - payload::build(&self.reth.node.payload_builder_handle, request).await + state: ForkchoiceState, + payload_attributes: Option, + ) -> eyre::Result { + fork_choice::update( + self.reth.node.consensus_engine_handle(), + state, + payload_attributes, + ) + .await + } + + pub async fn build_payload(&self, payload_id: PayloadId) -> eyre::Result { + payload::build(&self.reth.node.payload_builder_handle, payload_id).await } pub async fn import_payload( &self, - payload: ExecutionPayloadV3, - parent_beacon_block_root: B256, - versioned_hashes: Vec, + execution_data: ExecutionData, ) -> eyre::Result { - payload::import( - self.reth.node.consensus_engine_handle(), - payload, - parent_beacon_block_root, - versioned_hashes, - ) + payload::import(self.reth.node.consensus_engine_handle(), execution_data).await + } + + /// For tests, the immediate runtime shutdown causes tasks to panic + /// first fires the shutdown signal so all tasks exit their loops cleanly, then the runtime + /// drops with no tasks in flight. + pub async fn shutdown(self) { + let executor = self.reth.node.task_executor.clone(); + tokio::task::spawn_blocking(move || { + executor.graceful_shutdown_with_timeout(std::time::Duration::from_secs(5)); + }) .await + .ok(); } } @@ -156,15 +176,16 @@ pub fn custom_chain() -> Arc { #[cfg(test)] mod test { use alloy_primitives::{B256, hex}; - use alloy_rpc_types_engine::{ForkchoiceState, PayloadStatusEnum}; + use alloy_rpc_types_engine::ForkchoiceState; use serial_test::serial; use super::*; use crate::fork_choice::{create_fork_choice_state, create_ream_payload_attributes}; + /// This test demonstrates a full EL payload execution/validation for a proposer #[tokio::test] #[serial] - async fn test_fork_choice_update() { + async fn test_proposer_el_payload() { let handle = RethHandle::test().await.unwrap(); let genesis_hash = custom_chain().genesis_hash(); let fork_choice_state: ForkchoiceState = @@ -172,23 +193,37 @@ mod test { let payload_attrs = create_ream_payload_attributes(1, B256::ZERO, 0, 4); let fork_choice_updated = handle - .reth - .node - .consensus_engine_handle() - .fork_choice_updated(fork_choice_state, Some(payload_attrs)) + .update_forkchoice(fork_choice_state, Some(payload_attrs)) .await .unwrap(); - assert_eq!( - fork_choice_updated.payload_status.status, - PayloadStatusEnum::Valid - ); + let built_payload = handle + .build_payload(fork_choice_updated.payload_id.unwrap()) + .await + .unwrap(); + let payload_status = handle.import_payload(built_payload).await.unwrap(); + println!("{payload_status:?}"); + + assert!(payload_status.is_valid()); + + let new_block_hash = payload_status.latest_valid_hash.unwrap(); + // The second fcu call updates the head + let second_fcu = handle + .update_forkchoice( + create_fork_choice_state(new_block_hash, new_block_hash, new_block_hash), + None, // just update head + ) + .await + .unwrap(); + + assert!(second_fcu.payload_status.is_valid()); + handle.shutdown().await; } #[tokio::test] #[serial] async fn test_transaction_received() -> eyre::Result<()> { - let _node = RethHandle::test().await.unwrap(); + let node = RethHandle::test().await.unwrap(); let _raw_tx = hex!( "02f876820a28808477359400847735940082520894ab0840c0e43688012c1adb0f5e3fc665188f83d28a029d394a5d630544000080c080a0a044076b7e67b5deecc63f61a8d7913fab86ca365b344b5759d1fe3563b4c39ea019eab979dd000da04dfc72bb0377c092d30fd9e1cab5ae487de49586cc8b0090" ); @@ -211,6 +246,7 @@ mod test { println!("{}", response.text().await?); + node.shutdown().await; Ok(()) } } From 661987628e8795e749d6dfa0f59f108dbe6b852f Mon Sep 17 00:00:00 2001 From: Soham Zemse <22412996+zemse@users.noreply.github.com> Date: Wed, 8 Jul 2026 01:50:32 +0530 Subject: [PATCH 12/26] feat: add EL block in lean block body --- Cargo.lock | 1 + bin/ream/Cargo.toml | 8 ++++- crates/common/checkpoint_sync/lean/Cargo.toml | 1 + crates/common/checkpoint_sync/lean/src/lib.rs | 2 ++ crates/common/consensus/lean/Cargo.toml | 2 ++ crates/common/consensus/lean/src/block.rs | 2 ++ crates/common/consensus/lean/src/state.rs | 32 +++++++++++++++++-- crates/common/fork_choice/lean/Cargo.toml | 1 + crates/common/fork_choice/lean/src/genesis.rs | 2 ++ crates/common/fork_choice/lean/src/store.rs | 6 ++++ crates/rpc/lean/Cargo.toml | 1 + crates/rpc/lean/src/handlers/test_driver.rs | 3 ++ testing/lean-spec-tests/Cargo.toml | 1 + testing/lean-spec-tests/src/types/mod.rs | 7 +++- testing/lean-spec-tests/src/types/ssz.rs | 3 ++ 15 files changed, 68 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 4c8a3615b..05907fbc6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8846,6 +8846,7 @@ dependencies = [ "ethereum_ssz_derive", "itertools 0.14.0", "ream-consensus-misc", + "ream-execution-rpc-types", "ream-metrics", "ream-post-quantum-crypto", "serde", diff --git a/bin/ream/Cargo.toml b/bin/ream/Cargo.toml index 788ef71dc..6bbfd1bb2 100644 --- a/bin/ream/Cargo.toml +++ b/bin/ream/Cargo.toml @@ -38,7 +38,13 @@ devnet5 = [ "ream-storage/devnet5", "ream-validator-lean/devnet5", ] -reth = ["dep:ream-reth-engine"] +reth = [ + "dep:ream-reth-engine", + "ream-checkpoint-sync-lean/reth", + "ream-consensus-lean/reth", + "ream-fork-choice-lean/reth", + "ream-rpc-lean/reth", +] [dependencies] alloy-primitives.workspace = true diff --git a/crates/common/checkpoint_sync/lean/Cargo.toml b/crates/common/checkpoint_sync/lean/Cargo.toml index f9ed4ae8d..2dc71d62a 100644 --- a/crates/common/checkpoint_sync/lean/Cargo.toml +++ b/crates/common/checkpoint_sync/lean/Cargo.toml @@ -13,6 +13,7 @@ version.workspace = true default = ["devnet4"] devnet4 = ["ream-consensus-lean/devnet4"] devnet5 = ["ream-consensus-lean/devnet5"] +reth = ["ream-consensus-lean/reth"] [dependencies] alloy-primitives.workspace = true diff --git a/crates/common/checkpoint_sync/lean/src/lib.rs b/crates/common/checkpoint_sync/lean/src/lib.rs index 60391616d..91e4ca656 100644 --- a/crates/common/checkpoint_sync/lean/src/lib.rs +++ b/crates/common/checkpoint_sync/lean/src/lib.rs @@ -504,6 +504,8 @@ mod tests { state_root: state.tree_hash_root(), body: BlockBody { attestations: Default::default(), + #[cfg(feature = "reth")] + execution_payload: Default::default(), }, }; SignedBlock { diff --git a/crates/common/consensus/lean/Cargo.toml b/crates/common/consensus/lean/Cargo.toml index 18041f1d2..2dc46cbc7 100644 --- a/crates/common/consensus/lean/Cargo.toml +++ b/crates/common/consensus/lean/Cargo.toml @@ -13,6 +13,7 @@ version.workspace = true default = ["devnet4"] devnet4 = ["ream-post-quantum-crypto/devnet4"] devnet5 = ["ream-post-quantum-crypto/devnet5"] +reth = ["dep:ream-execution-rpc-types"] [dependencies] alloy-primitives.workspace = true @@ -29,6 +30,7 @@ tree_hash_derive.workspace = true # Local dependencies ream-consensus-misc.workspace = true +ream-execution-rpc-types = { workspace = true, optional = true } ream-metrics.workspace = true ream-post-quantum-crypto.workspace = true diff --git a/crates/common/consensus/lean/src/block.rs b/crates/common/consensus/lean/src/block.rs index a8c593ae6..3c9a72816 100644 --- a/crates/common/consensus/lean/src/block.rs +++ b/crates/common/consensus/lean/src/block.rs @@ -277,6 +277,8 @@ impl From for BlockHeader { #[derive(Debug, PartialEq, Eq, Clone, Serialize, Deserialize, Encode, Decode, TreeHash)] pub struct BlockBody { pub attestations: VariableList, + #[cfg(feature = "reth")] + pub execution_payload: ream_execution_rpc_types::electra::execution_payload::ExecutionPayload, } #[derive(Debug, PartialEq, Eq, Clone, Serialize, Deserialize, Encode, Decode)] diff --git a/crates/common/consensus/lean/src/state.rs b/crates/common/consensus/lean/src/state.rs index 14daa3c5d..68051ce4b 100644 --- a/crates/common/consensus/lean/src/state.rs +++ b/crates/common/consensus/lean/src/state.rs @@ -63,6 +63,8 @@ impl LeanState { state_root: B256::ZERO, body_root: BlockBody { attestations: Default::default(), + #[cfg(feature = "reth")] + execution_payload: Default::default(), } .tree_hash_root(), }, @@ -622,6 +624,8 @@ mod test { state_root: B256::ZERO, body: BlockBody { attestations: VariableList::empty(), + #[cfg(feature = "reth")] + execution_payload: Default::default(), }, })?; @@ -657,6 +661,8 @@ mod test { }, }]) .map_err(|err| anyhow!("Failed to get aggregated attestation {err:?}"))?, + #[cfg(feature = "reth")] + execution_payload: Default::default(), }, })?; @@ -692,6 +698,8 @@ mod test { }, }]) .map_err(|err| anyhow!("Failed to get aggregated attestation {err:?}"))?, + #[cfg(feature = "reth")] + execution_payload: Default::default(), }, })?; @@ -717,6 +725,8 @@ mod test { state_root: B256::ZERO, body: BlockBody { attestations: VariableList::empty(), + #[cfg(feature = "reth")] + execution_payload: Default::default(), }, })?; assert_eq!(state.justified_slots.len(), 0); @@ -729,6 +739,8 @@ mod test { state_root: B256::ZERO, body: BlockBody { attestations: VariableList::empty(), + #[cfg(feature = "reth")] + execution_payload: Default::default(), }, })?; assert_eq!(state.justified_slots.len(), 1); @@ -749,6 +761,8 @@ mod test { state_root: B256::ZERO, body: BlockBody { attestations: VariableList::empty(), + #[cfg(feature = "reth")] + execution_payload: Default::default(), }, })?; @@ -785,6 +799,8 @@ mod test { state_root: B256::ZERO, body: BlockBody { attestations: VariableList::new(vec![attestation_0_to_1]).unwrap(), + #[cfg(feature = "reth")] + execution_payload: Default::default(), }, })?; @@ -801,6 +817,8 @@ mod test { state_root: B256::ZERO, body: BlockBody { attestations: VariableList::empty(), + #[cfg(feature = "reth")] + execution_payload: Default::default(), }, })?; } @@ -873,6 +891,8 @@ mod test { state_root: B256::ZERO, body: BlockBody { attestations: VariableList::empty(), + #[cfg(feature = "reth")] + execution_payload: Default::default(), }, })?; } @@ -921,7 +941,11 @@ mod test { proposer_index: 10 % 4, parent_root: block_9_root, state_root: B256::ZERO, - body: BlockBody { attestations }, + body: BlockBody { + attestations, + #[cfg(feature = "reth")] + execution_payload: Default::default(), + }, })?; // latest_justified must be slot 9 — the highest justified target, @@ -1000,7 +1024,9 @@ mod test { assert_eq!( state.latest_block_header.body_root, BlockBody { - attestations: Default::default() + attestations: Default::default(), + #[cfg(feature = "reth")] + execution_payload: Default::default(), } .tree_hash_root() ); @@ -1053,6 +1079,8 @@ mod test { state_root: B256::ZERO, body: BlockBody { attestations: VariableList::empty(), + #[cfg(feature = "reth")] + execution_payload: Default::default(), }, }; diff --git a/crates/common/fork_choice/lean/Cargo.toml b/crates/common/fork_choice/lean/Cargo.toml index 3ecfdae81..3c3833d79 100644 --- a/crates/common/fork_choice/lean/Cargo.toml +++ b/crates/common/fork_choice/lean/Cargo.toml @@ -27,6 +27,7 @@ devnet5 = [ "ream-storage/devnet5", "ream-test-utils/devnet5", ] +reth = ["ream-consensus-lean/reth"] [dependencies] alloy-consensus.workspace = true diff --git a/crates/common/fork_choice/lean/src/genesis.rs b/crates/common/fork_choice/lean/src/genesis.rs index 4812bdf2f..5db15cce0 100644 --- a/crates/common/fork_choice/lean/src/genesis.rs +++ b/crates/common/fork_choice/lean/src/genesis.rs @@ -14,6 +14,8 @@ fn genesis_block(state_root: B256) -> Block { state_root, body: BlockBody { attestations: Default::default(), + #[cfg(feature = "reth")] + execution_payload: Default::default(), }, } } diff --git a/crates/common/fork_choice/lean/src/store.rs b/crates/common/fork_choice/lean/src/store.rs index 3304d6c0d..f8d275cf3 100644 --- a/crates/common/fork_choice/lean/src/store.rs +++ b/crates/common/fork_choice/lean/src/store.rs @@ -1016,6 +1016,9 @@ impl Store { state_root: B256::ZERO, body: BlockBody { attestations: attestations_list, + // TODO: EL built execution payload + #[cfg(feature = "reth")] + execution_payload: Default::default(), }, }; @@ -1067,6 +1070,9 @@ impl Store { state_root: B256::ZERO, body: BlockBody { attestations: attestations_list, + // TODO: EL built execution payload + #[cfg(feature = "reth")] + execution_payload: Default::default(), }, }; diff --git a/crates/rpc/lean/Cargo.toml b/crates/rpc/lean/Cargo.toml index 3356042a3..7cbab0010 100644 --- a/crates/rpc/lean/Cargo.toml +++ b/crates/rpc/lean/Cargo.toml @@ -27,6 +27,7 @@ devnet5 = [ "ream-storage/devnet5", "ream-test-utils/devnet5", ] +reth = ["lean-spec-tests/reth", "ream-consensus-lean/reth", "ream-fork-choice-lean/reth"] [dependencies] actix-web.workspace = true diff --git a/crates/rpc/lean/src/handlers/test_driver.rs b/crates/rpc/lean/src/handlers/test_driver.rs index 990d97760..6b38d6922 100644 --- a/crates/rpc/lean/src/handlers/test_driver.rs +++ b/crates/rpc/lean/src/handlers/test_driver.rs @@ -335,6 +335,9 @@ async fn build_genesis_store(params: Option<&GenesisParams>) -> Result for ReamBlock { proposer_index: block.proposer_index, parent_root: block.parent_root, state_root: block.state_root, - body: ReamBlockBody { attestations }, + body: ReamBlockBody { + attestations, + // EL payload is not in LeanSpec + #[cfg(feature = "reth")] + execution_payload: Default::default(), + }, }) } } diff --git a/testing/lean-spec-tests/src/types/ssz.rs b/testing/lean-spec-tests/src/types/ssz.rs index 6c4afcf6f..8e9139729 100644 --- a/testing/lean-spec-tests/src/types/ssz.rs +++ b/testing/lean-spec-tests/src/types/ssz.rs @@ -265,6 +265,9 @@ impl TryFrom<&BlockBodyJSON> for BlockBody { .collect::, _>>()?, ) .map_err(|err| anyhow!("Failed to convert attestations: {err}"))?, + // EL payload is not in LeanSpec + #[cfg(feature = "reth")] + execution_payload: Default::default(), }) } } From 78a7c13e6e001029f2b2154b783e3e391c36ca82 Mon Sep 17 00:00:00 2001 From: Soham Zemse <22412996+zemse@users.noreply.github.com> Date: Wed, 8 Jul 2026 02:42:25 +0530 Subject: [PATCH 13/26] ref: collapse RethHandle to a cloneable engine handle --- bin/ream/src/main.rs | 14 +-- crates/common/reth/src/handle.rs | 161 +++++-------------------------- 2 files changed, 33 insertions(+), 142 deletions(-) diff --git a/bin/ream/src/main.rs b/bin/ream/src/main.rs index 8a2225790..b92f5440a 100644 --- a/bin/ream/src/main.rs +++ b/bin/ream/src/main.rs @@ -445,11 +445,11 @@ pub async fn run_lean_node(config: LeanNodeConfig, executor: ReamExecutor, ream_ config.http_allow_origin, ); - // Start the reth EL embedded in the same process. `reth_handle` owns the node, so it must - // live at function scope for the whole run; the block returns the owned handle. + // Start the reth EL embedded in the same process. `start` returns the cloneable + // `RethHandle` (given to the lean chain service) and also the owned node. #[cfg(feature = "reth")] - let mut reth_handle = { - let handle = RethHandle::start( + let (reth_handle, mut reth_node) = { + let (handle, node) = RethHandle::start( Some(executor.runtime().handle().clone()), config.reth_datadir.clone(), ) @@ -458,14 +458,14 @@ pub async fn run_lean_node(config: LeanNodeConfig, executor: ReamExecutor, ream_ info!( "Embedded reth is started with genesis hash: {:?}", - handle.reth.node.chain_spec().genesis_hash() + node.node.chain_spec().genesis_hash() ); - handle + (handle, node) }; #[cfg(feature = "reth")] - let reth_exit = &mut reth_handle.reth.node_exit_future; + let reth_exit = &mut reth_node.node_exit_future; #[cfg(not(feature = "reth"))] let reth_exit = std::future::pending::<()>(); diff --git a/crates/common/reth/src/handle.rs b/crates/common/reth/src/handle.rs index dd8c42970..7f88af3d5 100644 --- a/crates/common/reth/src/handle.rs +++ b/crates/common/reth/src/handle.rs @@ -8,34 +8,37 @@ use reth_ethereum::{ chainspec::ChainSpec, engine::EthPayloadAttributes, node::{ - EthereumNode, + EthEngineTypes, EthereumNode, + api::ConsensusEngineHandle, builder::{NodeBuilder, NodeHandleFor}, core::{ args::{DatadirArgs, RpcServerArgs}, node_config::NodeConfig, }, }, - provider::db::{ - ClientVersion, Database, DatabaseEnv, database_metrics::DatabaseMetrics, init_db, - mdbx::DatabaseArguments, test_utils::TempDatabase, - }, + provider::db::{ClientVersion, DatabaseEnv, init_db, mdbx::DatabaseArguments}, tasks::{RuntimeBuilder, RuntimeConfig, TokioConfig}, }; -use reth_payload_builder::PayloadId; +use reth_payload_builder::{PayloadBuilderHandle, PayloadId}; use tokio::runtime::Handle; use crate::{fork_choice, payload}; -pub struct RethHandle -where - DB: Database + DatabaseMetrics + Clone + Unpin + 'static, -{ - pub reth: NodeHandleFor, +pub type RethNode = NodeHandleFor; + +/// Cheaply-cloneable, `Send + Sync` +#[derive(Clone)] +pub struct RethHandle { + payload_builder: PayloadBuilderHandle, + engine: ConsensusEngineHandle, } -impl RethHandle { - // Start a reth node with the given tokio runtime handle and persistent data directory. - pub async fn start(ream_rt: Option, datadir: PathBuf) -> eyre::Result { +impl RethHandle { + // Start a reth node with the given tokio runtime handle. + pub async fn start( + ream_rt: Option, + datadir: PathBuf, + ) -> eyre::Result<(Self, RethNode)> { let mut config = RuntimeConfig::default(); if let Some(handle) = ream_rt { config = config.with_tokio(TokioConfig::existing_handle(handle)); @@ -55,38 +58,21 @@ impl RethHandle { DatabaseArguments::new(ClientVersion::default()), )?; - let reth = NodeBuilder::new(node_config) + let node = NodeBuilder::new(node_config) .with_database(database) .with_launch_context(reth_rt) .node(EthereumNode::default()) .launch_with_debug_capabilities() .await?; - Ok(RethHandle { reth }) - } -} - -impl RethHandle>> { - // Start a reth node with a temporary in-memory database for testing. - pub async fn test() -> eyre::Result { - let reth_rt = RuntimeBuilder::new(RuntimeConfig::default()).build()?; + let handle = RethHandle { + payload_builder: node.node.payload_builder_handle.clone(), + engine: node.node.consensus_engine_handle().clone(), + }; - let reth = NodeBuilder::new( - NodeConfig::new(custom_chain()).with_rpc(RpcServerArgs::default().with_http()), - ) - .testing_node(reth_rt) - .node(EthereumNode::default()) - .launch_with_debug_capabilities() - .await?; - - Ok(RethHandle { reth }) + Ok((handle, node)) } -} -impl RethHandle -where - DB: Database + DatabaseMetrics + Clone + Unpin + 'static, -{ /// Sends a fork choice update to the execution layer. /// /// Called with `payload_attributes` to start building a payload for a @@ -97,35 +83,18 @@ where state: ForkchoiceState, payload_attributes: Option, ) -> eyre::Result { - fork_choice::update( - self.reth.node.consensus_engine_handle(), - state, - payload_attributes, - ) - .await + fork_choice::update(&self.engine, state, payload_attributes).await } pub async fn build_payload(&self, payload_id: PayloadId) -> eyre::Result { - payload::build(&self.reth.node.payload_builder_handle, payload_id).await + payload::build(&self.payload_builder, payload_id).await } pub async fn import_payload( &self, execution_data: ExecutionData, ) -> eyre::Result { - payload::import(self.reth.node.consensus_engine_handle(), execution_data).await - } - - /// For tests, the immediate runtime shutdown causes tasks to panic - /// first fires the shutdown signal so all tasks exit their loops cleanly, then the runtime - /// drops with no tasks in flight. - pub async fn shutdown(self) { - let executor = self.reth.node.task_executor.clone(); - tokio::task::spawn_blocking(move || { - executor.graceful_shutdown_with_timeout(std::time::Duration::from_secs(5)); - }) - .await - .ok(); + payload::import(&self.engine, execution_data).await } } @@ -172,81 +141,3 @@ pub fn custom_chain() -> Arc { let genesis: Genesis = serde_json::from_str(custom_genesis).expect("genesis failed"); Arc::new(genesis.into()) } - -#[cfg(test)] -mod test { - use alloy_primitives::{B256, hex}; - use alloy_rpc_types_engine::ForkchoiceState; - use serial_test::serial; - - use super::*; - use crate::fork_choice::{create_fork_choice_state, create_ream_payload_attributes}; - - /// This test demonstrates a full EL payload execution/validation for a proposer - #[tokio::test] - #[serial] - async fn test_proposer_el_payload() { - let handle = RethHandle::test().await.unwrap(); - let genesis_hash = custom_chain().genesis_hash(); - let fork_choice_state: ForkchoiceState = - create_fork_choice_state(genesis_hash, B256::ZERO, B256::ZERO); - let payload_attrs = create_ream_payload_attributes(1, B256::ZERO, 0, 4); - - let fork_choice_updated = handle - .update_forkchoice(fork_choice_state, Some(payload_attrs)) - .await - .unwrap(); - - let built_payload = handle - .build_payload(fork_choice_updated.payload_id.unwrap()) - .await - .unwrap(); - let payload_status = handle.import_payload(built_payload).await.unwrap(); - println!("{payload_status:?}"); - - assert!(payload_status.is_valid()); - - let new_block_hash = payload_status.latest_valid_hash.unwrap(); - // The second fcu call updates the head - let second_fcu = handle - .update_forkchoice( - create_fork_choice_state(new_block_hash, new_block_hash, new_block_hash), - None, // just update head - ) - .await - .unwrap(); - - assert!(second_fcu.payload_status.is_valid()); - handle.shutdown().await; - } - - #[tokio::test] - #[serial] - async fn test_transaction_received() -> eyre::Result<()> { - let node = RethHandle::test().await.unwrap(); - let _raw_tx = hex!( - "02f876820a28808477359400847735940082520894ab0840c0e43688012c1adb0f5e3fc665188f83d28a029d394a5d630544000080c080a0a044076b7e67b5deecc63f61a8d7913fab86ca365b344b5759d1fe3563b4c39ea019eab979dd000da04dfc72bb0377c092d30fd9e1cab5ae487de49586cc8b0090" - ); - // Only for test here, no need in actual node - tokio::time::sleep(std::time::Duration::from_millis(100)).await; - - let client = reqwest::Client::new(); - let response = client - .post("http://127.0.0.1:8545") - .json(&serde_json::json!({ - "jsonrpc": "2.0", - "method": "eth_sendRawTransaction", - "params": [ - "0x02f876820a28808477359400847735940082520894ab0840c0e43688012c1adb0f5e3fc665188f83d28a029d394a5d630544000080c080a0a044076b7e67b5deecc63f61a8d7913fab86ca365b344b5759d1fe3563b4c39ea019eab979dd000da04dfc72bb0377c092d30fd9e1cab5ae487de49586cc8b0090" - ], - "id": 1 - })) - .send() - .await?; - - println!("{}", response.text().await?); - - node.shutdown().await; - Ok(()) - } -} From c9a6dc2cf446ba364b46bb9a21d51085c8604814 Mon Sep 17 00:00:00 2001 From: Soham Zemse <22412996+zemse@users.noreply.github.com> Date: Wed, 8 Jul 2026 03:40:06 +0530 Subject: [PATCH 14/26] feat: build EL payload inside `handle_produce_block` --- Cargo.lock | 6 ++ bin/ream/Cargo.toml | 1 + bin/ream/src/main.rs | 6 +- crates/common/chain/lean/Cargo.toml | 8 ++ crates/common/chain/lean/src/service.rs | 104 ++++++++++++++++++-- crates/common/fork_choice/lean/Cargo.toml | 3 +- crates/common/fork_choice/lean/src/store.rs | 44 ++++++++- crates/common/reth/Cargo.toml | 3 + crates/common/reth/src/handle.rs | 11 +++ crates/common/reth/src/payload.rs | 58 ++++++++++- 10 files changed, 229 insertions(+), 15 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 05907fbc6..55f3f319d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8744,6 +8744,7 @@ dependencies = [ "rand 0.9.2", "ream-consensus-lean", "ream-consensus-misc", + "ream-execution-rpc-types", "ream-fork-choice-lean", "ream-metrics", "ream-network-spec", @@ -8751,6 +8752,7 @@ dependencies = [ "ream-peer", "ream-post-quantum-crypto", "ream-req-resp", + "ream-reth-engine", "ream-storage", "ream-sync", "ream-test-utils", @@ -9036,6 +9038,7 @@ dependencies = [ "ream-consensus-beacon", "ream-consensus-lean", "ream-consensus-misc", + "ream-execution-rpc-types", "ream-metrics", "ream-network-spec", "ream-network-state-lean", @@ -9343,12 +9346,15 @@ dependencies = [ "alloy-rpc-types-engine", "eyre", "futures-util", + "ream-consensus-misc", + "ream-execution-rpc-types", "reqwest 0.12.28", "reth-ethereum", "reth-payload-builder", "serde_json", "serial_test", "sha2", + "ssz_types", "tokio", ] diff --git a/bin/ream/Cargo.toml b/bin/ream/Cargo.toml index 6bbfd1bb2..7dd08d6c0 100644 --- a/bin/ream/Cargo.toml +++ b/bin/ream/Cargo.toml @@ -40,6 +40,7 @@ devnet5 = [ ] reth = [ "dep:ream-reth-engine", + "ream-chain-lean/reth", "ream-checkpoint-sync-lean/reth", "ream-consensus-lean/reth", "ream-fork-choice-lean/reth", diff --git a/bin/ream/src/main.rs b/bin/ream/src/main.rs index b92f5440a..8f3d9580c 100644 --- a/bin/ream/src/main.rs +++ b/bin/ream/src/main.rs @@ -429,7 +429,8 @@ pub async fn run_lean_node(config: LeanNodeConfig, executor: ReamExecutor, ream_ .await .expect("Failed to create network service"); - let chain_service = LeanChainService::new( + #[cfg_attr(not(feature = "reth"), allow(unused_mut))] + let mut chain_service = LeanChainService::new( lean_chain_writer, chain_receiver, outbound_p2p_sender, @@ -464,6 +465,9 @@ pub async fn run_lean_node(config: LeanNodeConfig, executor: ReamExecutor, ream_ (handle, node) }; + #[cfg(feature = "reth")] + chain_service.set_reth_handle(reth_handle); + #[cfg(feature = "reth")] let reth_exit = &mut reth_node.node_exit_future; diff --git a/crates/common/chain/lean/Cargo.toml b/crates/common/chain/lean/Cargo.toml index 33d72d936..8455704bc 100644 --- a/crates/common/chain/lean/Cargo.toml +++ b/crates/common/chain/lean/Cargo.toml @@ -35,6 +35,12 @@ devnet5 = [ "ream-sync/devnet5", "ream-post-quantum-crypto/devnet5", ] +reth = [ + "dep:ream-reth-engine", + "dep:ream-execution-rpc-types", + "ream-consensus-lean/reth", + "ream-fork-choice-lean/reth", +] [dependencies] alloy-primitives.workspace = true @@ -52,12 +58,14 @@ tree_hash.workspace = true # ream dependencies ream-consensus-lean.workspace = true ream-consensus-misc.workspace = true +ream-execution-rpc-types = { workspace = true, optional = true } ream-fork-choice-lean.workspace = true ream-metrics.workspace = true ream-network-spec.workspace = true ream-network-state-lean.workspace = true ream-post-quantum-crypto.workspace = true ream-req-resp.workspace = true +ream-reth-engine = { workspace = true, optional = true } ream-storage.workspace = true ream-sync.workspace = true diff --git a/crates/common/chain/lean/src/service.rs b/crates/common/chain/lean/src/service.rs index f49d7e135..5c0a5d2f0 100644 --- a/crates/common/chain/lean/src/service.rs +++ b/crates/common/chain/lean/src/service.rs @@ -42,6 +42,12 @@ use ream_req_resp::{ messages::{LeanRequestMessage, LeanResponseMessage}, }, }; +#[cfg(feature = "reth")] +use ream_reth_engine::{ + fork_choice::{create_fork_choice_state, create_ream_payload_attributes}, + handle::RethHandle, + payload::to_ream_execution_payload, +}; use ream_storage::tables::{field::REDBField, table::REDBTable}; #[cfg(feature = "devnet5")] use ssz_types::VariableList; @@ -258,6 +264,8 @@ pub struct LeanChainService { telemetry: SyncTelemetry, #[cfg(feature = "devnet5")] pending_block_aggregates: Arc>>, + #[cfg(feature = "reth")] + reth_handle: Option, } impl LeanChainService { @@ -287,9 +295,16 @@ impl LeanChainService { telemetry: SyncTelemetry::from_env(), #[cfg(feature = "devnet5")] pending_block_aggregates: Arc::new(Mutex::new(Vec::new())), + #[cfg(feature = "reth")] + reth_handle: None, } } + #[cfg(feature = "reth")] + pub fn set_reth_handle(&mut self, reth_handle: RethHandle) { + self.reth_handle = Some(reth_handle); + } + pub async fn start(mut self) -> anyhow::Result<()> { set_int_gauge_vec(&IS_AGGREGATOR, self.is_aggregator() as i64, &[]); set_int_gauge_vec( @@ -2870,13 +2885,34 @@ impl LeanChainService { slot: u64, response: oneshot::Sender>, ) -> anyhow::Result<()> { - let block_with_signatures = match self - .store - .write() - .await - .produce_block_with_signatures(slot, slot % lean_network_spec().num_validators) - .await - { + #[cfg(feature = "reth")] + let execution_payload = match self.build_el_payload(slot).await { + Ok(payload) => payload, + Err(err) => { + warn!("Failed to build EL payload for slot {slot}: {err}"); + inc_int_counter_vec(&BLOCK_BUILDING_FAILURES_TOTAL, &[]); + if let Err(err) = response.send(ServiceResponse::Err(err)) { + warn!("Failed to send error response for ProduceBlock: {err:?}"); + } + return Ok(()); + } + }; + + let produced_block = { + let proposer_index = slot % lean_network_spec().num_validators; + let mut store = self.store.write().await; + #[cfg(feature = "reth")] + let out = store + .produce_block_with_signatures_with_payload(slot, proposer_index, execution_payload) + .await; + #[cfg(not(feature = "reth"))] + let out = store + .produce_block_with_signatures(slot, proposer_index) + .await; + out + }; + + let block_with_signatures = match produced_block { Ok(block) => block, Err(err) => { warn!("Failed to produce block for slot {slot}: {err}"); @@ -2969,6 +3005,60 @@ impl LeanChainService { self.pending_callbacks.push(future); } + + #[cfg(feature = "reth")] + async fn build_el_payload( + &self, + slot: u64, + ) -> anyhow::Result + { + let reth_handle = self.reth_handle.clone().ok_or_else(|| { + anyhow!("EL handle not wired; cannot build a payload for slot {slot}") + })?; + + let parent_lean_root = self.store.write().await.get_proposal_head(slot).await?; + + let head_el_block_hash = { + let fork_choice = self.store.read().await; + let store = fork_choice.store.lock().await; + store + .block_provider() + .get(parent_lean_root)? + .map(|signed_block| signed_block.block.body.execution_payload.block_hash) + .unwrap_or_default() + }; + + let parent_el_block_hash = if head_el_block_hash.is_zero() { + reth_handle.genesis_hash() + } else { + head_el_block_hash + }; + + let spec = lean_network_spec(); + let fork_choice_state = + create_fork_choice_state(parent_el_block_hash, B256::ZERO, B256::ZERO); + let payload_attributes = create_ream_payload_attributes( + slot, + parent_lean_root, + spec.genesis_time, + spec.seconds_per_slot, + ); + + let forkchoice_updated = reth_handle + .update_forkchoice(fork_choice_state, Some(payload_attributes)) + .await + .map_err(|err| anyhow!("EL forkchoiceUpdated (build) failed: {err}"))?; + let payload_id = forkchoice_updated + .payload_id + .ok_or_else(|| anyhow!("EL returned no payload_id for the slot {slot} proposal"))?; + let execution_data = reth_handle + .build_payload(payload_id) + .await + .map_err(|err| anyhow!("EL getPayload failed: {err}"))?; + + to_ream_execution_payload(&execution_data) + .map_err(|err| anyhow!("EL payload conversion failed: {err}")) + } } fn pending_block_slot(block: &SignedBlock) -> u64 { diff --git a/crates/common/fork_choice/lean/Cargo.toml b/crates/common/fork_choice/lean/Cargo.toml index 3c3833d79..246c85c6c 100644 --- a/crates/common/fork_choice/lean/Cargo.toml +++ b/crates/common/fork_choice/lean/Cargo.toml @@ -27,7 +27,7 @@ devnet5 = [ "ream-storage/devnet5", "ream-test-utils/devnet5", ] -reth = ["ream-consensus-lean/reth"] +reth = ["ream-consensus-lean/reth", "dep:ream-execution-rpc-types"] [dependencies] alloy-consensus.workspace = true @@ -56,6 +56,7 @@ ream-bls.workspace = true ream-consensus-beacon.workspace = true ream-consensus-lean.workspace = true ream-consensus-misc.workspace = true +ream-execution-rpc-types = { workspace = true, optional = true } ream-metrics.workspace = true ream-network-spec.workspace = true ream-network-state-lean.workspace = true diff --git a/crates/common/fork_choice/lean/src/store.rs b/crates/common/fork_choice/lean/src/store.rs index f8d275cf3..0529ba99a 100644 --- a/crates/common/fork_choice/lean/src/store.rs +++ b/crates/common/fork_choice/lean/src/store.rs @@ -25,6 +25,8 @@ use ream_consensus_misc::constants::lean::{ GOSSIP_DISPARITY_INTERVALS, INTERVALS_PER_SLOT, MAX_ATTESTATIONS_DATA, attestation_committee_count, }; +#[cfg(feature = "reth")] +use ream_execution_rpc_types::electra::execution_payload::ExecutionPayload; use ream_metrics::{ ATTESTATION_COMMITTEE_SUBNET, ATTESTATION_VALIDATION_TIME, ATTESTATIONS_INVALID_TOTAL, ATTESTATIONS_VALID_TOTAL, BLOCK_AGGREGATED_PAYLOADS, BLOCK_BUILDING_PAYLOAD_AGGREGATION_TIME, @@ -832,6 +834,7 @@ impl Store { proposer_index: u64, parent_root: B256, attestations: Option>, + #[cfg(feature = "reth")] execution_payload: ExecutionPayload, ) -> anyhow::Result<(Block, Vec, LeanState)> { let ( state_provider, @@ -1016,9 +1019,8 @@ impl Store { state_root: B256::ZERO, body: BlockBody { attestations: attestations_list, - // TODO: EL built execution payload #[cfg(feature = "reth")] - execution_payload: Default::default(), + execution_payload: execution_payload.clone(), }, }; @@ -1070,9 +1072,8 @@ impl Store { state_root: B256::ZERO, body: BlockBody { attestations: attestations_list, - // TODO: EL built execution payload #[cfg(feature = "reth")] - execution_payload: Default::default(), + execution_payload, }, }; @@ -1104,6 +1105,32 @@ impl Store { &mut self, slot: u64, validator_index: u64, + ) -> anyhow::Result { + self.produce_block_with_signatures_inner( + slot, + validator_index, + #[cfg(feature = "reth")] + ExecutionPayload::default(), + ) + .await + } + + #[cfg(feature = "reth")] + pub async fn produce_block_with_signatures_with_payload( + &mut self, + slot: u64, + validator_index: u64, + execution_payload: ExecutionPayload, + ) -> anyhow::Result { + self.produce_block_with_signatures_inner(slot, validator_index, execution_payload) + .await + } + + async fn produce_block_with_signatures_inner( + &mut self, + slot: u64, + validator_index: u64, + #[cfg(feature = "reth")] execution_payload: ExecutionPayload, ) -> anyhow::Result { let (state_provider, latest_known_aggregated_payloads_provider) = { let db = self.store.lock().await; @@ -1155,7 +1182,14 @@ impl Store { .map_err(|err| anyhow!("Failed to create VariableList: {err:?}"))?; let (mut candidate_block, proofs, post_state) = self - .build_block(slot, validator_index, head_root, Some(attestation_list)) + .build_block( + slot, + validator_index, + head_root, + Some(attestation_list), + #[cfg(feature = "reth")] + execution_payload, + ) .await?; stop_timer(add_attestations_timer); diff --git a/crates/common/reth/Cargo.toml b/crates/common/reth/Cargo.toml index 20ff6fed1..f2f74d67a 100644 --- a/crates/common/reth/Cargo.toml +++ b/crates/common/reth/Cargo.toml @@ -15,6 +15,8 @@ alloy-primitives.workspace = true alloy-rpc-types-engine = "2.1.0" eyre = "0.6.12" futures-util = "0.3.32" +ream-consensus-misc.workspace = true +ream-execution-rpc-types.workspace = true reqwest.workspace = true reth-ethereum = { git = "https://github.com/paradigmxyz/reth.git", rev = "5d027e5ff72f31270b862f8e000d1cc79621be2e", features = [ "node", @@ -23,6 +25,7 @@ reth-ethereum = { git = "https://github.com/paradigmxyz/reth.git", rev = "5d027e reth-payload-builder = { git = "https://github.com/paradigmxyz/reth.git", rev = "5d027e5ff72f31270b862f8e000d1cc79621be2e" } serde_json.workspace = true sha2.workspace = true +ssz_types.workspace = true tokio.workspace = true [dev-dependencies] diff --git a/crates/common/reth/src/handle.rs b/crates/common/reth/src/handle.rs index 7f88af3d5..77323a500 100644 --- a/crates/common/reth/src/handle.rs +++ b/crates/common/reth/src/handle.rs @@ -3,6 +3,7 @@ use std::{path::PathBuf, sync::Arc}; use alloy_genesis::Genesis; +use alloy_primitives::B256; use alloy_rpc_types_engine::{ExecutionData, ForkchoiceState, ForkchoiceUpdated, PayloadStatus}; use reth_ethereum::{ chainspec::ChainSpec, @@ -31,6 +32,9 @@ pub type RethNode = NodeHandleFor; pub struct RethHandle { payload_builder: PayloadBuilderHandle, engine: ConsensusEngineHandle, + /// EL genesis block hash, captured at boot. The CL uses this to resolve a "build on genesis" + /// request (the lean genesis carries a zero EL payload hash) to the EL's real genesis head. + genesis_hash: B256, } impl RethHandle { @@ -68,11 +72,18 @@ impl RethHandle { let handle = RethHandle { payload_builder: node.node.payload_builder_handle.clone(), engine: node.node.consensus_engine_handle().clone(), + genesis_hash: node.node.chain_spec().genesis_hash(), }; Ok((handle, node)) } + /// EL genesis block hash. Callers resolve a zero parent hash (the lean genesis placeholder) + /// to this before asking the EL to build on genesis. + pub fn genesis_hash(&self) -> B256 { + self.genesis_hash + } + /// Sends a fork choice update to the execution layer. /// /// Called with `payload_attributes` to start building a payload for a diff --git a/crates/common/reth/src/payload.rs b/crates/common/reth/src/payload.rs index 9aa456fc3..3aeddc7b4 100644 --- a/crates/common/reth/src/payload.rs +++ b/crates/common/reth/src/payload.rs @@ -1,7 +1,10 @@ use alloy_rpc_types_engine::{ExecutionData, PayloadStatus}; -use eyre::OptionExt; +use eyre::{OptionExt, eyre}; +use ream_consensus_misc::withdrawal::Withdrawal; +use ream_execution_rpc_types::electra::execution_payload::ExecutionPayload as ReamExecutionPayload; use reth_ethereum::node::{EthEngineTypes, api::ConsensusEngineHandle}; use reth_payload_builder::{PayloadBuilderHandle, PayloadId, PayloadKind}; +use ssz_types::{FixedVector, VariableList}; /// Builds an execution payload for a Lean block, equivalent to /// `engine_getPayloadV4`. @@ -30,3 +33,56 @@ pub async fn import( let status = consensus_engine_handle.new_payload(execution_data).await?; Ok(status) } + +/// Convert reth's alloy `ExecutionData` into ream's `ExecutionPayload`. +pub fn to_ream_execution_payload(data: &ExecutionData) -> eyre::Result { + let v3 = data + .payload + .as_v3() + .ok_or_eyre("expected a V3 execution payload (Cancun active in the EL genesis)")?; + let v1 = &v3.payload_inner.payload_inner; + + let transactions = v1 + .transactions + .iter() + .map(|tx| { + VariableList::new(tx.to_vec()).map_err(|err| eyre!("tx exceeds SSZ limit: {err:?}")) + }) + .collect::>>()?; + + let withdrawals = v3 + .payload_inner + .withdrawals + .iter() + .map(|withdrawal| Withdrawal { + index: withdrawal.index, + validator_index: withdrawal.validator_index, + address: withdrawal.address, + amount: withdrawal.amount, + }) + .collect::>(); + + Ok(ReamExecutionPayload { + parent_hash: v1.parent_hash, + fee_recipient: v1.fee_recipient, + state_root: v1.state_root, + receipts_root: v1.receipts_root, + logs_bloom: FixedVector::new(v1.logs_bloom.as_slice().to_vec()) + .map_err(|err| eyre!("logs bloom must be 256 bytes: {err:?}"))?, + prev_randao: v1.prev_randao, + block_number: v1.block_number, + gas_limit: v1.gas_limit, + gas_used: v1.gas_used, + timestamp: v1.timestamp, + extra_data: VariableList::new(v1.extra_data.to_vec()) + .map_err(|err| eyre!("extra data exceeds 32 bytes: {err:?}"))?, + base_fee_per_gas: v1.base_fee_per_gas, + block_hash: v1.block_hash, + transactions: VariableList::new(transactions) + .map_err(|err| eyre!("too many transactions for SSZ list: {err:?}"))?, + withdrawals: VariableList::new(withdrawals) + .map_err(|err| eyre!("too many withdrawals for SSZ list: {err:?}"))?, + blob_gas_used: v3.blob_gas_used, + excess_blob_gas: v3.excess_blob_gas, + }) +} From 758357080163815df48facd8912b9d056018a070 Mon Sep 17 00:00:00 2001 From: Soham Zemse <22412996+zemse@users.noreply.github.com> Date: Wed, 8 Jul 2026 03:51:34 +0530 Subject: [PATCH 15/26] pin EL to cancun v3 payloads --- crates/common/reth/src/handle.rs | 4 +--- crates/common/reth/src/payload.rs | 13 +++++++------ 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/crates/common/reth/src/handle.rs b/crates/common/reth/src/handle.rs index 77323a500..fec86d429 100644 --- a/crates/common/reth/src/handle.rs +++ b/crates/common/reth/src/handle.rs @@ -143,9 +143,7 @@ pub fn custom_chain() -> Arc { "terminalTotalDifficulty": 0, "terminalTotalDifficultyPassed": true, "shanghaiTime": 0, - "cancunTime": 0, - "pragueTime": 0, - "amsterdamTime": 0 + "cancunTime": 0 } } "#; diff --git a/crates/common/reth/src/payload.rs b/crates/common/reth/src/payload.rs index 3aeddc7b4..fbfc62dad 100644 --- a/crates/common/reth/src/payload.rs +++ b/crates/common/reth/src/payload.rs @@ -1,4 +1,4 @@ -use alloy_rpc_types_engine::{ExecutionData, PayloadStatus}; +use alloy_rpc_types_engine::{ExecutionData, ExecutionPayload, PayloadStatus}; use eyre::{OptionExt, eyre}; use ream_consensus_misc::withdrawal::Withdrawal; use ream_execution_rpc_types::electra::execution_payload::ExecutionPayload as ReamExecutionPayload; @@ -34,12 +34,13 @@ pub async fn import( Ok(status) } -/// Convert reth's alloy `ExecutionData` into ream's `ExecutionPayload`. +/// Convert reth's alloy `ExecutionData` into ream's `ExecutionPayload` (V3 shaped for now). pub fn to_ream_execution_payload(data: &ExecutionData) -> eyre::Result { - let v3 = data - .payload - .as_v3() - .ok_or_eyre("expected a V3 execution payload (Cancun active in the EL genesis)")?; + let ExecutionPayload::V3(v3) = &data.payload else { + return Err(eyre!( + "expected a V3 (Cancun) execution payload; the EL genesis must not enable Prague/Amsterdam" + )); + }; let v1 = &v3.payload_inner.payload_inner; let transactions = v1 From 3cd85c581d957fe769e68d786a261b7cfcee0263 Mon Sep 17 00:00:00 2001 From: Sahilgill24 Date: Tue, 14 Jul 2026 06:56:38 +0530 Subject: [PATCH 16/26] feat: pin EL to prague + add helper functions for payload building --- crates/common/reth/Cargo.toml | 1 + crates/common/reth/src/handle.rs | 12 ++++- crates/common/reth/src/payload.rs | 76 +++++++++++++++++++++++++++++-- 3 files changed, 85 insertions(+), 4 deletions(-) diff --git a/crates/common/reth/Cargo.toml b/crates/common/reth/Cargo.toml index f2f74d67a..c341de69f 100644 --- a/crates/common/reth/Cargo.toml +++ b/crates/common/reth/Cargo.toml @@ -10,6 +10,7 @@ rust-version.workspace = true version.workspace = true [dependencies] +alloy-eips = "2.1.0" alloy-genesis = "2.1.0" alloy-primitives.workspace = true alloy-rpc-types-engine = "2.1.0" diff --git a/crates/common/reth/src/handle.rs b/crates/common/reth/src/handle.rs index fec86d429..a9a3709c8 100644 --- a/crates/common/reth/src/handle.rs +++ b/crates/common/reth/src/handle.rs @@ -37,6 +37,15 @@ pub struct RethHandle { genesis_hash: B256, } +impl std::fmt::Debug for RethHandle { + // The inner engine/payload channels aren't meaningfully printable. + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.debug_struct("RethHandle") + .field("genesis_hash", &self.genesis_hash) + .finish_non_exhaustive() + } +} + impl RethHandle { // Start a reth node with the given tokio runtime handle. pub async fn start( @@ -143,7 +152,8 @@ pub fn custom_chain() -> Arc { "terminalTotalDifficulty": 0, "terminalTotalDifficultyPassed": true, "shanghaiTime": 0, - "cancunTime": 0 + "cancunTime": 0, + "pragueTime": 0 } } "#; diff --git a/crates/common/reth/src/payload.rs b/crates/common/reth/src/payload.rs index fbfc62dad..15e208948 100644 --- a/crates/common/reth/src/payload.rs +++ b/crates/common/reth/src/payload.rs @@ -1,4 +1,9 @@ -use alloy_rpc_types_engine::{ExecutionData, ExecutionPayload, PayloadStatus}; +use alloy_eips::eip4895::Withdrawal as AlloyWithdrawal; +use alloy_primitives::{B256, Bloom, Bytes}; +use alloy_rpc_types_engine::{ + CancunPayloadFields, ExecutionData, ExecutionPayload, ExecutionPayloadSidecar, + ExecutionPayloadV1, ExecutionPayloadV2, ExecutionPayloadV3, PayloadStatus, PraguePayloadFields, +}; use eyre::{OptionExt, eyre}; use ream_consensus_misc::withdrawal::Withdrawal; use ream_execution_rpc_types::electra::execution_payload::ExecutionPayload as ReamExecutionPayload; @@ -34,11 +39,16 @@ pub async fn import( Ok(status) } -/// Convert reth's alloy `ExecutionData` into ream's `ExecutionPayload` (V3 shaped for now). +/// Convert reth's alloy `ExecutionData` into ream's `ExecutionPayload`. +/// +/// The EL runs Prague, whose `ExecutionPayload` container is still the +/// V3 shape — Prague's EIP-7685 execution requests are carried in the +/// `newPayloadV4` sidecar as a separate parameter, not inside the payload body. +/// So the payload is always an `ExecutionPayload::V3` here pub fn to_ream_execution_payload(data: &ExecutionData) -> eyre::Result { let ExecutionPayload::V3(v3) = &data.payload else { return Err(eyre!( - "expected a V3 (Cancun) execution payload; the EL genesis must not enable Prague/Amsterdam" + "expected a V3 execution payload body (Cancun or later active in the EL genesis)" )); }; let v1 = &v3.payload_inner.payload_inner; @@ -87,3 +97,63 @@ pub fn to_ream_execution_payload(data: &ExecutionData) -> eyre::Result ExecutionData { + let transactions = payload + .transactions + .iter() + .map(|tx| Bytes::from(tx.to_vec())) + .collect::>(); + + let withdrawals = payload + .withdrawals + .iter() + .map(|withdrawal| AlloyWithdrawal { + index: withdrawal.index, + validator_index: withdrawal.validator_index, + address: withdrawal.address, + amount: withdrawal.amount, + }) + .collect::>(); + + let v1 = ExecutionPayloadV1 { + parent_hash: payload.parent_hash, + fee_recipient: payload.fee_recipient, + state_root: payload.state_root, + receipts_root: payload.receipts_root, + logs_bloom: Bloom::from_slice(payload.logs_bloom.as_ref()), + prev_randao: payload.prev_randao, + block_number: payload.block_number, + gas_limit: payload.gas_limit, + gas_used: payload.gas_used, + timestamp: payload.timestamp, + extra_data: Bytes::from(payload.extra_data.to_vec()), + base_fee_per_gas: payload.base_fee_per_gas, + block_hash: payload.block_hash, + transactions, + }; + let v2 = ExecutionPayloadV2 { + payload_inner: v1, + withdrawals, + }; + let v3 = ExecutionPayloadV3 { + payload_inner: v2, + blob_gas_used: payload.blob_gas_used, + excess_blob_gas: payload.excess_blob_gas, + }; + + let sidecar = ExecutionPayloadSidecar::v4( + CancunPayloadFields { + parent_beacon_block_root: parent_root, + versioned_hashes: Vec::new(), + }, + PraguePayloadFields::new(Vec::::new()), + ); + + ExecutionData::new(ExecutionPayload::V3(v3), sidecar) +} From 2d84b439341f91b232ace637f30063ccba0cb7ef Mon Sep 17 00:00:00 2001 From: Sahilgill24 Date: Tue, 14 Jul 2026 07:25:08 +0530 Subject: [PATCH 17/26] feat: update EL payload for both proposer and non-proposer --- Cargo.lock | 2 + bin/ream/src/main.rs | 2 +- crates/common/chain/lean/src/service.rs | 6 ++- crates/common/fork_choice/lean/Cargo.toml | 7 ++- crates/common/fork_choice/lean/src/store.rs | 60 +++++++++++++++++++++ 5 files changed, 74 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 55f3f319d..3d2cf4dea 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -9043,6 +9043,7 @@ dependencies = [ "ream-network-spec", "ream-network-state-lean", "ream-post-quantum-crypto", + "ream-reth-engine", "ream-storage", "ream-sync", "ream-test-utils", @@ -9341,6 +9342,7 @@ dependencies = [ name = "ream-reth-engine" version = "0.1.0" dependencies = [ + "alloy-eips 2.1.0", "alloy-genesis", "alloy-primitives", "alloy-rpc-types-engine", diff --git a/bin/ream/src/main.rs b/bin/ream/src/main.rs index 8f3d9580c..014924dd5 100644 --- a/bin/ream/src/main.rs +++ b/bin/ream/src/main.rs @@ -466,7 +466,7 @@ pub async fn run_lean_node(config: LeanNodeConfig, executor: ReamExecutor, ream_ }; #[cfg(feature = "reth")] - chain_service.set_reth_handle(reth_handle); + chain_service.set_reth_handle(reth_handle).await; #[cfg(feature = "reth")] let reth_exit = &mut reth_node.node_exit_future; diff --git a/crates/common/chain/lean/src/service.rs b/crates/common/chain/lean/src/service.rs index 5c0a5d2f0..773c3b817 100644 --- a/crates/common/chain/lean/src/service.rs +++ b/crates/common/chain/lean/src/service.rs @@ -301,7 +301,11 @@ impl LeanChainService { } #[cfg(feature = "reth")] - pub fn set_reth_handle(&mut self, reth_handle: RethHandle) { + pub async fn set_reth_handle(&mut self, reth_handle: RethHandle) { + self.store + .write() + .await + .set_reth_handle(reth_handle.clone()); self.reth_handle = Some(reth_handle); } diff --git a/crates/common/fork_choice/lean/Cargo.toml b/crates/common/fork_choice/lean/Cargo.toml index 246c85c6c..0bc1910d3 100644 --- a/crates/common/fork_choice/lean/Cargo.toml +++ b/crates/common/fork_choice/lean/Cargo.toml @@ -27,7 +27,11 @@ devnet5 = [ "ream-storage/devnet5", "ream-test-utils/devnet5", ] -reth = ["ream-consensus-lean/reth", "dep:ream-execution-rpc-types"] +reth = [ + "ream-consensus-lean/reth", + "dep:ream-execution-rpc-types", + "dep:ream-reth-engine", +] [dependencies] alloy-consensus.workspace = true @@ -58,6 +62,7 @@ ream-consensus-lean.workspace = true ream-consensus-misc.workspace = true ream-execution-rpc-types = { workspace = true, optional = true } ream-metrics.workspace = true +ream-reth-engine = { workspace = true, optional = true } ream-network-spec.workspace = true ream-network-state-lean.workspace = true ream-post-quantum-crypto.workspace = true diff --git a/crates/common/fork_choice/lean/src/store.rs b/crates/common/fork_choice/lean/src/store.rs index 0529ba99a..37f16b594 100644 --- a/crates/common/fork_choice/lean/src/store.rs +++ b/crates/common/fork_choice/lean/src/store.rs @@ -57,6 +57,10 @@ use ream_post_quantum_crypto::lean_multisig::type_2::{ #[cfg(feature = "devnet5")] use ream_post_quantum_crypto::leansig::public_key::PublicKey; use ream_post_quantum_crypto::leansig::signature::Signature; +#[cfg(feature = "reth")] +use ream_reth_engine::{ + fork_choice::create_fork_choice_state, handle::RethHandle, payload::from_ream_execution_payload, +}; use ream_storage::{ db::lean::LeanDB, tables::{field::REDBField, lean::gossip_signatures::GossipSignaturesTable, table::REDBTable}, @@ -77,6 +81,10 @@ pub struct Store { pub store: Arc>, pub network_state: Arc, pub tick_interval_duration: Option, + /// Handle to the embedded reth execution layer, used to validate and + /// canonicalize the execution payload carried by each imported block. + #[cfg(feature = "reth")] + pub reth_handle: Option, } impl Store { @@ -142,9 +150,18 @@ impl Store { store: Arc::new(Mutex::new(db)), network_state: Arc::new(NetworkState::new(anchor_checkpoint, anchor_checkpoint)), tick_interval_duration: None, + #[cfg(feature = "reth")] + reth_handle: None, }) } + /// Attach the embedded reth execution-layer handle so [`Self::on_block`] can + /// validate and canonicalize the execution payload of each imported block. + #[cfg(feature = "reth")] + pub fn set_reth_handle(&mut self, reth_handle: RethHandle) { + self.reth_handle = Some(reth_handle); + } + /// Use LMD GHOST to get the head, given a particular root (usually the /// latest known justified block). Returns the head root and slot. async fn compute_lmd_ghost_head( @@ -1330,6 +1347,47 @@ impl Store { } } + // Validate and canonicalize this block's execution payload against the + // embedded reth EL: newPayloadV4 executes/verifies it, then + // forkchoiceUpdated advances the EL head. Both proposer and + // non-proposer blocks flow through `on_block` + #[cfg(feature = "reth")] + if let Some(reth_handle) = &self.reth_handle { + let execution_payload = &block.body.execution_payload; + let head_el_hash = execution_payload.block_hash; + + let el_hash_of = |root: B256| { + block_provider + .get(root) + .ok() + .flatten() + .map(|signed| signed.block.body.execution_payload.block_hash) + }; + let safe_el_hash = el_hash_of(latest_justified.root).unwrap_or(head_el_hash); + let finalized_root = { + let db = self.store.lock().await; + db.latest_finalized_provider().get()?.root + }; + let finalized_el_hash = el_hash_of(finalized_root).unwrap_or(head_el_hash); + + let execution_data = from_ream_execution_payload(execution_payload, block.parent_root); + let payload_status = reth_handle + .import_payload(execution_data) + .await + .map_err(|err| anyhow!("EL newPayload failed: {err}"))?; + ensure!( + payload_status.is_valid(), + "EL rejected execution payload for block {block_root}: {payload_status:?}" + ); + reth_handle + .update_forkchoice( + create_fork_choice_state(head_el_hash, safe_el_hash, finalized_el_hash), + None, + ) + .await + .map_err(|err| anyhow!("EL forkchoiceUpdated (head) failed: {err}"))?; + } + self.update_head().await?; stop_timer(block_processing_timer); @@ -2155,6 +2213,8 @@ mod tests { store: test_store.store, network_state: test_store.network_state, tick_interval_duration: None, + #[cfg(feature = "reth")] + reth_handle: None, } } From f374dfcd500d61c1003a012c55abd34fd83e8224 Mon Sep 17 00:00:00 2001 From: Soham Zemse <22412996+zemse@users.noreply.github.com> Date: Sun, 26 Jul 2026 01:56:28 +0530 Subject: [PATCH 18/26] fix: invalid payload error when slot value is passed, reth generates a glamsterdam block --- crates/common/reth/src/fork_choice.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/common/reth/src/fork_choice.rs b/crates/common/reth/src/fork_choice.rs index 6046dcde0..801abec4d 100644 --- a/crates/common/reth/src/fork_choice.rs +++ b/crates/common/reth/src/fork_choice.rs @@ -89,7 +89,7 @@ pub fn create_ream_payload_attributes( prev_randao, Address::ZERO, Some(parent_lean_block_root), - Some(slot), + None, None, ) } From ead19306fa160a3ad475efa6690ef8912df87805 Mon Sep 17 00:00:00 2001 From: Soham Zemse <22412996+zemse@users.noreply.github.com> Date: Sun, 26 Jul 2026 03:03:14 +0530 Subject: [PATCH 19/26] feat: reth p2p to allow for tx mempool interop --- Cargo.lock | 3 + bin/ream/src/cli/constants.rs | 2 + bin/ream/src/cli/lean_node.rs | 42 ++++++++++- bin/ream/src/main.rs | 25 +++++-- book/cli/ream/lean_node.md | 14 ++++ crates/common/fork_choice/lean/Cargo.toml | 2 +- crates/common/reth/Cargo.toml | 4 + crates/common/reth/src/handle.rs | 89 ++++++++++++++++++++--- crates/rpc/lean/Cargo.toml | 6 +- 9 files changed, 167 insertions(+), 20 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3d2cf4dea..84c19cb32 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -9352,12 +9352,15 @@ dependencies = [ "ream-execution-rpc-types", "reqwest 0.12.28", "reth-ethereum", + "reth-network-peers", "reth-payload-builder", "serde_json", "serial_test", "sha2", "ssz_types", "tokio", + "tracing", + "tracing-subscriber 0.3.23", ] [[package]] diff --git a/bin/ream/src/cli/constants.rs b/bin/ream/src/cli/constants.rs index efb79a6e7..094f8573d 100644 --- a/bin/ream/src/cli/constants.rs +++ b/bin/ream/src/cli/constants.rs @@ -13,5 +13,7 @@ pub const DEFAULT_METRICS_ADDRESS: IpAddr = IpAddr::V4(Ipv4Addr::new(127, 0, 0, pub const DEFAULT_METRICS_PORT: u16 = 8080; pub const DEFAULT_NETWORK: &str = "mainnet"; pub const DEFAULT_REQUEST_TIMEOUT: &str = "60"; +pub const DEFAULT_RETH_P2P_ADDRESS: IpAddr = IpAddr::V4(Ipv4Addr::LOCALHOST); +pub const DEFAULT_RETH_RPC_PORT: u16 = 8545; pub const DEFAULT_SOCKET_ADDRESS: IpAddr = IpAddr::V4(Ipv4Addr::UNSPECIFIED); pub const DEFAULT_SOCKET_PORT: u16 = 9000; diff --git a/bin/ream/src/cli/lean_node.rs b/bin/ream/src/cli/lean_node.rs index da61bc63b..5b412bf45 100644 --- a/bin/ream/src/cli/lean_node.rs +++ b/bin/ream/src/cli/lean_node.rs @@ -1,5 +1,6 @@ use std::{net::IpAddr, path::PathBuf}; +use alloy_primitives::B256; use clap::{Parser, error::ErrorKind}; use ream_network_spec::{cli::lean_network_parser, networks::LeanNetworkSpec}; use ream_p2p::bootnodes::Bootnodes; @@ -7,7 +8,8 @@ use url::Url; use crate::cli::constants::{ DEFAULT_HTTP_ADDRESS, DEFAULT_HTTP_ALLOW_ORIGIN, DEFAULT_HTTP_PORT, DEFAULT_METRICS_ADDRESS, - DEFAULT_METRICS_ENABLED, DEFAULT_METRICS_PORT, DEFAULT_SOCKET_ADDRESS, DEFAULT_SOCKET_PORT, + DEFAULT_METRICS_ENABLED, DEFAULT_METRICS_PORT, DEFAULT_RETH_P2P_ADDRESS, DEFAULT_RETH_RPC_PORT, + DEFAULT_SOCKET_ADDRESS, DEFAULT_SOCKET_PORT, }; #[derive(Debug, Parser, Clone)] @@ -96,9 +98,45 @@ pub struct LeanNodeConfig { #[arg( long, default_value = "./reth-data", - help = "Data directory for the embedded reth execution layer (MDBX database). Only used when built with `--features reth`." + help = "Set reth data directory (needs `--features reth`)" )] pub reth_datadir: PathBuf, + + #[arg(long, help = "Set reth eth_* JSON-RPC address", default_value_t = DEFAULT_HTTP_ADDRESS)] + pub reth_rpc_address: IpAddr, + + #[arg(long, help = "Set reth eth_* JSON-RPC port", default_value_t = DEFAULT_RETH_RPC_PORT)] + pub reth_rpc_port: u16, + + #[arg( + long, + help = "Set reth RLPx (devp2p) address", + default_value_t = DEFAULT_RETH_P2P_ADDRESS, + requires = "reth_p2p_port" + )] + pub reth_p2p_address: IpAddr, + + #[arg( + long, + help = "Set reth RLPx (devp2p) port, to gossip transactions with other execution layers. Unset means an isolated EL with no peers", + requires = "reth_p2p_secret" + )] + pub reth_p2p_port: Option, + + #[arg( + long, + help = "Set 32-byte hex secp256k1 key pinning reth's enode identity, so peers can address it deterministically", + requires = "reth_p2p_port" + )] + pub reth_p2p_secret: Option, + + #[arg( + long, + value_delimiter = ',', + help = "Comma-separated enode URLs of other execution layers to dial directly as a static trusted mesh (enode://@:). Discovery stays off.", + requires = "reth_p2p_port" + )] + pub reth_trusted_peers: Vec, } impl LeanNodeConfig { diff --git a/bin/ream/src/main.rs b/bin/ream/src/main.rs index 014924dd5..5e29374ae 100644 --- a/bin/ream/src/main.rs +++ b/bin/ream/src/main.rs @@ -84,7 +84,7 @@ use ream_post_quantum_crypto::leansig::{ private_key::PrivateKey as LeanSigPrivateKey, public_key::PublicKey, }; #[cfg(feature = "reth")] -use ream_reth_engine::handle::RethHandle; +use ream_reth_engine::handle::{RethNodeConfig, RethP2pConfig}; use ream_rpc_common::config::RpcServerConfig; use ream_rpc_lean::{handlers::test_driver::test_driver_enabled, server::start_test_driver}; use ream_storage::{ @@ -450,10 +450,25 @@ pub async fn run_lean_node(config: LeanNodeConfig, executor: ReamExecutor, ream_ // `RethHandle` (given to the lean chain service) and also the owned node. #[cfg(feature = "reth")] let (reth_handle, mut reth_node) = { - let (handle, node) = RethHandle::start( - Some(executor.runtime().handle().clone()), - config.reth_datadir.clone(), - ) + let p2p = config + .reth_p2p_port + .zip(config.reth_p2p_secret) + .map(|(port, secret_key)| RethP2pConfig { + address: config.reth_p2p_address, + port, + secret_key, + trusted_peers: config.reth_trusted_peers.clone(), + }); + + let (handle, node) = RethHandle::start(RethNodeConfig { + runtime: Some(executor.runtime().handle().clone()), + datadir: config.reth_datadir.clone(), + http_rpc: Some(SocketAddr::new( + config.reth_rpc_address, + config.reth_rpc_port, + )), + p2p, + }) .await .expect("failed to boot embedded reth execution layer"); diff --git a/book/cli/ream/lean_node.md b/book/cli/ream/lean_node.md index bedda2dd4..bf46d0bfd 100644 --- a/book/cli/ream/lean_node.md +++ b/book/cli/ream/lean_node.md @@ -43,6 +43,20 @@ Options: Additional attestation subnet ids to subscribe to and aggregate from (comma-separated, e.g. '0,3,7'). Requires --is-aggregator. --attestation-committee-count Number of attestation committees (subnets). Each validator's subnet is `validator_id % count`. [default: 1] + --reth-datadir + Set reth data directory (needs `--features reth`) [default: ./reth-data] + --reth-rpc-address + Set reth eth_* JSON-RPC address [default: 127.0.0.1] + --reth-rpc-port + Set reth eth_* JSON-RPC port [default: 8545] + --reth-p2p-address + Set reth RLPx (devp2p) address [default: 127.0.0.1] + --reth-p2p-port + Set reth RLPx (devp2p) port, to gossip transactions with other execution layers. Unset means an isolated EL with no peers + --reth-p2p-secret + Set 32-byte hex secp256k1 key pinning reth's enode identity, so peers can address it deterministically + --reth-trusted-peers + Comma-separated enode URLs of other execution layers to dial directly as a static trusted mesh (enode://@:). Discovery stays off. -h, --help Print help ``` diff --git a/crates/common/fork_choice/lean/Cargo.toml b/crates/common/fork_choice/lean/Cargo.toml index 0bc1910d3..2dfbfdf05 100644 --- a/crates/common/fork_choice/lean/Cargo.toml +++ b/crates/common/fork_choice/lean/Cargo.toml @@ -62,10 +62,10 @@ ream-consensus-lean.workspace = true ream-consensus-misc.workspace = true ream-execution-rpc-types = { workspace = true, optional = true } ream-metrics.workspace = true -ream-reth-engine = { workspace = true, optional = true } ream-network-spec.workspace = true ream-network-state-lean.workspace = true ream-post-quantum-crypto.workspace = true +ream-reth-engine = { workspace = true, optional = true } ream-storage.workspace = true ream-sync.workspace = true diff --git a/crates/common/reth/Cargo.toml b/crates/common/reth/Cargo.toml index c341de69f..27c8b499b 100644 --- a/crates/common/reth/Cargo.toml +++ b/crates/common/reth/Cargo.toml @@ -23,14 +23,18 @@ reth-ethereum = { git = "https://github.com/paradigmxyz/reth.git", rev = "5d027e "node", "test-utils", ] } +reth-network-peers = { git = "https://github.com/paradigmxyz/reth.git", rev = "5d027e5ff72f31270b862f8e000d1cc79621be2e" } reth-payload-builder = { git = "https://github.com/paradigmxyz/reth.git", rev = "5d027e5ff72f31270b862f8e000d1cc79621be2e" } serde_json.workspace = true sha2.workspace = true ssz_types.workspace = true tokio.workspace = true +tracing.workspace = true [dev-dependencies] serial_test = "3.4.0" +tokio = { workspace = true, features = ["macros", "rt-multi-thread"] } +tracing-subscriber.workspace = true [lints] workspace = true diff --git a/crates/common/reth/src/handle.rs b/crates/common/reth/src/handle.rs index a9a3709c8..ab18d22fd 100644 --- a/crates/common/reth/src/handle.rs +++ b/crates/common/reth/src/handle.rs @@ -1,10 +1,15 @@ #![warn(unused_imports)] -use std::{path::PathBuf, sync::Arc}; +use std::{ + net::{IpAddr, Ipv4Addr, SocketAddr}, + path::PathBuf, + sync::Arc, +}; use alloy_genesis::Genesis; use alloy_primitives::B256; use alloy_rpc_types_engine::{ExecutionData, ForkchoiceState, ForkchoiceUpdated, PayloadStatus}; +use eyre::eyre; use reth_ethereum::{ chainspec::ChainSpec, engine::EthPayloadAttributes, @@ -13,13 +18,14 @@ use reth_ethereum::{ api::ConsensusEngineHandle, builder::{NodeBuilder, NodeHandleFor}, core::{ - args::{DatadirArgs, RpcServerArgs}, + args::{DatadirArgs, NetworkArgs, RpcServerArgs}, node_config::NodeConfig, }, }, provider::db::{ClientVersion, DatabaseEnv, init_db, mdbx::DatabaseArguments}, tasks::{RuntimeBuilder, RuntimeConfig, TokioConfig}, }; +use reth_network_peers::TrustedPeer; use reth_payload_builder::{PayloadBuilderHandle, PayloadId}; use tokio::runtime::Handle; @@ -27,6 +33,22 @@ use crate::{fork_choice, payload}; pub type RethNode = NodeHandleFor; +#[derive(Debug, Clone)] +pub struct RethP2pConfig { + pub address: IpAddr, + pub port: u16, + pub secret_key: B256, + pub trusted_peers: Vec, +} + +#[derive(Debug, Clone)] +pub struct RethNodeConfig { + pub runtime: Option, + pub datadir: PathBuf, + pub http_rpc: Option, + pub p2p: Option, +} + /// Cheaply-cloneable, `Send + Sync` #[derive(Clone)] pub struct RethHandle { @@ -48,19 +70,55 @@ impl std::fmt::Debug for RethHandle { impl RethHandle { // Start a reth node with the given tokio runtime handle. - pub async fn start( - ream_rt: Option, - datadir: PathBuf, - ) -> eyre::Result<(Self, RethNode)> { - let mut config = RuntimeConfig::default(); - if let Some(handle) = ream_rt { - config = config.with_tokio(TokioConfig::existing_handle(handle)); + pub async fn start(config: RethNodeConfig) -> eyre::Result<(Self, RethNode)> { + let RethNodeConfig { + runtime, + datadir, + http_rpc, + p2p, + } = config; + + let mut runtime_config = RuntimeConfig::default(); + if let Some(handle) = runtime { + runtime_config = runtime_config.with_tokio(TokioConfig::existing_handle(handle)); } - let reth_rt = RuntimeBuilder::new(config).build()?; + let reth_rt = RuntimeBuilder::new(runtime_config).build()?; + + let mut rpc = RpcServerArgs::default(); + if let Some(address) = http_rpc { + rpc = rpc.with_http(); + rpc.http_addr = address.ip(); + rpc.http_port = address.port(); + } + + rpc.disable_auth_server = true; + rpc.ipcdisable = true; + + let mut network = NetworkArgs { + addr: Ipv4Addr::LOCALHOST.into(), + port: 0, + ..Default::default() + }; + network.discovery.disable_discovery = true; + if let Some(p2p) = &p2p { + network.addr = p2p.address; + network.port = p2p.port; + network.p2p_secret_key_hex = Some(p2p.secret_key); + network.trusted_peers = p2p + .trusted_peers + .iter() + .map(|enode| { + enode + .parse::() + .map_err(|err| eyre!("invalid EL trusted-peer enode {enode}: {err}")) + }) + .collect::>>()?; + } let node_config = NodeConfig::new(custom_chain()) - .with_rpc(RpcServerArgs::default().with_http()) + .with_rpc(rpc) + .with_network(network) .with_datadir_args(DatadirArgs { datadir: datadir.into(), ..Default::default() @@ -131,6 +189,15 @@ pub fn custom_chain() -> Arc { "alloc": { "0x6Be02d1d3665660d22FF9624b7BE0551ee1Ac91b": { "balance": "0x4a47e3c12448f4ad000000" + }, + "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266": { + "balance": "0x4a47e3c12448f4ad000000" + }, + "0x70997970C51812dc3A010C7d01b50e0d17dc79C8": { + "balance": "0x4a47e3c12448f4ad000000" + }, + "0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC": { + "balance": "0x4a47e3c12448f4ad000000" } }, "number": "0x0", diff --git a/crates/rpc/lean/Cargo.toml b/crates/rpc/lean/Cargo.toml index 7cbab0010..3155d1847 100644 --- a/crates/rpc/lean/Cargo.toml +++ b/crates/rpc/lean/Cargo.toml @@ -27,7 +27,11 @@ devnet5 = [ "ream-storage/devnet5", "ream-test-utils/devnet5", ] -reth = ["lean-spec-tests/reth", "ream-consensus-lean/reth", "ream-fork-choice-lean/reth"] +reth = [ + "lean-spec-tests/reth", + "ream-consensus-lean/reth", + "ream-fork-choice-lean/reth", +] [dependencies] actix-web.workspace = true From f1d8030c0c31eb585d056c1dc0fa8a9f97582983 Mon Sep 17 00:00:00 2001 From: Soham Zemse <22412996+zemse@users.noreply.github.com> Date: Sun, 26 Jul 2026 22:40:57 +0530 Subject: [PATCH 20/26] fix: missing import --- bin/ream/src/main.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/ream/src/main.rs b/bin/ream/src/main.rs index 5e29374ae..ef581f223 100644 --- a/bin/ream/src/main.rs +++ b/bin/ream/src/main.rs @@ -84,7 +84,7 @@ use ream_post_quantum_crypto::leansig::{ private_key::PrivateKey as LeanSigPrivateKey, public_key::PublicKey, }; #[cfg(feature = "reth")] -use ream_reth_engine::handle::{RethNodeConfig, RethP2pConfig}; +use ream_reth_engine::handle::{RethHandle, RethNodeConfig, RethP2pConfig}; use ream_rpc_common::config::RpcServerConfig; use ream_rpc_lean::{handlers::test_driver::test_driver_enabled, server::start_test_driver}; use ream_storage::{ From 5ae25a5dc5a17d10f60a93459b953523c253cf99 Mon Sep 17 00:00:00 2001 From: Soham Zemse <22412996+zemse@users.noreply.github.com> Date: Tue, 25 Aug 2026 15:27:46 +0530 Subject: [PATCH 21/26] fix: docs, sort and format --- Cargo.toml | 2 +- bin/ream/Cargo.toml | 2 +- book/SUMMARY.md | 1 + book/cli/SUMMARY.md | 1 + book/cli/ream.md | 1 + book/cli/ream/da_node.md | 17 +++++++++++++++++ .../data_availability_node/src/ingest.rs | 18 ++++++++++++++---- 7 files changed, 36 insertions(+), 6 deletions(-) create mode 100644 book/cli/ream/da_node.md diff --git a/Cargo.toml b/Cargo.toml index 59a016bf9..fff038035 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,8 +14,8 @@ members = [ "crates/common/consensus/lean", "crates/common/consensus/misc", "crates/common/data_availability", - "crates/common/data_availability_node", "crates/common/data_availability_adapters/kzg_verifier", + "crates/common/data_availability_node", "crates/common/events/beacon", "crates/common/execution/engine", "crates/common/execution/rpc_types", diff --git a/bin/ream/Cargo.toml b/bin/ream/Cargo.toml index 8c296f8d5..e913c336e 100644 --- a/bin/ream/Cargo.toml +++ b/bin/ream/Cargo.toml @@ -122,8 +122,8 @@ ream-post-quantum-crypto.workspace = true ream-reth-engine = { workspace = true, optional = true } ream-rpc-beacon.workspace = true ream-rpc-common.workspace = true -ream-rpc-lean.workspace = true ream-rpc-data-availability.workspace = true +ream-rpc-lean.workspace = true ream-storage.workspace = true ream-sync.workspace = true ream-sync-committee-pool.workspace = true diff --git a/book/SUMMARY.md b/book/SUMMARY.md index 882ff51c7..4e4130e2c 100644 --- a/book/SUMMARY.md +++ b/book/SUMMARY.md @@ -8,6 +8,7 @@ - [`ream`](./cli/ream.md) - [`ream lean_node`](./cli/ream/lean_node.md) - [`ream beacon_node`](./cli/ream/beacon_node.md) + - [`ream da_node`](./cli/ream/da_node.md) - [`ream validator_node`](./cli/ream/validator_node.md) - [`ream account_manager`](./cli/ream/account_manager.md) - [`ream voluntary_exit`](./cli/ream/voluntary_exit.md) diff --git a/book/cli/SUMMARY.md b/book/cli/SUMMARY.md index 8fad1f382..cff0fcb42 100644 --- a/book/cli/SUMMARY.md +++ b/book/cli/SUMMARY.md @@ -1,6 +1,7 @@ - [`ream`](./ream.md) - [`ream lean_node`](./ream/lean_node.md) - [`ream beacon_node`](./ream/beacon_node.md) + - [`ream da_node`](./ream/da_node.md) - [`ream validator_node`](./ream/validator_node.md) - [`ream account_manager`](./ream/account_manager.md) - [`ream voluntary_exit`](./ream/voluntary_exit.md) diff --git a/book/cli/ream.md b/book/cli/ream.md index c38866782..458cb2c0a 100644 --- a/book/cli/ream.md +++ b/book/cli/ream.md @@ -11,6 +11,7 @@ Usage: ream [OPTIONS] Commands: lean_node Start the lean node beacon_node Start the beacon node + da_node Start the data node validator_node Start the validator node account_manager Manage validator accounts voluntary_exit Perform voluntary exit for a validator diff --git a/book/cli/ream/da_node.md b/book/cli/ream/da_node.md new file mode 100644 index 000000000..d79183070 --- /dev/null +++ b/book/cli/ream/da_node.md @@ -0,0 +1,17 @@ +# ream da_node + +Start the data node + +```bash +$ ream da_node --help +``` +```txt +Usage: ream da_node [OPTIONS] + +Options: + --network Choose mainnet, sepolia, hoodi, dev or provide a path to a YAML config file [default: mainnet] + --http-address [default: 127.0.0.1] + --http-port [default: 5062] + --http-allow-origin + -h, --help Print help +``` diff --git a/crates/common/data_availability_node/src/ingest.rs b/crates/common/data_availability_node/src/ingest.rs index b52f60110..b2d58f9a6 100644 --- a/crates/common/data_availability_node/src/ingest.rs +++ b/crates/common/data_availability_node/src/ingest.rs @@ -26,10 +26,15 @@ pub struct IngestHandle { impl IngestHandle { /// Submit a candidate, awaiting while the queue is full (backpressure). pub async fn submit(&self, candidate: CandidateColumn) -> Result<(), IngestionError> { - self.sender + if self + .sender .send(IngestWorkItem::Candidate(candidate)) .await - .map_err(|_| IngestionError::Closed) + .is_err() + { + return Err(IngestionError::Closed); + } + Ok(()) } /// Submit a candidate without waiting; a full queue is @@ -45,10 +50,15 @@ impl IngestHandle { /// Submit a retention hint, awaiting while the queue is full. pub async fn submit_retention(&self, hint: RetentionHint) -> Result<(), IngestionError> { - self.sender + if self + .sender .send(IngestWorkItem::Retention(hint)) .await - .map_err(|_| IngestionError::Closed) + .is_err() + { + return Err(IngestionError::Closed); + } + Ok(()) } /// Submit a retention hint without waiting; a full queue is From f63f02b98f4b216f37e8afec7cbe07a3f18ece34 Mon Sep 17 00:00:00 2001 From: Soham Zemse <22412996+zemse@users.noreply.github.com> Date: Tue, 25 Aug 2026 16:34:40 +0530 Subject: [PATCH 22/26] fix: rocksdb pclmul build flag and unused dev-dependency --- .cargo/config.toml | 6 +++++- Cargo.lock | 1 - crates/common/reth/Cargo.toml | 1 - 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.cargo/config.toml b/.cargo/config.toml index 181121add..7bc375ce9 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -2,4 +2,8 @@ rustflags = ['--cfg', 'getrandom_backend="custom"'] [target.x86_64-unknown-linux-gnu] -rustflags = ['-C', 'target-cpu=x86-64-v3'] +# `pclmulqdq` is not part of the x86-64-v3 psABI level, but rocksdb's crc32c.cc +# enables its PCLMUL code path whenever SSE4.2 is on. librocksdb-sys only passes +# `-mpclmul` when rustc reports the feature, so without this the C++ build fails. +# Every x86-64-v3 CPU (Haswell+) has PCLMUL (Westmere+), so this is safe. +rustflags = ['-C', 'target-cpu=x86-64-v3', '-C', 'target-feature=+pclmulqdq'] diff --git a/Cargo.lock b/Cargo.lock index 637015512..c004b73fc 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -9583,7 +9583,6 @@ dependencies = [ "reth-network-peers", "reth-payload-builder", "serde_json", - "serial_test", "sha2", "ssz_types", "tokio", diff --git a/crates/common/reth/Cargo.toml b/crates/common/reth/Cargo.toml index 27c8b499b..5f436f99c 100644 --- a/crates/common/reth/Cargo.toml +++ b/crates/common/reth/Cargo.toml @@ -32,7 +32,6 @@ tokio.workspace = true tracing.workspace = true [dev-dependencies] -serial_test = "3.4.0" tokio = { workspace = true, features = ["macros", "rt-multi-thread"] } tracing-subscriber.workspace = true From 851a965c56de0fc67db887429a903b49c75e81ab Mon Sep 17 00:00:00 2001 From: Soham Zemse <22412996+zemse@users.noreply.github.com> Date: Tue, 25 Aug 2026 19:14:57 +0530 Subject: [PATCH 23/26] chore: drop verbose comment from cargo config --- .cargo/config.toml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.cargo/config.toml b/.cargo/config.toml index 7bc375ce9..82e73be05 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -2,8 +2,4 @@ rustflags = ['--cfg', 'getrandom_backend="custom"'] [target.x86_64-unknown-linux-gnu] -# `pclmulqdq` is not part of the x86-64-v3 psABI level, but rocksdb's crc32c.cc -# enables its PCLMUL code path whenever SSE4.2 is on. librocksdb-sys only passes -# `-mpclmul` when rustc reports the feature, so without this the C++ build fails. -# Every x86-64-v3 CPU (Haswell+) has PCLMUL (Westmere+), so this is safe. rustflags = ['-C', 'target-cpu=x86-64-v3', '-C', 'target-feature=+pclmulqdq'] From 9d1146c81aa86461734eb06f7163a5e03cbff83c Mon Sep 17 00:00:00 2001 From: Soham Zemse <22412996+zemse@users.noreply.github.com> Date: Wed, 2 Sep 2026 12:38:24 +0530 Subject: [PATCH 24/26] refactor(reth): address review feedback --- Cargo.lock | 4 +- Cargo.toml | 1 + bin/ream/src/cli/constants.rs | 2 + bin/ream/src/cli/lean_node.rs | 19 ++++-- book/cli/ream/lean_node.md | 14 ---- crates/common/chain/lean/Cargo.toml | 2 + crates/common/chain/lean/src/service.rs | 21 +++--- crates/common/fork_choice/lean/Cargo.toml | 2 + crates/common/fork_choice/lean/src/store.rs | 18 ++++-- crates/common/reth/Cargo.toml | 4 +- crates/common/reth/src/fork_choice.rs | 40 +----------- crates/common/reth/src/handle.rs | 72 ++++++++++++++------- crates/common/reth/src/payload.rs | 52 +++------------ 13 files changed, 110 insertions(+), 141 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 4e50afccd..1a45169cf 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8905,6 +8905,7 @@ name = "ream-chain-lean" version = "0.1.0" dependencies = [ "alloy-primitives", + "alloy-rpc-types-engine", "anyhow", "futures", "libp2p-identity", @@ -9234,6 +9235,7 @@ dependencies = [ "alloy-consensus", "alloy-primitives", "alloy-rlp", + "alloy-rpc-types-engine", "anyhow", "async-trait", "ethereum_hashing 0.7.0", @@ -9577,7 +9579,7 @@ dependencies = [ "alloy-genesis", "alloy-primitives", "alloy-rpc-types-engine", - "eyre", + "anyhow", "futures-util", "ream-consensus-misc", "ream-execution-rpc-types", diff --git a/Cargo.toml b/Cargo.toml index 91315d8ba..ebdc8f582 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -88,6 +88,7 @@ alloy-rlp = { version = "0.3.16", default-features = false, features = [ "derive", ] } alloy-rpc-types-beacon = "2.2.0" +alloy-rpc-types-engine = "2.2.0" alloy-rpc-types-eth = "2.2.0" anyhow = "1.0.104" async-trait = "0.1.91" diff --git a/bin/ream/src/cli/constants.rs b/bin/ream/src/cli/constants.rs index b20914b4f..81efa3d80 100644 --- a/bin/ream/src/cli/constants.rs +++ b/bin/ream/src/cli/constants.rs @@ -14,7 +14,9 @@ pub const DEFAULT_METRICS_ADDRESS: IpAddr = IpAddr::V4(Ipv4Addr::new(127, 0, 0, pub const DEFAULT_METRICS_PORT: u16 = 8080; pub const DEFAULT_NETWORK: &str = "mainnet"; pub const DEFAULT_REQUEST_TIMEOUT: &str = "60"; +#[cfg(feature = "reth")] pub const DEFAULT_RETH_P2P_ADDRESS: IpAddr = IpAddr::V4(Ipv4Addr::LOCALHOST); +#[cfg(feature = "reth")] pub const DEFAULT_RETH_RPC_PORT: u16 = 8545; pub const DEFAULT_SOCKET_ADDRESS: IpAddr = IpAddr::V4(Ipv4Addr::UNSPECIFIED); pub const DEFAULT_SOCKET_PORT: u16 = 9000; diff --git a/bin/ream/src/cli/lean_node.rs b/bin/ream/src/cli/lean_node.rs index b8cce3dc1..8d867f13d 100644 --- a/bin/ream/src/cli/lean_node.rs +++ b/bin/ream/src/cli/lean_node.rs @@ -1,5 +1,6 @@ use std::{net::IpAddr, path::PathBuf}; +#[cfg(feature = "reth")] use alloy_primitives::B256; use clap::{Parser, error::ErrorKind}; use ream_fork_choice_lean::store::BlockProductionStrategy; @@ -9,9 +10,10 @@ use url::Url; use crate::cli::constants::{ DEFAULT_HTTP_ADDRESS, DEFAULT_HTTP_ALLOW_ORIGIN, DEFAULT_HTTP_PORT, DEFAULT_METRICS_ADDRESS, - DEFAULT_METRICS_ENABLED, DEFAULT_METRICS_PORT, DEFAULT_RETH_P2P_ADDRESS, DEFAULT_RETH_RPC_PORT, - DEFAULT_SOCKET_ADDRESS, DEFAULT_SOCKET_PORT, + DEFAULT_METRICS_ENABLED, DEFAULT_METRICS_PORT, DEFAULT_SOCKET_ADDRESS, DEFAULT_SOCKET_PORT, }; +#[cfg(feature = "reth")] +use crate::cli::constants::{DEFAULT_RETH_P2P_ADDRESS, DEFAULT_RETH_RPC_PORT}; #[derive(Debug, Parser, Clone)] pub struct LeanNodeConfig { @@ -104,19 +106,19 @@ pub struct LeanNodeConfig { )] pub block_production: BlockProductionStrategy, - #[arg( - long, - default_value = "./reth-data", - help = "Set reth data directory (needs `--features reth`)" - )] + #[cfg(feature = "reth")] + #[arg(long, default_value = "./reth-data", help = "Set reth data directory")] pub reth_datadir: PathBuf, + #[cfg(feature = "reth")] #[arg(long, help = "Set reth eth_* JSON-RPC address", default_value_t = DEFAULT_HTTP_ADDRESS)] pub reth_rpc_address: IpAddr, + #[cfg(feature = "reth")] #[arg(long, help = "Set reth eth_* JSON-RPC port", default_value_t = DEFAULT_RETH_RPC_PORT)] pub reth_rpc_port: u16, + #[cfg(feature = "reth")] #[arg( long, help = "Set reth RLPx (devp2p) address", @@ -125,6 +127,7 @@ pub struct LeanNodeConfig { )] pub reth_p2p_address: IpAddr, + #[cfg(feature = "reth")] #[arg( long, help = "Set reth RLPx (devp2p) port, to gossip transactions with other execution layers. Unset means an isolated EL with no peers", @@ -132,6 +135,7 @@ pub struct LeanNodeConfig { )] pub reth_p2p_port: Option, + #[cfg(feature = "reth")] #[arg( long, help = "Set 32-byte hex secp256k1 key pinning reth's enode identity, so peers can address it deterministically", @@ -139,6 +143,7 @@ pub struct LeanNodeConfig { )] pub reth_p2p_secret: Option, + #[cfg(feature = "reth")] #[arg( long, value_delimiter = ',', diff --git a/book/cli/ream/lean_node.md b/book/cli/ream/lean_node.md index 2bf551156..49c79410a 100644 --- a/book/cli/ream/lean_node.md +++ b/book/cli/ream/lean_node.md @@ -45,20 +45,6 @@ Options: Number of attestation committees (subnets). Each validator's subnet is `validator_id % count`. [default: 1] --block-production Attestation selection strategy for block production: round-based or tiered. [default: round-based] - --reth-datadir - Set reth data directory (needs `--features reth`) [default: ./reth-data] - --reth-rpc-address - Set reth eth_* JSON-RPC address [default: 127.0.0.1] - --reth-rpc-port - Set reth eth_* JSON-RPC port [default: 8545] - --reth-p2p-address - Set reth RLPx (devp2p) address [default: 127.0.0.1] - --reth-p2p-port - Set reth RLPx (devp2p) port, to gossip transactions with other execution layers. Unset means an isolated EL with no peers - --reth-p2p-secret - Set 32-byte hex secp256k1 key pinning reth's enode identity, so peers can address it deterministically - --reth-trusted-peers - Comma-separated enode URLs of other execution layers to dial directly as a static trusted mesh (enode://@:). Discovery stays off. -h, --help Print help ``` diff --git a/crates/common/chain/lean/Cargo.toml b/crates/common/chain/lean/Cargo.toml index 65cd7923a..fad7653fd 100644 --- a/crates/common/chain/lean/Cargo.toml +++ b/crates/common/chain/lean/Cargo.toml @@ -24,6 +24,7 @@ devnet5 = [ "ream-post-quantum-crypto/devnet5", ] reth = [ + "dep:alloy-rpc-types-engine", "dep:ream-reth-engine", "dep:ream-execution-rpc-types", "ream-consensus-lean/reth", @@ -43,6 +44,7 @@ optimized-leanvm = [ [dependencies] alloy-primitives.workspace = true +alloy-rpc-types-engine = { workspace = true, optional = true } anyhow.workspace = true futures.workspace = true libp2p-identity.workspace = true diff --git a/crates/common/chain/lean/src/service.rs b/crates/common/chain/lean/src/service.rs index e69905004..6ba1bd7b3 100644 --- a/crates/common/chain/lean/src/service.rs +++ b/crates/common/chain/lean/src/service.rs @@ -8,6 +8,10 @@ use std::{ }; use alloy_primitives::B256; +#[cfg(feature = "reth")] +use alloy_rpc_types_engine::ForkchoiceState; +#[cfg(feature = "reth")] +use anyhow::Context; use anyhow::anyhow; use futures::stream::{FuturesUnordered, StreamExt}; use libp2p_identity::PeerId; @@ -51,8 +55,7 @@ use ream_req_resp::{ }; #[cfg(feature = "reth")] use ream_reth_engine::{ - fork_choice::{create_fork_choice_state, create_ream_payload_attributes}, - handle::RethHandle, + fork_choice::create_ream_payload_attributes, handle::RethHandle, payload::to_ream_execution_payload, }; use ream_storage::{ @@ -3363,8 +3366,11 @@ impl LeanChainService { }; let spec = lean_network_spec(); - let fork_choice_state = - create_fork_choice_state(parent_el_block_hash, B256::ZERO, B256::ZERO); + let fork_choice_state = ForkchoiceState { + head_block_hash: parent_el_block_hash, + safe_block_hash: B256::ZERO, + finalized_block_hash: B256::ZERO, + }; let payload_attributes = create_ream_payload_attributes( slot, parent_lean_root, @@ -3375,17 +3381,16 @@ impl LeanChainService { let forkchoice_updated = reth_handle .update_forkchoice(fork_choice_state, Some(payload_attributes)) .await - .map_err(|err| anyhow!("EL forkchoiceUpdated (build) failed: {err}"))?; + .context("EL forkchoiceUpdated (build) failed")?; let payload_id = forkchoice_updated .payload_id .ok_or_else(|| anyhow!("EL returned no payload_id for the slot {slot} proposal"))?; let execution_data = reth_handle .build_payload(payload_id) .await - .map_err(|err| anyhow!("EL getPayload failed: {err}"))?; + .context("EL getPayload failed")?; - to_ream_execution_payload(&execution_data) - .map_err(|err| anyhow!("EL payload conversion failed: {err}")) + to_ream_execution_payload(&execution_data).context("EL payload conversion failed") } } diff --git a/crates/common/fork_choice/lean/Cargo.toml b/crates/common/fork_choice/lean/Cargo.toml index ec3ae4ad1..7446dd904 100644 --- a/crates/common/fork_choice/lean/Cargo.toml +++ b/crates/common/fork_choice/lean/Cargo.toml @@ -20,6 +20,7 @@ devnet5 = [ "ream-test-utils/devnet5", ] reth = [ + "dep:alloy-rpc-types-engine", "ream-consensus-lean/reth", "dep:ream-execution-rpc-types", "dep:ream-reth-engine", @@ -38,6 +39,7 @@ optimized-leanvm = [ alloy-consensus.workspace = true alloy-primitives.workspace = true alloy-rlp.workspace = true +alloy-rpc-types-engine = { workspace = true, optional = true } anyhow.workspace = true async-trait.workspace = true ethereum_hashing.workspace = true diff --git a/crates/common/fork_choice/lean/src/store.rs b/crates/common/fork_choice/lean/src/store.rs index 2ff1f5495..65f49a697 100644 --- a/crates/common/fork_choice/lean/src/store.rs +++ b/crates/common/fork_choice/lean/src/store.rs @@ -6,6 +6,10 @@ use std::{ }; use alloy_primitives::B256; +#[cfg(feature = "reth")] +use alloy_rpc_types_engine::ForkchoiceState; +#[cfg(feature = "reth")] +use anyhow::Context; use anyhow::{anyhow, ensure}; #[cfg(feature = "devnet5")] use ream_consensus_lean::attestation::SingleMessageAggregate as PayloadProof; @@ -53,9 +57,7 @@ use ream_post_quantum_crypto::lean_multisig::type_2::{ use ream_post_quantum_crypto::leansig::public_key::PublicKey; use ream_post_quantum_crypto::leansig::signature::Signature; #[cfg(feature = "reth")] -use ream_reth_engine::{ - fork_choice::create_fork_choice_state, handle::RethHandle, payload::from_ream_execution_payload, -}; +use ream_reth_engine::{handle::RethHandle, payload::from_ream_execution_payload}; use ream_storage::{ db::lean::LeanDB, tables::{ @@ -1883,18 +1885,22 @@ impl Store { let payload_status = reth_handle .import_payload(execution_data) .await - .map_err(|err| anyhow!("EL newPayload failed: {err}"))?; + .context("EL newPayload failed")?; ensure!( payload_status.is_valid(), "EL rejected execution payload for block {block_root}: {payload_status:?}" ); reth_handle .update_forkchoice( - create_fork_choice_state(head_el_hash, safe_el_hash, finalized_el_hash), + ForkchoiceState { + head_block_hash: head_el_hash, + safe_block_hash: safe_el_hash, + finalized_block_hash: finalized_el_hash, + }, None, ) .await - .map_err(|err| anyhow!("EL forkchoiceUpdated (head) failed: {err}"))?; + .context("EL forkchoiceUpdated (head) failed")?; } self.update_head().await?; diff --git a/crates/common/reth/Cargo.toml b/crates/common/reth/Cargo.toml index 5f436f99c..de6ed1e3e 100644 --- a/crates/common/reth/Cargo.toml +++ b/crates/common/reth/Cargo.toml @@ -13,8 +13,8 @@ version.workspace = true alloy-eips = "2.1.0" alloy-genesis = "2.1.0" alloy-primitives.workspace = true -alloy-rpc-types-engine = "2.1.0" -eyre = "0.6.12" +alloy-rpc-types-engine.workspace = true +anyhow.workspace = true futures-util = "0.3.32" ream-consensus-misc.workspace = true ream-execution-rpc-types.workspace = true diff --git a/crates/common/reth/src/fork_choice.rs b/crates/common/reth/src/fork_choice.rs index 801abec4d..7f0b8691e 100644 --- a/crates/common/reth/src/fork_choice.rs +++ b/crates/common/reth/src/fork_choice.rs @@ -1,45 +1,7 @@ use alloy_primitives::{Address, B256}; -use alloy_rpc_types_engine::{ForkchoiceState, ForkchoiceUpdated}; -use reth_ethereum::{ - engine::EthPayloadAttributes, - node::{EthEngineTypes, api::ConsensusEngineHandle}, -}; +use reth_ethereum::engine::EthPayloadAttributes; use sha2::{Digest, Sha256}; -/// Creates a `ForkchoiceState` used by the Engine API. -/// -/// The fork choice state specifies the current head, justified, and finalized -/// block hashes from ream. -pub fn create_fork_choice_state( - head_block_hash: B256, - safe_block_hash: B256, - finalized_block_hash: B256, -) -> ForkchoiceState { - ForkchoiceState { - head_block_hash, - safe_block_hash, - finalized_block_hash, - } -} - -/// Applies a fork choice update to the execution layer, equivalent to -/// `engine_forkchoiceUpdatedV4`. -/// -/// This calls the consensus engine handle directly rather than the JSON-RPC -/// layer, so it is version-agnostic: the effective version is determined by the -/// `payload_attributes` passed. `EthPayloadAttributes` carries the Amsterdam -/// (V4) fields `slot_number` and `target_gas_limit` -pub async fn update( - consensus_engine_handle: &ConsensusEngineHandle, - state: ForkchoiceState, - payload_attributes: Option, -) -> eyre::Result { - let updated = consensus_engine_handle - .fork_choice_updated(state, payload_attributes) - .await?; - Ok(updated) -} - /// Creates an `EthPayloadAttributes` request for payload building. /// /// These attributes are supplied to the execution layer diff --git a/crates/common/reth/src/handle.rs b/crates/common/reth/src/handle.rs index ab18d22fd..135427fc1 100644 --- a/crates/common/reth/src/handle.rs +++ b/crates/common/reth/src/handle.rs @@ -9,7 +9,7 @@ use std::{ use alloy_genesis::Genesis; use alloy_primitives::B256; use alloy_rpc_types_engine::{ExecutionData, ForkchoiceState, ForkchoiceUpdated, PayloadStatus}; -use eyre::eyre; +use anyhow::{Context, anyhow}; use reth_ethereum::{ chainspec::ChainSpec, engine::EthPayloadAttributes, @@ -26,11 +26,9 @@ use reth_ethereum::{ tasks::{RuntimeBuilder, RuntimeConfig, TokioConfig}, }; use reth_network_peers::TrustedPeer; -use reth_payload_builder::{PayloadBuilderHandle, PayloadId}; +use reth_payload_builder::{PayloadBuilderHandle, PayloadId, PayloadKind}; use tokio::runtime::Handle; -use crate::{fork_choice, payload}; - pub type RethNode = NodeHandleFor; #[derive(Debug, Clone)] @@ -70,7 +68,7 @@ impl std::fmt::Debug for RethHandle { impl RethHandle { // Start a reth node with the given tokio runtime handle. - pub async fn start(config: RethNodeConfig) -> eyre::Result<(Self, RethNode)> { + pub async fn start(config: RethNodeConfig) -> anyhow::Result<(Self, RethNode)> { let RethNodeConfig { runtime, datadir, @@ -83,7 +81,9 @@ impl RethHandle { runtime_config = runtime_config.with_tokio(TokioConfig::existing_handle(handle)); } - let reth_rt = RuntimeBuilder::new(runtime_config).build()?; + let reth_rt = RuntimeBuilder::new(runtime_config) + .build() + .context("failed to build reth runtime")?; let mut rpc = RpcServerArgs::default(); if let Some(address) = http_rpc { @@ -111,12 +111,12 @@ impl RethHandle { .map(|enode| { enode .parse::() - .map_err(|err| eyre!("invalid EL trusted-peer enode {enode}: {err}")) + .map_err(|err| anyhow!("invalid EL trusted-peer enode {enode}: {err}")) }) - .collect::>>()?; + .collect::>>()?; } - let node_config = NodeConfig::new(custom_chain()) + let node_config = NodeConfig::new(dev_chain_spec()) .with_rpc(rpc) .with_network(network) .with_datadir_args(DatadirArgs { @@ -127,14 +127,16 @@ impl RethHandle { let database = init_db( node_config.datadir().db(), DatabaseArguments::new(ClientVersion::default()), - )?; + ) + .map_err(|err| anyhow!("failed to open reth database: {err:?}"))?; let node = NodeBuilder::new(node_config) .with_database(database) .with_launch_context(reth_rt) .node(EthereumNode::default()) .launch_with_debug_capabilities() - .await?; + .await + .map_err(|err| anyhow!("failed to launch reth node: {err:?}"))?; let handle = RethHandle { payload_builder: node.node.payload_builder_handle.clone(), @@ -156,28 +158,57 @@ impl RethHandle { /// Called with `payload_attributes` to start building a payload for a /// proposal (the returned `payload_id` is fed to [`Self::build_payload`]), /// and with `None` to canonicalize the head after a block is imported. + /// + /// This drives the consensus engine handle directly rather than going through + /// `engine_forkchoiceUpdated`, so there is no method version and none of the RPC layer's + /// version-specific attribute validation runs. The attributes are interpreted by the + /// in-process payload builder against the chain spec. pub async fn update_forkchoice( &self, state: ForkchoiceState, payload_attributes: Option, - ) -> eyre::Result { - fork_choice::update(&self.engine, state, payload_attributes).await + ) -> anyhow::Result { + Ok(self + .engine + .fork_choice_updated(state, payload_attributes) + .await?) } - pub async fn build_payload(&self, payload_id: PayloadId) -> eyre::Result { - payload::build(&self.payload_builder, payload_id).await + /// Resolves a payload the EL is building, the in-process equivalent of `engine_getPayload`. + pub async fn build_payload(&self, payload_id: PayloadId) -> anyhow::Result { + let built = self + .payload_builder + .resolve_kind(payload_id, PayloadKind::WaitForPending) + .await + .context("payload could not be resolved")??; + + Ok(built.into_execution_data()) } + /// Imports an execution payload into the EL, the in-process equivalent of + /// `engine_newPayload`. + /// + /// The returned `PayloadStatus` reports whether the EL accepted the payload (`Valid`, + /// `Invalid`, or `Syncing`), so the caller must inspect it. pub async fn import_payload( &self, execution_data: ExecutionData, - ) -> eyre::Result { - payload::import(&self.engine, execution_data).await + ) -> anyhow::Result { + Ok(self.engine.new_payload(execution_data).await?) } } -pub fn custom_chain() -> Arc { - let custom_genesis = r#" +/// Hardcoded single-node devnet chain spec: chain id 2600, every fork active at genesis, and +/// four prefunded development accounts. +fn dev_chain_spec() -> Arc { + Arc::new( + serde_json::from_str::(DEV_GENESIS) + .expect("dev genesis must be valid") + .into(), + ) +} + +const DEV_GENESIS: &str = r#" { "nonce": "0x42", "timestamp": "0x0", @@ -224,6 +255,3 @@ pub fn custom_chain() -> Arc { } } "#; - let genesis: Genesis = serde_json::from_str(custom_genesis).expect("genesis failed"); - Arc::new(genesis.into()) -} diff --git a/crates/common/reth/src/payload.rs b/crates/common/reth/src/payload.rs index 15e208948..89bfa9c85 100644 --- a/crates/common/reth/src/payload.rs +++ b/crates/common/reth/src/payload.rs @@ -2,54 +2,22 @@ use alloy_eips::eip4895::Withdrawal as AlloyWithdrawal; use alloy_primitives::{B256, Bloom, Bytes}; use alloy_rpc_types_engine::{ CancunPayloadFields, ExecutionData, ExecutionPayload, ExecutionPayloadSidecar, - ExecutionPayloadV1, ExecutionPayloadV2, ExecutionPayloadV3, PayloadStatus, PraguePayloadFields, + ExecutionPayloadV1, ExecutionPayloadV2, ExecutionPayloadV3, PraguePayloadFields, }; -use eyre::{OptionExt, eyre}; +use anyhow::{anyhow, bail}; use ream_consensus_misc::withdrawal::Withdrawal; use ream_execution_rpc_types::electra::execution_payload::ExecutionPayload as ReamExecutionPayload; -use reth_ethereum::node::{EthEngineTypes, api::ConsensusEngineHandle}; -use reth_payload_builder::{PayloadBuilderHandle, PayloadId, PayloadKind}; use ssz_types::{FixedVector, VariableList}; -/// Builds an execution payload for a Lean block, equivalent to -/// `engine_getPayloadV4`. -pub async fn build( - payload_builder: &PayloadBuilderHandle, - payload_id: PayloadId, -) -> eyre::Result { - // we can Ideally extract out WaitForPending to be more idiomatic - let built = payload_builder - .resolve_kind(payload_id, PayloadKind::WaitForPending) - .await - .ok_or_eyre("payload could not be resolved")??; - - Ok(built.into_execution_data()) -} - -/// Imports an execution payload from a Lean block into the execution layer via -/// `engine_newPayloadV4`. -/// -/// Returns a `PayloadStatus` reporting whether the EL accepted the payload -/// (`Valid`, `Invalid`, or `Syncing`), so the caller must inspect it. -pub async fn import( - consensus_engine_handle: &ConsensusEngineHandle, - execution_data: ExecutionData, -) -> eyre::Result { - let status = consensus_engine_handle.new_payload(execution_data).await?; - Ok(status) -} - /// Convert reth's alloy `ExecutionData` into ream's `ExecutionPayload`. /// /// The EL runs Prague, whose `ExecutionPayload` container is still the /// V3 shape — Prague's EIP-7685 execution requests are carried in the /// `newPayloadV4` sidecar as a separate parameter, not inside the payload body. /// So the payload is always an `ExecutionPayload::V3` here -pub fn to_ream_execution_payload(data: &ExecutionData) -> eyre::Result { +pub fn to_ream_execution_payload(data: &ExecutionData) -> anyhow::Result { let ExecutionPayload::V3(v3) = &data.payload else { - return Err(eyre!( - "expected a V3 execution payload body (Cancun or later active in the EL genesis)" - )); + bail!("expected a V3 execution payload body (Cancun or later active in the EL genesis)"); }; let v1 = &v3.payload_inner.payload_inner; @@ -57,9 +25,9 @@ pub fn to_ream_execution_payload(data: &ExecutionData) -> eyre::Result>>()?; + .collect::>>()?; let withdrawals = v3 .payload_inner @@ -79,20 +47,20 @@ pub fn to_ream_execution_payload(data: &ExecutionData) -> eyre::Result Date: Wed, 2 Sep 2026 17:09:35 +0530 Subject: [PATCH 25/26] ref: better scope the reth feature cfg attributes --- bin/ream/src/lib.rs | 1 + bin/ream/src/main.rs | 56 +++++++------------------ bin/ream/src/reth_el.rs | 91 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 106 insertions(+), 42 deletions(-) create mode 100644 bin/ream/src/reth_el.rs diff --git a/bin/ream/src/lib.rs b/bin/ream/src/lib.rs index eeb851b54..a0ae6c85b 100644 --- a/bin/ream/src/lib.rs +++ b/bin/ream/src/lib.rs @@ -1,2 +1,3 @@ pub mod cli; +pub mod reth_el; pub mod startup_message; diff --git a/bin/ream/src/main.rs b/bin/ream/src/main.rs index b432b26e9..8091f2b2d 100644 --- a/bin/ream/src/main.rs +++ b/bin/ream/src/main.rs @@ -26,6 +26,7 @@ use ream::{ verbosity::Verbosity, voluntary_exit::VoluntaryExitConfig, }, + reth_el, startup_message::startup_message, }; use ream_account_manager::{message_types::MessageType, seed::derive_seed_with_user_input}; @@ -83,8 +84,6 @@ use ream_post_quantum_crypto::lean_multisig::type_2::{type_2_setup, type_2_setup use ream_post_quantum_crypto::leansig::{ private_key::PrivateKey as LeanSigPrivateKey, public_key::PublicKey, }; -#[cfg(feature = "reth")] -use ream_reth_engine::handle::{RethHandle, RethNodeConfig, RethP2pConfig}; use ream_rpc_common::config::RpcServerConfig; use ream_rpc_lean::{handlers::test_driver::test_driver_enabled, server::start_test_driver}; use ream_storage::{ @@ -449,7 +448,6 @@ pub async fn run_lean_node(config: LeanNodeConfig, executor: ReamExecutor, ream_ .await .expect("Failed to create network service"); - #[cfg_attr(not(feature = "reth"), allow(unused_mut))] let mut chain_service = LeanChainService::new( lean_chain_writer, chain_receiver, @@ -468,48 +466,22 @@ pub async fn run_lean_node(config: LeanNodeConfig, executor: ReamExecutor, ream_ config.http_allow_origin, ); - // Start the reth EL embedded in the same process. `start` returns the cloneable - // `RethHandle` (given to the lean chain service) and also the owned node. #[cfg(feature = "reth")] - let (reth_handle, mut reth_node) = { - let p2p = config - .reth_p2p_port - .zip(config.reth_p2p_secret) - .map(|(port, secret_key)| RethP2pConfig { - address: config.reth_p2p_address, - port, - secret_key, - trusted_peers: config.reth_trusted_peers.clone(), - }); - - let (handle, node) = RethHandle::start(RethNodeConfig { - runtime: Some(executor.runtime().handle().clone()), - datadir: config.reth_datadir.clone(), - http_rpc: Some(SocketAddr::new( - config.reth_rpc_address, - config.reth_rpc_port, - )), - p2p, - }) - .await - .expect("failed to boot embedded reth execution layer"); - - info!( - "Embedded reth is started with genesis hash: {:?}", - node.node.chain_spec().genesis_hash() - ); - - (handle, node) + let reth_args = reth_el::Args { + datadir: config.reth_datadir, + rpc_address: config.reth_rpc_address, + rpc_port: config.reth_rpc_port, + p2p_address: config.reth_p2p_address, + p2p_port: config.reth_p2p_port, + p2p_secret: config.reth_p2p_secret, + trusted_peers: config.reth_trusted_peers, }; - - #[cfg(feature = "reth")] - chain_service.set_reth_handle(reth_handle).await; - - #[cfg(feature = "reth")] - let reth_exit = &mut reth_node.node_exit_future; - #[cfg(not(feature = "reth"))] - let reth_exit = std::future::pending::<()>(); + let reth_args = reth_el::Disabled; + + // Boots the embedded reth EL and hands its handle to the chain service. Without the `reth` + // feature this does nothing and the returned future never resolves. + let reth_exit = reth_el::start(reth_args, &executor, &mut chain_service).await; // Start the services concurrently. let mut chain_task = diff --git a/bin/ream/src/reth_el.rs b/bin/ream/src/reth_el.rs new file mode 100644 index 000000000..2679b8b3f --- /dev/null +++ b/bin/ream/src/reth_el.rs @@ -0,0 +1,91 @@ +//! Wiring for the optional embedded reth execution layer. +//! +//! Both variants expose a `start` taking a config type, an executor, and the chain service. With +//! the feature off it takes `Disabled`, does nothing, and returns a future that never resolves, so +//! the node's `select!` never picks that arm. + +#[cfg(feature = "reth")] +mod enabled { + use std::{ + net::{IpAddr, SocketAddr}, + path::PathBuf, + }; + + use alloy_primitives::B256; + use ream_chain_lean::service::LeanChainService; + use ream_executor::ReamExecutor; + use ream_reth_engine::handle::{RethHandle, RethNodeConfig, RethP2pConfig}; + use tracing::info; + + /// The reth-relevant CLI arguments, moved out of `LeanNodeConfig` at the call site. + pub struct Args { + pub datadir: PathBuf, + pub rpc_address: IpAddr, + pub rpc_port: u16, + pub p2p_address: IpAddr, + pub p2p_port: Option, + pub p2p_secret: Option, + pub trusted_peers: Vec, + } + + /// Boots reth in-process, hands the chain service its handle, and returns the node's exit + /// future. That future owns the node, so it must be kept alive for the EL to keep running. + pub async fn start( + args: Args, + executor: &ReamExecutor, + chain_service: &mut LeanChainService, + ) -> impl Future> + use<> { + let (handle, mut node) = RethHandle::start(RethNodeConfig { + runtime: Some(executor.runtime().handle().clone()), + datadir: args.datadir, + http_rpc: Some(SocketAddr::new(args.rpc_address, args.rpc_port)), + p2p: args + .p2p_port + .zip(args.p2p_secret) + .map(|(port, secret_key)| RethP2pConfig { + address: args.p2p_address, + port, + secret_key, + trusted_peers: args.trusted_peers, + }), + }) + .await + .expect("failed to boot embedded reth execution layer"); + + info!( + "Embedded reth is started with genesis hash: {:?}", + node.node.chain_spec().genesis_hash() + ); + + chain_service.set_reth_handle(handle).await; + + async move { + (&mut node.node_exit_future) + .await + .map_err(|err| anyhow::anyhow!("embedded reth exited: {err:?}")) + } + } +} + +#[cfg(not(feature = "reth"))] +mod disabled { + use ream_chain_lean::service::LeanChainService; + use ream_executor::ReamExecutor; + + pub struct Disabled; + + /// Takes `&mut LeanChainService` like the enabled variant so the binding in `run_lean_node` + /// needs `mut` in both builds. + pub async fn start( + _args: Disabled, + _executor: &ReamExecutor, + _chain_service: &mut LeanChainService, + ) -> impl Future> + use<> { + std::future::pending() + } +} + +#[cfg(not(feature = "reth"))] +pub use disabled::{Disabled, start}; +#[cfg(feature = "reth")] +pub use enabled::{Args, start}; From b874c720a30719058f7fdd52d44a0f2905ad14b0 Mon Sep 17 00:00:00 2001 From: Soham Zemse <22412996+zemse@users.noreply.github.com> Date: Wed, 2 Sep 2026 18:13:01 +0530 Subject: [PATCH 26/26] refactor(reth): fold payload attribute helpers into one --- crates/common/chain/lean/src/service.rs | 6 +-- crates/common/reth/src/fork_choice.rs | 57 -------------------- crates/common/reth/src/lib.rs | 2 +- crates/common/reth/src/payload_attributes.rs | 29 ++++++++++ 4 files changed, 33 insertions(+), 61 deletions(-) delete mode 100644 crates/common/reth/src/fork_choice.rs create mode 100644 crates/common/reth/src/payload_attributes.rs diff --git a/crates/common/chain/lean/src/service.rs b/crates/common/chain/lean/src/service.rs index 6ba1bd7b3..b747b7bf6 100644 --- a/crates/common/chain/lean/src/service.rs +++ b/crates/common/chain/lean/src/service.rs @@ -55,8 +55,8 @@ use ream_req_resp::{ }; #[cfg(feature = "reth")] use ream_reth_engine::{ - fork_choice::create_ream_payload_attributes, handle::RethHandle, - payload::to_ream_execution_payload, + handle::RethHandle, payload::to_ream_execution_payload, + payload_attributes::build_payload_attributes, }; use ream_storage::{ errors::StoreError, @@ -3371,7 +3371,7 @@ impl LeanChainService { safe_block_hash: B256::ZERO, finalized_block_hash: B256::ZERO, }; - let payload_attributes = create_ream_payload_attributes( + let payload_attributes = build_payload_attributes( slot, parent_lean_root, spec.genesis_time, diff --git a/crates/common/reth/src/fork_choice.rs b/crates/common/reth/src/fork_choice.rs deleted file mode 100644 index 7f0b8691e..000000000 --- a/crates/common/reth/src/fork_choice.rs +++ /dev/null @@ -1,57 +0,0 @@ -use alloy_primitives::{Address, B256}; -use reth_ethereum::engine::EthPayloadAttributes; -use sha2::{Digest, Sha256}; - -/// Creates an `EthPayloadAttributes` request for payload building. -/// -/// These attributes are supplied to the execution layer -/// to initiate the construction of a new payload. -/// -/// Withdrawals are currently omitted and set to None. -pub fn create_payload_attributes( - timestamp: u64, - prev_randao: B256, - suggested_fee_recipient: Address, - parent_beacon_block_root: Option, - slot_number: Option, - target_gas_limit: Option, -) -> EthPayloadAttributes { - EthPayloadAttributes { - timestamp, - prev_randao, - suggested_fee_recipient, - withdrawals: Some(vec![]), - parent_beacon_block_root, - slot_number, - target_gas_limit, - } -} - -/// Creates payload attributes for a Ream block proposal. -/// -/// The timestamp is computed from the slot and genesis time. The -/// `prev_randao` value is deterministically derived from the parent Lean -/// block root and slot. -pub fn create_ream_payload_attributes( - slot: u64, - parent_lean_block_root: B256, - genesis_time: u64, - seconds_per_slot: u64, -) -> EthPayloadAttributes { - let prev_randao = { - // prev_randao = SHA256(parent_lean_block_root || slot) - let mut h = Sha256::new(); - h.update(parent_lean_block_root.as_slice()); - h.update(slot.to_le_bytes()); - B256::from_slice(&h.finalize()) - }; - - create_payload_attributes( - genesis_time + slot * seconds_per_slot, - prev_randao, - Address::ZERO, - Some(parent_lean_block_root), - None, - None, - ) -} diff --git a/crates/common/reth/src/lib.rs b/crates/common/reth/src/lib.rs index bef56f63b..3ab99014e 100644 --- a/crates/common/reth/src/lib.rs +++ b/crates/common/reth/src/lib.rs @@ -1,3 +1,3 @@ -pub mod fork_choice; pub mod handle; pub mod payload; +pub mod payload_attributes; diff --git a/crates/common/reth/src/payload_attributes.rs b/crates/common/reth/src/payload_attributes.rs new file mode 100644 index 000000000..0cf7dd614 --- /dev/null +++ b/crates/common/reth/src/payload_attributes.rs @@ -0,0 +1,29 @@ +use alloy_primitives::{Address, B256}; +use reth_ethereum::engine::EthPayloadAttributes; +use sha2::{Digest, Sha256}; + +/// Builds the execution payload attributes for a lean block proposal at `slot`. +/// +/// The timestamp is derived from the slot and the genesis time, and `prev_randao` from +/// `SHA256(parent_lean_block_root || slot)`. Nothing on the lean chain validates `prev_randao`, so +/// this is only a deterministic way for the proposer to fill a field the EL requires. +pub fn build_payload_attributes( + slot: u64, + parent_lean_block_root: B256, + genesis_time: u64, + seconds_per_slot: u64, +) -> EthPayloadAttributes { + let mut hasher = Sha256::new(); + hasher.update(parent_lean_block_root.as_slice()); + hasher.update(slot.to_le_bytes()); + + EthPayloadAttributes { + timestamp: genesis_time + slot * seconds_per_slot, + prev_randao: B256::from_slice(&hasher.finalize()), + suggested_fee_recipient: Address::ZERO, + withdrawals: Some(vec![]), + parent_beacon_block_root: Some(parent_lean_block_root), + slot_number: None, + target_gas_limit: None, + } +}