From ffe981ccb474dba8b72bea9d41c689b35b45f1eb Mon Sep 17 00:00:00 2001 From: jsign Date: Mon, 27 Apr 2026 19:18:09 -0300 Subject: [PATCH 01/13] tentative canonical guest program input support for Ethrex --- Cargo.lock | 2338 ++++++++++++++++- Cargo.toml | 1 + .../tests/stateless-validator-ethrex.rs | 11 +- crates/stateless-validator-debug/Cargo.toml | 7 + .../stateless-validator-debug/src/fixtures.rs | 313 +++ crates/stateless-validator-debug/src/lib.rs | 116 +- crates/stateless-validator-ethrex/src/host.rs | 166 +- crates/stateless-validator-ethrex/src/wire.rs | 17 + 8 files changed, 2704 insertions(+), 265 deletions(-) create mode 100644 crates/stateless-validator-debug/src/fixtures.rs diff --git a/Cargo.lock b/Cargo.lock index 0a2a98a..aa4b573 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -100,22 +100,25 @@ version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ae8c24c95e90c1608c2d91cff1b451d796474168d3310ccc8b7cd12502ca8169" dependencies = [ - "alloy-eips", + "alloy-eips 2.0.1", "alloy-primitives", "alloy-rlp", - "alloy-serde", + "alloy-serde 2.0.1", "alloy-trie", "alloy-tx-macros", + "arbitrary", "auto_impl", + "borsh", "c-kzg", "derive_more 2.1.1", "either", "k256", "once_cell", "rand 0.8.6", - "secp256k1", + "secp256k1 0.30.0", "serde", "serde_json", + "serde_with", "thiserror 2.0.18", ] @@ -126,10 +129,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7d211ad0ef468a70a7a829e49683ff59ad25f02b4ab3764344c4c2663329a52c" dependencies = [ "alloy-consensus", - "alloy-eips", + "alloy-eips 2.0.1", "alloy-primitives", "alloy-rlp", - "alloy-serde", + "alloy-serde 2.0.1", + "arbitrary", "serde", ] @@ -141,7 +145,9 @@ checksum = "741bdd7499908b3aa0b159bba11e71c8cddd009a2c2eb7a06e825f1ec87900a5" dependencies = [ "alloy-primitives", "alloy-rlp", + "arbitrary", "crc", + "rand 0.8.6", "serde", "thiserror 2.0.18", ] @@ -154,6 +160,9 @@ checksum = "9441120fa82df73e8959ae0e4ab8ade03de2aaae61be313fbf5746277847ce25" dependencies = [ "alloy-primitives", "alloy-rlp", + "arbitrary", + "borsh", + "rand 0.8.6", "serde", ] @@ -165,7 +174,10 @@ checksum = "2919c5a56a1007492da313e7a3b6d45ef5edc5d33416fdec63c0d7a2702a0d20" dependencies = [ "alloy-primitives", "alloy-rlp", + "arbitrary", + "borsh", "k256", + "rand 0.8.6", "serde", "serde_with", "thiserror 2.0.18", @@ -179,10 +191,35 @@ checksum = "407510740da514b694fecb44d8b3cebdc60d448f70cc5d24743e8ba273448a6e" dependencies = [ "alloy-primitives", "alloy-rlp", + "arbitrary", + "borsh", "once_cell", "serde", ] +[[package]] +name = "alloy-eips" +version = "1.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6ef28c9fdad22d4eec52d894f5f2673a0895f1e5ef196734568e68c0f6caca8" +dependencies = [ + "alloy-eip2124", + "alloy-eip2930", + "alloy-eip7702", + "alloy-eip7928", + "alloy-primitives", + "alloy-rlp", + "alloy-serde 1.8.3", + "auto_impl", + "borsh", + "c-kzg", + "derive_more 2.1.1", + "either", + "serde", + "serde_with", + "sha2", +] + [[package]] name = "alloy-eips" version = "2.0.1" @@ -195,8 +232,10 @@ dependencies = [ "alloy-eip7928", "alloy-primitives", "alloy-rlp", - "alloy-serde", + "alloy-serde 2.0.1", + "arbitrary", "auto_impl", + "borsh", "c-kzg", "derive_more 2.1.1", "either", @@ -212,9 +251,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6fc4b83cb672156663e6094d098beb509965b7fe684bb3d6e44bb9ca2e9ae714" dependencies = [ "alloy-consensus", - "alloy-eips", + "alloy-eips 2.0.1", "alloy-hardforks", "alloy-primitives", + "alloy-rpc-types-engine", + "alloy-rpc-types-eth", "alloy-sol-types", "auto_impl", "derive_more 2.1.1", @@ -229,10 +270,11 @@ version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39789db0b3f3bbef0e6549c87bc6842b73886ebabee1405b6941685b1cc34083" dependencies = [ - "alloy-eips", + "alloy-eips 2.0.1", "alloy-primitives", - "alloy-serde", + "alloy-serde 2.0.1", "alloy-trie", + "borsh", "serde", "serde_with", ] @@ -250,6 +292,59 @@ dependencies = [ "dyn-clone", ] +[[package]] +name = "alloy-json-abi" +version = "1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9dbe713da0c737d9e5e387b0ba790eb98b14dd207fe53eef50e19a5a8ec3dac" +dependencies = [ + "alloy-primitives", + "alloy-sol-type-parser", + "serde", + "serde_json", +] + +[[package]] +name = "alloy-json-rpc" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "662b525af73e86b2167dae923261c8edf440ba7e1426b30a8b993177bc214c02" +dependencies = [ + "alloy-primitives", + "alloy-sol-types", + "http", + "serde", + "serde_json", + "thiserror 2.0.18", + "tracing", +] + +[[package]] +name = "alloy-network" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c657c2d9751d3c7d94990554b231e5372c3c2e4bad842806280b6151a0d6a05d" +dependencies = [ + "alloy-consensus", + "alloy-consensus-any", + "alloy-eips 2.0.1", + "alloy-json-rpc", + "alloy-network-primitives", + "alloy-primitives", + "alloy-rpc-types-any", + "alloy-rpc-types-eth", + "alloy-serde 2.0.1", + "alloy-signer", + "alloy-sol-types", + "async-trait", + "auto_impl", + "derive_more 2.1.1", + "futures-utils-wasm", + "serde", + "serde_json", + "thiserror 2.0.18", +] + [[package]] name = "alloy-network-primitives" version = "2.0.1" @@ -257,9 +352,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "59e7c4bb0ebbd6d7406d2808968f43c0d5186c69c5e58cedcbee7380f4cd1fcf" dependencies = [ "alloy-consensus", - "alloy-eips", + "alloy-eips 2.0.1", "alloy-primitives", - "alloy-serde", + "alloy-serde 2.0.1", "serde", ] @@ -270,17 +365,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "de3b431b4e72cd8bd0ec7a50b4be18e73dab74de0dba180eef171055e5d5926e" dependencies = [ "alloy-rlp", + "arbitrary", "bytes", "cfg-if", "const-hex", "derive_more 2.1.1", "foldhash 0.2.0", + "getrandom 0.4.2", "hashbrown 0.16.1", "indexmap 2.14.0", "itoa", "k256", + "keccak-asm", "paste", + "proptest", + "proptest-derive", "rand 0.9.4", + "rapidhash", "ruint", "rustc-hash", "serde", @@ -309,6 +410,21 @@ dependencies = [ "syn 2.0.117", ] +[[package]] +name = "alloy-rpc-types-any" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f1a9a3bda9be7f6515316eb792710532411878bbfc88934973f4b371376b00d" +dependencies = [ + "alloy-consensus-any", + "alloy-network-primitives", + "alloy-primitives", + "alloy-rpc-types-eth", + "alloy-serde 2.0.1", + "serde", + "serde_json", +] + [[package]] name = "alloy-rpc-types-debug" version = "2.0.1" @@ -329,10 +445,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f05338cfb4ee5508ff76f01c88142cab8a4579db74b7d9432936c26e4f11374" dependencies = [ "alloy-consensus", - "alloy-eips", + "alloy-eips 2.0.1", "alloy-primitives", "alloy-rlp", - "alloy-serde", + "alloy-serde 2.0.1", "derive_more 2.1.1", "rand 0.8.6", "serde", @@ -347,18 +463,31 @@ checksum = "dda4ece0050154ab278241aeffade58916b04f38254832e8cb6e4671c6e72ed2" dependencies = [ "alloy-consensus", "alloy-consensus-any", - "alloy-eips", + "alloy-eips 2.0.1", "alloy-network-primitives", "alloy-primitives", "alloy-rlp", - "alloy-serde", + "alloy-serde 2.0.1", "alloy-sol-types", + "arbitrary", "itertools 0.14.0", "serde", "serde_json", + "serde_with", "thiserror 2.0.18", ] +[[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.0.1" @@ -366,10 +495,42 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "beaa5c581a67e2743d95b4849eb9cfeb90866429cdaa6d8f6b75eb988b2d0cd9" dependencies = [ "alloy-primitives", + "arbitrary", "serde", "serde_json", ] +[[package]] +name = "alloy-signer" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5da9ae50f9b48d7b4e2e5cde87175257be7e5e56909a7794720597c1d9806f6" +dependencies = [ + "alloy-primitives", + "async-trait", + "auto_impl", + "either", + "elliptic-curve", + "k256", + "thiserror 2.0.18", +] + +[[package]] +name = "alloy-signer-local" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49b794002d57fd2f71b4c87298a41ca24dfc0f2cf6630d95106a477e451747ba" +dependencies = [ + "alloy-consensus", + "alloy-network", + "alloy-primitives", + "alloy-signer", + "async-trait", + "k256", + "rand 0.8.6", + "thiserror 2.0.18", +] + [[package]] name = "alloy-sol-macro" version = "1.5.7" @@ -418,14 +579,26 @@ dependencies = [ "syn-solidity", ] +[[package]] +name = "alloy-sol-type-parser" +version = "1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6df77fea9d6a2a75c0ef8d2acbdfd92286cc599983d3175ccdc170d3433d249" +dependencies = [ + "serde", + "winnow 0.7.15", +] + [[package]] name = "alloy-sol-types" version = "1.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "64612d29379782a5dde6f4b6570d9c756d734d760c0c94c254d361e678a6591f" dependencies = [ + "alloy-json-abi", "alloy-primitives", "alloy-sol-macro", + "serde", ] [[package]] @@ -436,8 +609,12 @@ checksum = "3f14b5d9b2c2173980202c6ff470d96e7c5e202c65a9f67884ad565226df7fbb" dependencies = [ "alloy-primitives", "alloy-rlp", + "arbitrary", + "derive_arbitrary", "derive_more 2.1.1", "nybbles", + "proptest", + "proptest-derive", "serde", "smallvec", "thiserror 2.0.18", @@ -521,6 +698,15 @@ version = "1.0.102" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" +[[package]] +name = "arbitrary" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1" +dependencies = [ + "derive_arbitrary", +] + [[package]] name = "ark-bls12-381" version = "0.5.0" @@ -541,6 +727,7 @@ checksum = "d69eab57e8d2663efa5c63135b2af4f396d66424f88954c21104125ab6b3e6bc" dependencies = [ "ark-ec", "ark-ff 0.5.0", + "ark-r1cs-std", "ark-std 0.5.0", ] @@ -565,6 +752,24 @@ dependencies = [ "zeroize", ] +[[package]] +name = "ark-ff" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b3235cc41ee7a12aaaf2c575a2ad7b46713a8a50bda2fc3b003a04845c05dd6" +dependencies = [ + "ark-ff-asm 0.3.0", + "ark-ff-macros 0.3.0", + "ark-serialize 0.3.0", + "ark-std 0.3.0", + "derivative", + "num-bigint 0.4.6", + "num-traits", + "paste", + "rustc_version 0.3.3", + "zeroize", +] + [[package]] name = "ark-ff" version = "0.4.2" @@ -576,12 +781,12 @@ dependencies = [ "ark-serialize 0.4.2", "ark-std 0.4.0", "derivative", - "digest", + "digest 0.10.7", "itertools 0.10.5", "num-bigint 0.4.6", "num-traits", "paste", - "rustc_version", + "rustc_version 0.4.1", "zeroize", ] @@ -596,7 +801,7 @@ dependencies = [ "ark-serialize 0.5.0", "ark-std 0.5.0", "arrayvec", - "digest", + "digest 0.10.7", "educe", "itertools 0.13.0", "num-bigint 0.4.6", @@ -605,6 +810,16 @@ dependencies = [ "zeroize", ] +[[package]] +name = "ark-ff-asm" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db02d390bf6643fb404d3d22d31aee1c4bc4459600aef9113833d17e786c6e44" +dependencies = [ + "quote", + "syn 1.0.109", +] + [[package]] name = "ark-ff-asm" version = "0.4.2" @@ -625,6 +840,18 @@ dependencies = [ "syn 2.0.117", ] +[[package]] +name = "ark-ff-macros" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fd794a08ccb318058009eefdf15bcaaaaf6f8161eb3345f907222bac38b20" +dependencies = [ + "num-bigint 0.4.6", + "num-traits", + "quote", + "syn 1.0.109", +] + [[package]] name = "ark-ff-macros" version = "0.4.2" @@ -666,6 +893,35 @@ dependencies = [ "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 0.4.6", + "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-secp256k1" version = "0.5.0" @@ -688,6 +944,16 @@ dependencies = [ "ark-std 0.5.0", ] +[[package]] +name = "ark-serialize" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6c2b318ee6e10f8c2853e73a83adc0ccb88995aa978d8a3408d492ab2ee671" +dependencies = [ + "ark-std 0.3.0", + "digest 0.9.0", +] + [[package]] name = "ark-serialize" version = "0.4.2" @@ -695,7 +961,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" dependencies = [ "ark-std 0.4.0", - "digest", + "digest 0.10.7", "num-bigint 0.4.6", ] @@ -708,7 +974,7 @@ dependencies = [ "ark-serialize-derive", "ark-std 0.5.0", "arrayvec", - "digest", + "digest 0.10.7", "num-bigint 0.4.6", ] @@ -723,6 +989,16 @@ dependencies = [ "syn 2.0.117", ] +[[package]] +name = "ark-std" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1df2c09229cbc5a028b1d70e00fdb2acee28b1055dfb5ca73eea49c5a25c4e7c" +dependencies = [ + "num-traits", + "rand 0.8.6", +] + [[package]] name = "ark-std" version = "0.4.0" @@ -754,6 +1030,9 @@ name = "arrayvec" version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" +dependencies = [ + "serde", +] [[package]] name = "async-trait" @@ -914,6 +1193,39 @@ dependencies = [ "unty", ] +[[package]] +name = "bindgen" +version = "0.72.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" +dependencies = [ + "bitflags 2.11.1", + "cexpr", + "clang-sys", + "itertools 0.10.5", + "proc-macro2", + "quote", + "regex", + "rustc-hash", + "shlex", + "syn 2.0.117", +] + +[[package]] +name = "bit-set" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" + [[package]] name = "bitcoin-io" version = "0.1.4" @@ -930,6 +1242,12 @@ dependencies = [ "hex-conservative", ] +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + [[package]] name = "bitflags" version = "2.11.1" @@ -958,7 +1276,7 @@ version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" dependencies = [ - "digest", + "digest 0.10.7", ] [[package]] @@ -1022,7 +1340,7 @@ name = "bls12_381" version = "0.8.0" source = "git+https://github.com/lambdaclass/bls12_381?branch=expose-affine-constructors#78cad0378b17fc3157b83f514be192bf46edf9a1" dependencies = [ - "digest", + "digest 0.10.7", "ff 0.13.1", "group 0.13.0", "pairing 0.23.0", @@ -1042,6 +1360,39 @@ dependencies = [ "zeroize", ] +[[package]] +name = "borsh" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfd1e3f8955a5d7de9fab72fc8373fade9fb8a703968cb200ae3dc6cf08e185a" +dependencies = [ + "borsh-derive", + "bytes", + "cfg_aliases", +] + +[[package]] +name = "borsh-derive" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfcfdc083699101d5a7965e49925975f2f55060f94f9a05e7187be95d530ca59" +dependencies = [ + "once_cell", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "boyer-moore-magiclen" +version = "0.2.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7441b4796eb8a7107d4cd99d829810be75f5573e1081c37faa0e8094169ea0d6" +dependencies = [ + "debug-helper", +] + [[package]] name = "bumpalo" version = "3.20.2" @@ -1099,11 +1450,22 @@ dependencies = [ ] [[package]] -name = "c-kzg" -version = "2.1.7" +name = "bzip2-sys" +version = "0.1.13+1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6648ed1e4ea8e8a1a4a2c78e1cda29a3fd500bc622899c340d8525ea9a76b24a" +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", @@ -1139,7 +1501,7 @@ checksum = "dd5eb614ed4c27c5d706420e4320fbe3216ab31fa1c33cd8246ac36dae4479ba" dependencies = [ "camino", "cargo-platform", - "semver", + "semver 1.0.28", "serde", "serde_json", "thiserror 2.0.18", @@ -1157,6 +1519,15 @@ dependencies = [ "shlex", ] +[[package]] +name = "cexpr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +dependencies = [ + "nom", +] + [[package]] name = "cfg-if" version = "1.0.4" @@ -1176,8 +1547,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 0.2.1", ] @@ -1196,6 +1569,17 @@ name = "circuit" version = "0.16.1" source = "git+https://github.com/0xPolygonHermez/zisk.git?tag=v0.16.1#48cf7ccefb5ed62261abf6bfb007b5be8a23c547" +[[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.1" @@ -1257,7 +1641,7 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2d72c1252426a83be2092dd5884a5f6e3b8e7180f6891b6263d2c21b92ec8816" dependencies = [ - "digest", + "digest 0.10.7", ] [[package]] @@ -1543,6 +1927,7 @@ version = "6.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf" dependencies = [ + "arbitrary", "cfg-if", "crossbeam-utils", "hashbrown 0.14.5", @@ -1558,6 +1943,12 @@ version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4ae5f15dda3c708c0ade84bfee31ccab44a3da4f88015ed22f63732abe300c8" +[[package]] +name = "debug-helper" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f578e8e2c440e7297e008bb5486a3a8a194775224bbc23729b0dbdfaeebf162e" + [[package]] name = "der" version = "0.7.10" @@ -1600,6 +1991,17 @@ dependencies = [ "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_more" version = "1.0.0" @@ -1640,11 +2042,20 @@ dependencies = [ "convert_case 0.10.0", "proc-macro2", "quote", - "rustc_version", + "rustc_version 0.4.1", "syn 2.0.117", "unicode-xid", ] +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array", +] + [[package]] name = "digest" version = "0.10.7" @@ -1663,7 +2074,7 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e0e367e4e7da84520dedcac1901e4da967309406d1e51017ae1abfb97adbd38" dependencies = [ - "bitflags", + "bitflags 2.11.1", "block2", "libc", "objc2", @@ -1710,7 +2121,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" dependencies = [ "der", - "digest", + "digest 0.10.7", "elliptic-curve", "rfc6979", "serdect", @@ -1730,6 +2141,42 @@ dependencies = [ "syn 2.0.117", ] +[[package]] +name = "ef-tests" +version = "0.1.0" +source = "git+https://github.com/paradigmxyz/stateless?rev=e5480e71a8031641ff471cad9dc482a7a14b32d5#e5480e71a8031641ff471cad9dc482a7a14b32d5" +dependencies = [ + "alloy-consensus", + "alloy-eips 2.0.1", + "alloy-genesis", + "alloy-primitives", + "alloy-rlp", + "rayon", + "reth-chainspec", + "reth-consensus", + "reth-db", + "reth-db-api", + "reth-db-common", + "reth-ethereum-consensus", + "reth-ethereum-primitives", + "reth-evm", + "reth-evm-ethereum", + "reth-primitives-traits", + "reth-provider", + "reth-revm", + "reth-tracing", + "reth-trie", + "reth-trie-common", + "reth-trie-db", + "revm", + "serde", + "serde_json", + "stateless", + "thiserror 2.0.18", + "tries", + "walkdir", +] + [[package]] name = "either" version = "1.15.0" @@ -1753,7 +2200,7 @@ checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" dependencies = [ "base16ct", "crypto-bigint", - "digest", + "digest 0.10.7", "ff 0.13.1", "generic-array", "group 0.13.0", @@ -1952,8 +2399,8 @@ dependencies = [ "fixed-hash", "impl-rlp", "impl-serde", - "primitive-types", - "uint", + "primitive-types 0.13.1", + "uint 0.10.0", ] [[package]] @@ -2004,7 +2451,7 @@ dependencies = [ "rayon", "rkyv", "rustc-hash", - "secp256k1", + "secp256k1 0.30.0", "serde", "serde_json", "sha2", @@ -2031,7 +2478,7 @@ dependencies = [ "num-bigint 0.4.6", "p256", "ripemd", - "secp256k1", + "secp256k1 0.30.0", "sha2", "thiserror 2.0.18", "tiny-keccak", @@ -2073,7 +2520,7 @@ dependencies = [ "k256", "lambdaworks-crypto", "rkyv", - "secp256k1", + "secp256k1 0.30.0", "serde", "serde_with", "thiserror 2.0.18", @@ -2111,7 +2558,7 @@ dependencies = [ "thiserror 2.0.18", "tokio", "tracing", - "tracing-subscriber", + "tracing-subscriber 0.3.23", ] [[package]] @@ -2143,7 +2590,7 @@ dependencies = [ "rand 0.8.6", "rayon", "rustc-hash", - "secp256k1", + "secp256k1 0.30.0", "serde", "sha2", "snap", @@ -2190,7 +2637,7 @@ dependencies = [ "jsonwebtoken", "rand 0.8.6", "reqwest", - "secp256k1", + "secp256k1 0.30.0", "serde", "serde_json", "sha2", @@ -2201,7 +2648,7 @@ dependencies = [ "tokio-util", "tower-http", "tracing", - "tracing-subscriber", + "tracing-subscriber 0.3.23", "uuid", ] @@ -2265,6 +2712,16 @@ dependencies = [ "tracing", ] +[[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 = "fastbloom" version = "0.14.1" @@ -2283,6 +2740,28 @@ version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6" +[[package]] +name = "fastrlp" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "139834ddba373bbdd213dffe02c8d110508dcf1726c2be27e8d1f7d7e1856418" +dependencies = [ + "arrayvec", + "auto_impl", + "bytes", +] + +[[package]] +name = "fastrlp" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce8dba4714ef14b8274c371879b175aa55b16b30f269663f19d576f380018dc4" +dependencies = [ + "arrayvec", + "auto_impl", + "bytes", +] + [[package]] name = "ff" version = "0.12.1" @@ -2369,6 +2848,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "86ed19add84e8cb9e8cc5f7074de0324247149ffef0b851e215fb0edc50c229b" dependencies = [ "fixed-map-derive", + "serde", ] [[package]] @@ -2434,6 +2914,15 @@ dependencies = [ "percent-encoding", ] +[[package]] +name = "fsevent-sys" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76ee7a02da4d231650c7cea31349b889be2f45ddb3ef3032d2ec8185f6313fd2" +dependencies = [ + "libc", +] + [[package]] name = "funty" version = "2.0.0" @@ -2528,6 +3017,12 @@ 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 = "gcd" version = "2.3.0" @@ -2565,9 +3060,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ "cfg-if", + "js-sys", "libc", "r-efi 5.3.0", "wasip2", + "wasm-bindgen", ] [[package]] @@ -2673,6 +3170,12 @@ dependencies = [ "rayon", ] +[[package]] +name = "hash-db" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d23bd4e7b5eda0d0f3a307e8b381fdc8ba9000f26fbe912250c0a4cc3956364a" + [[package]] name = "hashbrown" version = "0.12.3" @@ -2796,7 +3299,7 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" dependencies = [ - "digest", + "digest 0.10.7", ] [[package]] @@ -2876,11 +3379,25 @@ dependencies = [ "hyper", "hyper-util", "rustls", + "rustls-native-certs", "tokio", "tokio-rustls", "tower-service", ] +[[package]] +name = "hyper-timeout" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0" +dependencies = [ + "hyper", + "hyper-util", + "pin-project-lite", + "tokio", + "tower-service", +] + [[package]] name = "hyper-tls" version = "0.6.0" @@ -2934,7 +3451,7 @@ dependencies = [ "js-sys", "log", "wasm-bindgen", - "windows-core 0.62.2", + "windows-core 0.61.2", ] [[package]] @@ -3061,6 +3578,15 @@ dependencies = [ "icu_properties", ] +[[package]] +name = "impl-codec" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" +dependencies = [ + "parity-scale-codec", +] + [[package]] name = "impl-codec" version = "0.7.1" @@ -3076,7 +3602,7 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "54ed8ad1f3877f7e775b8cbf30ed1bd3209a95401817f19a0eb4402d13f8cf90" dependencies = [ - "rlp", + "rlp 0.6.1", ] [[package]] @@ -3099,6 +3625,12 @@ dependencies = [ "syn 2.0.117", ] +[[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" @@ -3116,12 +3648,33 @@ version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" dependencies = [ + "arbitrary", "equivalent", "hashbrown 0.17.0", "serde", "serde_core", ] +[[package]] +name = "inotify" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd5b3eaf1a28b758ac0faa5a4254e8ab2705605496f1b1f3fbbc3988ad73d199" +dependencies = [ + "bitflags 2.11.1", + "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" @@ -3152,7 +3705,7 @@ dependencies = [ "tar", "tempfile", "tracing", - "tracing-subscriber", + "tracing-subscriber 0.3.23", ] [[package]] @@ -3294,6 +3847,16 @@ dependencies = [ "cpufeatures 0.2.17", ] +[[package]] +name = "keccak-asm" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa468878266ad91431012b3e5ef1bf9b170eab22883503a318d46857afa4579a" +dependencies = [ + "digest 0.10.7", + "sha3-asm", +] + [[package]] name = "konst" version = "0.2.20" @@ -3309,6 +3872,26 @@ version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4933f3f57a8e9d9da04db23fb153356ecaf00cbd14aee46279c33dc80925c37" +[[package]] +name = "kqueue" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eac30106d7dce88daf4a3fcb4879ea939476d5074a9b7ddd0fb97fa4bed5596a" +dependencies = [ + "kqueue-sys", + "libc", +] + +[[package]] +name = "kqueue-sys" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed9625ffda8729b85e45cf04090035ac368927b8cebc34898e7c120f52e4838b" +dependencies = [ + "bitflags 1.3.2", + "libc", +] + [[package]] name = "kzg-rs" version = "0.2.8" @@ -3377,6 +3960,16 @@ version = "0.2.186" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" +[[package]] +name = "libloading" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" +dependencies = [ + "cfg-if", + "windows-link 0.2.1", +] + [[package]] name = "libm" version = "0.2.16" @@ -3389,12 +3982,27 @@ version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e02f3bb43d335493c96bf3fd3a321600bf6bd07ed34bc64118e9293bdffea46c" dependencies = [ - "bitflags", + "bitflags 2.11.1", "libc", "plain", "redox_syscall 0.7.4", ] +[[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 = "libssz" version = "0.2.1" @@ -3473,6 +4081,17 @@ dependencies = [ "smallvec", ] +[[package]] +name = "libz-sys" +version = "1.1.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc3a226e576f50782b3305c5ccf458698f92798987f551c6a02efe8276721e22" +dependencies = [ + "cc", + "pkg-config", + "vcpkg", +] + [[package]] name = "linux-raw-sys" version = "0.4.15" @@ -3515,6 +4134,37 @@ dependencies = [ "hashbrown 0.16.1", ] +[[package]] +name = "lru-slab" +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.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98c23545df7ecf1b16c303910a69b079e8e251d60f7dd2cc9b4177f2afaf1746" + +[[package]] +name = "mach2" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a1b95cd5421ec55b445b5ae102f5ea0e768de1f82bd3001e11f426c269c3aea" +dependencies = [ + "libc", +] + [[package]] name = "macro-string" version = "0.1.4" @@ -3593,18 +4243,54 @@ version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" +[[package]] +name = "memmap2" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "714098028fe011992e1c3962653c96b2d578c4b4bce9036e15ff220319b1e0e3" +dependencies = [ + "libc", +] + [[package]] name = "memuse" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d97bbf43eb4f088f8ca469930cde17fa036207c9a5e02ccc5107c4e8b17c964" +[[package]] +name = "metrics" +version = "0.24.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d5312e9ba3771cfa961b585728215e3d972c950a3eed9252aa093d6301277e8" +dependencies = [ + "ahash", + "portable-atomic", +] + +[[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 = "mime" version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + [[package]] name = "miniz_oxide" version = "0.8.9" @@ -3622,6 +4308,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "50b7e5b27aa02a74bac8c3f23f448f8d87ff11f92d3aac1a6ed369ee08cc56c1" dependencies = [ "libc", + "log", "wasi", "windows-sys 0.61.2", ] @@ -3690,32 +4377,69 @@ version = "0.31.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5d6d0705320c1e6ba1d912b5e37cf18071b6c2e9b7fa8215a1e8a7651966f5d3" dependencies = [ - "bitflags", + "bitflags 2.11.1", "cfg-if", "cfg_aliases", "libc", ] [[package]] -name = "ntapi" -version = "0.4.3" +name = "nom" +version = "7.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3b335231dfd352ffb0f8017f3b6027a4917f7df785ea2143d8af2adc66980ae" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" dependencies = [ - "winapi", + "memchr", + "minimal-lexical", ] [[package]] -name = "nu-ansi-term" -version = "0.50.3" +name = "notify" +version = "8.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" +checksum = "4d3d07927151ff8575b7087f245456e549fea62edf0ec4e565a5ee50c8402bc3" dependencies = [ - "windows-sys 0.61.2", + "bitflags 2.11.1", + "fsevent-sys", + "inotify", + "kqueue", + "libc", + "log", + "mio", + "notify-types", + "walkdir", + "windows-sys 0.60.2", ] [[package]] -name = "num" +name = "notify-types" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42b8cfee0e339a0337359f3c88165702ac6e600dc01c0cc9579a92d62b08477a" +dependencies = [ + "bitflags 2.11.1", +] + +[[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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" +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" @@ -3831,6 +4555,7 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "680998035259dcfcafe653688bf2aa6d3e2dc05e98be6ab46afb089dc84f1df8" dependencies = [ + "proc-macro-crate", "proc-macro2", "quote", "syn 2.0.117", @@ -3843,7 +4568,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0d49ff0c0d00d4a502b39df9af3a525e1efeb14b9dabb5bb83335284c1309210" dependencies = [ "alloy-rlp", + "arbitrary", "cfg-if", + "proptest", "ruint", "serde", "smallvec", @@ -3864,7 +4591,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" dependencies = [ - "bitflags", + "bitflags 2.11.1", ] [[package]] @@ -3911,7 +4638,7 @@ version = "0.10.78" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f38c4372413cdaaf3cc79dd92d29d7d9f5ab09b51b10dded508fb90bb70b9222" dependencies = [ - "bitflags", + "bitflags 2.11.1", "cfg-if", "foreign-types", "libc", @@ -3949,6 +4676,86 @@ dependencies = [ "vcpkg", ] +[[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", + "opentelemetry", + "reqwest", +] + +[[package]] +name = "opentelemetry-otlp" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f69cd6acbb9af919df949cd1ec9e5e7fdc2ef15d234b6b795aaa525cc02f71f" +dependencies = [ + "http", + "opentelemetry", + "opentelemetry-http", + "opentelemetry-proto", + "opentelemetry_sdk", + "prost", + "reqwest", + "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.4", + "thiserror 2.0.18", +] + [[package]] name = "outref" version = "0.5.2" @@ -4108,6 +4915,16 @@ dependencies = [ "serde", ] +[[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.22.0" @@ -4135,6 +4952,7 @@ dependencies = [ "arrayvec", "bitvec", "byte-slice-cast", + "bytes", "const_format", "impl-trait-for-tuples", "parity-scale-codec-derive", @@ -4229,6 +5047,16 @@ version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" +[[package]] +name = "pest" +version = "2.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0848c601009d37dfa3430c4666e147e49cdcf1b92ecd3e63657d8a5f19da662" +dependencies = [ + "memchr", + "ucd-trie", +] + [[package]] name = "phf" version = "0.13.1" @@ -4272,6 +5100,26 @@ dependencies = [ "siphasher", ] +[[package]] +name = "pin-project" +version = "1.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1749c7ed4bcaf4c3d0a3efc28538844fb29bcdd7d2b67b2be7e20ba861ff517" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b20ed30f105399776b9c883e68e536ef602a16ae6f596d2c473591d6ad64c6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "pin-project-lite" version = "0.2.17" @@ -4300,6 +5148,15 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" +[[package]] +name = "plain_hasher" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e19e6491bdde87c2c43d70f4c194bc8a758f2eb732df00f61e43f7362e3b4cc" +dependencies = [ + "crunchy", +] + [[package]] name = "polyval" version = "0.6.2" @@ -4379,6 +5236,17 @@ dependencies = [ "elliptic-curve", ] +[[package]] +name = "primitive-types" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" +dependencies = [ + "fixed-hash", + "impl-codec 0.6.0", + "uint 0.9.5", +] + [[package]] name = "primitive-types" version = "0.13.1" @@ -4386,10 +5254,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d15600a7d856470b7d278b3fe0e311fe28c2526348549f8ef2ff7db3299c87f5" dependencies = [ "fixed-hash", - "impl-codec", + "impl-codec 0.7.1", "impl-rlp", "impl-serde", - "uint", + "uint 0.10.0", ] [[package]] @@ -4438,7 +5306,7 @@ version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cc5b72d8145275d844d4b5f6d4e1eef00c8cd889edb6035c21675d1bb1f45c9f" dependencies = [ - "bitflags", + "bitflags 2.11.1", "hex", "procfs-core", "rustix 0.38.44", @@ -4450,7 +5318,7 @@ version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "239df02d8349b06fc07398a3a1697b06418223b1c7725085e801e7c0fc6a12ec" dependencies = [ - "bitflags", + "bitflags 2.11.1", "hex", ] @@ -4480,7 +5348,7 @@ dependencies = [ "bytemuck", "colored", "serde", - "sysinfo", + "sysinfo 0.35.2", ] [[package]] @@ -4501,14 +5369,40 @@ version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4b45fcc2344c680f5025fe57779faef368840d0bd1f42f216291f0dc4ace4744" dependencies = [ - "bitflags", + "bit-set", + "bit-vec", + "bitflags 2.11.1", "num-traits", "rand 0.9.4", "rand_chacha 0.9.0", "rand_xorshift", + "regex-syntax", + "rusty-fork", + "tempfile", "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 = "prost" version = "0.14.3" @@ -4526,7 +5420,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "27c6023962132f4b30eb4c172c91ce92d933da334c59c23cddee82358ddafb0b" dependencies = [ "anyhow", - "itertools 0.14.0", + "itertools 0.10.5", "proc-macro2", "quote", "syn 2.0.117", @@ -4572,6 +5466,82 @@ dependencies = [ "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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" + +[[package]] +name = "quinn" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" +dependencies = [ + "bytes", + "cfg_aliases", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash", + "rustls", + "socket2", + "thiserror 2.0.18", + "tokio", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-proto" +version = "0.11.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "434b42fec591c96ef50e21e886936e66d3cc3f737104fdb9b737c40ffb94c098" +dependencies = [ + "bytes", + "getrandom 0.3.4", + "lru-slab", + "rand 0.9.4", + "ring", + "rustc-hash", + "rustls", + "rustls-pki-types", + "slab", + "thiserror 2.0.18", + "tinyvec", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-udp" +version = "0.5.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" +dependencies = [ + "cfg_aliases", + "libc", + "once_cell", + "socket2", + "tracing", + "windows-sys 0.52.0", +] + [[package]] name = "quote" version = "1.0.45" @@ -4679,6 +5649,24 @@ 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 = [ + "rustversion", +] + +[[package]] +name = "raw-cpuid" +version = "11.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "498cd0dc59d73224351ee52a95fee0f1a617a2eae0e7d9d720cc622c73a54186" +dependencies = [ + "bitflags 2.11.1", +] + [[package]] name = "rayon" version = "1.12.0" @@ -4705,7 +5693,7 @@ version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags", + "bitflags 2.11.1", ] [[package]] @@ -4714,7 +5702,7 @@ version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f450ad9c3b1da563fb6948a8e0fb0fb9269711c9c73d9ea1de5058c79c8d643a" dependencies = [ - "bitflags", + "bitflags 2.11.1", ] [[package]] @@ -4737,6 +5725,18 @@ dependencies = [ "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" @@ -4772,7 +5772,9 @@ dependencies = [ "base64", "bytes", "encoding_rs", + "futures-channel", "futures-core", + "futures-util", "h2", "http", "http-body", @@ -4787,6 +5789,9 @@ dependencies = [ "native-tls", "percent-encoding", "pin-project-lite", + "quinn", + "rustls", + "rustls-native-certs", "rustls-pki-types", "serde", "serde_json", @@ -4794,6 +5799,7 @@ dependencies = [ "sync_wrapper", "tokio", "tokio-native-tls", + "tokio-rustls", "tower", "tower-http", "tower-service", @@ -4803,6 +5809,36 @@ dependencies = [ "web-sys", ] +[[package]] +name = "reth-chain-state" +version = "2.1.0" +source = "git+https://github.com/paradigmxyz/reth?tag=v2.1.0#d58c6e3d0723a28f655e89da83c3738e47dcc364" +dependencies = [ + "alloy-consensus", + "alloy-eips 2.0.1", + "alloy-primitives", + "alloy-signer", + "alloy-signer-local", + "derive_more 2.1.1", + "metrics", + "parking_lot", + "pin-project", + "rand 0.9.4", + "reth-chainspec", + "reth-errors", + "reth-ethereum-primitives", + "reth-execution-types", + "reth-metrics", + "reth-primitives-traits", + "reth-storage-api", + "reth-trie", + "revm-database", + "revm-state", + "tokio", + "tokio-stream", + "tracing", +] + [[package]] name = "reth-chainspec" version = "2.1.0" @@ -4810,7 +5846,7 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v2.1.0#d58c6e3d0723a28f655 dependencies = [ "alloy-chains", "alloy-consensus", - "alloy-eips", + "alloy-eips 2.0.1", "alloy-evm", "alloy-genesis", "alloy-primitives", @@ -4830,15 +5866,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fce542a96bf888f31854803e80b3340bc233927743aa580838014e8a88fe0d66" dependencies = [ "alloy-consensus", - "alloy-eips", + "alloy-eips 2.0.1", "alloy-genesis", "alloy-primitives", "alloy-trie", + "arbitrary", "bytes", "modular-bitfield", + "parity-scale-codec", "reth-codecs-derive", "reth-zstd-compressors", "serde", + "visibility", ] [[package]] @@ -4852,6 +5891,19 @@ dependencies = [ "syn 2.0.117", ] +[[package]] +name = "reth-config" +version = "2.1.0" +source = "git+https://github.com/paradigmxyz/reth?tag=v2.1.0#d58c6e3d0723a28f655e89da83c3738e47dcc364" +dependencies = [ + "eyre", + "reth-network-types", + "reth-prune-types", + "reth-stages-types", + "reth-static-file-types", + "url", +] + [[package]] name = "reth-consensus" version = "2.1.0" @@ -4871,7 +5923,7 @@ version = "2.1.0" source = "git+https://github.com/paradigmxyz/reth?tag=v2.1.0#d58c6e3d0723a28f655e89da83c3738e47dcc364" dependencies = [ "alloy-consensus", - "alloy-eips", + "alloy-eips 2.0.1", "alloy-primitives", "reth-chainspec", "reth-consensus", @@ -4879,22 +5931,147 @@ dependencies = [ ] [[package]] -name = "reth-db-models" +name = "reth-db" version = "2.1.0" source = "git+https://github.com/paradigmxyz/reth?tag=v2.1.0#d58c6e3d0723a28f655e89da83c3738e47dcc364" dependencies = [ - "alloy-eips", "alloy-primitives", - "reth-primitives-traits", -] - + "derive_more 2.1.1", + "eyre", + "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 0.38.4", + "tempfile", + "thiserror 2.0.18", + "tracing", +] + +[[package]] +name = "reth-db-api" +version = "2.1.0" +source = "git+https://github.com/paradigmxyz/reth?tag=v2.1.0#d58c6e3d0723a28f655e89da83c3738e47dcc364" +dependencies = [ + "alloy-consensus", + "alloy-primitives", + "arbitrary", + "arrayvec", + "bytes", + "derive_more 2.1.1", + "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.1.0" +source = "git+https://github.com/paradigmxyz/reth?tag=v2.1.0#d58c6e3d0723a28f655e89da83c3738e47dcc364" +dependencies = [ + "alloy-consensus", + "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.1.0" +source = "git+https://github.com/paradigmxyz/reth?tag=v2.1.0#d58c6e3d0723a28f655e89da83c3738e47dcc364" +dependencies = [ + "alloy-eips 2.0.1", + "alloy-primitives", + "arbitrary", + "bytes", + "modular-bitfield", + "reth-codecs", + "reth-primitives-traits", + "serde", +] + +[[package]] +name = "reth-engine-primitives" +version = "2.1.0" +source = "git+https://github.com/paradigmxyz/reth?tag=v2.1.0#d58c6e3d0723a28f655e89da83c3738e47dcc364" +dependencies = [ + "alloy-consensus", + "alloy-eips 2.0.1", + "alloy-primitives", + "alloy-rpc-types-engine", + "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-errors" +version = "2.1.0" +source = "git+https://github.com/paradigmxyz/reth?tag=v2.1.0#d58c6e3d0723a28f655e89da83c3738e47dcc364" +dependencies = [ + "reth-consensus", + "reth-execution-errors", + "reth-storage-errors", + "thiserror 2.0.18", +] + [[package]] name = "reth-ethereum-consensus" version = "2.1.0" source = "git+https://github.com/paradigmxyz/reth?tag=v2.1.0#d58c6e3d0723a28f655e89da83c3738e47dcc364" dependencies = [ "alloy-consensus", - "alloy-eips", + "alloy-eips 2.0.1", "alloy-primitives", "reth-chainspec", "reth-consensus", @@ -4904,6 +6081,22 @@ dependencies = [ "tracing", ] +[[package]] +name = "reth-ethereum-engine-primitives" +version = "2.1.0" +source = "git+https://github.com/paradigmxyz/reth?tag=v2.1.0#d58c6e3d0723a28f655e89da83c3738e47dcc364" +dependencies = [ + "alloy-eips 2.0.1", + "alloy-primitives", + "alloy-rpc-types-engine", + "reth-engine-primitives", + "reth-ethereum-primitives", + "reth-payload-primitives", + "reth-primitives-traits", + "serde", + "thiserror 2.0.18", +] + [[package]] name = "reth-ethereum-forks" version = "2.1.0" @@ -4914,6 +6107,7 @@ dependencies = [ "alloy-primitives", "auto_impl", "once_cell", + "rustc-hash", ] [[package]] @@ -4922,7 +6116,7 @@ version = "2.1.0" source = "git+https://github.com/paradigmxyz/reth?tag=v2.1.0#d58c6e3d0723a28f655e89da83c3738e47dcc364" dependencies = [ "alloy-consensus", - "alloy-eips", + "alloy-eips 2.0.1", "alloy-primitives", "alloy-rpc-types-eth", "reth-codecs", @@ -4930,18 +6124,29 @@ dependencies = [ "serde", ] +[[package]] +name = "reth-etl" +version = "2.1.0" +source = "git+https://github.com/paradigmxyz/reth?tag=v2.1.0#d58c6e3d0723a28f655e89da83c3738e47dcc364" +dependencies = [ + "rayon", + "reth-db-api", + "tempfile", +] + [[package]] name = "reth-evm" version = "2.1.0" source = "git+https://github.com/paradigmxyz/reth?tag=v2.1.0#d58c6e3d0723a28f655e89da83c3738e47dcc364" dependencies = [ "alloy-consensus", - "alloy-eips", + "alloy-eips 2.0.1", "alloy-evm", "alloy-primitives", "auto_impl", "derive_more 2.1.1", "futures-util", + "rayon", "reth-execution-errors", "reth-execution-types", "reth-primitives-traits", @@ -4957,7 +6162,7 @@ version = "2.1.0" source = "git+https://github.com/paradigmxyz/reth?tag=v2.1.0#d58c6e3d0723a28f655e89da83c3738e47dcc364" dependencies = [ "alloy-consensus", - "alloy-eips", + "alloy-eips 2.0.1", "alloy-evm", "alloy-primitives", "alloy-rpc-types-engine", @@ -4990,14 +6195,71 @@ version = "2.1.0" source = "git+https://github.com/paradigmxyz/reth?tag=v2.1.0#d58c6e3d0723a28f655e89da83c3738e47dcc364" dependencies = [ "alloy-consensus", - "alloy-eips", + "alloy-eips 2.0.1", "alloy-evm", "alloy-primitives", + "alloy-rlp", "derive_more 2.1.1", "reth-ethereum-primitives", "reth-primitives-traits", "reth-trie-common", "revm", + "serde", + "serde_with", +] + +[[package]] +name = "reth-fs-util" +version = "2.1.0" +source = "git+https://github.com/paradigmxyz/reth?tag=v2.1.0#d58c6e3d0723a28f655e89da83c3738e47dcc364" +dependencies = [ + "serde", + "serde_json", + "thiserror 2.0.18", +] + +[[package]] +name = "reth-libmdbx" +version = "2.1.0" +source = "git+https://github.com/paradigmxyz/reth?tag=v2.1.0#d58c6e3d0723a28f655e89da83c3738e47dcc364" +dependencies = [ + "bitflags 2.11.1", + "byteorder", + "crossbeam-queue", + "dashmap", + "derive_more 2.1.1", + "parking_lot", + "reth-mdbx-sys", + "smallvec", + "thiserror 2.0.18", + "tracing", +] + +[[package]] +name = "reth-mdbx-sys" +version = "2.1.0" +source = "git+https://github.com/paradigmxyz/reth?tag=v2.1.0#d58c6e3d0723a28f655e89da83c3738e47dcc364" +dependencies = [ + "bindgen", + "cc", +] + +[[package]] +name = "reth-metrics" +version = "2.1.0" +source = "git+https://github.com/paradigmxyz/reth?tag=v2.1.0#d58c6e3d0723a28f655e89da83c3738e47dcc364" +dependencies = [ + "metrics", + "metrics-derive", +] + +[[package]] +name = "reth-net-banlist" +version = "2.1.0" +source = "git+https://github.com/paradigmxyz/reth?tag=v2.1.0#d58c6e3d0723a28f655e89da83c3738e47dcc364" +dependencies = [ + "alloy-primitives", + "ipnet", ] [[package]] @@ -5007,11 +6269,88 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v2.1.0#d58c6e3d0723a28f655 dependencies = [ "alloy-primitives", "alloy-rlp", + "secp256k1 0.30.0", "serde_with", "thiserror 2.0.18", "url", ] +[[package]] +name = "reth-network-types" +version = "2.1.0" +source = "git+https://github.com/paradigmxyz/reth?tag=v2.1.0#d58c6e3d0723a28f655e89da83c3738e47dcc364" +dependencies = [ + "alloy-eip2124", + "reth-net-banlist", + "reth-network-peers", + "tracing", +] + +[[package]] +name = "reth-nippy-jar" +version = "2.1.0" +source = "git+https://github.com/paradigmxyz/reth?tag=v2.1.0#d58c6e3d0723a28f655e89da83c3738e47dcc364" +dependencies = [ + "anyhow", + "bincode 1.3.3", + "derive_more 2.1.1", + "lz4_flex", + "memmap2", + "reth-fs-util", + "serde", + "thiserror 2.0.18", + "tracing", + "zstd", +] + +[[package]] +name = "reth-node-types" +version = "2.1.0" +source = "git+https://github.com/paradigmxyz/reth?tag=v2.1.0#d58c6e3d0723a28f655e89da83c3738e47dcc364" +dependencies = [ + "reth-chainspec", + "reth-db-api", + "reth-engine-primitives", + "reth-payload-primitives", + "reth-primitives-traits", +] + +[[package]] +name = "reth-payload-builder-primitives" +version = "2.1.0" +source = "git+https://github.com/paradigmxyz/reth?tag=v2.1.0#d58c6e3d0723a28f655e89da83c3738e47dcc364" +dependencies = [ + "pin-project", + "reth-payload-primitives", + "tokio", + "tokio-stream", + "tracing", +] + +[[package]] +name = "reth-payload-primitives" +version = "2.1.0" +source = "git+https://github.com/paradigmxyz/reth?tag=v2.1.0#d58c6e3d0723a28f655e89da83c3738e47dcc364" +dependencies = [ + "alloy-consensus", + "alloy-eips 2.0.1", + "alloy-primitives", + "alloy-rlp", + "alloy-rpc-types-engine", + "auto_impl", + "either", + "reth-chain-state", + "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.1.0" @@ -5029,44 +6368,121 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ee12e304adbacbb32248c9806ebafbe1e2811fbfefe53c5e5b710a8438b7ec0" dependencies = [ "alloy-consensus", - "alloy-eips", + "alloy-eips 2.0.1", "alloy-genesis", "alloy-primitives", "alloy-rlp", "alloy-rpc-types-eth", "alloy-trie", + "arbitrary", + "byteorder", "bytes", "dashmap", "derive_more 2.1.1", + "modular-bitfield", "once_cell", + "proptest", + "proptest-arbitrary-interop", + "quanta", + "rayon", "reth-codecs", "revm-bytecode", "revm-primitives", "revm-state", - "secp256k1", + "secp256k1 0.30.0", "serde", "thiserror 2.0.18", ] +[[package]] +name = "reth-provider" +version = "2.1.0" +source = "git+https://github.com/paradigmxyz/reth?tag=v2.1.0#d58c6e3d0723a28f655e89da83c3738e47dcc364" +dependencies = [ + "alloy-consensus", + "alloy-eips 2.0.1", + "alloy-genesis", + "alloy-primitives", + "alloy-rpc-types-engine", + "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-trie", + "reth-trie-db", + "revm-database", + "revm-state", + "rocksdb", + "strum", + "tokio", + "tracing", +] + [[package]] name = "reth-prune-types" version = "2.1.0" source = "git+https://github.com/paradigmxyz/reth?tag=v2.1.0#d58c6e3d0723a28f655e89da83c3738e47dcc364" dependencies = [ "alloy-primitives", + "arbitrary", "derive_more 2.1.1", + "modular-bitfield", + "reth-codecs", + "serde", "strum", "thiserror 2.0.18", "tracing", ] +[[package]] +name = "reth-revm" +version = "2.1.0" +source = "git+https://github.com/paradigmxyz/reth?tag=v2.1.0#d58c6e3d0723a28f655e89da83c3738e47dcc364" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "alloy-rpc-types-debug", + "reth-primitives-traits", + "reth-storage-api", + "reth-storage-errors", + "reth-trie", + "revm", +] + [[package]] name = "reth-stages-types" version = "2.1.0" source = "git+https://github.com/paradigmxyz/reth?tag=v2.1.0#d58c6e3d0723a28f655e89da83c3738e47dcc364" dependencies = [ "alloy-primitives", + "arbitrary", + "bytes", + "modular-bitfield", + "reth-codecs", "reth-trie-common", + "serde", ] [[package]] @@ -5080,6 +6496,7 @@ dependencies = [ "reth-stages-types", "serde", "strum", + "tracing", ] [[package]] @@ -5088,11 +6505,12 @@ version = "2.1.0" source = "git+https://github.com/paradigmxyz/reth?tag=v2.1.0#d58c6e3d0723a28f655e89da83c3738e47dcc364" dependencies = [ "alloy-consensus", - "alloy-eips", + "alloy-eips 2.0.1", "alloy-primitives", "alloy-rpc-types-engine", "auto_impl", "reth-chainspec", + "reth-db-api", "reth-db-models", "reth-ethereum-primitives", "reth-execution-types", @@ -5102,6 +6520,7 @@ dependencies = [ "reth-storage-errors", "reth-trie-common", "revm-database", + "serde_json", ] [[package]] @@ -5109,7 +6528,7 @@ name = "reth-storage-errors" version = "2.1.0" source = "git+https://github.com/paradigmxyz/reth?tag=v2.1.0#d58c6e3d0723a28f655e89da83c3738e47dcc364" dependencies = [ - "alloy-eips", + "alloy-eips 2.0.1", "alloy-primitives", "alloy-rlp", "derive_more 2.1.1", @@ -5122,6 +6541,87 @@ dependencies = [ "thiserror 2.0.18", ] +[[package]] +name = "reth-tasks" +version = "2.1.0" +source = "git+https://github.com/paradigmxyz/reth?tag=v2.1.0#d58c6e3d0723a28f655e89da83c3738e47dcc364" +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-tracing" +version = "2.1.0" +source = "git+https://github.com/paradigmxyz/reth?tag=v2.1.0#d58c6e3d0723a28f655e89da83c3738e47dcc364" +dependencies = [ + "clap", + "eyre", + "reth-tracing-otlp", + "rolling-file", + "tracing", + "tracing-appender", + "tracing-journald", + "tracing-logfmt", + "tracing-samply", + "tracing-subscriber 0.3.23", +] + +[[package]] +name = "reth-tracing-otlp" +version = "2.1.0" +source = "git+https://github.com/paradigmxyz/reth?tag=v2.1.0#d58c6e3d0723a28f655e89da83c3738e47dcc364" +dependencies = [ + "clap", + "eyre", + "opentelemetry", + "opentelemetry-otlp", + "opentelemetry-semantic-conventions", + "opentelemetry_sdk", + "tracing", + "tracing-opentelemetry", + "tracing-subscriber 0.3.23", + "url", +] + +[[package]] +name = "reth-trie" +version = "2.1.0" +source = "git+https://github.com/paradigmxyz/reth?tag=v2.1.0#d58c6e3d0723a28f655e89da83c3738e47dcc364" +dependencies = [ + "alloy-consensus", + "alloy-eips 2.0.1", + "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.1.0" @@ -5130,12 +6630,43 @@ dependencies = [ "alloy-consensus", "alloy-primitives", "alloy-rlp", + "alloy-rpc-types-eth", + "alloy-serde 2.0.1", "alloy-trie", + "arbitrary", + "arrayvec", + "bytes", "derive_more 2.1.1", + "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.1.0" +source = "git+https://github.com/paradigmxyz/reth?tag=v2.1.0#d58c6e3d0723a28f655e89da83c3738e47dcc364" +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]] @@ -5147,9 +6678,13 @@ dependencies = [ "alloy-rlp", "alloy-trie", "auto_impl", + "rayon", "reth-execution-errors", "reth-primitives-traits", "reth-trie-common", + "serde", + "serde_json", + "slotmap", "smallvec", "tracing", ] @@ -5208,6 +6743,7 @@ dependencies = [ "revm-database-interface", "revm-primitives", "revm-state", + "serde", ] [[package]] @@ -5223,6 +6759,7 @@ dependencies = [ "revm-database-interface", "revm-primitives", "revm-state", + "serde", ] [[package]] @@ -5231,10 +6768,12 @@ version = "13.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c281a1f11d3bcb8c0bba1199ed6bcb001d1aeb3d4fb366819e14f88723989a4e" dependencies = [ + "alloy-eips 1.8.3", "revm-bytecode", "revm-database-interface", "revm-primitives", "revm-state", + "serde", ] [[package]] @@ -5247,6 +6786,7 @@ dependencies = [ "either", "revm-primitives", "revm-state", + "serde", "thiserror 2.0.18", ] @@ -5266,6 +6806,7 @@ dependencies = [ "revm-precompile", "revm-primitives", "revm-state", + "serde", ] [[package]] @@ -5282,6 +6823,8 @@ dependencies = [ "revm-interpreter", "revm-primitives", "revm-state", + "serde", + "serde_json", ] [[package]] @@ -5294,6 +6837,7 @@ dependencies = [ "revm-context-interface", "revm-primitives", "revm-state", + "serde", ] [[package]] @@ -5309,12 +6853,15 @@ dependencies = [ "ark-serialize 0.5.0", "arrayref", "aurora-engine-modexp", + "blst", + "c-kzg", "cfg-if", "k256", "p256", "revm-context-interface", "revm-primitives", "ripemd", + "secp256k1 0.31.1", "sha2", ] @@ -5337,7 +6884,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c32490ed687dba31c3c882beb8c20408bdd30ef96690d8f145b0ee9a87040bfe" dependencies = [ "alloy-eip7928", - "bitflags", + "bitflags 2.11.1", "revm-bytecode", "revm-primitives", "serde", @@ -5373,7 +6920,7 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f" dependencies = [ - "digest", + "digest 0.10.7", ] [[package]] @@ -5406,6 +6953,16 @@ dependencies = [ "syn 2.0.117", ] +[[package]] +name = "rlp" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" +dependencies = [ + "bytes", + "rustc-hex", +] + [[package]] name = "rlp" version = "0.6.1" @@ -5416,6 +6973,35 @@ dependencies = [ "rustc-hex", ] +[[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 = "ruint" version = "1.18.0" @@ -5423,9 +7009,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0298da754d1395046b0afdc2f20ee76d29a8ae310cd30ffa84ed42acba9cb12a" dependencies = [ "alloy-rlp", + "arbitrary", + "ark-ff 0.3.0", + "ark-ff 0.4.2", + "ark-ff 0.5.0", + "bytes", + "fastrlp 0.3.1", + "fastrlp 0.4.0", + "num-bigint 0.4.6", + "num-integer", + "num-traits", + "parity-scale-codec", + "primitive-types 0.12.2", "proptest", "rand 0.8.6", "rand 0.9.4", + "rlp 0.5.2", "ruint-macro", "serde_core", "valuable", @@ -5450,13 +7049,22 @@ version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" +[[package]] +name = "rustc_version" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" +dependencies = [ + "semver 0.11.0", +] + [[package]] name = "rustc_version" version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "semver", + "semver 1.0.28", ] [[package]] @@ -5465,7 +7073,7 @@ version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags", + "bitflags 2.11.1", "errno", "libc", "linux-raw-sys 0.4.15", @@ -5478,7 +7086,7 @@ version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" dependencies = [ - "bitflags", + "bitflags 2.11.1", "errno", "libc", "linux-raw-sys 0.12.1", @@ -5492,18 +7100,32 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c2c118cb077cca2822033836dfb1b975355dfb784b5e8da48f7b6c5db74e60e" dependencies = [ "once_cell", + "ring", "rustls-pki-types", "rustls-webpki", "subtle", "zeroize", ] +[[package]] +name = "rustls-native-certs" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "612460d5f7bea540c490b2b6395d8e34a953e52b491accd6c86c8164c5932a63" +dependencies = [ + "openssl-probe", + "rustls-pki-types", + "schannel", + "security-framework", +] + [[package]] name = "rustls-pki-types" version = "1.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "30a7197ae7eb376e574fe940d068c30fe0462554a3ddbe4eca7838e049c937a9" dependencies = [ + "web-time", "zeroize", ] @@ -5524,6 +7146,18 @@ version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" +[[package]] +name = "rusty-fork" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc6bf79ff24e648f6da1f8d1f011e9cac26491b619e6b9280f2b47f1774e6ee2" +dependencies = [ + "fnv", + "quick-error", + "tempfile", + "wait-timeout", +] + [[package]] name = "ryu" version = "1.0.23" @@ -5539,6 +7173,15 @@ 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 = "schannel" version = "0.1.29" @@ -5601,10 +7244,21 @@ checksum = "b50c5943d326858130af85e049f2661ba3c78b26589b8ab98e65e80ae44a1252" dependencies = [ "bitcoin_hashes", "rand 0.8.6", - "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.4", + "secp256k1-sys 0.11.0", +] + [[package]] name = "secp256k1-sys" version = "0.10.1" @@ -5614,13 +7268,22 @@ 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 = "3.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d" dependencies = [ - "bitflags", + "bitflags 2.11.1", "core-foundation 0.10.1", "core-foundation-sys", "libc", @@ -5637,6 +7300,15 @@ dependencies = [ "libc", ] +[[package]] +name = "semver" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" +dependencies = [ + "semver-parser", +] + [[package]] name = "semver" version = "1.0.28" @@ -5647,6 +7319,15 @@ dependencies = [ "serde_core", ] +[[package]] +name = "semver-parser" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9900206b54a3527fdc7b8a938bffd94a568bac4f4aa8113b209df75a09c0dec2" +dependencies = [ + "pest", +] + [[package]] name = "serde" version = "1.0.228" @@ -5692,6 +7373,7 @@ version = "1.0.149" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" dependencies = [ + "indexmap 2.14.0", "itoa", "memchr", "serde", @@ -5771,7 +7453,7 @@ checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" dependencies = [ "cfg-if", "cpufeatures 0.2.17", - "digest", + "digest 0.10.7", ] [[package]] @@ -5782,7 +7464,7 @@ checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" dependencies = [ "cfg-if", "cpufeatures 0.2.17", - "digest", + "digest 0.10.7", ] [[package]] @@ -5791,10 +7473,20 @@ version = "0.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77fd7028345d415a4034cf8777cd4f8ab1851274233b45f84e3d955502d93874" dependencies = [ - "digest", + "digest 0.10.7", "keccak", ] +[[package]] +name = "sha3-asm" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59cbb88c189d6352cc8ae96a39d19c7ecad8f7330b29461187f2587fdc2988d5" +dependencies = [ + "cc", + "cfg-if", +] + [[package]] name = "sharded-slab" version = "0.1.7" @@ -5826,7 +7518,7 @@ version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" dependencies = [ - "digest", + "digest 0.10.7", "rand_core 0.6.4", ] @@ -5948,12 +7640,22 @@ dependencies = [ "p3-symmetric", ] +[[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", ] @@ -6059,7 +7761,7 @@ dependencies = [ "tokio-stream", "tokio-util", "tracing", - "tracing-subscriber", + "tracing-subscriber 0.3.23", ] [[package]] @@ -6090,7 +7792,7 @@ version = "0.1.0" source = "git+https://github.com/paradigmxyz/stateless?rev=e5480e71a8031641ff471cad9dc482a7a14b32d5#e5480e71a8031641ff471cad9dc482a7a14b32d5" dependencies = [ "alloy-consensus", - "alloy-eips", + "alloy-eips 2.0.1", "alloy-genesis", "alloy-primitives", "alloy-rlp", @@ -6115,7 +7817,7 @@ dependencies = [ name = "stateless-validator-common" version = "0.9.0" dependencies = [ - "alloy-eips", + "alloy-eips 2.0.1", "alloy-primitives", "anyhow", "ere-codec", @@ -6134,16 +7836,21 @@ dependencies = [ name = "stateless-validator-debug" version = "0.9.0" dependencies = [ + "alloy-eips 2.0.1", + "alloy-genesis", + "alloy-primitives", "anyhow", "clap", + "ef-tests", "guest", + "reth-chainspec", "serde", "serde_json", "stateless", "stateless-validator-ethrex", "stateless-validator-reth", "tracing", - "tracing-subscriber", + "tracing-subscriber 0.3.23", ] [[package]] @@ -6151,7 +7858,7 @@ name = "stateless-validator-ethrex" version = "0.9.0" dependencies = [ "alloy-consensus", - "alloy-eips", + "alloy-eips 2.0.1", "alloy-genesis", "alloy-rlp", "anyhow", @@ -6173,7 +7880,7 @@ name = "stateless-validator-reth" version = "0.9.0" dependencies = [ "alloy-consensus", - "alloy-eips", + "alloy-eips 2.0.1", "alloy-genesis", "alloy-primitives", "alloy-rlp", @@ -6248,6 +7955,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" @@ -6313,7 +8026,21 @@ dependencies = [ "ntapi", "objc2-core-foundation", "objc2-io-kit", - "windows", + "windows 0.61.3", +] + +[[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 0.62.2", ] [[package]] @@ -6322,7 +8049,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a13f3d0daba03132c0aa9767f98351b3488edc2c100cda2d2ec2b04f3d8d3c8b" dependencies = [ - "bitflags", + "bitflags 2.11.1", "core-foundation 0.9.4", "system-configuration-sys", ] @@ -6407,6 +8134,20 @@ dependencies = [ "syn 2.0.117", ] +[[package]] +name = "thread-priority" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2210811179577da3d54eb69ab0b50490ee40491a25d95b8c6011ba40771cb721" +dependencies = [ + "bitflags 2.11.1", + "cfg-if", + "libc", + "log", + "rustversion", + "windows 0.61.3", +] + [[package]] name = "thread_local" version = "1.1.9" @@ -6594,7 +8335,7 @@ dependencies = [ "indexmap 2.14.0", "toml_datetime", "toml_parser", - "winnow", + "winnow 1.0.2", ] [[package]] @@ -6603,7 +8344,44 @@ version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" dependencies = [ - "winnow", + "winnow 1.0.2", +] + +[[package]] +name = "tonic" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fec7c61a0695dc1887c1b53952990f3ad2e3a31453e1f49f10e75424943a93ec" +dependencies = [ + "async-trait", + "base64", + "bytes", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-timeout", + "hyper-util", + "percent-encoding", + "pin-project", + "sync_wrapper", + "tokio", + "tokio-stream", + "tower", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tonic-prost" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a55376a0bbaa4975a3f10d009ad763d8f4108f067c7c2e74f3001fb49778d309" +dependencies = [ + "bytes", + "prost", + "tonic", ] [[package]] @@ -6614,9 +8392,12 @@ checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" dependencies = [ "futures-core", "futures-util", + "indexmap 2.14.0", "pin-project-lite", + "slab", "sync_wrapper", "tokio", + "tokio-util", "tower-layer", "tower-service", "tracing", @@ -6628,7 +8409,7 @@ version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8" dependencies = [ - "bitflags", + "bitflags 2.11.1", "bytes", "futures-util", "http", @@ -6664,6 +8445,19 @@ dependencies = [ "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" @@ -6685,6 +8479,27 @@ dependencies = [ "valuable", ] +[[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" @@ -6696,6 +8511,69 @@ dependencies = [ "tracing-core", ] +[[package]] +name = "tracing-logfmt" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a250055a3518b5efba928a18ffac8d32d42ea607a9affff4532144cd5b2e378e" +dependencies = [ + "time", + "tracing", + "tracing-core", + "tracing-subscriber 0.3.23", +] + +[[package]] +name = "tracing-opentelemetry" +version = "0.32.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ac28f2d093c6c477eaa76b23525478f38de514fa9aeb1285738d4b97a9552fc" +dependencies = [ + "js-sys", + "opentelemetry", + "smallvec", + "tracing", + "tracing-core", + "tracing-log", + "tracing-subscriber 0.3.23", + "web-time", +] + +[[package]] +name = "tracing-samply" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c175f7ecc002b6ef04776a39f440503e4e788790ddbdbfac8259b7a069526334" +dependencies = [ + "cfg-if", + "itoa", + "libc", + "mach2", + "memmap2", + "smallvec", + "tracing-core", + "tracing-subscriber 0.3.23", +] + +[[package]] +name = "tracing-serde" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +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 = [ + "tracing-core", +] + [[package]] name = "tracing-subscriber" version = "0.3.23" @@ -6706,12 +8584,25 @@ dependencies = [ "nu-ansi-term", "once_cell", "regex-automata", + "serde", + "serde_json", "sharded-slab", "smallvec", "thread_local", "tracing", "tracing-core", "tracing-log", + "tracing-serde", +] + +[[package]] +name = "triehash" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1631b201eb031b563d2e85ca18ec8092508e262a3196ce9bd10a67ec87b9f5c" +dependencies = [ + "hash-db", + "rlp 0.5.2", ] [[package]] @@ -6783,6 +8674,24 @@ version = "1.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "40ce102ab67701b8526c123c1bab5cbe42d7040ccfd0f64af1a385808d2f43de" +[[package]] +name = "ucd-trie" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" + +[[package]] +name = "uint" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" +dependencies = [ + "byteorder", + "crunchy", + "hex", + "static_assertions", +] + [[package]] name = "uint" version = "0.10.0" @@ -6894,12 +8803,42 @@ 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 = "vsimd" version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5c3082ca00d5a5ef149bb8b555a72ae84c9c59f7250f013ac822ac2e49b19c64" +[[package]] +name = "wait-timeout" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ac3b126d3914f9849036f826e054cbabdc8519970b8998ddaf3b5bd3c65f11" +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" @@ -7016,10 +8955,10 @@ version = "0.244.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" dependencies = [ - "bitflags", + "bitflags 2.11.1", "hashbrown 0.15.5", "indexmap 2.14.0", - "semver", + "semver 1.0.28", ] [[package]] @@ -7032,6 +8971,16 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + [[package]] name = "wide" version = "0.7.33" @@ -7058,6 +9007,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.52.0", +] + [[package]] name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" @@ -7070,11 +9028,23 @@ version = "0.61.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" dependencies = [ - "windows-collections", + "windows-collections 0.2.0", "windows-core 0.61.2", - "windows-future", + "windows-future 0.2.1", "windows-link 0.1.3", - "windows-numerics", + "windows-numerics 0.2.0", +] + +[[package]] +name = "windows" +version = "0.62.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "527fadee13e0c05939a6a05d5bd6eec6cd2e3dbd648b9f8e447c6518133d8580" +dependencies = [ + "windows-collections 0.3.2", + "windows-core 0.62.2", + "windows-future 0.3.2", + "windows-numerics 0.3.1", ] [[package]] @@ -7086,6 +9056,15 @@ dependencies = [ "windows-core 0.61.2", ] +[[package]] +name = "windows-collections" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23b2d95af1a8a14a3c7367e1ed4fc9c20e0a26e79551b1454d72583c97cc6610" +dependencies = [ + "windows-core 0.62.2", +] + [[package]] name = "windows-core" version = "0.61.2" @@ -7120,7 +9099,18 @@ checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" dependencies = [ "windows-core 0.61.2", "windows-link 0.1.3", - "windows-threading", + "windows-threading 0.1.0", +] + +[[package]] +name = "windows-future" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1d6f90251fe18a279739e78025bd6ddc52a7e22f921070ccdc67dde84c605cb" +dependencies = [ + "windows-core 0.62.2", + "windows-link 0.2.1", + "windows-threading 0.2.1", ] [[package]] @@ -7167,6 +9157,16 @@ dependencies = [ "windows-link 0.1.3", ] +[[package]] +name = "windows-numerics" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e2e40844ac143cdb44aead537bbf727de9b044e107a0f1220392177d15b0f26" +dependencies = [ + "windows-core 0.62.2", + "windows-link 0.2.1", +] + [[package]] name = "windows-registry" version = "0.6.1" @@ -7220,7 +9220,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets", + "windows-targets 0.52.6", ] [[package]] @@ -7229,7 +9229,16 @@ version = "0.59.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" dependencies = [ - "windows-targets", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.5", ] [[package]] @@ -7247,14 +9256,31 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_gnullvm", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm 0.52.6", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.53.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" +dependencies = [ + "windows-link 0.2.1", + "windows_aarch64_gnullvm 0.53.1", + "windows_aarch64_msvc 0.53.1", + "windows_i686_gnu 0.53.1", + "windows_i686_gnullvm 0.53.1", + "windows_i686_msvc 0.53.1", + "windows_x86_64_gnu 0.53.1", + "windows_x86_64_gnullvm 0.53.1", + "windows_x86_64_msvc 0.53.1", ] [[package]] @@ -7266,54 +9292,120 @@ dependencies = [ "windows-link 0.1.3", ] +[[package]] +name = "windows-threading" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3949bd5b99cafdf1c7ca86b43ca564028dfe27d66958f2470940f73d86d75b37" +dependencies = [ + "windows-link 0.2.1", +] + [[package]] name = "windows_aarch64_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" + [[package]] name = "windows_aarch64_msvc" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" + [[package]] name = "windows_i686_gnu" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" +[[package]] +name = "windows_i686_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" + [[package]] name = "windows_i686_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" + [[package]] name = "windows_i686_msvc" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" +[[package]] +name = "windows_i686_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" + [[package]] name = "windows_x86_64_gnu" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" + [[package]] name = "windows_x86_64_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" + [[package]] name = "windows_x86_64_msvc" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" + +[[package]] +name = "winnow" +version = "0.7.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" +dependencies = [ + "memchr", +] + [[package]] name = "winnow" version = "1.0.2" @@ -7387,7 +9479,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" dependencies = [ "anyhow", - "bitflags", + "bitflags 2.11.1", "indexmap 2.14.0", "log", "serde", @@ -7409,7 +9501,7 @@ dependencies = [ "id-arena", "indexmap 2.14.0", "log", - "semver", + "semver 1.0.28", "serde", "serde_derive", "serde_json", diff --git a/Cargo.toml b/Cargo.toml index 768e8a2..97671e5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -86,6 +86,7 @@ reth-ethereum-primitives = { git = "https://github.com/paradigmxyz/reth", tag = reth-evm-ethereum = { git = "https://github.com/paradigmxyz/reth", tag = "v2.1.0", default-features = false } reth-primitives-traits = { version = "0.3.0", default-features = false } reth-payload-validator = { git = "https://github.com/paradigmxyz/reth", tag = "v2.1.0", default-features = false } +ef-tests = { git = "https://github.com/paradigmxyz/stateless", rev = "e5480e71a8031641ff471cad9dc482a7a14b32d5", default-features = false } stateless = { git = "https://github.com/paradigmxyz/stateless", rev = "e5480e71a8031641ff471cad9dc482a7a14b32d5", default-features = false } tries = { git = "https://github.com/paradigmxyz/stateless", rev = "e5480e71a8031641ff471cad9dc482a7a14b32d5", default-features = false } diff --git a/crates/integration-tests/tests/stateless-validator-ethrex.rs b/crates/integration-tests/tests/stateless-validator-ethrex.rs index fda808c..f90db3b 100644 --- a/crates/integration-tests/tests/stateless-validator-ethrex.rs +++ b/crates/integration-tests/tests/stateless-validator-ethrex.rs @@ -6,7 +6,10 @@ use integration_tests::{ NoopPlatform, TestCase, get_fixtures, stateless_validator::get_stateless_validator_output, }; use stateless_validator_common::new_payload_request::ForkName; -use stateless_validator_ethrex::{guest::StatelessValidatorEthrexGuest, host::build_eip8025_input}; +use stateless_validator_ethrex::{ + guest::StatelessValidatorEthrexGuest, + host::{Eip8025InputSource, build_eip8025_input}, +}; use stateless_validator_reth::{ guest::{StatelessValidatorRethGuest, StatelessValidatorRethInput}, host::determine_fork_name, @@ -41,7 +44,11 @@ fn test_execution(zkvm_kind: zkVMKind) { }; assert_eq!(output.successful_block_validation, fixture.success); - let input = build_eip8025_input(&fixture.stateless_input, fixture.success).unwrap(); + let input = build_eip8025_input(Eip8025InputSource::Legacy { + stateless_input: &fixture.stateless_input, + valid_block: fixture.success, + }) + .unwrap(); Some( TestCase::new::(fixture.name, input, output) .output_sha256(), diff --git a/crates/stateless-validator-debug/Cargo.toml b/crates/stateless-validator-debug/Cargo.toml index f408696..52c7a17 100644 --- a/crates/stateless-validator-debug/Cargo.toml +++ b/crates/stateless-validator-debug/Cargo.toml @@ -16,8 +16,15 @@ serde_json.workspace = true tracing.workspace = true tracing-subscriber.workspace = true +# alloy +alloy-eips.workspace = true +alloy-genesis.workspace = true +alloy-primitives.workspace = true + # reth +reth-chainspec.workspace = true stateless.workspace = true +ef-tests = { workspace = true, features = ["ef-tests"] } # local guest.workspace = true diff --git a/crates/stateless-validator-debug/src/fixtures.rs b/crates/stateless-validator-debug/src/fixtures.rs new file mode 100644 index 0000000..1441602 --- /dev/null +++ b/crates/stateless-validator-debug/src/fixtures.rs @@ -0,0 +1,313 @@ +//! Fixture loading and discovery for the stateless validator debug runner. + +use std::{ + collections::BTreeMap, + fs, + path::{Path, PathBuf}, +}; + +use alloy_eips::eip7840::BlobParams; +use alloy_genesis::ChainConfig; +use anyhow::{Context, bail}; +use ef_tests::models::ForkSpec; +use reth_chainspec::{Chain, blob_params_to_schedule, create_chain_config}; +use serde::Deserialize; +use stateless::StatelessInput; + +/// Deserialized JSON fixture supported by the debug runner. +#[derive(Debug, Clone)] +pub struct StatelessValidatorFixture { + /// Human-readable fixture identifier. + pub name: String, + /// Stateless input consumed by the host-side input builders. + pub input: FixtureInput, + /// Expected validation outcome. + pub success: bool, +} + +/// Either the legacy in-memory `StatelessInput` (existing JSON layout) or +/// the EEST canonical SSZ payload extracted from a `blockchain_test` JSON. +#[derive(Debug, Clone)] +#[allow(clippy::large_enum_variant)] +pub enum FixtureInput { + /// Legacy `{name, stateless_input, success}` fixture. + Legacy(StatelessInput), + /// EEST blockchain-test canonical SSZ bytes. + Canonical(CanonicalInput), +} + +/// EEST canonical-fixture `statelessInputBytes` payload paired with the +/// [`ChainConfig`] needed to resolve the fork from the embedded timestamp. +#[derive(Debug, Clone)] +pub struct CanonicalInput { + /// SSZ-encoded `SszStatelessInput` bytes. + pub ssz_bytes: Vec, + /// Chain configuration. + pub chain_config: ChainConfig, +} + +/// Wire shape for legacy `{name, stateless_input, success}` fixtures. +#[derive(Debug, Clone, Deserialize)] +struct LegacyFixture { + name: String, + stateless_input: StatelessInput, + success: bool, +} + +/// Minimal projection of an EEST `blockchain_test` body — only the fields the +/// debug runner needs. +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +struct EestStatelessTest { + network: String, + config: EestConfig, + blocks: Vec, +} + +#[derive(Debug, Deserialize)] +struct EestConfig { + #[serde(rename = "chainid", deserialize_with = "deserialize_hex_u64")] + chain_id: u64, + #[serde(default, rename = "blobSchedule")] + blob_schedule: BTreeMap, +} + +/// Hex-encoded blob-schedule entry as it appears in EEST fixtures. +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +struct EestBlobParams { + #[serde(deserialize_with = "deserialize_hex_u64")] + target: u64, + #[serde(deserialize_with = "deserialize_hex_u64")] + max: u64, + #[serde(deserialize_with = "deserialize_hex_u128")] + base_fee_update_fraction: u128, +} + +impl From<&EestBlobParams> for BlobParams { + fn from(p: &EestBlobParams) -> Self { + BlobParams { + target_blob_count: p.target, + max_blob_count: p.max, + update_fraction: p.base_fee_update_fraction, + min_blob_fee: 0, + max_blobs_per_tx: p.max, + blob_base_cost: 0, + } + } +} + +fn deserialize_hex_u64<'de, D: serde::Deserializer<'de>>(d: D) -> Result { + let s = String::deserialize(d)?; + let stripped = s.strip_prefix("0x").unwrap_or(&s); + u64::from_str_radix(stripped, 16).map_err(serde::de::Error::custom) +} + +fn deserialize_hex_u128<'de, D: serde::Deserializer<'de>>(d: D) -> Result { + let s = String::deserialize(d)?; + let stripped = s.strip_prefix("0x").unwrap_or(&s); + u128::from_str_radix(stripped, 16).map_err(serde::de::Error::custom) +} + +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +struct EestStatelessBlock { + #[serde(default)] + stateless_input_bytes: Option, + #[serde(default)] + expect_exception: Option, +} + +/// Collects fixture file paths from a JSON file or a directory. +pub fn collect_fixture_paths(path: &Path) -> anyhow::Result> { + if path.is_file() { + if path.extension().and_then(|ext| ext.to_str()) != Some("json") { + bail!( + "fixture file {} must have a .json extension", + path.display() + ); + } + return Ok(vec![path.to_path_buf()]); + } + + if !path.exists() { + bail!("path {} does not exist", path.display()); + } + + if !path.is_dir() { + bail!("path {} must be a file or directory", path.display()); + } + + let mut paths = fs::read_dir(path) + .with_context(|| format!("failed to read fixture directory {}", path.display()))? + .filter_map(|entry| { + let entry = entry.ok()?; + let entry_path = entry.path(); + let file_type = entry.file_type().ok()?; + (file_type.is_file() + && entry_path.extension().and_then(|ext| ext.to_str()) == Some("json")) + .then_some(entry_path) + }) + .collect::>(); + paths.sort(); + + if paths.is_empty() { + bail!("no JSON fixtures found in {}", path.display()); + } + + Ok(paths) +} + +/// Loads one or more fixtures from a JSON file. Supports two layouts: +/// - The legacy `{name, stateless_input, success}` shape used by repo fixtures. +/// - The EEST `blockchain_test` shape: a top-level map of test-name → `{network, blocks: +/// [{statelessInputBytes, ...}, ...], ...}`. Each `(test, block)` pair becomes one canonical +/// fixture. +pub fn load_fixtures(path: &Path) -> anyhow::Result> { + let bytes = + fs::read(path).with_context(|| format!("failed to read fixture {}", path.display()))?; + let value: serde_json::Value = serde_json::from_slice(&bytes) + .with_context(|| format!("failed to parse fixture JSON {}", path.display()))?; + + if value.get("stateless_input").is_some() { + // Legacy shape. + let wire: LegacyFixture = serde_json::from_value(value) + .with_context(|| format!("failed to deserialize legacy fixture {}", path.display()))?; + return Ok(vec![StatelessValidatorFixture { + name: wire.name, + input: FixtureInput::Legacy(wire.stateless_input), + success: wire.success, + }]); + } + + let map: BTreeMap = + serde_json::from_value(value).with_context(|| { + format!( + "fixture {} is neither a legacy fixture nor an EEST blockchain_test", + path.display(), + ) + })?; + + let mut out = Vec::new(); + for (test_name, case) in map { + let chain_config = chain_config_for_test( + &case.network, + case.config.chain_id, + &case.config.blob_schedule, + ) + .with_context(|| { + format!( + "failed to build chain config for {} (network={})", + path.display(), + case.network, + ) + })?; + // EEST puts `expectException` on the last block when the test is + // expected to fail — mirrors `eest_generator::gen_fixture`. + let success = case + .blocks + .last() + .is_some_and(|b| b.expect_exception.is_none()); + for (idx, block) in case.blocks.iter().enumerate() { + let Some(bytes) = &block.stateless_input_bytes else { + continue; + }; + if bytes.is_empty() { + continue; + } + out.push(StatelessValidatorFixture { + name: format!("{test_name}#block{idx}"), + input: FixtureInput::Canonical(CanonicalInput { + ssz_bytes: bytes.to_vec(), + chain_config: chain_config.clone(), + }), + success, + }); + } + } + + if out.is_empty() { + bail!( + "no canonical `statelessInputBytes` found in {}; nothing to run", + path.display() + ); + } + Ok(out) +} + +/// Builds an `alloy_genesis::ChainConfig` for a fixture's `network` field. +fn chain_config_for_test( + network: &str, + chain_id: u64, + blob_schedule: &BTreeMap, +) -> anyhow::Result { + // Construct Amsterdam chain config manually since Reth stateless crate + // doesn't have Amsterdam support in the main branch. To avoid being + // blocked by this, construct it manually. Eventually we can remove this. + if network == "Amsterdam" { + return Ok(amsterdam_chain_config(chain_id, blob_schedule)); + } + + let fork: ForkSpec = serde_json::from_value(serde_json::Value::String(network.to_string())) + .with_context(|| format!("unknown fork {network:?}"))?; + let spec = fork.to_chain_spec(); + let mut cfg = create_chain_config( + Some(Chain::from_id(chain_id)), + &spec.hardforks, + spec.deposit_contract.map(|dc| dc.address), + blob_params_to_schedule(&spec.blob_params, &spec.hardforks), + ); + // `Chain::from_id` for a known id (e.g. 1) makes `create_chain_config` + // copy mainnet's id; force the fixture's value verbatim. + cfg.chain_id = chain_id; + Ok(cfg) +} + +/// Manually constructs an Amsterdam `alloy_genesis::ChainConfig`. All +/// pre-Amsterdam fork transitions are activated at block/timestamp 0. The +/// blob schedule is lifted verbatim from the fixture (with keys lowercased to +/// match the `to_ethrex_chain_config` lookup convention in `host.rs`). +fn amsterdam_chain_config( + chain_id: u64, + blob_schedule: &BTreeMap, +) -> alloy_genesis::ChainConfig { + let blob_schedule = blob_schedule + .iter() + .map(|(name, params)| (name.to_ascii_lowercase(), BlobParams::from(params))) + .collect(); + + alloy_genesis::ChainConfig { + chain_id, + homestead_block: Some(0), + dao_fork_block: None, + dao_fork_support: false, + eip150_block: Some(0), + eip155_block: Some(0), + eip158_block: Some(0), + byzantium_block: Some(0), + constantinople_block: Some(0), + petersburg_block: Some(0), + istanbul_block: Some(0), + muir_glacier_block: Some(0), + berlin_block: Some(0), + london_block: Some(0), + arrow_glacier_block: Some(0), + gray_glacier_block: Some(0), + merge_netsplit_block: Some(0), + shanghai_time: Some(0), + cancun_time: Some(0), + prague_time: Some(0), + osaka_time: Some(0), + bpo1_time: Some(0), + bpo2_time: Some(0), + bpo3_time: None, + bpo4_time: None, + bpo5_time: None, + amsterdam_time: Some(0), + terminal_total_difficulty: Some(alloy_primitives::U256::ZERO), + terminal_total_difficulty_passed: true, + blob_schedule, + deposit_contract_address: None, + ..Default::default() + } +} diff --git a/crates/stateless-validator-debug/src/lib.rs b/crates/stateless-validator-debug/src/lib.rs index 7cd5067..adecd98 100644 --- a/crates/stateless-validator-debug/src/lib.rs +++ b/crates/stateless-validator-debug/src/lib.rs @@ -1,17 +1,22 @@ //! Host-side debug runner for stateless validator guest fixtures. +mod fixtures; + use std::{ - fs, io::{self, Write}, path::{Path, PathBuf}, }; use anyhow::{Context, bail}; use clap::{Parser, ValueEnum}; +pub use fixtures::{ + CanonicalInput, FixtureInput, StatelessValidatorFixture, collect_fixture_paths, load_fixtures, +}; use guest::{Guest, Platform}; -use serde::Deserialize; -use stateless::StatelessInput; -use stateless_validator_ethrex::{guest::StatelessValidatorEthrexGuest, host::build_eip8025_input}; +use stateless_validator_ethrex::{ + guest::StatelessValidatorEthrexGuest, + host::{Eip8025InputSource, build_eip8025_input}, +}; use stateless_validator_reth::guest::{ StatelessValidatorOutput, StatelessValidatorRethGuest, StatelessValidatorRethInput, }; @@ -48,13 +53,27 @@ pub enum GuestKind { impl GuestKind { fn run_fixture(self, fixture: &StatelessValidatorFixture) -> anyhow::Result { let output: StatelessValidatorOutput = match self { - Self::Reth => { - let input = - StatelessValidatorRethInput::new(&fixture.stateless_input, fixture.success)?; - StatelessValidatorRethGuest::compute::(input) - } + Self::Reth => match &fixture.input { + FixtureInput::Legacy(stateless_input) => { + let input = StatelessValidatorRethInput::new(stateless_input, fixture.success)?; + StatelessValidatorRethGuest::compute::(input) + } + FixtureInput::Canonical(_) => { + bail!("reth guest does not yet accept EEST canonical SSZ input") + } + }, Self::Ethrex => { - let input = build_eip8025_input(&fixture.stateless_input, fixture.success)?; + let source = match &fixture.input { + FixtureInput::Legacy(stateless_input) => Eip8025InputSource::Legacy { + stateless_input, + valid_block: fixture.success, + }, + FixtureInput::Canonical(canonical) => Eip8025InputSource::Canonical { + ssz_input: &canonical.ssz_bytes, + chain_config: &canonical.chain_config, + }, + }; + let input = build_eip8025_input(source)?; StatelessValidatorEthrexGuest::compute::(input) } }; @@ -76,17 +95,6 @@ impl GuestKind { } } -/// Deserialized JSON fixture supported by the debug runner. -#[derive(Debug, Clone, Deserialize)] -pub struct StatelessValidatorFixture { - /// Human-readable fixture identifier. - pub name: String, - /// Stateless input consumed by the host-side input builders. - pub stateless_input: StatelessInput, - /// Expected validation outcome. - pub success: bool, -} - /// Summary of one guest execution. #[derive(Debug, Clone, PartialEq, Eq)] pub struct RunSummary { @@ -148,14 +156,16 @@ pub fn execute(cli: Cli, mut on_summary: impl FnMut(&RunSummary)) -> anyhow::Res let fixture_paths = collect_fixture_paths(&cli.path)?; for fixture_path in fixture_paths { - let fixture = load_fixture(&fixture_path)?; - let summary = cli - .guest - .run_fixture(&fixture) - .with_context(|| format!("failed to execute fixture {}", fixture_path.display()))?; - on_summary(&summary); - - handle_success_mismatch(&summary, &fixture_path, cli.allow_success_mismatch)?; + let fixtures = load_fixtures(&fixture_path)?; + for fixture in &fixtures { + let summary = cli + .guest + .run_fixture(fixture) + .with_context(|| format!("failed to execute fixture {}", fixture_path.display()))?; + on_summary(&summary); + + handle_success_mismatch(&summary, &fixture_path, cli.allow_success_mismatch)?; + } } Ok(()) @@ -198,54 +208,6 @@ fn handle_success_mismatch( ); } -/// Collects fixture file paths from a JSON file or a directory. -pub fn collect_fixture_paths(path: &Path) -> anyhow::Result> { - if path.is_file() { - if path.extension().and_then(|ext| ext.to_str()) != Some("json") { - bail!( - "fixture file {} must have a .json extension", - path.display() - ); - } - return Ok(vec![path.to_path_buf()]); - } - - if !path.exists() { - bail!("path {} does not exist", path.display()); - } - - if !path.is_dir() { - bail!("path {} must be a file or directory", path.display()); - } - - let mut paths = fs::read_dir(path) - .with_context(|| format!("failed to read fixture directory {}", path.display()))? - .filter_map(|entry| { - let entry = entry.ok()?; - let entry_path = entry.path(); - let file_type = entry.file_type().ok()?; - (file_type.is_file() - && entry_path.extension().and_then(|ext| ext.to_str()) == Some("json")) - .then_some(entry_path) - }) - .collect::>(); - paths.sort(); - - if paths.is_empty() { - bail!("no JSON fixtures found in {}", path.display()); - } - - Ok(paths) -} - -/// Loads one JSON fixture from disk. -pub fn load_fixture(path: &Path) -> anyhow::Result { - let bytes = - fs::read(path).with_context(|| format!("failed to read fixture {}", path.display()))?; - serde_json::from_slice(&bytes) - .with_context(|| format!("failed to deserialize fixture {}", path.display())) -} - fn encode_hex(bytes: &[u8]) -> String { let mut hex = String::with_capacity(bytes.len() * 2); for byte in bytes { diff --git a/crates/stateless-validator-ethrex/src/host.rs b/crates/stateless-validator-ethrex/src/host.rs index 8b17fde..c1351b4 100644 --- a/crates/stateless-validator-ethrex/src/host.rs +++ b/crates/stateless-validator-ethrex/src/host.rs @@ -18,11 +18,40 @@ pub use { stateless::StatelessInput, }; +/// Source for the EIP-8025 host input buffer. +#[derive(Debug)] +pub enum Eip8025InputSource<'a> { + /// Legacy `StatelessInput` (with witness etc.) plus expected validity flag. + Legacy { + /// The stateless input. + stateless_input: &'a StatelessInput, + /// Whether the block is expected to validate successfully. + valid_block: bool, + }, + /// EEST canonical `statelessInputBytes` SSZ payload + chain config. + Canonical { + /// SSZ-encoded EEST `statelessInputBytes`. + ssz_input: &'a [u8], + /// Chain config sourced from the fixture. + chain_config: &'a alloy_genesis::ChainConfig, + }, +} + /// Builds the local EIP-8025 input buffer for the ethrex guest. -pub fn build_eip8025_input( - stateless_input: &StatelessInput, - valid_block: bool, -) -> anyhow::Result> { +pub fn build_eip8025_input(source: Eip8025InputSource<'_>) -> anyhow::Result> { + match source { + Eip8025InputSource::Legacy { + stateless_input, + valid_block, + } => build_legacy(stateless_input, valid_block), + Eip8025InputSource::Canonical { + ssz_input, + chain_config, + } => build_canonical(ssz_input, chain_config), + } +} + +fn build_legacy(stateless_input: &StatelessInput, valid_block: bool) -> anyhow::Result> { let fork = determine_fork_name( &stateless_input.chain_config, stateless_input.block.header.timestamp, @@ -49,6 +78,75 @@ pub fn build_eip8025_input( )) } +fn build_canonical( + ssz_input: &[u8], + chain_config: &alloy_genesis::ChainConfig, +) -> anyhow::Result> { + let ethrex_cfg = to_ethrex_chain_config(chain_config); + let cfg_bytes = rkyv::to_bytes::(ðrex_cfg) + .map_err(|err| anyhow::anyhow!("failed to rkyv-encode chain config: {err}"))?; + + Ok(crate::wire::encode_eip8025_canonical( + ssz_input, + cfg_bytes.as_ref(), + )) +} + +fn to_ethrex_chain_config(cfg: &alloy_genesis::ChainConfig) -> ChainConfig { + ChainConfig { + chain_id: cfg.chain_id, + homestead_block: cfg.homestead_block, + dao_fork_block: cfg.dao_fork_block, + dao_fork_support: cfg.dao_fork_support, + eip150_block: cfg.eip150_block, + eip155_block: cfg.eip155_block, + eip158_block: cfg.eip158_block, + byzantium_block: cfg.byzantium_block, + constantinople_block: cfg.constantinople_block, + petersburg_block: cfg.petersburg_block, + istanbul_block: cfg.istanbul_block, + muir_glacier_block: cfg.muir_glacier_block, + berlin_block: cfg.berlin_block, + london_block: cfg.london_block, + arrow_glacier_block: cfg.arrow_glacier_block, + gray_glacier_block: cfg.gray_glacier_block, + merge_netsplit_block: cfg.merge_netsplit_block, + shanghai_time: cfg.shanghai_time, + cancun_time: cfg.cancun_time, + prague_time: cfg.prague_time, + verkle_time: None, + osaka_time: cfg.osaka_time, + terminal_total_difficulty: cfg + .terminal_total_difficulty + .map(|ttd| TryInto::::try_into(ttd).unwrap()), + terminal_total_difficulty_passed: cfg.terminal_total_difficulty_passed, + blob_schedule: BlobSchedule { + cancun: get_blob_schedule(cfg, "cancun") + .unwrap_or_else(|| BlobSchedule::default().cancun), + prague: get_blob_schedule(cfg, "prague") + .unwrap_or_else(|| BlobSchedule::default().prague), + osaka: get_blob_schedule(cfg, "osaka").unwrap_or_else(|| BlobSchedule::default().osaka), + bpo1: get_blob_schedule(cfg, "bpo1").unwrap_or_else(|| BlobSchedule::default().bpo1), + bpo2: get_blob_schedule(cfg, "bpo2").unwrap_or_else(|| BlobSchedule::default().bpo2), + bpo3: get_blob_schedule(cfg, "bpo3"), + bpo4: get_blob_schedule(cfg, "bpo4"), + bpo5: get_blob_schedule(cfg, "bpo5"), + amsterdam: get_blob_schedule(cfg, "amsterdam"), + }, + deposit_contract_address: cfg + .deposit_contract_address + .map(|addr| H160::from_slice(addr.as_slice())) + .unwrap_or_else(|| H160::from_slice(MAINNET_DEPOSIT_CONTRACT_ADDRESS.as_slice())), + bpo1_time: cfg.bpo1_time, + bpo2_time: cfg.bpo2_time, + bpo3_time: cfg.bpo3_time, + bpo4_time: cfg.bpo4_time, + bpo5_time: cfg.bpo5_time, + amsterdam_time: cfg.amsterdam_time, + enable_verkle_at_genesis: false, + } +} + fn from_reth_witness_to_ethrex_witness( block_number: u64, stateless_input: &StatelessInput, @@ -66,65 +164,7 @@ fn from_reth_witness_to_ethrex_witness( .map(|h| h.to_vec().into()) .collect(); - let chain_config = ChainConfig { - chain_id: stateless_input.chain_config.chain_id, - homestead_block: stateless_input.chain_config.homestead_block, - dao_fork_block: stateless_input.chain_config.dao_fork_block, - dao_fork_support: stateless_input.chain_config.dao_fork_support, - eip150_block: stateless_input.chain_config.eip150_block, - eip155_block: stateless_input.chain_config.eip155_block, - eip158_block: stateless_input.chain_config.eip158_block, - byzantium_block: stateless_input.chain_config.byzantium_block, - constantinople_block: stateless_input.chain_config.constantinople_block, - petersburg_block: stateless_input.chain_config.petersburg_block, - istanbul_block: stateless_input.chain_config.istanbul_block, - muir_glacier_block: stateless_input.chain_config.muir_glacier_block, - berlin_block: stateless_input.chain_config.berlin_block, - london_block: stateless_input.chain_config.london_block, - arrow_glacier_block: stateless_input.chain_config.arrow_glacier_block, - gray_glacier_block: stateless_input.chain_config.gray_glacier_block, - merge_netsplit_block: stateless_input.chain_config.merge_netsplit_block, - shanghai_time: stateless_input.chain_config.shanghai_time, - cancun_time: stateless_input.chain_config.cancun_time, - prague_time: stateless_input.chain_config.prague_time, - verkle_time: None, - osaka_time: stateless_input.chain_config.osaka_time, - terminal_total_difficulty: stateless_input - .chain_config - .terminal_total_difficulty - .map(|ttd| TryInto::::try_into(ttd).unwrap()), - terminal_total_difficulty_passed: stateless_input - .chain_config - .terminal_total_difficulty_passed, - blob_schedule: BlobSchedule { - cancun: get_blob_schedule(&stateless_input.chain_config, "cancun") - .unwrap_or_else(|| BlobSchedule::default().cancun), - prague: get_blob_schedule(&stateless_input.chain_config, "prague") - .unwrap_or_else(|| BlobSchedule::default().prague), - osaka: get_blob_schedule(&stateless_input.chain_config, "osaka") - .unwrap_or_else(|| BlobSchedule::default().osaka), - bpo1: get_blob_schedule(&stateless_input.chain_config, "bpo1") - .unwrap_or_else(|| BlobSchedule::default().bpo1), - bpo2: get_blob_schedule(&stateless_input.chain_config, "bpo2") - .unwrap_or_else(|| BlobSchedule::default().bpo2), - bpo3: get_blob_schedule(&stateless_input.chain_config, "bpo3"), - bpo4: get_blob_schedule(&stateless_input.chain_config, "bpo4"), - bpo5: get_blob_schedule(&stateless_input.chain_config, "bpo5"), - amsterdam: get_blob_schedule(&stateless_input.chain_config, "amsterdam"), - }, - deposit_contract_address: stateless_input - .chain_config - .deposit_contract_address - .map(|addr| H160::from_slice(addr.as_slice())) - .unwrap_or_else(|| H160::from_slice(MAINNET_DEPOSIT_CONTRACT_ADDRESS.as_slice())), - bpo1_time: stateless_input.chain_config.bpo1_time, - bpo2_time: stateless_input.chain_config.bpo2_time, - bpo3_time: stateless_input.chain_config.bpo3_time, - bpo4_time: stateless_input.chain_config.bpo4_time, - bpo5_time: stateless_input.chain_config.bpo5_time, - amsterdam_time: None, - enable_verkle_at_genesis: false, - }; + let chain_config = to_ethrex_chain_config(&stateless_input.chain_config); let nodes = stateless_input .witness diff --git a/crates/stateless-validator-ethrex/src/wire.rs b/crates/stateless-validator-ethrex/src/wire.rs index 0e26205..1fae124 100644 --- a/crates/stateless-validator-ethrex/src/wire.rs +++ b/crates/stateless-validator-ethrex/src/wire.rs @@ -17,3 +17,20 @@ pub fn encode_eip8025(npr: &NewPayloadRequestElectraFulu, rkyv_witness_bytes: &[ out.extend_from_slice(rkyv_witness_bytes); out } + +/// Encodes a canonical EEST `statelessInputBytes` payload paired with the +/// rkyv-encoded ethrex `ChainConfig` as +/// `[ssz_len: u32 LE][ssz_bytes][cfg_len: u32 LE][rkyv_chain_config_bytes]`. +pub fn encode_eip8025_canonical(ssz_input: &[u8], rkyv_chain_config_bytes: &[u8]) -> Vec { + let ssz_len = u32::try_from(ssz_input.len()).expect("SSZ input length exceeds u32"); + let cfg_len = + u32::try_from(rkyv_chain_config_bytes.len()).expect("chain config length exceeds u32"); + + let mut out = + Vec::with_capacity(4 + ssz_input.len() + 4 + rkyv_chain_config_bytes.len()); + out.extend_from_slice(&ssz_len.to_le_bytes()); + out.extend_from_slice(ssz_input); + out.extend_from_slice(&cfg_len.to_le_bytes()); + out.extend_from_slice(rkyv_chain_config_bytes); + out +} From 33c8f47f01cd188478c71b897237065c3a52fb28 Mon Sep 17 00:00:00 2001 From: jsign Date: Mon, 27 Apr 2026 19:48:51 -0300 Subject: [PATCH 02/13] fmt --- crates/stateless-validator-ethrex/src/wire.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/crates/stateless-validator-ethrex/src/wire.rs b/crates/stateless-validator-ethrex/src/wire.rs index 1fae124..ac2a7e3 100644 --- a/crates/stateless-validator-ethrex/src/wire.rs +++ b/crates/stateless-validator-ethrex/src/wire.rs @@ -26,8 +26,7 @@ pub fn encode_eip8025_canonical(ssz_input: &[u8], rkyv_chain_config_bytes: &[u8] let cfg_len = u32::try_from(rkyv_chain_config_bytes.len()).expect("chain config length exceeds u32"); - let mut out = - Vec::with_capacity(4 + ssz_input.len() + 4 + rkyv_chain_config_bytes.len()); + let mut out = Vec::with_capacity(4 + ssz_input.len() + 4 + rkyv_chain_config_bytes.len()); out.extend_from_slice(&ssz_len.to_le_bytes()); out.extend_from_slice(ssz_input); out.extend_from_slice(&cfg_len.to_le_bytes()); From 25f729d15dca8dab24bf97c97f1c629f40695e14 Mon Sep 17 00:00:00 2001 From: Ignacio Hagopian Date: Tue, 28 Apr 2026 17:47:17 -0300 Subject: [PATCH 03/13] update ethrex dependencies to version 10.0.0 and enhance EIP-8025 framing with versioning support --- Cargo.lock | 41 +++++++------------ Cargo.toml | 20 ++++++--- crates/stateless-validator-ethrex/src/wire.rs | 21 ++++++++-- 3 files changed, 46 insertions(+), 36 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index aa4b573..0905b30 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2405,8 +2405,7 @@ dependencies = [ [[package]] name = "ethrex-blockchain" -version = "9.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=81484becd285e2a1e178306d8c22f94a104f560b#81484becd285e2a1e178306d8c22f94a104f560b" +version = "10.0.0" dependencies = [ "bytes", "crossbeam", @@ -2427,8 +2426,7 @@ dependencies = [ [[package]] name = "ethrex-common" -version = "9.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=81484becd285e2a1e178306d8c22f94a104f560b#81484becd285e2a1e178306d8c22f94a104f560b" +version = "10.0.0" dependencies = [ "bytes", "crc32fast", @@ -2461,8 +2459,7 @@ dependencies = [ [[package]] name = "ethrex-crypto" -version = "9.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=81484becd285e2a1e178306d8c22f94a104f560b#81484becd285e2a1e178306d8c22f94a104f560b" +version = "10.0.0" dependencies = [ "ark-bn254", "ark-ec", @@ -2486,8 +2483,7 @@ dependencies = [ [[package]] name = "ethrex-guest-program" -version = "9.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=81484becd285e2a1e178306d8c22f94a104f560b#81484becd285e2a1e178306d8c22f94a104f560b" +version = "10.0.0" dependencies = [ "bytes", "ethereum-types", @@ -2499,7 +2495,9 @@ dependencies = [ "hex", "k256", "libssz 0.2.1 (git+https://github.com/lambdaclass/libssz?rev=7262a4f)", + "libssz-derive 0.2.1 (git+https://github.com/lambdaclass/libssz?rev=7262a4f)", "libssz-merkle 0.2.1 (git+https://github.com/lambdaclass/libssz?rev=7262a4f)", + "libssz-types 0.2.1 (git+https://github.com/lambdaclass/libssz?rev=7262a4f)", "rkyv", "serde", "serde_with", @@ -2510,8 +2508,7 @@ dependencies = [ [[package]] name = "ethrex-l2-common" -version = "9.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=81484becd285e2a1e178306d8c22f94a104f560b#81484becd285e2a1e178306d8c22f94a104f560b" +version = "10.0.0" dependencies = [ "bytes", "ethereum-types", @@ -2529,8 +2526,7 @@ dependencies = [ [[package]] name = "ethrex-levm" -version = "9.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=81484becd285e2a1e178306d8c22f94a104f560b#81484becd285e2a1e178306d8c22f94a104f560b" +version = "10.0.0" dependencies = [ "bytes", "derive_more 1.0.0", @@ -2547,8 +2543,7 @@ dependencies = [ [[package]] name = "ethrex-metrics" -version = "9.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=81484becd285e2a1e178306d8c22f94a104f560b#81484becd285e2a1e178306d8c22f94a104f560b" +version = "10.0.0" dependencies = [ "axum", "ethrex-common", @@ -2563,8 +2558,7 @@ dependencies = [ [[package]] name = "ethrex-p2p" -version = "9.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=81484becd285e2a1e178306d8c22f94a104f560b#81484becd285e2a1e178306d8c22f94a104f560b" +version = "10.0.0" dependencies = [ "aes", "aes-gcm", @@ -2605,8 +2599,7 @@ dependencies = [ [[package]] name = "ethrex-rlp" -version = "9.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=81484becd285e2a1e178306d8c22f94a104f560b#81484becd285e2a1e178306d8c22f94a104f560b" +version = "10.0.0" dependencies = [ "bytes", "ethereum-types", @@ -2615,8 +2608,7 @@ dependencies = [ [[package]] name = "ethrex-rpc" -version = "9.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=81484becd285e2a1e178306d8c22f94a104f560b#81484becd285e2a1e178306d8c22f94a104f560b" +version = "10.0.0" dependencies = [ "axum", "axum-extra", @@ -2654,8 +2646,7 @@ dependencies = [ [[package]] name = "ethrex-storage" -version = "9.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=81484becd285e2a1e178306d8c22f94a104f560b#81484becd285e2a1e178306d8c22f94a104f560b" +version = "10.0.0" dependencies = [ "anyhow", "bytes", @@ -2676,8 +2667,7 @@ dependencies = [ [[package]] name = "ethrex-trie" -version = "9.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=81484becd285e2a1e178306d8c22f94a104f560b#81484becd285e2a1e178306d8c22f94a104f560b" +version = "10.0.0" dependencies = [ "anyhow", "bytes", @@ -2695,8 +2685,7 @@ dependencies = [ [[package]] name = "ethrex-vm" -version = "9.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=81484becd285e2a1e178306d8c22f94a104f560b#81484becd285e2a1e178306d8c22f94a104f560b" +version = "10.0.0" dependencies = [ "bytes", "derive_more 1.0.0", diff --git a/Cargo.toml b/Cargo.toml index 97671e5..6aea97f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -91,12 +91,12 @@ stateless = { git = "https://github.com/paradigmxyz/stateless", rev = "e5480e71a tries = { git = "https://github.com/paradigmxyz/stateless", rev = "e5480e71a8031641ff471cad9dc482a7a14b32d5", default-features = false } # ethrex -ethrex-common = { git = "https://github.com/lambdaclass/ethrex.git", rev = "81484becd285e2a1e178306d8c22f94a104f560b", default-features = false } -ethrex-crypto = { git = "https://github.com/lambdaclass/ethrex.git", rev = "81484becd285e2a1e178306d8c22f94a104f560b", default-features = false } -ethrex-guest-program = { git = "https://github.com/lambdaclass/ethrex.git", rev = "81484becd285e2a1e178306d8c22f94a104f560b", default-features = false } -ethrex-rlp = { git = "https://github.com/lambdaclass/ethrex.git", rev = "81484becd285e2a1e178306d8c22f94a104f560b", default-features = false } -ethrex-rpc = { git = "https://github.com/lambdaclass/ethrex.git", rev = "81484becd285e2a1e178306d8c22f94a104f560b", default-features = false } -ethrex-vm = { git = "https://github.com/lambdaclass/ethrex.git", rev = "81484becd285e2a1e178306d8c22f94a104f560b", default-features = false } +ethrex-common = { git = "https://github.com/lambdaclass/ethrex.git", rev = "c63829a1bde522beb5f5e00904d979114f5b951f", default-features = false } +ethrex-crypto = { git = "https://github.com/lambdaclass/ethrex.git", rev = "c63829a1bde522beb5f5e00904d979114f5b951f", default-features = false } +ethrex-guest-program = { git = "https://github.com/lambdaclass/ethrex.git", rev = "c63829a1bde522beb5f5e00904d979114f5b951f", default-features = false } +ethrex-rlp = { git = "https://github.com/lambdaclass/ethrex.git", rev = "c63829a1bde522beb5f5e00904d979114f5b951f", default-features = false } +ethrex-rpc = { git = "https://github.com/lambdaclass/ethrex.git", rev = "c63829a1bde522beb5f5e00904d979114f5b951f", default-features = false } +ethrex-vm = { git = "https://github.com/lambdaclass/ethrex.git", rev = "c63829a1bde522beb5f5e00904d979114f5b951f", default-features = false } # ssz libssz = { version = "0.2.1", default-features = false, features = ["alloc"] } @@ -119,3 +119,11 @@ guest = { path = "crates/guest", default-features = false } stateless-validator-common = { path = "crates/stateless-validator-common", default-features = false } stateless-validator-ethrex = { path = "crates/stateless-validator-ethrex", default-features = false } stateless-validator-reth = { path = "crates/stateless-validator-reth", default-features = false } + +[patch."https://github.com/lambdaclass/ethrex.git"] +ethrex-common = { path = "../ethrex/crates/common" } +ethrex-crypto = { path = "../ethrex/crates/common/crypto" } +ethrex-guest-program = { path = "../ethrex/crates/guest-program" } +ethrex-rlp = { path = "../ethrex/crates/common/rlp" } +ethrex-rpc = { path = "../ethrex/crates/networking/rpc" } +ethrex-vm = { path = "../ethrex/crates/vm" } diff --git a/crates/stateless-validator-ethrex/src/wire.rs b/crates/stateless-validator-ethrex/src/wire.rs index ac2a7e3..328b648 100644 --- a/crates/stateless-validator-ethrex/src/wire.rs +++ b/crates/stateless-validator-ethrex/src/wire.rs @@ -1,17 +1,29 @@ //! EIP-8025 framing helpers for the ethrex guest path. +//! +//! The wire format is version-prefixed so a single ethrex guest binary can +//! decode both the legacy Electra/Fulu and the canonical-input +//! payloads. The leading byte is consumed by the dispatcher in +//! `ethrex_guest_program::l1::decode_eip8025`. use alloc::vec::Vec; use libssz::SszEncode; use stateless_validator_common::new_payload_request::NewPayloadRequestElectraFulu; +/// Wire-format version byte for the legacy framing. +pub const EIP8025_VERSION_LEGACY: u8 = 0x00; + +/// Wire-format version byte for the canonical-input framing. +pub const EIP8025_VERSION_CANONICAL: u8 = 0x01; + /// Encodes an Electra/Fulu new payload request and opaque witness bytes as -/// `[ssz_len: u32 LE][ssz_bytes][rkyv_bytes]`. +/// `[version=0x00][ssz_len: u32 LE][ssz_bytes][rkyv_bytes]`. pub fn encode_eip8025(npr: &NewPayloadRequestElectraFulu, rkyv_witness_bytes: &[u8]) -> Vec { let ssz_bytes = npr.to_ssz(); let ssz_len = u32::try_from(ssz_bytes.len()).expect("SSZ payload length exceeds u32"); - let mut out = Vec::with_capacity(4 + ssz_bytes.len() + rkyv_witness_bytes.len()); + let mut out = Vec::with_capacity(1 + 4 + ssz_bytes.len() + rkyv_witness_bytes.len()); + out.push(EIP8025_VERSION_LEGACY); out.extend_from_slice(&ssz_len.to_le_bytes()); out.extend_from_slice(&ssz_bytes); out.extend_from_slice(rkyv_witness_bytes); @@ -20,13 +32,14 @@ pub fn encode_eip8025(npr: &NewPayloadRequestElectraFulu, rkyv_witness_bytes: &[ /// Encodes a canonical EEST `statelessInputBytes` payload paired with the /// rkyv-encoded ethrex `ChainConfig` as -/// `[ssz_len: u32 LE][ssz_bytes][cfg_len: u32 LE][rkyv_chain_config_bytes]`. +/// `[version=0x01][ssz_len: u32 LE][ssz_bytes][cfg_len: u32 LE][rkyv_chain_config_bytes]`. pub fn encode_eip8025_canonical(ssz_input: &[u8], rkyv_chain_config_bytes: &[u8]) -> Vec { let ssz_len = u32::try_from(ssz_input.len()).expect("SSZ input length exceeds u32"); let cfg_len = u32::try_from(rkyv_chain_config_bytes.len()).expect("chain config length exceeds u32"); - let mut out = Vec::with_capacity(4 + ssz_input.len() + 4 + rkyv_chain_config_bytes.len()); + let mut out = Vec::with_capacity(1 + 4 + ssz_input.len() + 4 + rkyv_chain_config_bytes.len()); + out.push(EIP8025_VERSION_CANONICAL); out.extend_from_slice(&ssz_len.to_le_bytes()); out.extend_from_slice(ssz_input); out.extend_from_slice(&cfg_len.to_le_bytes()); From ac2ccf93fa6aaa5c7e7682f75e77da88efdf95bd Mon Sep 17 00:00:00 2001 From: Ignacio Hagopian Date: Wed, 29 Apr 2026 11:44:35 -0300 Subject: [PATCH 04/13] refactor: streamline fixture path collection by introducing recursive JSON fixture path collection --- .../stateless-validator-debug/src/fixtures.rs | 36 +++++++++++++------ 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/crates/stateless-validator-debug/src/fixtures.rs b/crates/stateless-validator-debug/src/fixtures.rs index 1441602..72b33e7 100644 --- a/crates/stateless-validator-debug/src/fixtures.rs +++ b/crates/stateless-validator-debug/src/fixtures.rs @@ -138,17 +138,8 @@ pub fn collect_fixture_paths(path: &Path) -> anyhow::Result> { bail!("path {} must be a file or directory", path.display()); } - let mut paths = fs::read_dir(path) - .with_context(|| format!("failed to read fixture directory {}", path.display()))? - .filter_map(|entry| { - let entry = entry.ok()?; - let entry_path = entry.path(); - let file_type = entry.file_type().ok()?; - (file_type.is_file() - && entry_path.extension().and_then(|ext| ext.to_str()) == Some("json")) - .then_some(entry_path) - }) - .collect::>(); + let mut paths = Vec::new(); + collect_json_fixture_paths(path, &mut paths)?; paths.sort(); if paths.is_empty() { @@ -158,6 +149,29 @@ pub fn collect_fixture_paths(path: &Path) -> anyhow::Result> { Ok(paths) } +fn collect_json_fixture_paths(path: &Path, paths: &mut Vec) -> anyhow::Result<()> { + let entries = fs::read_dir(path) + .with_context(|| format!("failed to read fixture directory {}", path.display()))?; + + for entry in entries { + let entry = entry.with_context(|| format!("failed to read entry in {}", path.display()))?; + let entry_path = entry.path(); + let file_type = entry + .file_type() + .with_context(|| format!("failed to inspect path {}", entry_path.display()))?; + + if file_type.is_dir() { + collect_json_fixture_paths(&entry_path, paths)?; + } else if file_type.is_file() + && entry_path.extension().and_then(|ext| ext.to_str()) == Some("json") + { + paths.push(entry_path); + } + } + + Ok(()) +} + /// Loads one or more fixtures from a JSON file. Supports two layouts: /// - The legacy `{name, stateless_input, success}` shape used by repo fixtures. /// - The EEST `blockchain_test` shape: a top-level map of test-name → `{network, blocks: From dc6a4bd15b771478eedb019690733aeed0a0a071 Mon Sep 17 00:00:00 2001 From: Ignacio Hagopian Date: Wed, 29 Apr 2026 12:31:35 -0300 Subject: [PATCH 05/13] refactor: simplify success determination in load_fixtures function --- crates/stateless-validator-debug/src/fixtures.rs | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/crates/stateless-validator-debug/src/fixtures.rs b/crates/stateless-validator-debug/src/fixtures.rs index 72b33e7..0b4085a 100644 --- a/crates/stateless-validator-debug/src/fixtures.rs +++ b/crates/stateless-validator-debug/src/fixtures.rs @@ -216,12 +216,6 @@ pub fn load_fixtures(path: &Path) -> anyhow::Result anyhow::Result Date: Wed, 29 Apr 2026 12:49:51 -0300 Subject: [PATCH 06/13] jsign ethrex Signed-off-by: Ignacio Hagopian --- Cargo.lock | 13 +++++++++++++ Cargo.toml | 20 ++++++-------------- 2 files changed, 19 insertions(+), 14 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0905b30..59dafc6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2406,6 +2406,7 @@ dependencies = [ [[package]] name = "ethrex-blockchain" version = "10.0.0" +source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" dependencies = [ "bytes", "crossbeam", @@ -2427,6 +2428,7 @@ dependencies = [ [[package]] name = "ethrex-common" version = "10.0.0" +source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" dependencies = [ "bytes", "crc32fast", @@ -2460,6 +2462,7 @@ dependencies = [ [[package]] name = "ethrex-crypto" version = "10.0.0" +source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" dependencies = [ "ark-bn254", "ark-ec", @@ -2484,6 +2487,7 @@ dependencies = [ [[package]] name = "ethrex-guest-program" version = "10.0.0" +source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" dependencies = [ "bytes", "ethereum-types", @@ -2509,6 +2513,7 @@ dependencies = [ [[package]] name = "ethrex-l2-common" version = "10.0.0" +source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" dependencies = [ "bytes", "ethereum-types", @@ -2527,6 +2532,7 @@ dependencies = [ [[package]] name = "ethrex-levm" version = "10.0.0" +source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" dependencies = [ "bytes", "derive_more 1.0.0", @@ -2544,6 +2550,7 @@ dependencies = [ [[package]] name = "ethrex-metrics" version = "10.0.0" +source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" dependencies = [ "axum", "ethrex-common", @@ -2559,6 +2566,7 @@ dependencies = [ [[package]] name = "ethrex-p2p" version = "10.0.0" +source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" dependencies = [ "aes", "aes-gcm", @@ -2600,6 +2608,7 @@ dependencies = [ [[package]] name = "ethrex-rlp" version = "10.0.0" +source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" dependencies = [ "bytes", "ethereum-types", @@ -2609,6 +2618,7 @@ dependencies = [ [[package]] name = "ethrex-rpc" version = "10.0.0" +source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" dependencies = [ "axum", "axum-extra", @@ -2647,6 +2657,7 @@ dependencies = [ [[package]] name = "ethrex-storage" version = "10.0.0" +source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" dependencies = [ "anyhow", "bytes", @@ -2668,6 +2679,7 @@ dependencies = [ [[package]] name = "ethrex-trie" version = "10.0.0" +source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" dependencies = [ "anyhow", "bytes", @@ -2686,6 +2698,7 @@ dependencies = [ [[package]] name = "ethrex-vm" version = "10.0.0" +source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" dependencies = [ "bytes", "derive_more 1.0.0", diff --git a/Cargo.toml b/Cargo.toml index 6aea97f..8833755 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -91,12 +91,12 @@ stateless = { git = "https://github.com/paradigmxyz/stateless", rev = "e5480e71a tries = { git = "https://github.com/paradigmxyz/stateless", rev = "e5480e71a8031641ff471cad9dc482a7a14b32d5", default-features = false } # ethrex -ethrex-common = { git = "https://github.com/lambdaclass/ethrex.git", rev = "c63829a1bde522beb5f5e00904d979114f5b951f", default-features = false } -ethrex-crypto = { git = "https://github.com/lambdaclass/ethrex.git", rev = "c63829a1bde522beb5f5e00904d979114f5b951f", default-features = false } -ethrex-guest-program = { git = "https://github.com/lambdaclass/ethrex.git", rev = "c63829a1bde522beb5f5e00904d979114f5b951f", default-features = false } -ethrex-rlp = { git = "https://github.com/lambdaclass/ethrex.git", rev = "c63829a1bde522beb5f5e00904d979114f5b951f", default-features = false } -ethrex-rpc = { git = "https://github.com/lambdaclass/ethrex.git", rev = "c63829a1bde522beb5f5e00904d979114f5b951f", default-features = false } -ethrex-vm = { git = "https://github.com/lambdaclass/ethrex.git", rev = "c63829a1bde522beb5f5e00904d979114f5b951f", default-features = false } +ethrex-common = { git = "https://github.com/jsign/ethrex.git", rev = "7789246dd468a21f56fd0cc388a6e1b508ee8099", default-features = false } +ethrex-crypto = { git = "https://github.com/jsign/ethrex.git", rev = "7789246dd468a21f56fd0cc388a6e1b508ee8099", default-features = false } +ethrex-guest-program = { git = "https://github.com/jsign/ethrex.git", rev = "7789246dd468a21f56fd0cc388a6e1b508ee8099", default-features = false } +ethrex-rlp = { git = "https://github.com/jsign/ethrex.git", rev = "7789246dd468a21f56fd0cc388a6e1b508ee8099", default-features = false } +ethrex-rpc = { git = "https://github.com/jsign/ethrex.git", rev = "7789246dd468a21f56fd0cc388a6e1b508ee8099", default-features = false } +ethrex-vm = { git = "https://github.com/jsign/ethrex.git", rev = "7789246dd468a21f56fd0cc388a6e1b508ee8099", default-features = false } # ssz libssz = { version = "0.2.1", default-features = false, features = ["alloc"] } @@ -119,11 +119,3 @@ guest = { path = "crates/guest", default-features = false } stateless-validator-common = { path = "crates/stateless-validator-common", default-features = false } stateless-validator-ethrex = { path = "crates/stateless-validator-ethrex", default-features = false } stateless-validator-reth = { path = "crates/stateless-validator-reth", default-features = false } - -[patch."https://github.com/lambdaclass/ethrex.git"] -ethrex-common = { path = "../ethrex/crates/common" } -ethrex-crypto = { path = "../ethrex/crates/common/crypto" } -ethrex-guest-program = { path = "../ethrex/crates/guest-program" } -ethrex-rlp = { path = "../ethrex/crates/common/rlp" } -ethrex-rpc = { path = "../ethrex/crates/networking/rpc" } -ethrex-vm = { path = "../ethrex/crates/vm" } From 18284da29d7e56221de1f60e6c0b5cf837412688 Mon Sep 17 00:00:00 2001 From: Ignacio Hagopian Date: Wed, 29 Apr 2026 13:12:35 -0300 Subject: [PATCH 07/13] cargo fetch --- .../risc0/Cargo.lock | 34 ++++++++++--------- bin/stateless-validator-ethrex/sp1/Cargo.lock | 34 ++++++++++--------- .../zisk/Cargo.lock | 34 ++++++++++--------- 3 files changed, 54 insertions(+), 48 deletions(-) diff --git a/bin/stateless-validator-ethrex/risc0/Cargo.lock b/bin/stateless-validator-ethrex/risc0/Cargo.lock index 7c71b02..900fbac 100644 --- a/bin/stateless-validator-ethrex/risc0/Cargo.lock +++ b/bin/stateless-validator-ethrex/risc0/Cargo.lock @@ -967,8 +967,8 @@ dependencies = [ [[package]] name = "ethrex-common" -version = "9.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=81484becd285e2a1e178306d8c22f94a104f560b#81484becd285e2a1e178306d8c22f94a104f560b" +version = "10.0.0" +source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" dependencies = [ "bytes", "crc32fast", @@ -1000,8 +1000,8 @@ dependencies = [ [[package]] name = "ethrex-crypto" -version = "9.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=81484becd285e2a1e178306d8c22f94a104f560b#81484becd285e2a1e178306d8c22f94a104f560b" +version = "10.0.0" +source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" dependencies = [ "ark-bn254", "ark-ec", @@ -1023,8 +1023,8 @@ dependencies = [ [[package]] name = "ethrex-guest-program" -version = "9.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=81484becd285e2a1e178306d8c22f94a104f560b#81484becd285e2a1e178306d8c22f94a104f560b" +version = "10.0.0" +source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" dependencies = [ "bytes", "ethereum-types", @@ -1036,7 +1036,9 @@ dependencies = [ "hex", "k256", "libssz 0.2.1 (git+https://github.com/lambdaclass/libssz?rev=7262a4f)", + "libssz-derive 0.2.1 (git+https://github.com/lambdaclass/libssz?rev=7262a4f)", "libssz-merkle 0.2.1 (git+https://github.com/lambdaclass/libssz?rev=7262a4f)", + "libssz-types 0.2.1 (git+https://github.com/lambdaclass/libssz?rev=7262a4f)", "rkyv", "serde", "serde_with", @@ -1046,8 +1048,8 @@ dependencies = [ [[package]] name = "ethrex-l2-common" -version = "9.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=81484becd285e2a1e178306d8c22f94a104f560b#81484becd285e2a1e178306d8c22f94a104f560b" +version = "10.0.0" +source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" dependencies = [ "bytes", "ethereum-types", @@ -1065,8 +1067,8 @@ dependencies = [ [[package]] name = "ethrex-levm" -version = "9.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=81484becd285e2a1e178306d8c22f94a104f560b#81484becd285e2a1e178306d8c22f94a104f560b" +version = "10.0.0" +source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" dependencies = [ "bytes", "derive_more 1.0.0", @@ -1083,8 +1085,8 @@ dependencies = [ [[package]] name = "ethrex-rlp" -version = "9.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=81484becd285e2a1e178306d8c22f94a104f560b#81484becd285e2a1e178306d8c22f94a104f560b" +version = "10.0.0" +source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" dependencies = [ "bytes", "ethereum-types", @@ -1093,8 +1095,8 @@ dependencies = [ [[package]] name = "ethrex-trie" -version = "9.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=81484becd285e2a1e178306d8c22f94a104f560b#81484becd285e2a1e178306d8c22f94a104f560b" +version = "10.0.0" +source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" dependencies = [ "anyhow", "bytes", @@ -1112,8 +1114,8 @@ dependencies = [ [[package]] name = "ethrex-vm" -version = "9.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=81484becd285e2a1e178306d8c22f94a104f560b#81484becd285e2a1e178306d8c22f94a104f560b" +version = "10.0.0" +source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" dependencies = [ "bytes", "derive_more 1.0.0", diff --git a/bin/stateless-validator-ethrex/sp1/Cargo.lock b/bin/stateless-validator-ethrex/sp1/Cargo.lock index 866cbc0..42e5664 100644 --- a/bin/stateless-validator-ethrex/sp1/Cargo.lock +++ b/bin/stateless-validator-ethrex/sp1/Cargo.lock @@ -911,8 +911,8 @@ dependencies = [ [[package]] name = "ethrex-common" -version = "9.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=81484becd285e2a1e178306d8c22f94a104f560b#81484becd285e2a1e178306d8c22f94a104f560b" +version = "10.0.0" +source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" dependencies = [ "bytes", "crc32fast", @@ -945,8 +945,8 @@ dependencies = [ [[package]] name = "ethrex-crypto" -version = "9.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=81484becd285e2a1e178306d8c22f94a104f560b#81484becd285e2a1e178306d8c22f94a104f560b" +version = "10.0.0" +source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" dependencies = [ "ark-bn254", "ark-ec", @@ -969,8 +969,8 @@ dependencies = [ [[package]] name = "ethrex-guest-program" -version = "9.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=81484becd285e2a1e178306d8c22f94a104f560b#81484becd285e2a1e178306d8c22f94a104f560b" +version = "10.0.0" +source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" dependencies = [ "bytes", "ethereum-types", @@ -982,7 +982,9 @@ dependencies = [ "hex", "k256", "libssz 0.2.1 (git+https://github.com/lambdaclass/libssz?rev=7262a4f)", + "libssz-derive 0.2.1 (git+https://github.com/lambdaclass/libssz?rev=7262a4f)", "libssz-merkle 0.2.1 (git+https://github.com/lambdaclass/libssz?rev=7262a4f)", + "libssz-types 0.2.1 (git+https://github.com/lambdaclass/libssz?rev=7262a4f)", "rkyv", "serde", "serde_with", @@ -992,8 +994,8 @@ dependencies = [ [[package]] name = "ethrex-l2-common" -version = "9.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=81484becd285e2a1e178306d8c22f94a104f560b#81484becd285e2a1e178306d8c22f94a104f560b" +version = "10.0.0" +source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" dependencies = [ "bytes", "ethereum-types", @@ -1011,8 +1013,8 @@ dependencies = [ [[package]] name = "ethrex-levm" -version = "9.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=81484becd285e2a1e178306d8c22f94a104f560b#81484becd285e2a1e178306d8c22f94a104f560b" +version = "10.0.0" +source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" dependencies = [ "bytes", "derive_more", @@ -1029,8 +1031,8 @@ dependencies = [ [[package]] name = "ethrex-rlp" -version = "9.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=81484becd285e2a1e178306d8c22f94a104f560b#81484becd285e2a1e178306d8c22f94a104f560b" +version = "10.0.0" +source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" dependencies = [ "bytes", "ethereum-types", @@ -1039,8 +1041,8 @@ dependencies = [ [[package]] name = "ethrex-trie" -version = "9.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=81484becd285e2a1e178306d8c22f94a104f560b#81484becd285e2a1e178306d8c22f94a104f560b" +version = "10.0.0" +source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" dependencies = [ "anyhow", "bytes", @@ -1058,8 +1060,8 @@ dependencies = [ [[package]] name = "ethrex-vm" -version = "9.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=81484becd285e2a1e178306d8c22f94a104f560b#81484becd285e2a1e178306d8c22f94a104f560b" +version = "10.0.0" +source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" dependencies = [ "bytes", "derive_more", diff --git a/bin/stateless-validator-ethrex/zisk/Cargo.lock b/bin/stateless-validator-ethrex/zisk/Cargo.lock index 9005bdd..964cd44 100644 --- a/bin/stateless-validator-ethrex/zisk/Cargo.lock +++ b/bin/stateless-validator-ethrex/zisk/Cargo.lock @@ -734,8 +734,8 @@ dependencies = [ [[package]] name = "ethrex-common" -version = "9.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=81484becd285e2a1e178306d8c22f94a104f560b#81484becd285e2a1e178306d8c22f94a104f560b" +version = "10.0.0" +source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" dependencies = [ "bytes", "crc32fast", @@ -767,8 +767,8 @@ dependencies = [ [[package]] name = "ethrex-crypto" -version = "9.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=81484becd285e2a1e178306d8c22f94a104f560b#81484becd285e2a1e178306d8c22f94a104f560b" +version = "10.0.0" +source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" dependencies = [ "ark-bn254", "ark-ec", @@ -788,8 +788,8 @@ dependencies = [ [[package]] name = "ethrex-guest-program" -version = "9.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=81484becd285e2a1e178306d8c22f94a104f560b#81484becd285e2a1e178306d8c22f94a104f560b" +version = "10.0.0" +source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" dependencies = [ "bytes", "ethereum-types", @@ -801,7 +801,9 @@ dependencies = [ "hex", "k256", "libssz 0.2.1 (git+https://github.com/lambdaclass/libssz?rev=7262a4f)", + "libssz-derive 0.2.1 (git+https://github.com/lambdaclass/libssz?rev=7262a4f)", "libssz-merkle 0.2.1 (git+https://github.com/lambdaclass/libssz?rev=7262a4f)", + "libssz-types 0.2.1 (git+https://github.com/lambdaclass/libssz?rev=7262a4f)", "rkyv", "serde", "serde_with", @@ -812,8 +814,8 @@ dependencies = [ [[package]] name = "ethrex-l2-common" -version = "9.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=81484becd285e2a1e178306d8c22f94a104f560b#81484becd285e2a1e178306d8c22f94a104f560b" +version = "10.0.0" +source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" dependencies = [ "bytes", "ethereum-types", @@ -830,8 +832,8 @@ dependencies = [ [[package]] name = "ethrex-levm" -version = "9.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=81484becd285e2a1e178306d8c22f94a104f560b#81484becd285e2a1e178306d8c22f94a104f560b" +version = "10.0.0" +source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" dependencies = [ "bytes", "derive_more", @@ -848,8 +850,8 @@ dependencies = [ [[package]] name = "ethrex-rlp" -version = "9.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=81484becd285e2a1e178306d8c22f94a104f560b#81484becd285e2a1e178306d8c22f94a104f560b" +version = "10.0.0" +source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" dependencies = [ "bytes", "ethereum-types", @@ -858,8 +860,8 @@ dependencies = [ [[package]] name = "ethrex-trie" -version = "9.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=81484becd285e2a1e178306d8c22f94a104f560b#81484becd285e2a1e178306d8c22f94a104f560b" +version = "10.0.0" +source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" dependencies = [ "anyhow", "bytes", @@ -877,8 +879,8 @@ dependencies = [ [[package]] name = "ethrex-vm" -version = "9.0.0" -source = "git+https://github.com/lambdaclass/ethrex.git?rev=81484becd285e2a1e178306d8c22f94a104f560b#81484becd285e2a1e178306d8c22f94a104f560b" +version = "10.0.0" +source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" dependencies = [ "bytes", "derive_more", From 6e99f120085100764280d1eb988ec3adea8181b0 Mon Sep 17 00:00:00 2001 From: jsign Date: Wed, 29 Apr 2026 16:57:42 -0300 Subject: [PATCH 08/13] update ethrex --- Cargo.lock | 26 +++++++++---------- Cargo.toml | 12 ++++----- .../risc0/Cargo.lock | 16 ++++++------ bin/stateless-validator-ethrex/sp1/Cargo.lock | 16 ++++++------ .../zisk/Cargo.lock | 16 ++++++------ 5 files changed, 43 insertions(+), 43 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 59dafc6..7d5c179 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2406,7 +2406,7 @@ dependencies = [ [[package]] name = "ethrex-blockchain" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" +source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" dependencies = [ "bytes", "crossbeam", @@ -2428,7 +2428,7 @@ dependencies = [ [[package]] name = "ethrex-common" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" +source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" dependencies = [ "bytes", "crc32fast", @@ -2462,7 +2462,7 @@ dependencies = [ [[package]] name = "ethrex-crypto" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" +source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" dependencies = [ "ark-bn254", "ark-ec", @@ -2487,7 +2487,7 @@ dependencies = [ [[package]] name = "ethrex-guest-program" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" +source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" dependencies = [ "bytes", "ethereum-types", @@ -2513,7 +2513,7 @@ dependencies = [ [[package]] name = "ethrex-l2-common" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" +source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" dependencies = [ "bytes", "ethereum-types", @@ -2532,7 +2532,7 @@ dependencies = [ [[package]] name = "ethrex-levm" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" +source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" dependencies = [ "bytes", "derive_more 1.0.0", @@ -2550,7 +2550,7 @@ dependencies = [ [[package]] name = "ethrex-metrics" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" +source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" dependencies = [ "axum", "ethrex-common", @@ -2566,7 +2566,7 @@ dependencies = [ [[package]] name = "ethrex-p2p" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" +source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" dependencies = [ "aes", "aes-gcm", @@ -2608,7 +2608,7 @@ dependencies = [ [[package]] name = "ethrex-rlp" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" +source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" dependencies = [ "bytes", "ethereum-types", @@ -2618,7 +2618,7 @@ dependencies = [ [[package]] name = "ethrex-rpc" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" +source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" dependencies = [ "axum", "axum-extra", @@ -2657,7 +2657,7 @@ dependencies = [ [[package]] name = "ethrex-storage" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" +source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" dependencies = [ "anyhow", "bytes", @@ -2679,7 +2679,7 @@ dependencies = [ [[package]] name = "ethrex-trie" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" +source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" dependencies = [ "anyhow", "bytes", @@ -2698,7 +2698,7 @@ dependencies = [ [[package]] name = "ethrex-vm" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" +source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" dependencies = [ "bytes", "derive_more 1.0.0", diff --git a/Cargo.toml b/Cargo.toml index 8833755..6dde408 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -91,12 +91,12 @@ stateless = { git = "https://github.com/paradigmxyz/stateless", rev = "e5480e71a tries = { git = "https://github.com/paradigmxyz/stateless", rev = "e5480e71a8031641ff471cad9dc482a7a14b32d5", default-features = false } # ethrex -ethrex-common = { git = "https://github.com/jsign/ethrex.git", rev = "7789246dd468a21f56fd0cc388a6e1b508ee8099", default-features = false } -ethrex-crypto = { git = "https://github.com/jsign/ethrex.git", rev = "7789246dd468a21f56fd0cc388a6e1b508ee8099", default-features = false } -ethrex-guest-program = { git = "https://github.com/jsign/ethrex.git", rev = "7789246dd468a21f56fd0cc388a6e1b508ee8099", default-features = false } -ethrex-rlp = { git = "https://github.com/jsign/ethrex.git", rev = "7789246dd468a21f56fd0cc388a6e1b508ee8099", default-features = false } -ethrex-rpc = { git = "https://github.com/jsign/ethrex.git", rev = "7789246dd468a21f56fd0cc388a6e1b508ee8099", default-features = false } -ethrex-vm = { git = "https://github.com/jsign/ethrex.git", rev = "7789246dd468a21f56fd0cc388a6e1b508ee8099", default-features = false } +ethrex-common = { git = "https://github.com/jsign/ethrex.git", rev = "0f54136ef2eb70b280722e0beb76e52190086337", default-features = false } +ethrex-crypto = { git = "https://github.com/jsign/ethrex.git", rev = "0f54136ef2eb70b280722e0beb76e52190086337", default-features = false } +ethrex-guest-program = { git = "https://github.com/jsign/ethrex.git", rev = "0f54136ef2eb70b280722e0beb76e52190086337", default-features = false } +ethrex-rlp = { git = "https://github.com/jsign/ethrex.git", rev = "0f54136ef2eb70b280722e0beb76e52190086337", default-features = false } +ethrex-rpc = { git = "https://github.com/jsign/ethrex.git", rev = "0f54136ef2eb70b280722e0beb76e52190086337", default-features = false } +ethrex-vm = { git = "https://github.com/jsign/ethrex.git", rev = "0f54136ef2eb70b280722e0beb76e52190086337", default-features = false } # ssz libssz = { version = "0.2.1", default-features = false, features = ["alloc"] } diff --git a/bin/stateless-validator-ethrex/risc0/Cargo.lock b/bin/stateless-validator-ethrex/risc0/Cargo.lock index 900fbac..3cbe35b 100644 --- a/bin/stateless-validator-ethrex/risc0/Cargo.lock +++ b/bin/stateless-validator-ethrex/risc0/Cargo.lock @@ -968,7 +968,7 @@ dependencies = [ [[package]] name = "ethrex-common" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" +source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" dependencies = [ "bytes", "crc32fast", @@ -1001,7 +1001,7 @@ dependencies = [ [[package]] name = "ethrex-crypto" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" +source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" dependencies = [ "ark-bn254", "ark-ec", @@ -1024,7 +1024,7 @@ dependencies = [ [[package]] name = "ethrex-guest-program" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" +source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" dependencies = [ "bytes", "ethereum-types", @@ -1049,7 +1049,7 @@ dependencies = [ [[package]] name = "ethrex-l2-common" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" +source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" dependencies = [ "bytes", "ethereum-types", @@ -1068,7 +1068,7 @@ dependencies = [ [[package]] name = "ethrex-levm" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" +source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" dependencies = [ "bytes", "derive_more 1.0.0", @@ -1086,7 +1086,7 @@ dependencies = [ [[package]] name = "ethrex-rlp" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" +source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" dependencies = [ "bytes", "ethereum-types", @@ -1096,7 +1096,7 @@ dependencies = [ [[package]] name = "ethrex-trie" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" +source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" dependencies = [ "anyhow", "bytes", @@ -1115,7 +1115,7 @@ dependencies = [ [[package]] name = "ethrex-vm" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" +source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" dependencies = [ "bytes", "derive_more 1.0.0", diff --git a/bin/stateless-validator-ethrex/sp1/Cargo.lock b/bin/stateless-validator-ethrex/sp1/Cargo.lock index 42e5664..13bdec8 100644 --- a/bin/stateless-validator-ethrex/sp1/Cargo.lock +++ b/bin/stateless-validator-ethrex/sp1/Cargo.lock @@ -912,7 +912,7 @@ dependencies = [ [[package]] name = "ethrex-common" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" +source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" dependencies = [ "bytes", "crc32fast", @@ -946,7 +946,7 @@ dependencies = [ [[package]] name = "ethrex-crypto" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" +source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" dependencies = [ "ark-bn254", "ark-ec", @@ -970,7 +970,7 @@ dependencies = [ [[package]] name = "ethrex-guest-program" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" +source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" dependencies = [ "bytes", "ethereum-types", @@ -995,7 +995,7 @@ dependencies = [ [[package]] name = "ethrex-l2-common" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" +source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" dependencies = [ "bytes", "ethereum-types", @@ -1014,7 +1014,7 @@ dependencies = [ [[package]] name = "ethrex-levm" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" +source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" dependencies = [ "bytes", "derive_more", @@ -1032,7 +1032,7 @@ dependencies = [ [[package]] name = "ethrex-rlp" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" +source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" dependencies = [ "bytes", "ethereum-types", @@ -1042,7 +1042,7 @@ dependencies = [ [[package]] name = "ethrex-trie" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" +source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" dependencies = [ "anyhow", "bytes", @@ -1061,7 +1061,7 @@ dependencies = [ [[package]] name = "ethrex-vm" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" +source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" dependencies = [ "bytes", "derive_more", diff --git a/bin/stateless-validator-ethrex/zisk/Cargo.lock b/bin/stateless-validator-ethrex/zisk/Cargo.lock index 964cd44..948ae3b 100644 --- a/bin/stateless-validator-ethrex/zisk/Cargo.lock +++ b/bin/stateless-validator-ethrex/zisk/Cargo.lock @@ -735,7 +735,7 @@ dependencies = [ [[package]] name = "ethrex-common" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" +source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" dependencies = [ "bytes", "crc32fast", @@ -768,7 +768,7 @@ dependencies = [ [[package]] name = "ethrex-crypto" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" +source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" dependencies = [ "ark-bn254", "ark-ec", @@ -789,7 +789,7 @@ dependencies = [ [[package]] name = "ethrex-guest-program" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" +source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" dependencies = [ "bytes", "ethereum-types", @@ -815,7 +815,7 @@ dependencies = [ [[package]] name = "ethrex-l2-common" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" +source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" dependencies = [ "bytes", "ethereum-types", @@ -833,7 +833,7 @@ dependencies = [ [[package]] name = "ethrex-levm" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" +source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" dependencies = [ "bytes", "derive_more", @@ -851,7 +851,7 @@ dependencies = [ [[package]] name = "ethrex-rlp" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" +source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" dependencies = [ "bytes", "ethereum-types", @@ -861,7 +861,7 @@ dependencies = [ [[package]] name = "ethrex-trie" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" +source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" dependencies = [ "anyhow", "bytes", @@ -880,7 +880,7 @@ dependencies = [ [[package]] name = "ethrex-vm" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=7789246dd468a21f56fd0cc388a6e1b508ee8099#7789246dd468a21f56fd0cc388a6e1b508ee8099" +source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" dependencies = [ "bytes", "derive_more", From e54581964a008a49afed3a6d289dc07befe58f15 Mon Sep 17 00:00:00 2001 From: jsign Date: Wed, 29 Apr 2026 19:00:43 -0300 Subject: [PATCH 09/13] refactor:check statelessOutputBytes --- Cargo.lock | 26 ++++---- Cargo.toml | 12 ++-- .../src/stateless_validator.rs | 8 ++- .../tests/stateless-validator-ethrex.rs | 1 + .../tests/stateless-validator-reth.rs | 1 + .../stateless-validator-common/src/guest.rs | 25 ++++++-- .../stateless-validator-debug/src/fixtures.rs | 9 +++ crates/stateless-validator-debug/src/lib.rs | 63 +++++++++++++++++-- .../stateless-validator-ethrex/src/guest.rs | 6 +- crates/stateless-validator-reth/src/guest.rs | 10 +-- 10 files changed, 124 insertions(+), 37 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7d5c179..b40c6a3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2406,7 +2406,7 @@ dependencies = [ [[package]] name = "ethrex-blockchain" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" +source = "git+https://github.com/jsign/ethrex.git?rev=914b69440f6095187bf7455e0c5c80287d7e6e06#914b69440f6095187bf7455e0c5c80287d7e6e06" dependencies = [ "bytes", "crossbeam", @@ -2428,7 +2428,7 @@ dependencies = [ [[package]] name = "ethrex-common" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" +source = "git+https://github.com/jsign/ethrex.git?rev=914b69440f6095187bf7455e0c5c80287d7e6e06#914b69440f6095187bf7455e0c5c80287d7e6e06" dependencies = [ "bytes", "crc32fast", @@ -2462,7 +2462,7 @@ dependencies = [ [[package]] name = "ethrex-crypto" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" +source = "git+https://github.com/jsign/ethrex.git?rev=914b69440f6095187bf7455e0c5c80287d7e6e06#914b69440f6095187bf7455e0c5c80287d7e6e06" dependencies = [ "ark-bn254", "ark-ec", @@ -2487,7 +2487,7 @@ dependencies = [ [[package]] name = "ethrex-guest-program" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" +source = "git+https://github.com/jsign/ethrex.git?rev=914b69440f6095187bf7455e0c5c80287d7e6e06#914b69440f6095187bf7455e0c5c80287d7e6e06" dependencies = [ "bytes", "ethereum-types", @@ -2513,7 +2513,7 @@ dependencies = [ [[package]] name = "ethrex-l2-common" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" +source = "git+https://github.com/jsign/ethrex.git?rev=914b69440f6095187bf7455e0c5c80287d7e6e06#914b69440f6095187bf7455e0c5c80287d7e6e06" dependencies = [ "bytes", "ethereum-types", @@ -2532,7 +2532,7 @@ dependencies = [ [[package]] name = "ethrex-levm" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" +source = "git+https://github.com/jsign/ethrex.git?rev=914b69440f6095187bf7455e0c5c80287d7e6e06#914b69440f6095187bf7455e0c5c80287d7e6e06" dependencies = [ "bytes", "derive_more 1.0.0", @@ -2550,7 +2550,7 @@ dependencies = [ [[package]] name = "ethrex-metrics" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" +source = "git+https://github.com/jsign/ethrex.git?rev=914b69440f6095187bf7455e0c5c80287d7e6e06#914b69440f6095187bf7455e0c5c80287d7e6e06" dependencies = [ "axum", "ethrex-common", @@ -2566,7 +2566,7 @@ dependencies = [ [[package]] name = "ethrex-p2p" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" +source = "git+https://github.com/jsign/ethrex.git?rev=914b69440f6095187bf7455e0c5c80287d7e6e06#914b69440f6095187bf7455e0c5c80287d7e6e06" dependencies = [ "aes", "aes-gcm", @@ -2608,7 +2608,7 @@ dependencies = [ [[package]] name = "ethrex-rlp" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" +source = "git+https://github.com/jsign/ethrex.git?rev=914b69440f6095187bf7455e0c5c80287d7e6e06#914b69440f6095187bf7455e0c5c80287d7e6e06" dependencies = [ "bytes", "ethereum-types", @@ -2618,7 +2618,7 @@ dependencies = [ [[package]] name = "ethrex-rpc" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" +source = "git+https://github.com/jsign/ethrex.git?rev=914b69440f6095187bf7455e0c5c80287d7e6e06#914b69440f6095187bf7455e0c5c80287d7e6e06" dependencies = [ "axum", "axum-extra", @@ -2657,7 +2657,7 @@ dependencies = [ [[package]] name = "ethrex-storage" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" +source = "git+https://github.com/jsign/ethrex.git?rev=914b69440f6095187bf7455e0c5c80287d7e6e06#914b69440f6095187bf7455e0c5c80287d7e6e06" dependencies = [ "anyhow", "bytes", @@ -2679,7 +2679,7 @@ dependencies = [ [[package]] name = "ethrex-trie" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" +source = "git+https://github.com/jsign/ethrex.git?rev=914b69440f6095187bf7455e0c5c80287d7e6e06#914b69440f6095187bf7455e0c5c80287d7e6e06" dependencies = [ "anyhow", "bytes", @@ -2698,7 +2698,7 @@ dependencies = [ [[package]] name = "ethrex-vm" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" +source = "git+https://github.com/jsign/ethrex.git?rev=914b69440f6095187bf7455e0c5c80287d7e6e06#914b69440f6095187bf7455e0c5c80287d7e6e06" dependencies = [ "bytes", "derive_more 1.0.0", diff --git a/Cargo.toml b/Cargo.toml index 6dde408..58085fe 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -91,12 +91,12 @@ stateless = { git = "https://github.com/paradigmxyz/stateless", rev = "e5480e71a tries = { git = "https://github.com/paradigmxyz/stateless", rev = "e5480e71a8031641ff471cad9dc482a7a14b32d5", default-features = false } # ethrex -ethrex-common = { git = "https://github.com/jsign/ethrex.git", rev = "0f54136ef2eb70b280722e0beb76e52190086337", default-features = false } -ethrex-crypto = { git = "https://github.com/jsign/ethrex.git", rev = "0f54136ef2eb70b280722e0beb76e52190086337", default-features = false } -ethrex-guest-program = { git = "https://github.com/jsign/ethrex.git", rev = "0f54136ef2eb70b280722e0beb76e52190086337", default-features = false } -ethrex-rlp = { git = "https://github.com/jsign/ethrex.git", rev = "0f54136ef2eb70b280722e0beb76e52190086337", default-features = false } -ethrex-rpc = { git = "https://github.com/jsign/ethrex.git", rev = "0f54136ef2eb70b280722e0beb76e52190086337", default-features = false } -ethrex-vm = { git = "https://github.com/jsign/ethrex.git", rev = "0f54136ef2eb70b280722e0beb76e52190086337", default-features = false } +ethrex-common = { git = "https://github.com/jsign/ethrex.git", rev = "914b69440f6095187bf7455e0c5c80287d7e6e06", default-features = false } +ethrex-crypto = { git = "https://github.com/jsign/ethrex.git", rev = "914b69440f6095187bf7455e0c5c80287d7e6e06", default-features = false } +ethrex-guest-program = { git = "https://github.com/jsign/ethrex.git", rev = "914b69440f6095187bf7455e0c5c80287d7e6e06", default-features = false } +ethrex-rlp = { git = "https://github.com/jsign/ethrex.git", rev = "914b69440f6095187bf7455e0c5c80287d7e6e06", default-features = false } +ethrex-rpc = { git = "https://github.com/jsign/ethrex.git", rev = "914b69440f6095187bf7455e0c5c80287d7e6e06", default-features = false } +ethrex-vm = { git = "https://github.com/jsign/ethrex.git", rev = "914b69440f6095187bf7455e0c5c80287d7e6e06", default-features = false } # ssz libssz = { version = "0.2.1", default-features = false, features = ["alloc"] } diff --git a/crates/integration-tests/src/stateless_validator.rs b/crates/integration-tests/src/stateless_validator.rs index 54e70b1..518eaa1 100644 --- a/crates/integration-tests/src/stateless_validator.rs +++ b/crates/integration-tests/src/stateless_validator.rs @@ -20,11 +20,15 @@ pub struct StatelessValidatorFixture { /// Returns the expected `StatelessValidatorOutput` for a given block hash in the fixtures, which /// was calculated by an independent implementation. -pub fn get_stateless_validator_output(block_hash: B256, success: bool) -> StatelessValidatorOutput { +pub fn get_stateless_validator_output( + block_hash: B256, + success: bool, + chain_id: u64, +) -> StatelessValidatorOutput { let expected_roots = expected_execution_payload_tree_roots(); let expected_root = *expected_roots.get(&block_hash).unwrap(); - StatelessValidatorOutput::new(expected_root.0, success) + StatelessValidatorOutput::new(expected_root.0, success, chain_id) } /// Returns a mapping of block hashes from fixtures to their expected execution payload tree roots. diff --git a/crates/integration-tests/tests/stateless-validator-ethrex.rs b/crates/integration-tests/tests/stateless-validator-ethrex.rs index f90db3b..72f82d1 100644 --- a/crates/integration-tests/tests/stateless-validator-ethrex.rs +++ b/crates/integration-tests/tests/stateless-validator-ethrex.rs @@ -40,6 +40,7 @@ fn test_execution(zkvm_kind: zkVMKind) { get_stateless_validator_output( fixture.stateless_input.block.hash_slow(), fixture.success, + fixture.stateless_input.chain_config.chain_id, ) }; assert_eq!(output.successful_block_validation, fixture.success); diff --git a/crates/integration-tests/tests/stateless-validator-reth.rs b/crates/integration-tests/tests/stateless-validator-reth.rs index 9121a3f..aec37b3 100644 --- a/crates/integration-tests/tests/stateless-validator-reth.rs +++ b/crates/integration-tests/tests/stateless-validator-reth.rs @@ -25,6 +25,7 @@ fn test_execution(zkvm_kind: zkVMKind) { get_stateless_validator_output( fixture.stateless_input.block.hash_slow(), fixture.success, + fixture.stateless_input.chain_config.chain_id, ) }; assert_eq!(output.successful_block_validation, fixture.success); diff --git a/crates/stateless-validator-common/src/guest.rs b/crates/stateless-validator-common/src/guest.rs index 7a264ce..5aab834 100644 --- a/crates/stateless-validator-common/src/guest.rs +++ b/crates/stateless-validator-common/src/guest.rs @@ -4,12 +4,18 @@ use alloc::vec::Vec; use core::{ error::Error, fmt::{self, Display}, + mem::size_of, }; use ere_codec::{Decode, Encode}; +const NEW_PAYLOAD_REQUEST_ROOT_SIZE: usize = 32; +const SUCCESSFUL_BLOCK_VALIDATION_SIZE: usize = 1; +const CHAIN_ID_SIZE: usize = size_of::(); + /// Static size of [`StatelessValidatorOutput`]. -pub const STATELESS_VALIDATOR_OUTPUT_SIZE: usize = size_of::(); +pub const STATELESS_VALIDATOR_OUTPUT_SIZE: usize = + NEW_PAYLOAD_REQUEST_ROOT_SIZE + SUCCESSFUL_BLOCK_VALIDATION_SIZE + CHAIN_ID_SIZE; /// Output of stateless validator guest program. #[derive(Clone, Copy, Debug, PartialEq, Eq, Default)] @@ -23,14 +29,21 @@ pub struct StatelessValidatorOutput { pub new_payload_request_root: [u8; 32], /// Stateless validation is successful or not. pub successful_block_validation: bool, + /// Chain ID from the stateless validation chain configuration. + pub chain_id: u64, } impl StatelessValidatorOutput { /// Constructs a new [`StatelessValidatorOutput`]. - pub fn new(new_payload_request_root: [u8; 32], successful_block_validation: bool) -> Self { + pub fn new( + new_payload_request_root: [u8; 32], + successful_block_validation: bool, + chain_id: u64, + ) -> Self { Self { new_payload_request_root, successful_block_validation, + chain_id, } } @@ -39,6 +52,7 @@ impl StatelessValidatorOutput { let mut buf = [0; STATELESS_VALIDATOR_OUTPUT_SIZE]; buf[0..32].copy_from_slice(&self.new_payload_request_root); buf[32] = self.successful_block_validation as u8; + buf[33..41].copy_from_slice(&self.chain_id.to_le_bytes()); buf } } @@ -54,7 +68,7 @@ impl Encode for StatelessValidatorOutput { /// Error returned when decoding a [`StatelessValidatorOutput`] fails. #[derive(Debug)] pub enum StatelessValidatorOutputDecodeError { - /// Buffer is smaller than [`STATELESS_VALIDATOR_OUTPUT_SIZE`]. + /// Buffer length is not [`STATELESS_VALIDATOR_OUTPUT_SIZE`]. InvalidLength { /// Actual length of the provided buffer. len: usize, @@ -71,7 +85,7 @@ impl Display for StatelessValidatorOutputDecodeError { match self { Self::InvalidLength { len } => write!( f, - "buffer length {len} smaller than STATELESS_VALIDATOR_OUTPUT_SIZE", + "buffer length {len} does not match STATELESS_VALIDATOR_OUTPUT_SIZE", ), Self::InvalidSuccessulBit { byte } => { write!(f, "successful-validation byte {byte} is not 0 or 1") @@ -86,7 +100,7 @@ impl Decode for StatelessValidatorOutput { type Error = StatelessValidatorOutputDecodeError; fn decode_from_slice(slice: &[u8]) -> Result { - if slice.len() < STATELESS_VALIDATOR_OUTPUT_SIZE { + if slice.len() != STATELESS_VALIDATOR_OUTPUT_SIZE { return Err(StatelessValidatorOutputDecodeError::InvalidLength { len: slice.len() }); } let successful_block_validation = match slice[32] { @@ -99,6 +113,7 @@ impl Decode for StatelessValidatorOutput { Ok(Self { new_payload_request_root: slice[..32].try_into().unwrap(), successful_block_validation, + chain_id: u64::from_le_bytes(slice[33..41].try_into().unwrap()), }) } } diff --git a/crates/stateless-validator-debug/src/fixtures.rs b/crates/stateless-validator-debug/src/fixtures.rs index 0b4085a..b0760f3 100644 --- a/crates/stateless-validator-debug/src/fixtures.rs +++ b/crates/stateless-validator-debug/src/fixtures.rs @@ -23,6 +23,8 @@ pub struct StatelessValidatorFixture { pub input: FixtureInput, /// Expected validation outcome. pub success: bool, + /// Expected serialized guest output, when provided by canonical fixtures. + pub expected_output_bytes: Option>, } /// Either the legacy in-memory `StatelessInput` (existing JSON layout) or @@ -115,6 +117,8 @@ struct EestStatelessBlock { #[serde(default)] stateless_input_bytes: Option, #[serde(default)] + stateless_output_bytes: Option, + #[serde(default)] expect_exception: Option, } @@ -191,6 +195,7 @@ pub fn load_fixtures(path: &Path) -> anyhow::Result anyhow::Result>, + /// Actual serialized guest output. + pub actual_output_bytes: Vec, } impl std::fmt::Display for RunSummary { @@ -164,7 +172,7 @@ pub fn execute(cli: Cli, mut on_summary: impl FnMut(&RunSummary)) -> anyhow::Res .with_context(|| format!("failed to execute fixture {}", fixture_path.display()))?; on_summary(&summary); - handle_success_mismatch(&summary, &fixture_path, cli.allow_success_mismatch)?; + handle_fixture_mismatch(&summary, &fixture_path, cli.allow_fixture_mismatch)?; } } @@ -179,16 +187,25 @@ fn init_tracing() { .try_init(); } -fn handle_success_mismatch( +fn handle_fixture_mismatch( summary: &RunSummary, fixture_path: &Path, - allow_success_mismatch: bool, + allow_fixture_mismatch: bool, ) -> anyhow::Result<()> { + if let Some(expected_output_bytes) = &summary.expected_output_bytes { + return handle_output_mismatch( + summary, + fixture_path, + expected_output_bytes, + allow_fixture_mismatch, + ); + } + if summary.actual_success == summary.expected_success { return Ok(()); } - if allow_success_mismatch { + if allow_fixture_mismatch { tracing::warn!( fixture_name = summary.fixture_name.as_str(), fixture_path = %fixture_path.display(), @@ -208,6 +225,40 @@ fn handle_success_mismatch( ); } +fn handle_output_mismatch( + summary: &RunSummary, + fixture_path: &Path, + expected_output_bytes: &[u8], + allow_fixture_mismatch: bool, +) -> anyhow::Result<()> { + if summary.actual_output_bytes == expected_output_bytes { + return Ok(()); + } + + if allow_fixture_mismatch { + tracing::warn!( + fixture_name = summary.fixture_name.as_str(), + fixture_path = %fixture_path.display(), + expected_len = expected_output_bytes.len(), + actual_len = summary.actual_output_bytes.len(), + expected_output = %format!("0x{}", encode_hex(expected_output_bytes)), + actual_output = %format!("0x{}", encode_hex(&summary.actual_output_bytes)), + "fixture output mismatch", + ); + return Ok(()); + } + + bail!( + "fixture {} ({}) expected output bytes 0x{} (len={}), got 0x{} (len={})", + summary.fixture_name, + fixture_path.display(), + encode_hex(expected_output_bytes), + expected_output_bytes.len(), + encode_hex(&summary.actual_output_bytes), + summary.actual_output_bytes.len(), + ); +} + fn encode_hex(bytes: &[u8]) -> String { let mut hex = String::with_capacity(bytes.len() * 2); for byte in bytes { diff --git a/crates/stateless-validator-ethrex/src/guest.rs b/crates/stateless-validator-ethrex/src/guest.rs index 549ac6e..82a117d 100644 --- a/crates/stateless-validator-ethrex/src/guest.rs +++ b/crates/stateless-validator-ethrex/src/guest.rs @@ -34,7 +34,11 @@ impl StatelessValidatorEthrexGuest { .unwrap_or_else(|err| panic!("invalid EIP-8025 input: {err}")) }); - StatelessValidatorOutput::new(output.new_payload_request_root, output.valid) + StatelessValidatorOutput::new( + output.new_payload_request_root, + output.valid, + output.chain_id, + ) } } diff --git a/crates/stateless-validator-reth/src/guest.rs b/crates/stateless-validator-reth/src/guest.rs index a47a8e1..29abdc1 100644 --- a/crates/stateless-validator-reth/src/guest.rs +++ b/crates/stateless-validator-reth/src/guest.rs @@ -51,6 +51,7 @@ impl Guest for StatelessValidatorRethGuest { type Output = StatelessValidatorOutput; fn compute(input: Self::Input) -> Self::Output { + let chain_id = input.chain_config.chain_id; let new_payload_request_root = P::cycle_scope("new_payload_request_root_calculation", || { input.new_payload_request.tree_hash_root(&sha256_hasher()) @@ -66,7 +67,7 @@ impl Guest for StatelessValidatorRethGuest { Ok(output) => output, Err(_) => { P::print("Panic occurred during validation\n"); - StatelessValidatorOutput::new(new_payload_request_root, false) + StatelessValidatorOutput::new(new_payload_request_root, false, chain_id) } } } @@ -83,6 +84,7 @@ impl StatelessValidatorRethGuest { input: GuestInput, new_payload_request_root: [u8; 32], ) -> GuestOutput { + let chain_id = input.chain_config.chain_id; let (chain_spec, evm_config) = P::cycle_scope("misc_preparation", || { let genesis = Genesis { config: input.chain_config.clone(), @@ -107,7 +109,7 @@ impl StatelessValidatorRethGuest { Ok(block) => block, Err(err) => { P::print(&format!("Failed to convert to reth block: {err}\n")); - return StatelessValidatorOutput::new(new_payload_request_root, false); + return StatelessValidatorOutput::new(new_payload_request_root, false, chain_id); } }; @@ -122,10 +124,10 @@ impl StatelessValidatorRethGuest { }); match res { - Ok(_) => StatelessValidatorOutput::new(new_payload_request_root, true), + Ok(_) => StatelessValidatorOutput::new(new_payload_request_root, true, chain_id), Err(err) => { P::print(&format!("Block validation failed: {err}\n")); - StatelessValidatorOutput::new(new_payload_request_root, false) + StatelessValidatorOutput::new(new_payload_request_root, false, chain_id) } } } From 4dd40344f1e096d219be85e4592360e74c6ef519 Mon Sep 17 00:00:00 2001 From: jsign Date: Wed, 29 Apr 2026 19:08:31 -0300 Subject: [PATCH 10/13] fix MAX_WITHDRAWALS_PER_PAYLAOD constant value in EIP-8025 Co-authored-by: Copilot --- Cargo.lock | 26 +++++++++---------- Cargo.toml | 12 ++++----- .../src/new_payload_request.rs | 2 +- 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b40c6a3..6c40f30 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2406,7 +2406,7 @@ dependencies = [ [[package]] name = "ethrex-blockchain" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=914b69440f6095187bf7455e0c5c80287d7e6e06#914b69440f6095187bf7455e0c5c80287d7e6e06" +source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" dependencies = [ "bytes", "crossbeam", @@ -2428,7 +2428,7 @@ dependencies = [ [[package]] name = "ethrex-common" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=914b69440f6095187bf7455e0c5c80287d7e6e06#914b69440f6095187bf7455e0c5c80287d7e6e06" +source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" dependencies = [ "bytes", "crc32fast", @@ -2462,7 +2462,7 @@ dependencies = [ [[package]] name = "ethrex-crypto" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=914b69440f6095187bf7455e0c5c80287d7e6e06#914b69440f6095187bf7455e0c5c80287d7e6e06" +source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" dependencies = [ "ark-bn254", "ark-ec", @@ -2487,7 +2487,7 @@ dependencies = [ [[package]] name = "ethrex-guest-program" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=914b69440f6095187bf7455e0c5c80287d7e6e06#914b69440f6095187bf7455e0c5c80287d7e6e06" +source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" dependencies = [ "bytes", "ethereum-types", @@ -2513,7 +2513,7 @@ dependencies = [ [[package]] name = "ethrex-l2-common" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=914b69440f6095187bf7455e0c5c80287d7e6e06#914b69440f6095187bf7455e0c5c80287d7e6e06" +source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" dependencies = [ "bytes", "ethereum-types", @@ -2532,7 +2532,7 @@ dependencies = [ [[package]] name = "ethrex-levm" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=914b69440f6095187bf7455e0c5c80287d7e6e06#914b69440f6095187bf7455e0c5c80287d7e6e06" +source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" dependencies = [ "bytes", "derive_more 1.0.0", @@ -2550,7 +2550,7 @@ dependencies = [ [[package]] name = "ethrex-metrics" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=914b69440f6095187bf7455e0c5c80287d7e6e06#914b69440f6095187bf7455e0c5c80287d7e6e06" +source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" dependencies = [ "axum", "ethrex-common", @@ -2566,7 +2566,7 @@ dependencies = [ [[package]] name = "ethrex-p2p" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=914b69440f6095187bf7455e0c5c80287d7e6e06#914b69440f6095187bf7455e0c5c80287d7e6e06" +source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" dependencies = [ "aes", "aes-gcm", @@ -2608,7 +2608,7 @@ dependencies = [ [[package]] name = "ethrex-rlp" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=914b69440f6095187bf7455e0c5c80287d7e6e06#914b69440f6095187bf7455e0c5c80287d7e6e06" +source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" dependencies = [ "bytes", "ethereum-types", @@ -2618,7 +2618,7 @@ dependencies = [ [[package]] name = "ethrex-rpc" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=914b69440f6095187bf7455e0c5c80287d7e6e06#914b69440f6095187bf7455e0c5c80287d7e6e06" +source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" dependencies = [ "axum", "axum-extra", @@ -2657,7 +2657,7 @@ dependencies = [ [[package]] name = "ethrex-storage" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=914b69440f6095187bf7455e0c5c80287d7e6e06#914b69440f6095187bf7455e0c5c80287d7e6e06" +source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" dependencies = [ "anyhow", "bytes", @@ -2679,7 +2679,7 @@ dependencies = [ [[package]] name = "ethrex-trie" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=914b69440f6095187bf7455e0c5c80287d7e6e06#914b69440f6095187bf7455e0c5c80287d7e6e06" +source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" dependencies = [ "anyhow", "bytes", @@ -2698,7 +2698,7 @@ dependencies = [ [[package]] name = "ethrex-vm" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=914b69440f6095187bf7455e0c5c80287d7e6e06#914b69440f6095187bf7455e0c5c80287d7e6e06" +source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" dependencies = [ "bytes", "derive_more 1.0.0", diff --git a/Cargo.toml b/Cargo.toml index 58085fe..06945f0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -91,12 +91,12 @@ stateless = { git = "https://github.com/paradigmxyz/stateless", rev = "e5480e71a tries = { git = "https://github.com/paradigmxyz/stateless", rev = "e5480e71a8031641ff471cad9dc482a7a14b32d5", default-features = false } # ethrex -ethrex-common = { git = "https://github.com/jsign/ethrex.git", rev = "914b69440f6095187bf7455e0c5c80287d7e6e06", default-features = false } -ethrex-crypto = { git = "https://github.com/jsign/ethrex.git", rev = "914b69440f6095187bf7455e0c5c80287d7e6e06", default-features = false } -ethrex-guest-program = { git = "https://github.com/jsign/ethrex.git", rev = "914b69440f6095187bf7455e0c5c80287d7e6e06", default-features = false } -ethrex-rlp = { git = "https://github.com/jsign/ethrex.git", rev = "914b69440f6095187bf7455e0c5c80287d7e6e06", default-features = false } -ethrex-rpc = { git = "https://github.com/jsign/ethrex.git", rev = "914b69440f6095187bf7455e0c5c80287d7e6e06", default-features = false } -ethrex-vm = { git = "https://github.com/jsign/ethrex.git", rev = "914b69440f6095187bf7455e0c5c80287d7e6e06", default-features = false } +ethrex-common = { git = "https://github.com/jsign/ethrex.git", rev = "15ce41750a715177aef9f23a1adcd502b2e26166", default-features = false } +ethrex-crypto = { git = "https://github.com/jsign/ethrex.git", rev = "15ce41750a715177aef9f23a1adcd502b2e26166", default-features = false } +ethrex-guest-program = { git = "https://github.com/jsign/ethrex.git", rev = "15ce41750a715177aef9f23a1adcd502b2e26166", default-features = false } +ethrex-rlp = { git = "https://github.com/jsign/ethrex.git", rev = "15ce41750a715177aef9f23a1adcd502b2e26166", default-features = false } +ethrex-rpc = { git = "https://github.com/jsign/ethrex.git", rev = "15ce41750a715177aef9f23a1adcd502b2e26166", default-features = false } +ethrex-vm = { git = "https://github.com/jsign/ethrex.git", rev = "15ce41750a715177aef9f23a1adcd502b2e26166", default-features = false } # ssz libssz = { version = "0.2.1", default-features = false, features = ["alloc"] } diff --git a/crates/stateless-validator-common/src/new_payload_request.rs b/crates/stateless-validator-common/src/new_payload_request.rs index ebe5f90..74ee51d 100644 --- a/crates/stateless-validator-common/src/new_payload_request.rs +++ b/crates/stateless-validator-common/src/new_payload_request.rs @@ -34,7 +34,7 @@ impl Sha256Hasher for NativeSha256Hasher { } /// Limits -pub const MAX_WITHDRAWALS_PER_PAYLOAD: usize = 16; +pub const MAX_WITHDRAWALS_PER_PAYLOAD: usize = 65536; // Re-defined in EIP-8025 at least temporarily. pub const MAX_TRANSACTIONS_PER_PAYLOAD: usize = 1024 * 1024; pub const MAX_BYTES_PER_TRANSACTION: usize = MAX_TRANSACTIONS_PER_PAYLOAD * 1024; pub const MAX_BLOB_COMMITMENTS_PER_BLOCK: usize = 4096; From 68e93ef60dd019e312d7257163172d6008b968b8 Mon Sep 17 00:00:00 2001 From: jsign Date: Wed, 29 Apr 2026 19:32:13 -0300 Subject: [PATCH 11/13] fix expected hash tree root given that max length of withdrwals was updated to conform to the specs --- .../risc0/Cargo.lock | 16 +++++++------- bin/stateless-validator-ethrex/sp1/Cargo.lock | 16 +++++++------- .../zisk/Cargo.lock | 16 +++++++------- .../src/stateless_validator.rs | 22 +++++++++---------- 4 files changed, 35 insertions(+), 35 deletions(-) diff --git a/bin/stateless-validator-ethrex/risc0/Cargo.lock b/bin/stateless-validator-ethrex/risc0/Cargo.lock index 3cbe35b..1af45c4 100644 --- a/bin/stateless-validator-ethrex/risc0/Cargo.lock +++ b/bin/stateless-validator-ethrex/risc0/Cargo.lock @@ -968,7 +968,7 @@ dependencies = [ [[package]] name = "ethrex-common" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" +source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" dependencies = [ "bytes", "crc32fast", @@ -1001,7 +1001,7 @@ dependencies = [ [[package]] name = "ethrex-crypto" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" +source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" dependencies = [ "ark-bn254", "ark-ec", @@ -1024,7 +1024,7 @@ dependencies = [ [[package]] name = "ethrex-guest-program" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" +source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" dependencies = [ "bytes", "ethereum-types", @@ -1049,7 +1049,7 @@ dependencies = [ [[package]] name = "ethrex-l2-common" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" +source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" dependencies = [ "bytes", "ethereum-types", @@ -1068,7 +1068,7 @@ dependencies = [ [[package]] name = "ethrex-levm" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" +source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" dependencies = [ "bytes", "derive_more 1.0.0", @@ -1086,7 +1086,7 @@ dependencies = [ [[package]] name = "ethrex-rlp" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" +source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" dependencies = [ "bytes", "ethereum-types", @@ -1096,7 +1096,7 @@ dependencies = [ [[package]] name = "ethrex-trie" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" +source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" dependencies = [ "anyhow", "bytes", @@ -1115,7 +1115,7 @@ dependencies = [ [[package]] name = "ethrex-vm" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" +source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" dependencies = [ "bytes", "derive_more 1.0.0", diff --git a/bin/stateless-validator-ethrex/sp1/Cargo.lock b/bin/stateless-validator-ethrex/sp1/Cargo.lock index 13bdec8..274828d 100644 --- a/bin/stateless-validator-ethrex/sp1/Cargo.lock +++ b/bin/stateless-validator-ethrex/sp1/Cargo.lock @@ -912,7 +912,7 @@ dependencies = [ [[package]] name = "ethrex-common" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" +source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" dependencies = [ "bytes", "crc32fast", @@ -946,7 +946,7 @@ dependencies = [ [[package]] name = "ethrex-crypto" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" +source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" dependencies = [ "ark-bn254", "ark-ec", @@ -970,7 +970,7 @@ dependencies = [ [[package]] name = "ethrex-guest-program" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" +source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" dependencies = [ "bytes", "ethereum-types", @@ -995,7 +995,7 @@ dependencies = [ [[package]] name = "ethrex-l2-common" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" +source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" dependencies = [ "bytes", "ethereum-types", @@ -1014,7 +1014,7 @@ dependencies = [ [[package]] name = "ethrex-levm" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" +source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" dependencies = [ "bytes", "derive_more", @@ -1032,7 +1032,7 @@ dependencies = [ [[package]] name = "ethrex-rlp" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" +source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" dependencies = [ "bytes", "ethereum-types", @@ -1042,7 +1042,7 @@ dependencies = [ [[package]] name = "ethrex-trie" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" +source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" dependencies = [ "anyhow", "bytes", @@ -1061,7 +1061,7 @@ dependencies = [ [[package]] name = "ethrex-vm" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" +source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" dependencies = [ "bytes", "derive_more", diff --git a/bin/stateless-validator-ethrex/zisk/Cargo.lock b/bin/stateless-validator-ethrex/zisk/Cargo.lock index 948ae3b..7d53f0b 100644 --- a/bin/stateless-validator-ethrex/zisk/Cargo.lock +++ b/bin/stateless-validator-ethrex/zisk/Cargo.lock @@ -735,7 +735,7 @@ dependencies = [ [[package]] name = "ethrex-common" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" +source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" dependencies = [ "bytes", "crc32fast", @@ -768,7 +768,7 @@ dependencies = [ [[package]] name = "ethrex-crypto" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" +source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" dependencies = [ "ark-bn254", "ark-ec", @@ -789,7 +789,7 @@ dependencies = [ [[package]] name = "ethrex-guest-program" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" +source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" dependencies = [ "bytes", "ethereum-types", @@ -815,7 +815,7 @@ dependencies = [ [[package]] name = "ethrex-l2-common" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" +source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" dependencies = [ "bytes", "ethereum-types", @@ -833,7 +833,7 @@ dependencies = [ [[package]] name = "ethrex-levm" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" +source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" dependencies = [ "bytes", "derive_more", @@ -851,7 +851,7 @@ dependencies = [ [[package]] name = "ethrex-rlp" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" +source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" dependencies = [ "bytes", "ethereum-types", @@ -861,7 +861,7 @@ dependencies = [ [[package]] name = "ethrex-trie" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" +source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" dependencies = [ "anyhow", "bytes", @@ -880,7 +880,7 @@ dependencies = [ [[package]] name = "ethrex-vm" version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=0f54136ef2eb70b280722e0beb76e52190086337#0f54136ef2eb70b280722e0beb76e52190086337" +source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" dependencies = [ "bytes", "derive_more", diff --git a/crates/integration-tests/src/stateless_validator.rs b/crates/integration-tests/src/stateless_validator.rs index 518eaa1..cab9ffe 100644 --- a/crates/integration-tests/src/stateless_validator.rs +++ b/crates/integration-tests/src/stateless_validator.rs @@ -37,47 +37,47 @@ fn expected_execution_payload_tree_roots() -> HashMap { HashMap::from([ ( b256!("e4bd1c4dc22a58a0a9a8e789e2c54b4ace2d1ebc16a605c3976723b52fc011f1"), - b256!("45328434f812b65daa21b4e8a3d6440d0da95fbd95a6c10b0a28f081cab53bd5"), + b256!("63477d4b2d525534352ea13c86189340fcb6a51567c8a3a850220b549102e2d5"), ), ( b256!("88c74fb93052f3bccc20e2ce709a97a6bd669cbdf1c3a54997b6f5cfda03accc"), - b256!("f8ac723efd5d8d12af604948d0f46e53be47d18a23e6ac2adfbe3818ac1d0d98"), + b256!("7af2f7a50e5f37f8292ed679a760264706cb0caafd57111398055bea41fbeaeb"), ), ( b256!("77bd26b8aed0d14e1d78c180196de399840ee7462cb3be6f20981f63284b0bb7"), - b256!("22de93d4f2bfcc6d35530d8ef3f57d60daec797a646a7ac66fbef1c240359f3d"), + b256!("6f8fde1fc6d437b3088a2d40a40d7bc673ab15bbdbbf3f72bca894856bc9126a"), ), ( b256!("4ea1ba2443afd99b07534559feb2d57c390489c2594c2a053e79ff066851db63"), - b256!("2d4f61867176c82bab2c396559320b337b51412cfa8fbf988560b81f8ef4863c"), + b256!("0100fc3604f2bb16343598faa4bbb307c7572b97e55f8b563003e70d1cb3ee68"), ), ( b256!("e2154b8a9ad9fdc0e6e23dbd6be53b568cfe15da66d945272bd627ab488bc7fc"), - b256!("66063b993a271908b668380e0e5ae2f915ccd993fd999bc75a7fc6e1cc5af9db"), + b256!("70ddf6f74e2faf7bab6459eb7e32535ec1a3c226bd02610644f8f1e5cefef846"), ), ( b256!("18e16e8807c5d723cfa8c1146474c63e0e334abedeb7bf4b1c3dfc44860d2db6"), - b256!("760580ec7bb1dcc3b0a53fe0fec0f9dd94ab5c068b0e3c01128d11da7b5e679e"), + b256!("2b54f99dc26a518209641603ad50d9e100114359e0dfa62a4611e2930639ec87"), ), ( b256!("0853345a27fcf3de0d8f77be6465ccd638ab6fceff4f1aa95b2c8e3a20a94843"), - b256!("3694ce5950dfbc84bf1ab6d3d54b52c269761e3e74420500a1c2e4a3e74efcda"), + b256!("d20afc195c1439086fef74cc2406c026fb44db77d7a61d5e6fbac6b2f205b0b0"), ), ( b256!("f93cbd9836c96bc35a5f3e97fcd5887fa4cf4fead6d5b5fb796df34b76506d14"), - b256!("ecb22240d38111f6236483b84cda9f96cff8a9b8c8ecb5cc3df89c396a030104"), + b256!("a884be1af18cd8f213f6fa6db255b7281b647b5c8fd4ce984bf97bdc2ef26fa8"), ), ( b256!("91ff4738a9ca92dc46ad86cfad7d6e31f678553d965357180537f4653bb48d9b"), - b256!("c3c81e368dbbd449865caf4ef7721e19d6aa35b1b1480b58c4e412bf122f2558"), + b256!("95c63b0bd353b902db7138db05febca7ebd1ba112b4b581702f28128a0db5c57"), ), ( b256!("2c576b118b1919886188c4a3b1f71143ca8b8a5c1814d8908beb004a6acb9fa1"), - b256!("f490f0d4368609cf81fd90e04da0d9a1fe7cba9e3e21fc77e01968386affdc90"), + b256!("26a3e9f1a689222cf9e7f136fd7f7ebaaa712896fe726f9b1a953ad4b67731af"), ), ( b256!("53dcdbca6be3f94cd96a8f37900082d04850bfc5a285e9a88b2498f318c89809"), - b256!("359e5dee47560e9cffc8947ee8d75c2a5d15c621ec2c647426c95e4b69275c7f"), + b256!("d2f14474f7d3c364abc572439d90230d1f13e4d444b8612711bfa715ea3d9a8d"), ), ]) } From 40bb85c8547a5a5983abbbb397d98ae15db575b9 Mon Sep 17 00:00:00 2001 From: Ignacio Hagopian Date: Thu, 14 May 2026 16:57:02 -0300 Subject: [PATCH 12/13] fix: update ethrex --- Cargo.lock | 53 ++++++++++++++++++++++++++--------------------------- Cargo.toml | 12 ++++++------ 2 files changed, 32 insertions(+), 33 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c518303..d766d7b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2405,8 +2405,8 @@ dependencies = [ [[package]] name = "ethrex-blockchain" -version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" +version = "12.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=b112f94748a222e78b642406155674df9e180ee4#b112f94748a222e78b642406155674df9e180ee4" dependencies = [ "bytes", "crossbeam", @@ -2427,8 +2427,8 @@ dependencies = [ [[package]] name = "ethrex-common" -version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" +version = "12.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=b112f94748a222e78b642406155674df9e180ee4#b112f94748a222e78b642406155674df9e180ee4" dependencies = [ "bytes", "crc32fast", @@ -2448,7 +2448,6 @@ dependencies = [ "libssz-types 0.2.1 (git+https://github.com/lambdaclass/libssz?rev=7262a4f)", "lru", "once_cell", - "rayon", "rkyv", "rustc-hash", "secp256k1 0.30.0", @@ -2461,8 +2460,8 @@ dependencies = [ [[package]] name = "ethrex-crypto" -version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" +version = "12.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=b112f94748a222e78b642406155674df9e180ee4#b112f94748a222e78b642406155674df9e180ee4" dependencies = [ "ark-bn254", "ark-ec", @@ -2486,8 +2485,8 @@ dependencies = [ [[package]] name = "ethrex-guest-program" -version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" +version = "12.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=b112f94748a222e78b642406155674df9e180ee4#b112f94748a222e78b642406155674df9e180ee4" dependencies = [ "bytes", "ethereum-types", @@ -2512,8 +2511,8 @@ dependencies = [ [[package]] name = "ethrex-l2-common" -version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" +version = "12.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=b112f94748a222e78b642406155674df9e180ee4#b112f94748a222e78b642406155674df9e180ee4" dependencies = [ "bytes", "ethereum-types", @@ -2531,8 +2530,8 @@ dependencies = [ [[package]] name = "ethrex-levm" -version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" +version = "12.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=b112f94748a222e78b642406155674df9e180ee4#b112f94748a222e78b642406155674df9e180ee4" dependencies = [ "bytes", "derive_more 1.0.0", @@ -2549,8 +2548,8 @@ dependencies = [ [[package]] name = "ethrex-metrics" -version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" +version = "12.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=b112f94748a222e78b642406155674df9e180ee4#b112f94748a222e78b642406155674df9e180ee4" dependencies = [ "axum", "ethrex-common", @@ -2565,8 +2564,8 @@ dependencies = [ [[package]] name = "ethrex-p2p" -version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" +version = "12.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=b112f94748a222e78b642406155674df9e180ee4#b112f94748a222e78b642406155674df9e180ee4" dependencies = [ "aes", "aes-gcm", @@ -2607,8 +2606,8 @@ dependencies = [ [[package]] name = "ethrex-rlp" -version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" +version = "12.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=b112f94748a222e78b642406155674df9e180ee4#b112f94748a222e78b642406155674df9e180ee4" dependencies = [ "bytes", "ethereum-types", @@ -2617,8 +2616,8 @@ dependencies = [ [[package]] name = "ethrex-rpc" -version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" +version = "12.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=b112f94748a222e78b642406155674df9e180ee4#b112f94748a222e78b642406155674df9e180ee4" dependencies = [ "axum", "axum-extra", @@ -2656,8 +2655,8 @@ dependencies = [ [[package]] name = "ethrex-storage" -version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" +version = "12.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=b112f94748a222e78b642406155674df9e180ee4#b112f94748a222e78b642406155674df9e180ee4" dependencies = [ "anyhow", "bytes", @@ -2678,8 +2677,8 @@ dependencies = [ [[package]] name = "ethrex-trie" -version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" +version = "12.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=b112f94748a222e78b642406155674df9e180ee4#b112f94748a222e78b642406155674df9e180ee4" dependencies = [ "anyhow", "bytes", @@ -2697,8 +2696,8 @@ dependencies = [ [[package]] name = "ethrex-vm" -version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" +version = "12.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=b112f94748a222e78b642406155674df9e180ee4#b112f94748a222e78b642406155674df9e180ee4" dependencies = [ "bytes", "derive_more 1.0.0", diff --git a/Cargo.toml b/Cargo.toml index 341b6ab..e342346 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -91,12 +91,12 @@ stateless = { git = "https://github.com/paradigmxyz/stateless", rev = "e5480e71a tries = { git = "https://github.com/paradigmxyz/stateless", rev = "e5480e71a8031641ff471cad9dc482a7a14b32d5", default-features = false } # ethrex -ethrex-common = { git = "https://github.com/jsign/ethrex.git", rev = "15ce41750a715177aef9f23a1adcd502b2e26166", default-features = false } -ethrex-crypto = { git = "https://github.com/jsign/ethrex.git", rev = "15ce41750a715177aef9f23a1adcd502b2e26166", default-features = false } -ethrex-guest-program = { git = "https://github.com/jsign/ethrex.git", rev = "15ce41750a715177aef9f23a1adcd502b2e26166", default-features = false } -ethrex-rlp = { git = "https://github.com/jsign/ethrex.git", rev = "15ce41750a715177aef9f23a1adcd502b2e26166", default-features = false } -ethrex-rpc = { git = "https://github.com/jsign/ethrex.git", rev = "15ce41750a715177aef9f23a1adcd502b2e26166", default-features = false } -ethrex-vm = { git = "https://github.com/jsign/ethrex.git", rev = "15ce41750a715177aef9f23a1adcd502b2e26166", default-features = false } +ethrex-common = { git = "https://github.com/lambdaclass/ethrex.git", rev = "b112f94748a222e78b642406155674df9e180ee4", default-features = false } +ethrex-crypto = { git = "https://github.com/lambdaclass/ethrex.git", rev = "b112f94748a222e78b642406155674df9e180ee4", default-features = false } +ethrex-guest-program = { git = "https://github.com/lambdaclass/ethrex.git", rev = "b112f94748a222e78b642406155674df9e180ee4", default-features = false } +ethrex-rlp = { git = "https://github.com/lambdaclass/ethrex.git", rev = "b112f94748a222e78b642406155674df9e180ee4", default-features = false } +ethrex-rpc = { git = "https://github.com/lambdaclass/ethrex.git", rev = "b112f94748a222e78b642406155674df9e180ee4", default-features = false } +ethrex-vm = { git = "https://github.com/lambdaclass/ethrex.git", rev = "b112f94748a222e78b642406155674df9e180ee4", default-features = false } # ssz libssz = { version = "0.2.1", default-features = false, features = ["alloc"] } From 8a32ab0b7208faacb674f77c4f30c81332d87c1a Mon Sep 17 00:00:00 2001 From: Ignacio Hagopian Date: Thu, 14 May 2026 16:59:26 -0300 Subject: [PATCH 13/13] fetch all Signed-off-by: Ignacio Hagopian --- .../risc0/Cargo.lock | 35 +++++++++---------- bin/stateless-validator-ethrex/sp1/Cargo.lock | 33 +++++++++-------- .../zisk/Cargo.lock | 35 +++++++++---------- 3 files changed, 48 insertions(+), 55 deletions(-) diff --git a/bin/stateless-validator-ethrex/risc0/Cargo.lock b/bin/stateless-validator-ethrex/risc0/Cargo.lock index 9da9823..bbcaf42 100644 --- a/bin/stateless-validator-ethrex/risc0/Cargo.lock +++ b/bin/stateless-validator-ethrex/risc0/Cargo.lock @@ -967,8 +967,8 @@ dependencies = [ [[package]] name = "ethrex-common" -version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" +version = "12.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=b112f94748a222e78b642406155674df9e180ee4#b112f94748a222e78b642406155674df9e180ee4" dependencies = [ "bytes", "crc32fast", @@ -988,7 +988,6 @@ dependencies = [ "libssz-types 0.2.1 (git+https://github.com/lambdaclass/libssz?rev=7262a4f)", "lru", "once_cell", - "rayon", "rkyv", "rustc-hash", "serde", @@ -1000,8 +999,8 @@ dependencies = [ [[package]] name = "ethrex-crypto" -version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" +version = "12.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=b112f94748a222e78b642406155674df9e180ee4#b112f94748a222e78b642406155674df9e180ee4" dependencies = [ "ark-bn254", "ark-ec", @@ -1023,8 +1022,8 @@ dependencies = [ [[package]] name = "ethrex-guest-program" -version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" +version = "12.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=b112f94748a222e78b642406155674df9e180ee4#b112f94748a222e78b642406155674df9e180ee4" dependencies = [ "bytes", "ethereum-types", @@ -1048,8 +1047,8 @@ dependencies = [ [[package]] name = "ethrex-l2-common" -version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" +version = "12.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=b112f94748a222e78b642406155674df9e180ee4#b112f94748a222e78b642406155674df9e180ee4" dependencies = [ "bytes", "ethereum-types", @@ -1067,8 +1066,8 @@ dependencies = [ [[package]] name = "ethrex-levm" -version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" +version = "12.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=b112f94748a222e78b642406155674df9e180ee4#b112f94748a222e78b642406155674df9e180ee4" dependencies = [ "bytes", "derive_more 1.0.0", @@ -1076,7 +1075,6 @@ dependencies = [ "ethrex-crypto", "ethrex-rlp", "malachite", - "rayon", "rustc-hash", "serde", "strum", @@ -1085,8 +1083,8 @@ dependencies = [ [[package]] name = "ethrex-rlp" -version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" +version = "12.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=b112f94748a222e78b642406155674df9e180ee4#b112f94748a222e78b642406155674df9e180ee4" dependencies = [ "bytes", "ethereum-types", @@ -1095,8 +1093,8 @@ dependencies = [ [[package]] name = "ethrex-trie" -version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" +version = "12.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=b112f94748a222e78b642406155674df9e180ee4#b112f94748a222e78b642406155674df9e180ee4" dependencies = [ "anyhow", "bytes", @@ -1114,8 +1112,8 @@ dependencies = [ [[package]] name = "ethrex-vm" -version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" +version = "12.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=b112f94748a222e78b642406155674df9e180ee4#b112f94748a222e78b642406155674df9e180ee4" dependencies = [ "bytes", "derive_more 1.0.0", @@ -1124,7 +1122,6 @@ dependencies = [ "ethrex-crypto", "ethrex-levm", "ethrex-rlp", - "rayon", "rustc-hash", "serde", "thiserror", diff --git a/bin/stateless-validator-ethrex/sp1/Cargo.lock b/bin/stateless-validator-ethrex/sp1/Cargo.lock index a035291..5670534 100644 --- a/bin/stateless-validator-ethrex/sp1/Cargo.lock +++ b/bin/stateless-validator-ethrex/sp1/Cargo.lock @@ -911,8 +911,8 @@ dependencies = [ [[package]] name = "ethrex-common" -version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" +version = "12.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=b112f94748a222e78b642406155674df9e180ee4#b112f94748a222e78b642406155674df9e180ee4" dependencies = [ "bytes", "crc32fast", @@ -932,7 +932,6 @@ dependencies = [ "libssz-types 0.2.1 (git+https://github.com/lambdaclass/libssz?rev=7262a4f)", "lru", "once_cell", - "rayon", "rkyv", "rustc-hash", "secp256k1", @@ -945,8 +944,8 @@ dependencies = [ [[package]] name = "ethrex-crypto" -version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" +version = "12.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=b112f94748a222e78b642406155674df9e180ee4#b112f94748a222e78b642406155674df9e180ee4" dependencies = [ "ark-bn254", "ark-ec", @@ -969,8 +968,8 @@ dependencies = [ [[package]] name = "ethrex-guest-program" -version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" +version = "12.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=b112f94748a222e78b642406155674df9e180ee4#b112f94748a222e78b642406155674df9e180ee4" dependencies = [ "bytes", "ethereum-types", @@ -994,8 +993,8 @@ dependencies = [ [[package]] name = "ethrex-l2-common" -version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" +version = "12.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=b112f94748a222e78b642406155674df9e180ee4#b112f94748a222e78b642406155674df9e180ee4" dependencies = [ "bytes", "ethereum-types", @@ -1013,8 +1012,8 @@ dependencies = [ [[package]] name = "ethrex-levm" -version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" +version = "12.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=b112f94748a222e78b642406155674df9e180ee4#b112f94748a222e78b642406155674df9e180ee4" dependencies = [ "bytes", "derive_more", @@ -1031,8 +1030,8 @@ dependencies = [ [[package]] name = "ethrex-rlp" -version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" +version = "12.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=b112f94748a222e78b642406155674df9e180ee4#b112f94748a222e78b642406155674df9e180ee4" dependencies = [ "bytes", "ethereum-types", @@ -1041,8 +1040,8 @@ dependencies = [ [[package]] name = "ethrex-trie" -version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" +version = "12.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=b112f94748a222e78b642406155674df9e180ee4#b112f94748a222e78b642406155674df9e180ee4" dependencies = [ "anyhow", "bytes", @@ -1060,8 +1059,8 @@ dependencies = [ [[package]] name = "ethrex-vm" -version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" +version = "12.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=b112f94748a222e78b642406155674df9e180ee4#b112f94748a222e78b642406155674df9e180ee4" dependencies = [ "bytes", "derive_more", diff --git a/bin/stateless-validator-ethrex/zisk/Cargo.lock b/bin/stateless-validator-ethrex/zisk/Cargo.lock index f825d94..29482c2 100644 --- a/bin/stateless-validator-ethrex/zisk/Cargo.lock +++ b/bin/stateless-validator-ethrex/zisk/Cargo.lock @@ -734,8 +734,8 @@ dependencies = [ [[package]] name = "ethrex-common" -version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" +version = "12.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=b112f94748a222e78b642406155674df9e180ee4#b112f94748a222e78b642406155674df9e180ee4" dependencies = [ "bytes", "crc32fast", @@ -755,7 +755,6 @@ dependencies = [ "libssz-types 0.2.1 (git+https://github.com/lambdaclass/libssz?rev=7262a4f)", "lru", "once_cell", - "rayon", "rkyv", "rustc-hash", "serde", @@ -767,8 +766,8 @@ dependencies = [ [[package]] name = "ethrex-crypto" -version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" +version = "12.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=b112f94748a222e78b642406155674df9e180ee4#b112f94748a222e78b642406155674df9e180ee4" dependencies = [ "ark-bn254", "ark-ec", @@ -788,8 +787,8 @@ dependencies = [ [[package]] name = "ethrex-guest-program" -version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" +version = "12.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=b112f94748a222e78b642406155674df9e180ee4#b112f94748a222e78b642406155674df9e180ee4" dependencies = [ "bytes", "ethereum-types", @@ -814,8 +813,8 @@ dependencies = [ [[package]] name = "ethrex-l2-common" -version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" +version = "12.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=b112f94748a222e78b642406155674df9e180ee4#b112f94748a222e78b642406155674df9e180ee4" dependencies = [ "bytes", "ethereum-types", @@ -832,8 +831,8 @@ dependencies = [ [[package]] name = "ethrex-levm" -version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" +version = "12.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=b112f94748a222e78b642406155674df9e180ee4#b112f94748a222e78b642406155674df9e180ee4" dependencies = [ "bytes", "derive_more", @@ -841,7 +840,6 @@ dependencies = [ "ethrex-crypto", "ethrex-rlp", "malachite", - "rayon", "rustc-hash", "serde", "strum", @@ -850,8 +848,8 @@ dependencies = [ [[package]] name = "ethrex-rlp" -version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" +version = "12.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=b112f94748a222e78b642406155674df9e180ee4#b112f94748a222e78b642406155674df9e180ee4" dependencies = [ "bytes", "ethereum-types", @@ -860,8 +858,8 @@ dependencies = [ [[package]] name = "ethrex-trie" -version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" +version = "12.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=b112f94748a222e78b642406155674df9e180ee4#b112f94748a222e78b642406155674df9e180ee4" dependencies = [ "anyhow", "bytes", @@ -879,8 +877,8 @@ dependencies = [ [[package]] name = "ethrex-vm" -version = "10.0.0" -source = "git+https://github.com/jsign/ethrex.git?rev=15ce41750a715177aef9f23a1adcd502b2e26166#15ce41750a715177aef9f23a1adcd502b2e26166" +version = "12.0.0" +source = "git+https://github.com/lambdaclass/ethrex.git?rev=b112f94748a222e78b642406155674df9e180ee4#b112f94748a222e78b642406155674df9e180ee4" dependencies = [ "bytes", "derive_more", @@ -889,7 +887,6 @@ dependencies = [ "ethrex-crypto", "ethrex-levm", "ethrex-rlp", - "rayon", "rustc-hash", "serde", "thiserror",