From 94afa5d5640720a00e3c2bc24e688e9cde99658b Mon Sep 17 00:00:00 2001 From: x-senpai-x Date: Mon, 25 Aug 2025 00:11:27 +0530 Subject: [PATCH 1/7] feat: add process_epoch benchmark and upgrade RISC Zero to v3.0.1 --- Cargo.lock | 1410 ++++++++++++++++++++++++--------- Cargo.toml | 8 +- host/Cargo.toml | 2 +- host/Makefile | 19 +- host/src/bin/cli/operation.rs | 79 ++ host/src/bin/main.rs | 123 ++- lib/src/input.rs | 19 + methods/guest/Cargo.toml | 20 +- methods/guest/src/main.rs | 49 +- 9 files changed, 1323 insertions(+), 406 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index da94379..2292e2a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -13,9 +13,9 @@ dependencies = [ [[package]] name = "adler2" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" [[package]] name = "ahash" @@ -46,19 +46,20 @@ checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "alloy-consensus" -version = "1.0.9" +version = "1.0.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad451f9a70c341d951bca4e811d74dbe1e193897acd17e9dbac1353698cc430b" +checksum = "35f021a55afd68ff2364ccfddaa364fc9a38a72200cdc74fcfb8dc3231d38f2c" dependencies = [ "alloy-eips", "alloy-primitives", "alloy-rlp", "alloy-trie", + "alloy-tx-macros", "auto_impl", "derive_more", "either", "once_cell", - "thiserror 2.0.12", + "thiserror 2.0.16", ] [[package]] @@ -70,7 +71,7 @@ dependencies = [ "alloy-primitives", "alloy-rlp", "crc", - "thiserror 2.0.12", + "thiserror 2.0.16", ] [[package]] @@ -91,14 +92,14 @@ checksum = "9d4769c6ffddca380b0070d71c8b7f30bed375543fe76bb2f74ec0acf4b7cd16" dependencies = [ "alloy-primitives", "alloy-rlp", - "thiserror 2.0.12", + "thiserror 2.0.16", ] [[package]] name = "alloy-eips" -version = "1.0.9" +version = "1.0.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3056872f6da48046913e76edb5ddced272861f6032f09461aea1a2497be5ae5d" +checksum = "7473a19f02b25f8e1e8c69d35f02c07245694d11bd91bfe00e9190ac106b3838" dependencies = [ "alloy-eip2124", "alloy-eip2930", @@ -108,14 +109,14 @@ dependencies = [ "auto_impl", "derive_more", "either", - "sha2", + "sha2 0.10.9", ] [[package]] name = "alloy-primitives" -version = "1.2.0" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a326d47106039f38b811057215a92139f46eef7983a4b77b10930a0ea5685b1e" +checksum = "bc9485c56de23438127a731a6b4c87803d49faf1a7068dcd1d8768aca3a9edb9" dependencies = [ "alloy-rlp", "bytes", @@ -123,14 +124,14 @@ dependencies = [ "const-hex", "derive_more", "foldhash", - "hashbrown 0.15.3", - "indexmap", + "hashbrown 0.15.5", + "indexmap 2.11.0", "itoa", "k256", "keccak-asm", "paste", "proptest", - "rand 0.9.1", + "rand 0.9.2", "ruint", "rustc-hash", "serde", @@ -157,14 +158,14 @@ checksum = "64b728d511962dda67c1bc7ea7c03736ec275ed2cf4c35d9585298ac9ccf3b73" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.106", ] [[package]] name = "alloy-trie" -version = "0.8.1" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "983d99aa81f586cef9dae38443245e585840fcf0fc58b09aee0b1f27aed1d500" +checksum = "e3412d52bb97c6c6cc27ccc28d4e6e8cf605469101193b50b0bd5813b1f990b5" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -175,11 +176,39 @@ dependencies = [ "tracing", ] +[[package]] +name = "alloy-tx-macros" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72e29436068f836727d4e7c819ae6bf6f9c9e19a32e96fc23e814709a277f23a" +dependencies = [ + "alloy-primitives", + "darling", + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + [[package]] name = "anstream" -version = "0.6.19" +version = "0.6.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "301af1932e46185686725e0fad2f8f2aa7da69dd70bf6ecc44d6b703844a3933" +checksum = "3ae563653d1938f79b1ab1b5e668c87c76a9930414574a6583a7b7e11a8e6192" dependencies = [ "anstyle", "anstyle-parse", @@ -207,29 +236,29 @@ dependencies = [ [[package]] name = "anstyle-query" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c8bdeb6047d8983be085bab0ba1472e6dc604e7041dbf6fcd5e71523014fae9" +checksum = "9e231f6134f61b71076a3eab506c379d4f36122f2af15a9ff04415ea4c3339e2" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] name = "anstyle-wincon" -version = "3.0.9" +version = "3.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "403f75924867bb1033c59fbf0797484329750cfbe3c4325cd33127941fabc882" +checksum = "3e0633414522a32ffaac8ac6cc8f748e090c5717661fddeea04219e2344f5f2a" dependencies = [ "anstyle", "once_cell_polyfill", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] name = "anyhow" -version = "1.0.98" +version = "1.0.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487" +checksum = "b0674a1ddeecb70197781e945de4b3b8ffb61fa939a5597bcf48503737663100" [[package]] name = "ark-bn254" @@ -262,7 +291,7 @@ dependencies = [ "digest 0.10.7", "fnv", "merlin", - "sha2", + "sha2 0.10.9", ] [[package]] @@ -273,7 +302,7 @@ checksum = "e7e89fe77d1f0f4fe5b96dfc940923d88d17b6a773808124f21e764dfb063c6a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.106", ] [[package]] @@ -289,7 +318,7 @@ dependencies = [ "ark-std 0.5.0", "educe", "fnv", - "hashbrown 0.15.3", + "hashbrown 0.15.5", "itertools 0.13.0", "num-bigint", "num-integer", @@ -382,7 +411,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" dependencies = [ "quote", - "syn 2.0.101", + "syn 2.0.106", ] [[package]] @@ -420,7 +449,7 @@ dependencies = [ "num-traits", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.106", ] [[package]] @@ -450,7 +479,7 @@ dependencies = [ "ark-std 0.5.0", "educe", "fnv", - "hashbrown 0.15.3", + "hashbrown 0.15.5", ] [[package]] @@ -524,7 +553,7 @@ checksum = "213888f660fddcca0d257e88e54ac05bca01885f258ccdf695bafd77031bb69d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.106", ] [[package]] @@ -583,15 +612,21 @@ checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] name = "async-trait" -version = "0.1.88" +version = "0.1.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" +checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.106", ] +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + [[package]] name = "auto_impl" version = "1.3.0" @@ -600,14 +635,14 @@ checksum = "ffdcb70bdbc4d478427380519163274ac86e52916e10f0a8889adf0f96d3fee7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.106", ] [[package]] name = "autocfg" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "backtrace" @@ -674,9 +709,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.9.1" +version = "2.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" +checksum = "34efbcccd345379ca2868b2b2c9d3782e9cc58ba87bc7d79d5b53d9c9ae6f25d" [[package]] name = "bitvec" @@ -729,15 +764,15 @@ dependencies = [ [[package]] name = "bonsai-sdk" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bce8d6acc5286a16e94c29e9c885d1869358885e08a6feeb6bc54e36fe20055" +checksum = "21055e2f49cbbdbfe9f8f96d597c5527b0c6ab7933341fdc2f147180e48a988e" dependencies = [ "duplicate", "maybe-async", "reqwest", "serde", - "thiserror 1.0.69", + "thiserror 2.0.16", ] [[package]] @@ -760,14 +795,14 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.106", ] [[package]] name = "bumpalo" -version = "3.17.0" +version = "3.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" +checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" [[package]] name = "byte-slice-cast" @@ -777,9 +812,9 @@ checksum = "7575182f7272186991736b70173b0ea045398f984bf5ebbb3804736ce1330c9d" [[package]] name = "bytemuck" -version = "1.23.0" +version = "1.23.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9134a6ef01ce4b366b50689c94f82c14bc72bc5d0386829828a2e2752ef7958c" +checksum = "5c76a5792e44e4abe34d3abf15636779261d45a7450612059293d1d2cfc63422" dependencies = [ "bytemuck_derive", ] @@ -792,7 +827,7 @@ checksum = "3fa76293b4f7bb636ab88fd78228235b5248b4d05cc589aed610f954af5d7c7a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.106", ] [[package]] @@ -812,9 +847,9 @@ dependencies = [ [[package]] name = "camino" -version = "1.1.10" +version = "1.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0da45bc31171d8d6960122e222a67740df867c1dd53b4d51caa297084c185cab" +checksum = "5d07aa9a93b00c76f71bc35d598bed923f6d4f3a9ca5c24b7737ae1a292841c0" dependencies = [ "serde", ] @@ -839,23 +874,23 @@ dependencies = [ "semver 1.0.26", "serde", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.16", ] [[package]] name = "cc" -version = "1.2.25" +version = "1.2.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0fc897dc1e865cc67c0e05a836d9d3f1df3cbe442aa4a9473b18e12624a4951" +checksum = "42bc4aea80032b7bf409b0bc7ccad88853858911b7713a8062fdc0623867bedc" dependencies = [ "shlex", ] [[package]] name = "cfg-if" -version = "1.0.0" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +checksum = "2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9" [[package]] name = "cfg_aliases" @@ -863,11 +898,24 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" +[[package]] +name = "chrono" +version = "0.4.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "num-traits", + "serde", + "windows-link", +] + [[package]] name = "clap" -version = "4.5.39" +version = "4.5.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd60e63e9be68e5fb56422e397cf9baddded06dae1d2e523401542383bc72a9f" +checksum = "1fc0e74a703892159f5ae7d3aac52c8e6c392f5ae5f359c70b5881d60aaac318" dependencies = [ "clap_builder", "clap_derive", @@ -875,9 +923,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.39" +version = "4.5.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89cc6392a1f72bbeb820d71f32108f61fdaf18bc526e1d23954168a67759ef51" +checksum = "b3e7f4214277f3c7aa526a59dd3fbe306a370daee1f8b7b8c987069cd8e888a8" dependencies = [ "anstream", "anstyle", @@ -887,27 +935,30 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.32" +version = "4.5.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09176aae279615badda0765c0c0b3f6ed53f4709118af73cf4655d85d1530cd7" +checksum = "14cb31bb0a7d536caef2639baa7fad459e15c3144efefa6dbd1c84562c4739f6" dependencies = [ - "heck 0.5.0", + "heck", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.106", ] [[package]] name = "clap_lex" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" +checksum = "b94f61472cee1439c0b966b47e3aca9ae07e45d070759512cd390ea2bebc6675" [[package]] name = "cobs" -version = "0.2.3" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67ba02a97a2bd10f4b59b25c7973101c79642302776489e030cd13cdab09ed15" +checksum = "0fa961b519f0b462e3a3b4a34b64d119eeaca1d59af726fe450bbba07a9fc0a1" +dependencies = [ + "thiserror 2.0.16", +] [[package]] name = "colorchoice" @@ -915,6 +966,21 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" +[[package]] +name = "consensus_stf" +version = "0.1.0" +dependencies = [ + "ethereum_hashing 0.7.0 (git+https://github.com/ReamLabs/ethereum_hashing)", + "ethereum_ssz", + "ream-consensus-beacon", + "ream-lib", + "risc0-zkvm", + "sha2 0.10.8", + "ssz_types 0.11.0 (git+https://github.com/ReamLabs/ssz_types?branch=magic-extended-list)", + "tree_hash", + "tree_hash_derive", +] + [[package]] name = "consenzero-script" version = "0.1.0" @@ -925,7 +991,7 @@ dependencies = [ "ethereum_ssz", "hex", "methods", - "ream-consensus", + "ream-consensus-beacon", "ream-lib", "risc0-zkvm", "serde", @@ -937,9 +1003,9 @@ dependencies = [ [[package]] name = "const-hex" -version = "1.14.1" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83e22e0ed40b96a48d3db274f72fd365bd78f67af39b6bbd47e8a15e1c6207ff" +checksum = "dccd746bf9b1038c0507b7cec21eb2b11222db96a2902c96e8c185d6d20fb9c4" dependencies = [ "cfg-if", "cpufeatures", @@ -1036,9 +1102,9 @@ checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" [[package]] name = "crunchy" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" [[package]] name = "crypto-bigint" @@ -1083,7 +1149,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.101", + "syn 2.0.106", ] [[package]] @@ -1094,7 +1160,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core", "quote", - "syn 2.0.101", + "syn 2.0.106", ] [[package]] @@ -1104,9 +1170,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" dependencies = [ "const-oid", + "pem-rfc7468", "zeroize", ] +[[package]] +name = "deranged" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e" +dependencies = [ + "powerfmt", + "serde", +] + [[package]] name = "derivative" version = "2.2.0" @@ -1136,7 +1213,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.106", ] [[package]] @@ -1146,7 +1223,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" dependencies = [ "derive_builder_core", - "syn 2.0.101", + "syn 2.0.106", ] [[package]] @@ -1167,7 +1244,7 @@ dependencies = [ "convert_case", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.106", "unicode-xid", ] @@ -1198,7 +1275,16 @@ version = "5.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" dependencies = [ - "dirs-sys", + "dirs-sys 0.4.1", +] + +[[package]] +name = "dirs" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e" +dependencies = [ + "dirs-sys 0.5.0", ] [[package]] @@ -1209,10 +1295,22 @@ checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" dependencies = [ "libc", "option-ext", - "redox_users", + "redox_users 0.4.6", "windows-sys 0.48.0", ] +[[package]] +name = "dirs-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab" +dependencies = [ + "libc", + "option-ext", + "redox_users 0.5.2", + "windows-sys 0.60.2", +] + [[package]] name = "displaydoc" version = "0.2.5" @@ -1221,7 +1319,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.106", ] [[package]] @@ -1244,14 +1342,21 @@ checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" [[package]] name = "duplicate" -version = "1.0.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de78e66ac9061e030587b2a2e75cc88f22304913c907b11307bca737141230cb" +checksum = "97af9b5f014e228b33e77d75ee0e6e87960124f0f4b16337b586a6bec91867b1" dependencies = [ - "heck 0.4.1", - "proc-macro-error", + "heck", + "proc-macro2", + "proc-macro2-diagnostics", ] +[[package]] +name = "dyn-clone" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" + [[package]] name = "ecdsa" version = "0.16.9" @@ -1275,7 +1380,7 @@ dependencies = [ "enum-ordinalize", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.106", ] [[package]] @@ -1347,7 +1452,7 @@ checksum = "0d28318a75d4aead5c4db25382e8ef717932d0346600cacae6357eb5941bc5ff" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.106", ] [[package]] @@ -1358,20 +1463,30 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "errno" -version = "0.3.12" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cea14ef9355e3beab063703aa9dab15afd25f0667c341310c1e5274bb1d0da18" +checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.60.2", +] + +[[package]] +name = "ethereum_hashing" +version = "0.7.0" +source = "git+https://github.com/ReamLabs/ethereum_hashing.git?rev=c14a9ad96436e6b8b631faf49a3666e4558b71ae#c14a9ad96436e6b8b631faf49a3666e4558b71ae" +dependencies = [ + "ring", + "sha2 0.10.9", ] [[package]] name = "ethereum_hashing" version = "0.7.0" -source = "git+https://github.com/ReamLabs/ethereum_hashing#26e19aedff4d5bd5fd2c0923c7fbafdc8a8c0821" +source = "git+https://github.com/ReamLabs/ethereum_hashing#c14a9ad96436e6b8b631faf49a3666e4558b71ae" dependencies = [ - "sha2", + "ring", + "sha2 0.10.9", ] [[package]] @@ -1411,7 +1526,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.106", ] [[package]] @@ -1495,7 +1610,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.106", ] [[package]] @@ -1506,9 +1621,9 @@ checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" [[package]] name = "form_urlencoded" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" dependencies = [ "percent-encoding", ] @@ -1549,7 +1664,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.106", ] [[package]] @@ -1601,7 +1716,7 @@ dependencies = [ "cfg-if", "js-sys", "libc", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi 0.11.1+wasi-snapshot-preview1", "wasm-bindgen", ] @@ -1636,6 +1751,12 @@ dependencies = [ "subtle", ] +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + [[package]] name = "hashbrown" version = "0.14.5" @@ -1647,9 +1768,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.15.3" +version = "0.15.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84b26c544d002229e640969970a2e74021aadf6e2f96372b9c58eff97de08eb3" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" dependencies = [ "allocator-api2", "foldhash", @@ -1666,10 +1787,13 @@ dependencies = [ ] [[package]] -name = "heck" -version = "0.4.1" +name = "hashlink" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" +checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" +dependencies = [ + "hashbrown 0.15.5", +] [[package]] name = "heck" @@ -1743,18 +1867,20 @@ checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" [[package]] name = "hyper" -version = "1.6.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" +checksum = "eb3aa54a13a0dfe7fbe3a59e0c76093041720fdc77b110cc0fc260fafb4dc51e" dependencies = [ + "atomic-waker", "bytes", "futures-channel", - "futures-util", + "futures-core", "http", "http-body", "httparse", "itoa", "pin-project-lite", + "pin-utils", "smallvec", "tokio", "want", @@ -1762,9 +1888,9 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.27.6" +version = "0.27.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03a01595e11bdcec50946522c32dde3fc6914743000a68b93000965f2f02406d" +checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" dependencies = [ "http", "hyper", @@ -1779,9 +1905,9 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.14" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc2fdfdbff08affe55bb779f33b053aa1fe5dd5b54c257343c17edfa55711bdb" +checksum = "8d9b05277c7e8da2c93a568989bb6207bef0112e8d17df7a6eda4a3cf143bc5e" dependencies = [ "base64", "bytes", @@ -1795,12 +1921,36 @@ dependencies = [ "libc", "percent-encoding", "pin-project-lite", - "socket2", + "socket2 0.6.0", "tokio", "tower-service", "tracing", ] +[[package]] +name = "iana-time-zone" +version = "0.1.63" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0c919e5debc312ad217002b8048a17b7d83f80703865bbfcfebb0458b0b27d8" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "log", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + [[package]] name = "icu_collections" version = "2.0.0" @@ -1895,9 +2045,9 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" -version = "1.0.3" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" dependencies = [ "idna_adapter", "smallvec", @@ -1931,7 +2081,7 @@ checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.106", ] [[package]] @@ -1942,15 +2092,37 @@ checksum = "4ee796ad498c8d9a1d68e477df8f754ed784ef875de1414ebdaf169f70a6a784" [[package]] name = "indexmap" -version = "2.9.0" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", + "serde", +] + +[[package]] +name = "indexmap" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" +checksum = "f2481980430f9f78649238835720ddccc57e52df14ffce1c6f37391d61b563e9" dependencies = [ "equivalent", - "hashbrown 0.15.3", + "hashbrown 0.15.5", "serde", ] +[[package]] +name = "io-uring" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "046fa2d4d00aea763528b4950358d0ead425372445dc8ff86312b3c69ff7727b" +dependencies = [ + "bitflags 2.9.3", + "cfg-if", + "libc", +] + [[package]] name = "ipnet" version = "2.11.0" @@ -2026,7 +2198,7 @@ dependencies = [ "ecdsa", "elliptic-curve", "once_cell", - "sha2", + "sha2 0.10.9", ] [[package]] @@ -2068,7 +2240,7 @@ dependencies = [ "proc-macro2", "quote", "regex", - "syn 2.0.101", + "syn 2.0.106", ] [[package]] @@ -2082,9 +2254,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.172" +version = "0.2.175" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa" +checksum = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543" [[package]] name = "libm" @@ -2094,11 +2266,11 @@ checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" [[package]] name = "libredox" -version = "0.1.3" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +checksum = "391290121bad3d37fbddad76d8f5d1c1c314cfc646d143d7e07a3086ddff0ce3" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.3", "libc", ] @@ -2152,14 +2324,14 @@ checksum = "5cf92c10c7e361d6b99666ec1c6f9805b0bea2c3bd8c78dc6fe98ac5bd78db11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.106", ] [[package]] name = "memchr" -version = "2.7.4" +version = "2.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" +checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" [[package]] name = "merlin" @@ -2179,7 +2351,7 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ecfd3296f8c56b7c1f6fbac3c71cefa9d78ce009850c45000015f206dc7fa21" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.3", "block", "core-graphics-types", "foreign-types", @@ -2192,20 +2364,14 @@ dependencies = [ name = "methods" version = "0.1.0" dependencies = [ - "risc0-build", + "risc0-build 2.3.1", ] -[[package]] -name = "mime" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" - [[package]] name = "miniz_oxide" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3be647b768db090acb35d5ec5db2b0e1f1de11133ca123b9eacf5137868f892a" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" dependencies = [ "adler2", ] @@ -2217,7 +2383,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" dependencies = [ "libc", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi 0.11.1+wasi-snapshot-preview1", "windows-sys 0.59.0", ] @@ -2247,6 +2413,29 @@ dependencies = [ "num-traits", ] +[[package]] +name = "num-bigint-dig" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc84195820f291c7697304f3cbdadd1cb7199c0efc917ff5eafd71225c136151" +dependencies = [ + "byteorder", + "lazy_static", + "libm", + "num-integer", + "num-iter", + "num-traits", + "rand 0.8.5", + "smallvec", + "zeroize", +] + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + [[package]] name = "num-integer" version = "0.1.46" @@ -2256,6 +2445,17 @@ dependencies = [ "num-traits", ] +[[package]] +name = "num-iter" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + [[package]] name = "num-traits" version = "0.2.19" @@ -2268,11 +2468,12 @@ dependencies = [ [[package]] name = "nybbles" -version = "0.3.4" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8983bb634df7248924ee0c4c3a749609b5abcb082c28fffe3254b3eb3602b307" +checksum = "63cb50036b1ad148038105af40aaa70ff24d8a14fbc44ae5c914e1348533d12e" dependencies = [ - "const-hex", + "cfg-if", + "ruint", "smallvec", ] @@ -2352,7 +2553,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.106", ] [[package]] @@ -2361,20 +2562,29 @@ version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" +[[package]] +name = "pem-rfc7468" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" +dependencies = [ + "base64ct", +] + [[package]] name = "percent-encoding" -version = "2.3.1" +version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" [[package]] name = "pest" -version = "2.8.0" +version = "2.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "198db74531d58c70a361c42201efde7e2591e976d518caf7662a47dc5720e7b6" +checksum = "1db05f56d34358a8b1066f67cbb203ee3e7ed2ba674a6263a1d5ec6db2204323" dependencies = [ "memchr", - "thiserror 2.0.12", + "thiserror 2.0.16", "ucd-trie", ] @@ -2390,6 +2600,17 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +[[package]] +name = "pkcs1" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f" +dependencies = [ + "der", + "pkcs8", + "spki", +] + [[package]] name = "pkcs8" version = "0.10.2" @@ -2402,9 +2623,9 @@ dependencies = [ [[package]] name = "postcard" -version = "1.1.1" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "170a2601f67cc9dba8edd8c4870b15f71a6a2dc196daec8c83f72b59dff628a8" +checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" dependencies = [ "cobs", "embedded-io 0.4.0", @@ -2421,6 +2642,12 @@ dependencies = [ "zerovec", ] +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + [[package]] name = "ppv-lite86" version = "0.2.21" @@ -2451,51 +2678,40 @@ dependencies = [ ] [[package]] -name = "proc-macro-error" -version = "1.0.4" +name = "proc-macro2" +version = "1.0.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de" dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "syn 1.0.109", - "version_check", + "unicode-ident", ] [[package]] -name = "proc-macro-error-attr" -version = "1.0.4" +name = "proc-macro2-diagnostics" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" dependencies = [ "proc-macro2", "quote", + "syn 2.0.106", "version_check", -] - -[[package]] -name = "proc-macro2" -version = "1.0.95" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" -dependencies = [ - "unicode-ident", + "yansi", ] [[package]] name = "proptest" -version = "1.6.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14cae93065090804185d3b75f0bf93b8eeda30c7a9b4a33d3bdb3988d6229e50" +checksum = "6fcdab19deb5195a31cf7726a210015ff1496ba1464fd42cb4f537b8b01b471f" dependencies = [ "bit-set", "bit-vec", - "bitflags 2.9.1", + "bitflags 2.9.3", "lazy_static", "num-traits", - "rand 0.8.5", - "rand_chacha 0.3.1", + "rand 0.9.2", + "rand_chacha 0.9.0", "rand_xorshift", "regex-syntax 0.8.5", "rusty-fork", @@ -2523,7 +2739,7 @@ dependencies = [ "itertools 0.14.0", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.106", ] [[package]] @@ -2545,8 +2761,8 @@ dependencies = [ "quinn-udp", "rustc-hash", "rustls", - "socket2", - "thiserror 2.0.12", + "socket2 0.5.10", + "thiserror 2.0.16", "tokio", "tracing", "web-time", @@ -2561,13 +2777,13 @@ dependencies = [ "bytes", "getrandom 0.3.3", "lru-slab", - "rand 0.9.1", + "rand 0.9.2", "ring", "rustc-hash", "rustls", "rustls-pki-types", "slab", - "thiserror 2.0.12", + "thiserror 2.0.16", "tinyvec", "tracing", "web-time", @@ -2575,16 +2791,16 @@ dependencies = [ [[package]] name = "quinn-udp" -version = "0.5.12" +version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee4e529991f949c5e25755532370b8af5d114acae52326361d68d47af64aa842" +checksum = "fcebb1209ee276352ef14ff8732e24cc2b02bbac986cd74a4c81bcb2f9881970" dependencies = [ "cfg_aliases", "libc", "once_cell", - "socket2", + "socket2 0.5.10", "tracing", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -2598,9 +2814,9 @@ dependencies = [ [[package]] name = "r-efi" -version = "5.2.0" +version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" [[package]] name = "radium" @@ -2621,9 +2837,9 @@ dependencies = [ [[package]] name = "rand" -version = "0.9.1" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" dependencies = [ "rand_chacha 0.9.0", "rand_core 0.9.3", @@ -2671,17 +2887,17 @@ dependencies = [ [[package]] name = "rand_xorshift" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" +checksum = "513962919efc330f829edb2535844d1b912b0fbe2ca165d613e4e8788bb05a5a" dependencies = [ - "rand_core 0.6.4", + "rand_core 0.9.3", ] [[package]] name = "ream-bls" version = "0.1.0" -source = "git+https://github.com/ReamLabs/ream.git#2759da1c2746bfbdeaad763fcc362c6236d7f43f" +source = "git+https://github.com/ReamLabs/ream.git#6300e85ca4f6dd920e5d9b5320914c5bc9b5e85c" dependencies = [ "alloy-primitives", "anyhow", @@ -2690,36 +2906,62 @@ dependencies = [ "ethereum_ssz_derive", "group", "serde", - "sha2", - "ssz_types", - "thiserror 2.0.12", + "sha2 0.10.9", + "ssz_types 0.11.0 (git+https://github.com/ReamLabs/ssz_types?branch=removable-variable-list)", + "thiserror 2.0.16", "tree_hash", "tree_hash_derive", ] [[package]] -name = "ream-consensus" +name = "ream-consensus-beacon" version = "0.1.0" -source = "git+https://github.com/ReamLabs/ream.git#2759da1c2746bfbdeaad763fcc362c6236d7f43f" +source = "git+https://github.com/ReamLabs/ream.git#6300e85ca4f6dd920e5d9b5320914c5bc9b5e85c" dependencies = [ "alloy-consensus", "alloy-primitives", "alloy-rlp", "anyhow", "async-trait", - "ethereum_hashing", + "ethereum_hashing 0.7.0 (git+https://github.com/ReamLabs/ethereum_hashing.git?rev=c14a9ad96436e6b8b631faf49a3666e4558b71ae)", "ethereum_serde_utils", "ethereum_ssz", "ethereum_ssz_derive", "itertools 0.14.0", "ream-bls", + "ream-consensus-misc", "ream-merkle", + "ream-network-spec", "serde", "serde_json", "serde_yaml", - "sha2", - "ssz_types", - "thiserror 2.0.12", + "sha2 0.10.9", + "snap", + "ssz_types 0.11.0 (git+https://github.com/ReamLabs/ssz_types?branch=removable-variable-list)", + "thiserror 2.0.16", + "tracing", + "tree_hash", + "tree_hash_derive", +] + +[[package]] +name = "ream-consensus-misc" +version = "0.1.0" +source = "git+https://github.com/ReamLabs/ream.git#6300e85ca4f6dd920e5d9b5320914c5bc9b5e85c" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "anyhow", + "ethereum_hashing 0.7.0 (git+https://github.com/ReamLabs/ethereum_hashing.git?rev=c14a9ad96436e6b8b631faf49a3666e4558b71ae)", + "ethereum_serde_utils", + "ethereum_ssz", + "ethereum_ssz_derive", + "ream-bls", + "serde", + "serde_json", + "sha2 0.10.9", + "ssz_types 0.11.0 (git+https://github.com/ReamLabs/ssz_types?branch=removable-variable-list)", + "thiserror 2.0.16", "tree_hash", "tree_hash_derive", ] @@ -2732,10 +2974,10 @@ dependencies = [ "anyhow", "ethereum_ssz", "ethereum_ssz_derive", - "ream-consensus", + "ream-consensus-beacon", "serde", "snap", - "ssz_types", + "ssz_types 0.11.0 (git+https://github.com/ReamLabs/ssz_types?branch=magic-extended-list)", "tracing", "tree_hash", "tree_hash_derive", @@ -2744,12 +2986,25 @@ dependencies = [ [[package]] name = "ream-merkle" version = "0.1.0" -source = "git+https://github.com/ReamLabs/ream.git#2759da1c2746bfbdeaad763fcc362c6236d7f43f" +source = "git+https://github.com/ReamLabs/ream.git#6300e85ca4f6dd920e5d9b5320914c5bc9b5e85c" +dependencies = [ + "alloy-primitives", + "anyhow", + "ethereum_hashing 0.7.0 (git+https://github.com/ReamLabs/ethereum_hashing.git?rev=c14a9ad96436e6b8b631faf49a3666e4558b71ae)", + "serde", +] + +[[package]] +name = "ream-network-spec" +version = "0.1.0" +source = "git+https://github.com/ReamLabs/ream.git#6300e85ca4f6dd920e5d9b5320914c5bc9b5e85c" dependencies = [ "alloy-primitives", "anyhow", - "ethereum_hashing", + "ethereum_serde_utils", + "ream-consensus-misc", "serde", + "serde_yaml", ] [[package]] @@ -2763,6 +3018,37 @@ dependencies = [ "thiserror 1.0.69", ] +[[package]] +name = "redox_users" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" +dependencies = [ + "getrandom 0.2.16", + "libredox", + "thiserror 2.0.16", +] + +[[package]] +name = "ref-cast" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a0ae411dbe946a674d89546582cea4ba2bb8defac896622d6496f14c23ba5cf" +dependencies = [ + "ref-cast-impl", +] + +[[package]] +name = "ref-cast-impl" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1165225c21bff1f3bbce98f5a1f889949bc902d3575308cc7b0de30b4f6d27c7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + [[package]] name = "regex" version = "1.11.1" @@ -2809,9 +3095,9 @@ checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "reqwest" -version = "0.12.19" +version = "0.12.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2f8e5513d63f2e5b386eb5106dc67eaf3f84e95258e210489136b8b92ad6119" +checksum = "d429f34c8092b2d42c7c93cec323bb4adeb7c67698f70839adec842ec10c7ceb" dependencies = [ "base64", "bytes", @@ -2824,11 +3110,8 @@ dependencies = [ "hyper", "hyper-rustls", "hyper-util", - "ipnet", "js-sys", "log", - "mime", - "once_cell", "percent-encoding", "pin-project-lite", "quinn", @@ -2878,9 +3161,9 @@ dependencies = [ [[package]] name = "risc0-binfmt" -version = "2.0.1" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4fe7599ac55ad77515608ec42a9727001559fe4f579c533cb7c973b54800c05" +checksum = "62eb7025356a233c1bc267c458a2ce56fcfc89b136d813c8a77be14ef1eaf2b1" dependencies = [ "anyhow", "borsh", @@ -2888,30 +3171,76 @@ dependencies = [ "elf", "lazy_static", "postcard", - "risc0-zkp", + "risc0-zkp 2.0.2", "risc0-zkvm-platform", "semver 1.0.26", "serde", "tracing", ] +[[package]] +name = "risc0-binfmt" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2af322c052ae9973054f67434bc953eae44dbac68054d304b46848634d2a45d" +dependencies = [ + "anyhow", + "borsh", + "bytemuck", + "derive_more", + "elf", + "lazy_static", + "postcard", + "rand 0.9.2", + "risc0-zkp 3.0.1", + "risc0-zkvm-platform", + "ruint", + "semver 1.0.26", + "serde", + "tracing", +] + [[package]] name = "risc0-build" -version = "2.1.1" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62ffc0f135e6c1e9851e7e19438d03ff41a9d49199ee4f6c17b8bb30b4f83910" +dependencies = [ + "anyhow", + "cargo_metadata", + "derive_builder", + "dirs 5.0.1", + "docker-generate", + "hex", + "risc0-binfmt 2.0.2", + "risc0-zkos-v1compat", + "risc0-zkp 2.0.2", + "risc0-zkvm-platform", + "rzup 0.4.1", + "semver 1.0.26", + "serde", + "serde_json", + "stability", + "tempfile", +] + +[[package]] +name = "risc0-build" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31d104165340cba919a3dac26c4be7da04b20b941601a7ad50c04834c4d26de5" +checksum = "b042a8a6fdd02793c0acb526fbd3f0d92abe664f1158be38d45a92def57385b2" dependencies = [ "anyhow", "cargo_metadata", "derive_builder", - "dirs", + "dirs 6.0.0", "docker-generate", "hex", - "risc0-binfmt", + "risc0-binfmt 3.0.1", "risc0-zkos-v1compat", - "risc0-zkp", + "risc0-zkp 3.0.1", "risc0-zkvm-platform", - "rzup", + "rzup 0.5.0", "semver 1.0.26", "serde", "serde_json", @@ -2921,49 +3250,49 @@ dependencies = [ [[package]] name = "risc0-circuit-keccak" -version = "2.0.1" +version = "4.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cd8acfc84307ed1be64cf9fefc390963fc22b2865d027f03405977a0cfa9747" +checksum = "966ba960d718123e16c603d6919a0c5d7cd2f872d428639ab5650108520f133a" dependencies = [ "anyhow", "bytemuck", "paste", - "risc0-binfmt", + "risc0-binfmt 3.0.1", "risc0-circuit-recursion", - "risc0-core", - "risc0-zkp", + "risc0-core 3.0.0", + "risc0-zkp 3.0.1", "tracing", ] [[package]] name = "risc0-circuit-recursion" -version = "2.0.1" +version = "4.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdd1514e94440e2da301f48d345e1937b315147f58c5dc4992feb045324651d" +checksum = "30f6afac63cfd291aaa7f40edf976db5452698e66cd79f16ccbf7c0eb5a5d94e" dependencies = [ "anyhow", "bytemuck", "hex", "metal", - "risc0-core", - "risc0-zkp", + "risc0-core 3.0.0", + "risc0-zkp 3.0.1", "tracing", ] [[package]] name = "risc0-circuit-rv32im" -version = "2.0.3" +version = "4.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23f6ed144d8b8f93c4a6096e3dd90f9dcbd91eff83eae690a72fd6e640760b94" +checksum = "8fdd0865593941a6800c65a7c3b48be8700f73eb597681f6f594c7465839ce8a" dependencies = [ "anyhow", "bit-vec", "bytemuck", "derive_more", "paste", - "risc0-binfmt", - "risc0-core", - "risc0-zkp", + "risc0-binfmt 3.0.1", + "risc0-core 3.0.0", + "risc0-zkp 3.0.1", "serde", "tracing", ] @@ -2979,32 +3308,42 @@ dependencies = [ "rand_core 0.6.4", ] +[[package]] +name = "risc0-core" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80f2723fedace48c6c5a505bd8f97ac4e1712bc4cb769083e10536d862b66987" +dependencies = [ + "bytemuck", + "rand_core 0.9.3", +] + [[package]] name = "risc0-groth16" -version = "2.0.1" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b31cb7b2a46f0cdaf71803ea7e0389af9f5bc1aea2531106f2972b241f26e98" +checksum = "b68a622c69d0b97f511ee43db1d7f7f00b4dacead9c8aceae03fc5383f4764c1" dependencies = [ "anyhow", "ark-bn254", "ark-ec", + "ark-ff 0.5.0", "ark-groth16", "ark-serialize 0.5.0", "bytemuck", "hex", "num-bigint", "num-traits", - "risc0-binfmt", - "risc0-zkp", + "risc0-binfmt 3.0.1", + "risc0-zkp 3.0.1", "serde", - "stability", ] [[package]] name = "risc0-zkos-v1compat" -version = "2.0.1" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f76c479b69d1987cb54ac72dcc017197296fdcd6daf78fafc10cbbd3a167a7de" +checksum = "328c9f0ec5f6eb8b7624347b5dcf82729f304adbc364399825f3ab6f8588189c" dependencies = [ "include_bytes_aligned", "no_std_strings", @@ -3012,9 +3351,9 @@ dependencies = [ [[package]] name = "risc0-zkp" -version = "2.0.1" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa210a232361fd671b30918469856b64d715f2564956d0a5df97ab6cb116d28b" +checksum = "a287e9cd6d7b3b38eeb49c62090c46a1935922309fbd997a9143ed8c43c8f3cb" dependencies = [ "anyhow", "blake2", @@ -3027,19 +3366,44 @@ dependencies = [ "metal", "paste", "rand_core 0.6.4", - "risc0-core", + "risc0-core 2.0.0", "risc0-zkvm-platform", "serde", - "sha2", + "sha2 0.10.9", + "stability", + "tracing", +] + +[[package]] +name = "risc0-zkp" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c246f34b86a165308e37a064afa86e66ee7b8525f02bcf03f2124aaeedba04f" +dependencies = [ + "anyhow", + "blake2", + "borsh", + "bytemuck", + "cfg-if", + "digest 0.10.7", + "hex", + "hex-literal", + "metal", + "paste", + "rand_core 0.9.3", + "risc0-core 3.0.0", + "risc0-zkvm-platform", + "serde", + "sha2 0.10.9", "stability", "tracing", ] [[package]] name = "risc0-zkvm" -version = "2.0.2" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a049319790277845335445b549d49e66341f4a7ffba7f7aaa1e77e2fc4a9c19" +checksum = "0fdf8d11f9e61cfd3e577fb6e6e11cc34ca247831c2555ee0a6a53deba9702d2" dependencies = [ "anyhow", "bincode", @@ -3048,25 +3412,24 @@ dependencies = [ "bytemuck", "bytes", "derive_more", - "getrandom 0.2.16", "hex", "lazy-regex", "prost", - "risc0-binfmt", - "risc0-build", + "risc0-binfmt 3.0.1", + "risc0-build 3.0.1", "risc0-circuit-keccak", "risc0-circuit-recursion", "risc0-circuit-rv32im", - "risc0-core", + "risc0-core 3.0.0", "risc0-groth16", "risc0-zkos-v1compat", - "risc0-zkp", + "risc0-zkp 3.0.1", "risc0-zkvm-platform", "rrs-lib", - "rzup", + "rzup 0.5.0", "semver 1.0.26", "serde", - "sha2", + "sha2 0.10.9", "stability", "tempfile", "tracing", @@ -3074,9 +3437,9 @@ dependencies = [ [[package]] name = "risc0-zkvm-platform" -version = "2.0.2" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e4de2938eaf24892ef927d9cef6e4acb6a19ce01c017cd498533896f633f332" +checksum = "06fc0e464f4ac44c3f1fd17b479e09e3ccbd1c40219837d750580b03030dca60" dependencies = [ "bytemuck", "cfg-if", @@ -3106,15 +3469,36 @@ dependencies = [ "paste", ] +[[package]] +name = "rsa" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78928ac1ed176a5ca1d17e578a1825f3d81ca54cf41053a592584b020cfd691b" +dependencies = [ + "const-oid", + "digest 0.10.7", + "num-bigint-dig", + "num-integer", + "num-traits", + "pkcs1", + "pkcs8", + "rand_core 0.6.4", + "signature", + "spki", + "subtle", + "zeroize", +] + [[package]] name = "ruint" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11256b5fe8c68f56ac6f39ef0720e592f33d2367a4782740d9c9142e889c7fb4" +checksum = "9ecb38f82477f20c5c3d62ef52d7c4e536e38ea9b73fb570a20c5cae0e14bcf6" dependencies = [ "alloy-rlp", "ark-ff 0.3.0", "ark-ff 0.4.2", + "borsh", "bytes", "fastrlp 0.3.1", "fastrlp 0.4.0", @@ -3125,7 +3509,7 @@ dependencies = [ "primitive-types", "proptest", "rand 0.8.5", - "rand 0.9.1", + "rand 0.9.2", "rlp", "ruint-macro", "serde", @@ -3141,9 +3525,9 @@ checksum = "48fd7bd8a6377e15ad9d42a8ec25371b94ddc67abe7c8b9127bec79bebaaae18" [[package]] name = "rustc-demangle" -version = "0.1.24" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" +checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace" [[package]] name = "rustc-hash" @@ -3177,22 +3561,22 @@ dependencies = [ [[package]] name = "rustix" -version = "1.0.7" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" +checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.3", "errno", "libc", "linux-raw-sys", - "windows-sys 0.52.0", + "windows-sys 0.60.2", ] [[package]] name = "rustls" -version = "0.23.27" +version = "0.23.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "730944ca083c1c233a75c09f199e973ca499344a2b7ba9e755c457e86fb4a321" +checksum = "c0ebcbd2f03de0fc1122ad9bb24b127a5a6cd51d72604a3f3c50ac459762b6cc" dependencies = [ "once_cell", "ring", @@ -3214,9 +3598,9 @@ dependencies = [ [[package]] name = "rustls-webpki" -version = "0.103.3" +version = "0.103.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4a72fe2bcf7a6ac6fd7d0b9e5cb68aeb7d4c0a0271730218b3e92d43b4eb435" +checksum = "0a17884ae0c1b773f1ccd2bd4a8c72f16da897310a98b0e84bf349ad5ead92fc" dependencies = [ "ring", "rustls-pki-types", @@ -3225,9 +3609,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.21" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" [[package]] name = "rusty-fork" @@ -3255,11 +3639,54 @@ checksum = "400558bf12d4292a7804093b60a437ba8b0219ea7d53716b2c010a0d31e5f4a8" dependencies = [ "semver 1.0.26", "serde", - "strum", + "strum 0.26.3", "tempfile", - "thiserror 2.0.12", + "thiserror 2.0.16", "toml", - "yaml-rust2", + "yaml-rust2 0.9.0", +] + +[[package]] +name = "rzup" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76c6dfdbd72b2b0a537ad1e6256a3ce493ac87b9e89815465e393ee6595968e2" +dependencies = [ + "hex", + "rsa", + "semver 1.0.26", + "serde", + "serde_with", + "sha2 0.10.9", + "strum 0.27.2", + "tempfile", + "thiserror 2.0.16", + "toml", + "yaml-rust2 0.10.3", +] + +[[package]] +name = "schemars" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "schemars" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82d20c4491bc164fa2f6c5d44565947a52ad80b9505d8e36f8d54c27c739fcd0" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", ] [[package]] @@ -3320,14 +3747,14 @@ checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.106", ] [[package]] name = "serde_json" -version = "1.0.140" +version = "1.0.143" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" +checksum = "d401abef1d108fbd9cbaebc3e46611f4b1021f714a0597a71f41ee463f5f4a5a" dependencies = [ "itoa", "memchr", @@ -3337,9 +3764,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "0.6.8" +version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" +checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" dependencies = [ "serde", ] @@ -3356,19 +3783,61 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_with" +version = "3.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2c45cd61fefa9db6f254525d46e392b852e0e61d9a1fd36e5bd183450a556d5" +dependencies = [ + "base64", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.11.0", + "schemars 0.9.0", + "schemars 1.0.4", + "serde", + "serde_derive", + "serde_json", + "serde_with_macros", + "time", +] + +[[package]] +name = "serde_with_macros" +version = "3.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de90945e6565ce0d9a25098082ed4ee4002e047cb59892c318d66821e14bb30f" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.106", +] + [[package]] name = "serde_yaml" version = "0.9.34+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" dependencies = [ - "indexmap", + "indexmap 2.11.0", "itoa", "ryu", "serde", "unsafe-libyaml", ] +[[package]] +name = "sha2" +version = "0.10.8" +source = "git+https://github.com/risc0/RustCrypto-hashes?tag=sha2-v0.10.8-risczero.0#244dc3b08788f7a4ccce14c66896ae3b4f24c166" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + [[package]] name = "sha2" version = "0.10.9" @@ -3427,18 +3896,15 @@ dependencies = [ [[package]] name = "slab" -version = "0.4.9" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" -dependencies = [ - "autocfg", -] +checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" [[package]] name = "smallvec" -version = "1.15.0" +version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8917285742e9f3e1683f0a9c4e6b57960b7314d0b08d30d1ecd426713ee2eee9" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" [[package]] name = "snap" @@ -3456,6 +3922,16 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "socket2" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + [[package]] name = "spin" version = "0.9.8" @@ -3477,7 +3953,22 @@ name = "ssz_types" version = "0.11.0" source = "git+https://github.com/ReamLabs/ssz_types?branch=magic-extended-list#846f16039c94c43e4cd2060c7479e27d67b73280" dependencies = [ - "ethereum_hashing", + "ethereum_hashing 0.7.0 (git+https://github.com/ReamLabs/ethereum_hashing)", + "ethereum_serde_utils", + "ethereum_ssz", + "itertools 0.13.0", + "serde", + "serde_derive", + "smallvec", + "tree_hash", + "typenum", +] + +[[package]] +name = "ssz_types" +version = "0.11.0" +source = "git+https://github.com/ReamLabs/ssz_types?branch=removable-variable-list#01de4ea4385064ca3985bfc3ab24e825f107c64c" +dependencies = [ "ethereum_serde_utils", "ethereum_ssz", "itertools 0.13.0", @@ -3495,7 +3986,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d904e7009df136af5297832a3ace3370cd14ff1546a232f4f185036c2736fcac" dependencies = [ "quote", - "syn 2.0.101", + "syn 2.0.106", ] [[package]] @@ -3522,7 +4013,16 @@ version = "0.26.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" dependencies = [ - "strum_macros", + "strum_macros 0.26.4", +] + +[[package]] +name = "strum" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf" +dependencies = [ + "strum_macros 0.27.2", ] [[package]] @@ -3531,11 +4031,23 @@ version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" dependencies = [ - "heck 0.5.0", + "heck", "proc-macro2", "quote", "rustversion", - "syn 2.0.101", + "syn 2.0.106", +] + +[[package]] +name = "strum_macros" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 2.0.106", ] [[package]] @@ -3557,9 +4069,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.101" +version = "2.0.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce2b7fc941b3a24138a0a7cf8e858bfc6a992e7978a068a5c760deb0ed43caf" +checksum = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6" dependencies = [ "proc-macro2", "quote", @@ -3583,7 +4095,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.106", ] [[package]] @@ -3594,15 +4106,15 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.20.0" +version = "3.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" +checksum = "15b61f8f20e3a6f7e0649d825294eaf317edce30f82cf6026e7e4cb9222a7d1e" dependencies = [ "fastrand", "getrandom 0.3.3", "once_cell", "rustix", - "windows-sys 0.52.0", + "windows-sys 0.60.2", ] [[package]] @@ -3616,11 +4128,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.12" +version = "2.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" +checksum = "3467d614147380f2e4e374161426ff399c91084acd2363eaf549172b3d5e60c0" dependencies = [ - "thiserror-impl 2.0.12", + "thiserror-impl 2.0.16", ] [[package]] @@ -3631,28 +4143,58 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.106", ] [[package]] name = "thiserror-impl" -version = "2.0.12" +version = "2.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" +checksum = "6c5e1be1c48b9172ee610da68fd9cd2770e7a4056cb3fc98710ee6906f0c7960" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.106", ] [[package]] name = "thread_local" -version = "1.1.8" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" dependencies = [ "cfg-if", - "once_cell", +] + +[[package]] +name = "time" +version = "0.3.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c" + +[[package]] +name = "time-macros" +version = "0.2.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49" +dependencies = [ + "num-conv", + "time-core", ] [[package]] @@ -3676,9 +4218,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71" +checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" dependencies = [ "tinyvec_macros", ] @@ -3691,17 +4233,19 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.45.1" +version = "1.47.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75ef51a33ef1da925cea3e4eb122833cb377c61439ca401b770f54902b806779" +checksum = "89e49afdadebb872d3145a5638b59eb0691ea23e46ca484037cfab3b76b95038" dependencies = [ "backtrace", "bytes", + "io-uring", "libc", "mio", "pin-project-lite", - "socket2", - "windows-sys 0.52.0", + "slab", + "socket2 0.6.0", + "windows-sys 0.59.0", ] [[package]] @@ -3716,9 +4260,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.15" +version = "0.7.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66a539a9ad6d5d281510d5bd368c973d636c02dbf8a67300bfb6b950696ad7df" +checksum = "14307c986784f72ef81c89db7d9e28d6ac26d16213b109ea501696195e6e3ce5" dependencies = [ "bytes", "futures-core", @@ -3729,9 +4273,9 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.22" +version = "0.8.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05ae329d1f08c4d17a59bed7ff5b5a769d062e64a62d34a3261b219e62cd5aae" +checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" dependencies = [ "serde", "serde_spanned", @@ -3741,20 +4285,20 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.6.9" +version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3da5db5a963e24bc68be8b17b6fa82814bb22ee8660f192bb182771d498f09a3" +checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" dependencies = [ "serde", ] [[package]] name = "toml_edit" -version = "0.22.26" +version = "0.22.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "310068873db2c5b3e7659d2cc35d21855dbafa50d1ce336397c666e3cb08137e" +checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ - "indexmap", + "indexmap 2.11.0", "serde", "serde_spanned", "toml_datetime", @@ -3764,9 +4308,9 @@ dependencies = [ [[package]] name = "toml_write" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfb942dfe1d8e29a7ee7fcbde5bd2b9a25fb89aa70caea2eba3bee836ff41076" +checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" [[package]] name = "tower" @@ -3789,7 +4333,7 @@ version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.3", "bytes", "futures-util", "http", @@ -3827,20 +4371,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.28" +version = "0.1.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" +checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.106", ] [[package]] name = "tracing-core" -version = "0.1.33" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" dependencies = [ "once_cell", "valuable", @@ -3891,7 +4435,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ee44f4cef85f88b4dea21c0b1f58320bdf35715cf56d840969487cff00613321" dependencies = [ "alloy-primitives", - "ethereum_hashing", + "ethereum_hashing 0.7.0 (git+https://github.com/ReamLabs/ethereum_hashing)", "ethereum_ssz", "smallvec", "typenum", @@ -3906,7 +4450,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.106", ] [[package]] @@ -3977,9 +4521,9 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.4" +version = "2.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" +checksum = "137a3c834eaf7139b73688502f3f1141a0337c5d8e4d9b536f9b8c796e26a7c4" dependencies = [ "form_urlencoded", "idna", @@ -4030,9 +4574,9 @@ dependencies = [ [[package]] name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" +version = "0.11.1+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasi" @@ -4065,7 +4609,7 @@ dependencies = [ "log", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.106", "wasm-bindgen-shared", ] @@ -4100,7 +4644,7 @@ checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.106", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -4149,9 +4693,9 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "1.0.0" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2853738d1cc4f2da3a225c18ec6c3721abb31961096e9dbf5ab35fa88b19cfdb" +checksum = "7e8983c3ab33d6fb807cfcdad2491c4ea8cbc8ed839181c7dfd9c67c83e261b2" dependencies = [ "rustls-pki-types", ] @@ -4178,6 +4722,65 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "windows-core" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link", + "windows-result", + "windows-strings", +] + +[[package]] +name = "windows-implement" +version = "0.60.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "windows-interface" +version = "0.59.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "windows-link" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" + +[[package]] +name = "windows-result" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-strings" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" +dependencies = [ + "windows-link", +] + [[package]] name = "windows-sys" version = "0.48.0" @@ -4205,6 +4808,15 @@ dependencies = [ "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.3", +] + [[package]] name = "windows-targets" version = "0.48.5" @@ -4229,13 +4841,30 @@ dependencies = [ "windows_aarch64_gnullvm 0.52.6", "windows_aarch64_msvc 0.52.6", "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm", + "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.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5fe6031c4041849d7c496a8ded650796e7b6ecc19df1a431c1a363342e5dc91" +dependencies = [ + "windows-link", + "windows_aarch64_gnullvm 0.53.0", + "windows_aarch64_msvc 0.53.0", + "windows_i686_gnu 0.53.0", + "windows_i686_gnullvm 0.53.0", + "windows_i686_msvc 0.53.0", + "windows_x86_64_gnu 0.53.0", + "windows_x86_64_gnullvm 0.53.0", + "windows_x86_64_msvc 0.53.0", +] + [[package]] name = "windows_aarch64_gnullvm" version = "0.48.5" @@ -4248,6 +4877,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" + [[package]] name = "windows_aarch64_msvc" version = "0.48.5" @@ -4260,6 +4895,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" + [[package]] name = "windows_i686_gnu" version = "0.48.5" @@ -4272,12 +4913,24 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" +[[package]] +name = "windows_i686_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" + [[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.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" + [[package]] name = "windows_i686_msvc" version = "0.48.5" @@ -4290,6 +4943,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" +[[package]] +name = "windows_i686_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" + [[package]] name = "windows_x86_64_gnu" version = "0.48.5" @@ -4302,6 +4961,12 @@ 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.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" + [[package]] name = "windows_x86_64_gnullvm" version = "0.48.5" @@ -4314,6 +4979,12 @@ 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.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" + [[package]] name = "windows_x86_64_msvc" version = "0.48.5" @@ -4326,11 +4997,17 @@ 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.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" + [[package]] name = "winnow" -version = "0.7.10" +version = "0.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06928c8748d81b05c9be96aad92e1b6ff01833332f281e8cfca3be4b35fc9ec" +checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" dependencies = [ "memchr", ] @@ -4341,7 +5018,7 @@ version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.3", ] [[package]] @@ -4367,9 +5044,26 @@ checksum = "2a1a1c0bc9823338a3bdf8c61f994f23ac004c6fa32c08cd152984499b445e8d" dependencies = [ "arraydeque", "encoding_rs", - "hashlink", + "hashlink 0.9.1", ] +[[package]] +name = "yaml-rust2" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ce2a4ff45552406d02501cea6c18d8a7e50228e7736a872951fe2fe75c91be7" +dependencies = [ + "arraydeque", + "encoding_rs", + "hashlink 0.10.0", +] + +[[package]] +name = "yansi" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" + [[package]] name = "yoke" version = "0.8.0" @@ -4390,28 +5084,28 @@ checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.106", "synstructure", ] [[package]] name = "zerocopy" -version = "0.8.25" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1702d9583232ddb9174e01bb7c15a2ab8fb1bc6f227aa1233858c351a3ba0cb" +checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.25" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28a6e20d751156648aa063f3800b706ee209a32c0b4d9f24be3d980b01be55ef" +checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.106", ] [[package]] @@ -4431,7 +5125,7 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.106", "synstructure", ] @@ -4452,7 +5146,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.106", ] [[package]] @@ -4468,9 +5162,9 @@ dependencies = [ [[package]] name = "zerovec" -version = "0.11.2" +version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428" +checksum = "e7aa2bd55086f1ab526693ecbe444205da57e25f4489879da80635a46d90e73b" dependencies = [ "yoke", "zerofrom", @@ -4485,5 +5179,5 @@ checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.106", ] diff --git a/Cargo.toml b/Cargo.toml index 65abc3f..a9752c0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,5 @@ [workspace] -members = ["host", "lib", "methods"] +members = ["host", "lib", "methods", "methods/guest"] resolver = "2" # Always optimize; building and running the guest takes much longer without optimization. @@ -14,12 +14,16 @@ lto = true edition = "2024" [workspace.dependencies] +ethereum_hashing = { git = "https://github.com/ReamLabs/ethereum_hashing" } ethereum_ssz = "0.9" -ream-consensus = { git = "https://github.com/ReamLabs/ream.git", package = "ream-consensus", features = ["zkvm"] } +ream-consensus = { git = "https://github.com/ReamLabs/ream.git", package = "ream-consensus-beacon", features = ["zkvm"] } +sha2 = { git = "https://github.com/risc0/RustCrypto-hashes", tag = "sha2-v0.10.8-risczero.0" } +ssz_types = { git = "https://github.com/ReamLabs/ssz_types", branch = "magic-extended-list" } tracing = "0.1" tree_hash = "0.10" tree_hash_derive = "0.10" [patch.crates-io] ethereum_hashing = { git = "https://github.com/ReamLabs/ethereum_hashing" } +sha2 = { git = "https://github.com/risc0/RustCrypto-hashes", tag = "sha2-v0.10.8-risczero.0" } ssz_types = { git = "https://github.com/ReamLabs/ssz_types", branch = "magic-extended-list" } # Extends 2^29 to 2^40 list root diff --git a/host/Cargo.toml b/host/Cargo.toml index f72f49f..49bc4ec 100644 --- a/host/Cargo.toml +++ b/host/Cargo.toml @@ -13,7 +13,7 @@ derive_more = { version = "2.0.1", features = ["full"] } dotenv = "0.15.0" hex = "0.4.3" methods = { path = "../methods" } -risc0-zkvm = { version = "2.0.1" } +risc0-zkvm = { version = "3.0.1" } serde = { version = "1.0", default-features = false, features = ["derive"] } serde_json = { version = "1.0.139", default-features = false, features = ["alloc"] } tracing = { workspace = true } diff --git a/host/Makefile b/host/Makefile index 42ee3d9..e2cffb6 100644 --- a/host/Makefile +++ b/host/Makefile @@ -8,15 +8,19 @@ PARSE_SCRIPT = ./subscripts/parse_log_to_table.sh SORT_SCRIPT = ./subscripts/sort_table.sh OPERATIONS = attestation attester_slashing block_header bls_to_execution_change deposit execution_payload proposer_slashing sync_aggregate voluntary_exit withdrawals +EPOCH_OPERATIONS = justification_and_finalization inactivity_updates rewards_and_penalties registry_updates slashings eth1_data_reset pending_deposits pending_consolidations effective_balance_updates slashings_reset randao_mixes_reset historical_summaries_update participation_flag_updates RISC0_DEV_MODE = 1 RUST_BACKTRACE = 0 -.PHONY: all download run clean $(addprefix run-, $(OPERATIONS)) +.PHONY: all download run clean $(addprefix run-, $(OPERATIONS)) $(addprefix run-, $(EPOCH_OPERATIONS)) epoch-all # run-execution_payload (not implemented) and run-withdrawals (incompatible with BeaconState workaround) are excluded all: download run-attestation run-attester_slashing run-block_header run-bls_to_execution_change run-deposit run-proposer_slashing run-sync_aggregate run-voluntary_exit +# Run all epoch processing benchmarks +epoch-all: $(addprefix run-, $(EPOCH_OPERATIONS)) + download: @echo "Running download script..." @chmod +x $(DOWNLOAD_SCRIPT) @@ -41,6 +45,19 @@ $(addprefix run-, $(OPERATIONS)): run-%: $(EXTRACT_DIR) @$(PARSE_SCRIPT) $* @$(SORT_SCRIPT) $(SUMMARIES_DIR)/summary_$*.md +$(addprefix run-, $(EPOCH_OPERATIONS)): run-%: $(EXTRACT_DIR) + @mkdir -p $(LOGS_DIR) + @mkdir -p $(SUMMARIES_DIR) + @echo "##################################################" + @echo "Running epoch processing benchmarks for $*..." + @echo "##################################################" + @NO_COLOR=1 RISC0_DEV_MODE=$(RISC0_DEV_MODE) RUST_BACKTRACE=$(RUST_BACKTRACE) \ + cargo run --release -- --fork electra -o $* \ + 2>&1 | tee $(LOGS_DIR)/execution_$*.log + @echo "Execution complete for $*." + @$(PARSE_SCRIPT) $* + @$(SORT_SCRIPT) $(SUMMARIES_DIR)/summary_$*.md + clean: @echo "Cleaning up downloaded/execution files..." @rm -f $(TARGET) diff --git a/host/src/bin/cli/operation.rs b/host/src/bin/cli/operation.rs index 5dfeb62..c964956 100644 --- a/host/src/bin/cli/operation.rs +++ b/host/src/bin/cli/operation.rs @@ -1,5 +1,6 @@ use clap::{Parser, ValueEnum}; use derive_more::Display; +use ream_lib::input::EpochProcessingType; #[derive(Debug, Clone, Parser)] pub struct OperationArgs { @@ -30,6 +31,33 @@ pub enum OperationName { VoluntaryExit, #[display("withdrawals")] Withdrawals, + // Epoch processing operations + #[display("justification_and_finalization")] + JustificationAndFinalization, + #[display("inactivity_updates")] + InactivityUpdates, + #[display("rewards_and_penalties")] + RewardsAndPenalties, + #[display("registry_updates")] + RegistryUpdates, + #[display("slashings")] + Slashings, + #[display("eth1_data_reset")] + Eth1DataReset, + #[display("pending_deposits")] + PendingDeposits, + #[display("pending_consolidations")] + PendingConsolidations, + #[display("effective_balance_updates")] + EffectiveBalanceUpdates, + #[display("slashings_reset")] + SlashingsReset, + #[display("randao_mixes_reset")] + RandaoMixesReset, + #[display("historical_summaries_update")] + HistoricalSummariesUpdate, + #[display("participation_flag_updates")] + ParticipationFlagUpdates, } impl OperationName { @@ -45,6 +73,57 @@ impl OperationName { OperationName::SyncAggregate => "sync_aggregate".to_string(), OperationName::VoluntaryExit => "voluntary_exit".to_string(), OperationName::Withdrawals => "execution_payload".to_string(), + // Epoch processing operations don't need input files + OperationName::JustificationAndFinalization => "".to_string(), + OperationName::InactivityUpdates => "".to_string(), + OperationName::RewardsAndPenalties => "".to_string(), + OperationName::RegistryUpdates => "".to_string(), + OperationName::Slashings => "".to_string(), + OperationName::Eth1DataReset => "".to_string(), + OperationName::PendingDeposits => "".to_string(), + OperationName::PendingConsolidations => "".to_string(), + OperationName::EffectiveBalanceUpdates => "".to_string(), + OperationName::SlashingsReset => "".to_string(), + OperationName::RandaoMixesReset => "".to_string(), + OperationName::HistoricalSummariesUpdate => "".to_string(), + OperationName::ParticipationFlagUpdates => "".to_string(), + } + } + + pub fn is_epoch_processing(&self) -> bool { + matches!(self, + OperationName::JustificationAndFinalization | + OperationName::InactivityUpdates | + OperationName::RewardsAndPenalties | + OperationName::RegistryUpdates | + OperationName::Slashings | + OperationName::Eth1DataReset | + OperationName::PendingDeposits | + OperationName::PendingConsolidations | + OperationName::EffectiveBalanceUpdates | + OperationName::SlashingsReset | + OperationName::RandaoMixesReset | + OperationName::HistoricalSummariesUpdate | + OperationName::ParticipationFlagUpdates + ) + } + + pub fn to_epoch_processing_type(&self) -> Option { + match self { + OperationName::JustificationAndFinalization => Some(EpochProcessingType::JustificationAndFinalization), + OperationName::InactivityUpdates => Some(EpochProcessingType::InactivityUpdates), + OperationName::RewardsAndPenalties => Some(EpochProcessingType::RewardsAndPenalties), + OperationName::RegistryUpdates => Some(EpochProcessingType::RegistryUpdates), + OperationName::Slashings => Some(EpochProcessingType::Slashings), + OperationName::Eth1DataReset => Some(EpochProcessingType::Eth1DataReset), + OperationName::PendingDeposits => Some(EpochProcessingType::PendingDeposits), + OperationName::PendingConsolidations => Some(EpochProcessingType::PendingConsolidations), + OperationName::EffectiveBalanceUpdates => Some(EpochProcessingType::EffectiveBalanceUpdates), + OperationName::SlashingsReset => Some(EpochProcessingType::SlashingsReset), + OperationName::RandaoMixesReset => Some(EpochProcessingType::RandaoMixesReset), + OperationName::HistoricalSummariesUpdate => Some(EpochProcessingType::HistoricalSummariesUpdate), + OperationName::ParticipationFlagUpdates => Some(EpochProcessingType::ParticipationFlagUpdates), + _ => None, } } } diff --git a/host/src/bin/main.rs b/host/src/bin/main.rs index 4ec1eb7..78efe43 100644 --- a/host/src/bin/main.rs +++ b/host/src/bin/main.rs @@ -16,7 +16,7 @@ use ream_consensus::{ sync_aggregate::SyncAggregate, voluntary_exit::SignedVoluntaryExit, }; -use ream_lib::{file::ssz_from_file, input::OperationInput, ssz::from_ssz_bytes}; +use ream_lib::{file::ssz_from_file, input::{OperationInput, EpochProcessingType}, ssz::from_ssz_bytes}; mod cli; use cli::{fork::Fork, operation::OperationName}; @@ -37,11 +37,11 @@ struct Args { operation: cli::operation::OperationArgs, /// Verify the correctness of the state root by comparing against consensus-spec-tests' post_state - #[clap(long, default_value_t = false)] + #[clap(long, default_value_t = true)] compare_specs: bool, /// Verify the correctness of the state root by recomputing on the host - #[clap(long, default_value_t = true)] + #[clap(long, default_value_t = false)] compare_recompute: bool, #[clap(long)] @@ -112,6 +112,7 @@ fn main() { if compare_specs { info!("Comparing the root against consensus-spec-tests post_state"); + println!("new_state_root: {}", new_state_root); assert_state_root_matches_specs(&new_state_root, &pre_state_ssz_bytes, &case_dir); } @@ -148,29 +149,35 @@ fn parse_args() -> (Fork, OperationName, Vec, bool, bool) { } fn prepare_input(case_dir: &PathBuf, operation_name: &OperationName) -> OperationInput { - let input_path = &case_dir.join(format!("{}.ssz_snappy", operation_name.to_input_name())); - - match operation_name { - OperationName::Attestation => OperationInput::Attestation(ssz_from_file(input_path)), - OperationName::AttesterSlashing => { - OperationInput::AttesterSlashing(ssz_from_file(input_path)) - } - OperationName::BlockHeader => OperationInput::BeaconBlock(ssz_from_file(input_path)), - OperationName::BLSToExecutionChange => { - OperationInput::SignedBLSToExecutionChange(ssz_from_file(input_path)) + if operation_name.is_epoch_processing() { + // For epoch processing, we don't need input files, just the processing type + OperationInput::EpochProcessing(operation_name.to_epoch_processing_type().unwrap()) + } else { + let input_path = &case_dir.join(format!("{}.ssz_snappy", operation_name.to_input_name())); + + match operation_name { + OperationName::Attestation => OperationInput::Attestation(ssz_from_file(input_path)), + OperationName::AttesterSlashing => { + OperationInput::AttesterSlashing(ssz_from_file(input_path)) + } + OperationName::BlockHeader => OperationInput::BeaconBlock(ssz_from_file(input_path)), + OperationName::BLSToExecutionChange => { + OperationInput::SignedBLSToExecutionChange(ssz_from_file(input_path)) + } + OperationName::Deposit => OperationInput::Deposit(ssz_from_file(input_path)), + OperationName::ExecutionPayload => { + OperationInput::BeaconBlockBody(ssz_from_file(input_path)) + } + OperationName::ProposerSlashing => { + OperationInput::ProposerSlashing(ssz_from_file(input_path)) + } + OperationName::SyncAggregate => OperationInput::SyncAggregate(ssz_from_file(input_path)), + OperationName::VoluntaryExit => { + OperationInput::SignedVoluntaryExit(ssz_from_file(input_path)) + } + OperationName::Withdrawals => OperationInput::ExecutionPayload(ssz_from_file(input_path)), + _ => unreachable!("Epoch processing should be handled above"), } - OperationName::Deposit => OperationInput::Deposit(ssz_from_file(input_path)), - OperationName::ExecutionPayload => { - OperationInput::BeaconBlockBody(ssz_from_file(input_path)) - } - OperationName::ProposerSlashing => { - OperationInput::ProposerSlashing(ssz_from_file(input_path)) - } - OperationName::SyncAggregate => OperationInput::SyncAggregate(ssz_from_file(input_path)), - OperationName::VoluntaryExit => { - OperationInput::SignedVoluntaryExit(ssz_from_file(input_path)) - } - OperationName::Withdrawals => OperationInput::ExecutionPayload(ssz_from_file(input_path)), } } @@ -186,11 +193,21 @@ fn load_test_cases(fork: &Fork, operation_name: &OperationName) -> (PathBuf, Vec std::process::exit(1); } - let base_dir = test_case_dir - .join(format!("{}", fork)) - .join("operations") - .join(format!("{}", operation_name)) - .join("pyspec_tests"); + let base_dir = if operation_name.is_epoch_processing() { + // Epoch processing tests are in epoch_processing directory + test_case_dir + .join(format!("{}", fork)) + .join("epoch_processing") + .join(format!("{}", operation_name)) + .join("pyspec_tests") + } else { + // Regular operations are in operations directory + test_case_dir + .join(format!("{}", fork)) + .join("operations") + .join(format!("{}", operation_name)) + .join("pyspec_tests") + }; let test_cases = ream_lib::file::get_test_cases(&base_dir); @@ -277,6 +294,52 @@ fn assert_state_root_matches_recompute( let execution_payload: ExecutionPayload = from_ssz_bytes(&ssz_bytes).unwrap(); let _ = state.process_withdrawals(&execution_payload); } + OperationInput::EpochProcessing(epoch_type) => { + match epoch_type { + EpochProcessingType::JustificationAndFinalization => { + let _ = state.process_justification_and_finalization(); + } + EpochProcessingType::InactivityUpdates => { + let _ = state.process_inactivity_updates(); + } + EpochProcessingType::RewardsAndPenalties => { + let _ = state.process_rewards_and_penalties(); + } + EpochProcessingType::RegistryUpdates => { + let _ = state.process_registry_updates(); + } + EpochProcessingType::Slashings => { + let _ = state.process_slashings(); + } + EpochProcessingType::Eth1DataReset => { + let _ = state.process_eth1_data_reset(); + } + EpochProcessingType::PendingDeposits => { + let _ = state.process_pending_deposits(); + } + EpochProcessingType::PendingConsolidations => { + let _ = state.process_pending_consolidations(); + } + EpochProcessingType::EffectiveBalanceUpdates => { + let _ = state.process_effective_balance_updates(); + } + EpochProcessingType::SlashingsReset => { + let _ = state.process_slashings_reset(); + } + EpochProcessingType::RandaoMixesReset => { + let _ = state.process_randao_mixes_reset(); + } + EpochProcessingType::HistoricalSummariesUpdate => { + let _ = state.process_historical_summaries_update(); + } + EpochProcessingType::ParticipationFlagUpdates => { + let _ = state.process_participation_flag_updates(); + } + EpochProcessingType::SyncCommitteeUpdates => { + let _ = state.process_sync_committee_updates(); + } + } + } } let recomputed_state_root = state.tree_hash_root(); diff --git a/lib/src/input.rs b/lib/src/input.rs index 90ecd49..d64a5b3 100644 --- a/lib/src/input.rs +++ b/lib/src/input.rs @@ -12,4 +12,23 @@ pub enum OperationInput { SyncAggregate(Vec), SignedVoluntaryExit(Vec), ExecutionPayload(Vec), + EpochProcessing(EpochProcessingType), +} + +#[derive(Serialize, Deserialize, Debug)] +pub enum EpochProcessingType { + JustificationAndFinalization, + InactivityUpdates, + RewardsAndPenalties, + RegistryUpdates, + Slashings, + Eth1DataReset, + PendingDeposits, + PendingConsolidations, + EffectiveBalanceUpdates, + SlashingsReset, + RandaoMixesReset, + HistoricalSummariesUpdate, + ParticipationFlagUpdates, + SyncCommitteeUpdates, } diff --git a/methods/guest/Cargo.toml b/methods/guest/Cargo.toml index 4858e00..c27d897 100644 --- a/methods/guest/Cargo.toml +++ b/methods/guest/Cargo.toml @@ -3,20 +3,16 @@ name = "consensus_stf" version = "0.1.0" edition = "2021" -[workspace] - [dependencies] # Risc0 dependencies -risc0-zkvm = { version = "2.0.1", default-features = false, features = ['std'] } +risc0-zkvm = { version = "3.0.1", default-features = false, features = ['std'] } # Ream dependencies -ethereum_ssz = "0.9" -ream-consensus = { git = "https://github.com/ReamLabs/ream.git", package = "ream-consensus", features = ["zkvm"] } +ethereum_ssz = {workspace = true} +ream-consensus = {workspace=true} ream-lib = { path = "../../lib" } -tree_hash = "0.10" -tree_hash_derive = "0.10" - -[patch.crates-io] -ethereum_hashing = { git = "https://github.com/ReamLabs/ethereum_hashing" } # Add ethereum_hashing::Sha256Context that's failing tree_hash crate used by ream -sha2 = { git = "https://github.com/risc0/RustCrypto-hashes", tag = "sha2-v0.10.8-risczero.0" } -ssz_types = { git = "https://github.com/ReamLabs/ssz_types", branch = "magic-extended-list" } # Extends 2^29 to 2^40 list root +tree_hash = { workspace = true } +tree_hash_derive = { workspace = true } +ethereum_hashing = { workspace = true } +sha2 = { workspace = true } +ssz_types = { workspace = true } diff --git a/methods/guest/src/main.rs b/methods/guest/src/main.rs index 0e88df5..3722c52 100644 --- a/methods/guest/src/main.rs +++ b/methods/guest/src/main.rs @@ -16,7 +16,7 @@ use ream_consensus::{ voluntary_exit::SignedVoluntaryExit, }; use ream_lib::{ - input::OperationInput, + input::{OperationInput, EpochProcessingType}, ssz::from_ssz_bytes, }; @@ -38,7 +38,6 @@ fn main() { eprintln!("{}:{}: {}", "read-pre-state-ssz", "end", env::cycle_count()); let mut state: BeaconState = deserialize(&pre_state_ssz_bytes); - eprintln!("{}:{}: {}", "read-operation-input", "start", env::cycle_count()); let input: OperationInput = env::read(); eprintln!("{}:{}: {}", "read-operation-input", "end", env::cycle_count()); @@ -90,6 +89,52 @@ fn main() { let execution_payload: ExecutionPayload = deserialize(&ssz_bytes); let _ = state.process_withdrawals(&execution_payload); } + OperationInput::EpochProcessing(epoch_type) => { + match epoch_type { + EpochProcessingType::JustificationAndFinalization => { + let _ = state.process_justification_and_finalization(); + } + EpochProcessingType::InactivityUpdates => { + let _ = state.process_inactivity_updates(); + } + EpochProcessingType::RewardsAndPenalties => { + let _ = state.process_rewards_and_penalties(); + } + EpochProcessingType::RegistryUpdates => { + let _ = state.process_registry_updates(); + } + EpochProcessingType::Slashings => { + let _ = state.process_slashings(); + } + EpochProcessingType::Eth1DataReset => { + let _ = state.process_eth1_data_reset(); + } + EpochProcessingType::PendingDeposits => { + let _ = state.process_pending_deposits(); + } + EpochProcessingType::PendingConsolidations => { + let _ = state.process_pending_consolidations(); + } + EpochProcessingType::EffectiveBalanceUpdates => { + let _ = state.process_effective_balance_updates(); + } + EpochProcessingType::SlashingsReset => { + let _ = state.process_slashings_reset(); + } + EpochProcessingType::RandaoMixesReset => { + let _ = state.process_randao_mixes_reset(); + } + EpochProcessingType::HistoricalSummariesUpdate => { + let _ = state.process_historical_summaries_update(); + } + EpochProcessingType::ParticipationFlagUpdates => { + let _ = state.process_participation_flag_updates(); + } + EpochProcessingType::SyncCommitteeUpdates => { + let _ = state.process_sync_committee_updates(); + } + } + } } eprintln!("{}:{}: {}", "process-operation", "end", env::cycle_count()); From a46ec70dcbe8cbfcd0331630d5e772d8eeedecc1 Mon Sep 17 00:00:00 2001 From: Utsav Sharma <146017234+x-senpai-x@users.noreply.github.com> Date: Wed, 27 Aug 2025 12:50:15 +0530 Subject: [PATCH 2/7] Update methods/guest/Cargo.toml Co-authored-by: Unnawut Leepaisalsuwanna <921194+unnawut@users.noreply.github.com> --- methods/guest/Cargo.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/methods/guest/Cargo.toml b/methods/guest/Cargo.toml index c27d897..3f9afb1 100644 --- a/methods/guest/Cargo.toml +++ b/methods/guest/Cargo.toml @@ -8,8 +8,8 @@ edition = "2021" risc0-zkvm = { version = "3.0.1", default-features = false, features = ['std'] } # Ream dependencies -ethereum_ssz = {workspace = true} -ream-consensus = {workspace=true} +ethereum_ssz = { workspace = true } +ream-consensus = { workspace=true } ream-lib = { path = "../../lib" } tree_hash = { workspace = true } tree_hash_derive = { workspace = true } From 06da4480b28b82b6f07e99b14e6aac6bf48006c7 Mon Sep 17 00:00:00 2001 From: x-senpai-x Date: Wed, 27 Aug 2025 12:55:08 +0530 Subject: [PATCH 3/7] changed to using info! instead of println! --- host/src/bin/main.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/host/src/bin/main.rs b/host/src/bin/main.rs index 78efe43..20e029a 100644 --- a/host/src/bin/main.rs +++ b/host/src/bin/main.rs @@ -112,7 +112,7 @@ fn main() { if compare_specs { info!("Comparing the root against consensus-spec-tests post_state"); - println!("new_state_root: {}", new_state_root); + info!("new_state_root: {}", new_state_root); assert_state_root_matches_specs(&new_state_root, &pre_state_ssz_bytes, &case_dir); } From c6de67fcc1a4842567843234bf6bf3ec88075896 Mon Sep 17 00:00:00 2001 From: x-senpai-x Date: Sun, 31 Aug 2025 00:41:00 +0530 Subject: [PATCH 4/7] redefined operations by including traits --- Cargo.lock | 332 +++++++++++++++------------------- host/Makefile | 47 +++-- host/src/bin/cli/operation.rs | 203 ++++++++++++++------- host/src/bin/main.rs | 207 +++------------------ lib/src/input.rs | 152 ++++++++++++++-- methods/guest/src/main.rs | 110 +---------- 6 files changed, 483 insertions(+), 568 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2292e2a..fae9b99 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -46,9 +46,9 @@ checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "alloy-consensus" -version = "1.0.25" +version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35f021a55afd68ff2364ccfddaa364fc9a38a72200cdc74fcfb8dc3231d38f2c" +checksum = "b7345077623aaa080fc06735ac13b8fa335125c8550f9c4f64135a5bf6f79967" dependencies = [ "alloy-eips", "alloy-primitives", @@ -97,9 +97,9 @@ dependencies = [ [[package]] name = "alloy-eips" -version = "1.0.25" +version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7473a19f02b25f8e1e8c69d35f02c07245694d11bd91bfe00e9190ac106b3838" +checksum = "c219a87fb386a75780ddbdbbced242477321887e426b0f946c05815ceabe5e09" dependencies = [ "alloy-eip2124", "alloy-eip2930", @@ -109,7 +109,8 @@ dependencies = [ "auto_impl", "derive_more", "either", - "sha2 0.10.9", + "sha2", + "thiserror 2.0.16", ] [[package]] @@ -178,9 +179,9 @@ dependencies = [ [[package]] name = "alloy-tx-macros" -version = "1.0.25" +version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72e29436068f836727d4e7c819ae6bf6f9c9e19a32e96fc23e814709a277f23a" +checksum = "d14809f908822dbff0dc472c77ca4aa129ab12e22fd9bff2dd1ef54603e68e3d" dependencies = [ "alloy-primitives", "darling", @@ -291,7 +292,7 @@ dependencies = [ "digest 0.10.7", "fnv", "merlin", - "sha2 0.10.9", + "sha2", ] [[package]] @@ -847,9 +848,9 @@ dependencies = [ [[package]] name = "camino" -version = "1.1.11" +version = "1.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d07aa9a93b00c76f71bc35d598bed923f6d4f3a9ca5c24b7737ae1a292841c0" +checksum = "dd0b03af37dad7a14518b7691d81acb0f8222604ad3d1b02f6b4bed5188c0cd5" dependencies = [ "serde", ] @@ -913,9 +914,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.45" +version = "4.5.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fc0e74a703892159f5ae7d3aac52c8e6c392f5ae5f359c70b5881d60aaac318" +checksum = "2c5e4fcf9c21d2e544ca1ee9d8552de13019a42aa7dbf32747fa7aaf1df76e57" dependencies = [ "clap_builder", "clap_derive", @@ -923,9 +924,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.44" +version = "4.5.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3e7f4214277f3c7aa526a59dd3fbe306a370daee1f8b7b8c987069cd8e888a8" +checksum = "fecb53a0e6fcfb055f686001bc2e2592fa527efaf38dbe81a6a9563562e57d41" dependencies = [ "anstream", "anstyle", @@ -975,7 +976,7 @@ dependencies = [ "ream-consensus-beacon", "ream-lib", "risc0-zkvm", - "sha2 0.10.8", + "sha2", "ssz_types 0.11.0 (git+https://github.com/ReamLabs/ssz_types?branch=magic-extended-list)", "tree_hash", "tree_hash_derive", @@ -997,7 +998,7 @@ dependencies = [ "serde", "serde_json", "tracing", - "tracing-subscriber 0.3.19", + "tracing-subscriber 0.3.20", "tree_hash", ] @@ -1477,7 +1478,7 @@ version = "0.7.0" source = "git+https://github.com/ReamLabs/ethereum_hashing.git?rev=c14a9ad96436e6b8b631faf49a3666e4558b71ae#c14a9ad96436e6b8b631faf49a3666e4558b71ae" dependencies = [ "ring", - "sha2 0.10.9", + "sha2", ] [[package]] @@ -1486,7 +1487,7 @@ version = "0.7.0" source = "git+https://github.com/ReamLabs/ethereum_hashing#c14a9ad96436e6b8b631faf49a3666e4558b71ae" dependencies = [ "ring", - "sha2 0.10.9", + "sha2", ] [[package]] @@ -1730,7 +1731,7 @@ dependencies = [ "js-sys", "libc", "r-efi", - "wasi 0.14.2+wasi-0.2.4", + "wasi 0.14.3+wasi-0.2.4", "wasm-bindgen", ] @@ -1921,7 +1922,7 @@ dependencies = [ "libc", "percent-encoding", "pin-project-lite", - "socket2 0.6.0", + "socket2", "tokio", "tower-service", "tracing", @@ -2198,7 +2199,7 @@ dependencies = [ "ecdsa", "elliptic-curve", "once_cell", - "sha2 0.10.9", + "sha2", ] [[package]] @@ -2309,11 +2310,11 @@ dependencies = [ [[package]] name = "matchers" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9" dependencies = [ - "regex-automata 0.1.10", + "regex-automata", ] [[package]] @@ -2364,7 +2365,7 @@ dependencies = [ name = "methods" version = "0.1.0" dependencies = [ - "risc0-build 2.3.1", + "risc0-build 2.3.2", ] [[package]] @@ -2395,12 +2396,11 @@ checksum = "a5b0c77c1b780822bc749a33e39aeb2c07584ab93332303babeabb645298a76e" [[package]] name = "nu-ansi-term" -version = "0.46.0" +version = "0.50.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +checksum = "d4a28e057d01f97e61255210fcff094d74ed0466038633e95017f5beb68e4399" dependencies = [ - "overload", - "winapi", + "windows-sys 0.52.0", ] [[package]] @@ -2466,6 +2466,27 @@ dependencies = [ "libm", ] +[[package]] +name = "num_enum" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a973b4e44ce6cad84ce69d797acf9a044532e4184c4f267913d1b546a0727b7a" +dependencies = [ + "num_enum_derive", + "rustversion", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77e878c846a8abae00dd069496dbe8751b16ac1c3d6bd2a7283a938e8228f90d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + [[package]] name = "nybbles" version = "0.4.3" @@ -2513,12 +2534,6 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" -[[package]] -name = "overload" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" - [[package]] name = "pairing" version = "0.23.0" @@ -2635,9 +2650,9 @@ dependencies = [ [[package]] name = "potential_utf" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585" +checksum = "84df19adbe5b5a0782edcab45899906947ab039ccf4573713735ee7de1e6b08a" dependencies = [ "zerovec", ] @@ -2713,7 +2728,7 @@ dependencies = [ "rand 0.9.2", "rand_chacha 0.9.0", "rand_xorshift", - "regex-syntax 0.8.5", + "regex-syntax", "rusty-fork", "tempfile", "unarray", @@ -2750,9 +2765,9 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quinn" -version = "0.11.8" +version = "0.11.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "626214629cda6781b6dc1d316ba307189c85ba657213ce642d9c77670f8202c8" +checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" dependencies = [ "bytes", "cfg_aliases", @@ -2761,7 +2776,7 @@ dependencies = [ "quinn-udp", "rustc-hash", "rustls", - "socket2 0.5.10", + "socket2", "thiserror 2.0.16", "tokio", "tracing", @@ -2770,9 +2785,9 @@ dependencies = [ [[package]] name = "quinn-proto" -version = "0.11.12" +version = "0.11.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49df843a9161c85bb8aae55f101bc0bac8bcafd637a620d9122fd7e0b2f7422e" +checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31" dependencies = [ "bytes", "getrandom 0.3.3", @@ -2791,16 +2806,16 @@ dependencies = [ [[package]] name = "quinn-udp" -version = "0.5.13" +version = "0.5.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcebb1209ee276352ef14ff8732e24cc2b02bbac986cd74a4c81bcb2f9881970" +checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" dependencies = [ "cfg_aliases", "libc", "once_cell", - "socket2 0.5.10", + "socket2", "tracing", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] @@ -2897,7 +2912,7 @@ dependencies = [ [[package]] name = "ream-bls" version = "0.1.0" -source = "git+https://github.com/ReamLabs/ream.git#6300e85ca4f6dd920e5d9b5320914c5bc9b5e85c" +source = "git+https://github.com/ReamLabs/ream.git#23e93fba74f359f9b292652784976df45372cabb" dependencies = [ "alloy-primitives", "anyhow", @@ -2906,7 +2921,7 @@ dependencies = [ "ethereum_ssz_derive", "group", "serde", - "sha2 0.10.9", + "sha2", "ssz_types 0.11.0 (git+https://github.com/ReamLabs/ssz_types?branch=removable-variable-list)", "thiserror 2.0.16", "tree_hash", @@ -2916,7 +2931,7 @@ dependencies = [ [[package]] name = "ream-consensus-beacon" version = "0.1.0" -source = "git+https://github.com/ReamLabs/ream.git#6300e85ca4f6dd920e5d9b5320914c5bc9b5e85c" +source = "git+https://github.com/ReamLabs/ream.git#23e93fba74f359f9b292652784976df45372cabb" dependencies = [ "alloy-consensus", "alloy-primitives", @@ -2935,7 +2950,7 @@ dependencies = [ "serde", "serde_json", "serde_yaml", - "sha2 0.10.9", + "sha2", "snap", "ssz_types 0.11.0 (git+https://github.com/ReamLabs/ssz_types?branch=removable-variable-list)", "thiserror 2.0.16", @@ -2947,7 +2962,7 @@ dependencies = [ [[package]] name = "ream-consensus-misc" version = "0.1.0" -source = "git+https://github.com/ReamLabs/ream.git#6300e85ca4f6dd920e5d9b5320914c5bc9b5e85c" +source = "git+https://github.com/ReamLabs/ream.git#23e93fba74f359f9b292652784976df45372cabb" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -2959,7 +2974,7 @@ dependencies = [ "ream-bls", "serde", "serde_json", - "sha2 0.10.9", + "sha2", "ssz_types 0.11.0 (git+https://github.com/ReamLabs/ssz_types?branch=removable-variable-list)", "thiserror 2.0.16", "tree_hash", @@ -2986,7 +3001,7 @@ dependencies = [ [[package]] name = "ream-merkle" version = "0.1.0" -source = "git+https://github.com/ReamLabs/ream.git#6300e85ca4f6dd920e5d9b5320914c5bc9b5e85c" +source = "git+https://github.com/ReamLabs/ream.git#23e93fba74f359f9b292652784976df45372cabb" dependencies = [ "alloy-primitives", "anyhow", @@ -2997,7 +3012,7 @@ dependencies = [ [[package]] name = "ream-network-spec" version = "0.1.0" -source = "git+https://github.com/ReamLabs/ream.git#6300e85ca4f6dd920e5d9b5320914c5bc9b5e85c" +source = "git+https://github.com/ReamLabs/ream.git#23e93fba74f359f9b292652784976df45372cabb" dependencies = [ "alloy-primitives", "anyhow", @@ -3051,47 +3066,32 @@ dependencies = [ [[package]] name = "regex" -version = "1.11.1" +version = "1.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +checksum = "23d7fd106d8c02486a8d64e778353d1cffe08ce79ac2e82f540c86d0facf6912" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.9", - "regex-syntax 0.8.5", + "regex-automata", + "regex-syntax", ] [[package]] name = "regex-automata" -version = "0.1.10" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" -dependencies = [ - "regex-syntax 0.6.29", -] - -[[package]] -name = "regex-automata" -version = "0.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +checksum = "6b9458fa0bfeeac22b5ca447c63aaf45f28439a709ccd244698632f9aa6394d6" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.5", + "regex-syntax", ] [[package]] name = "regex-syntax" -version = "0.6.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" - -[[package]] -name = "regex-syntax" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" +checksum = "caf4aa5b0f434c91fe5c7f1ecb6a5ece2130b02ad2a590589dda5146df959001" [[package]] name = "reqwest" @@ -3161,9 +3161,9 @@ dependencies = [ [[package]] name = "risc0-binfmt" -version = "2.0.2" +version = "2.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62eb7025356a233c1bc267c458a2ce56fcfc89b136d813c8a77be14ef1eaf2b1" +checksum = "f84c73972691d73955126d3d889c47e7f20900a69c74d775c9eab7c25d10b3d9" dependencies = [ "anyhow", "borsh", @@ -3171,7 +3171,7 @@ dependencies = [ "elf", "lazy_static", "postcard", - "risc0-zkp 2.0.2", + "risc0-zkp 2.0.3", "risc0-zkvm-platform", "semver 1.0.26", "serde", @@ -3180,9 +3180,9 @@ dependencies = [ [[package]] name = "risc0-binfmt" -version = "3.0.1" +version = "3.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2af322c052ae9973054f67434bc953eae44dbac68054d304b46848634d2a45d" +checksum = "1c8f97f81bcdead4101bca06469ecef481a2695cd04e7e877b49dea56a7f6f2a" dependencies = [ "anyhow", "borsh", @@ -3192,7 +3192,7 @@ dependencies = [ "lazy_static", "postcard", "rand 0.9.2", - "risc0-zkp 3.0.1", + "risc0-zkp 3.0.2", "risc0-zkvm-platform", "ruint", "semver 1.0.26", @@ -3202,9 +3202,9 @@ dependencies = [ [[package]] name = "risc0-build" -version = "2.3.1" +version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62ffc0f135e6c1e9851e7e19438d03ff41a9d49199ee4f6c17b8bb30b4f83910" +checksum = "b4079b9f8d1e20704071374ec8aa58eddc8adcd6586d109436a39a852e1ddf16" dependencies = [ "anyhow", "cargo_metadata", @@ -3212,9 +3212,9 @@ dependencies = [ "dirs 5.0.1", "docker-generate", "hex", - "risc0-binfmt 2.0.2", + "risc0-binfmt 2.0.3", "risc0-zkos-v1compat", - "risc0-zkp 2.0.2", + "risc0-zkp 2.0.3", "risc0-zkvm-platform", "rzup 0.4.1", "semver 1.0.26", @@ -3226,9 +3226,9 @@ dependencies = [ [[package]] name = "risc0-build" -version = "3.0.1" +version = "3.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b042a8a6fdd02793c0acb526fbd3f0d92abe664f1158be38d45a92def57385b2" +checksum = "1bbb512d728e011d03ce0958ca7954624ee13a215bcafd859623b3c63b2a3f60" dependencies = [ "anyhow", "cargo_metadata", @@ -3236,11 +3236,11 @@ dependencies = [ "dirs 6.0.0", "docker-generate", "hex", - "risc0-binfmt 3.0.1", + "risc0-binfmt 3.0.2", "risc0-zkos-v1compat", - "risc0-zkp 3.0.1", + "risc0-zkp 3.0.2", "risc0-zkvm-platform", - "rzup 0.5.0", + "rzup 0.5.1", "semver 1.0.26", "serde", "serde_json", @@ -3250,49 +3250,49 @@ dependencies = [ [[package]] name = "risc0-circuit-keccak" -version = "4.0.1" +version = "4.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "966ba960d718123e16c603d6919a0c5d7cd2f872d428639ab5650108520f133a" +checksum = "5f195f865ac1afdc21a172d7756fdcc21be18e13eb01d78d3d7f2b128fa881ba" dependencies = [ "anyhow", "bytemuck", "paste", - "risc0-binfmt 3.0.1", + "risc0-binfmt 3.0.2", "risc0-circuit-recursion", "risc0-core 3.0.0", - "risc0-zkp 3.0.1", + "risc0-zkp 3.0.2", "tracing", ] [[package]] name = "risc0-circuit-recursion" -version = "4.0.1" +version = "4.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30f6afac63cfd291aaa7f40edf976db5452698e66cd79f16ccbf7c0eb5a5d94e" +checksum = "dca8f15c8abc0fd8c097aa7459879110334d191c63dd51d4c28881c4a497279e" dependencies = [ "anyhow", "bytemuck", "hex", "metal", "risc0-core 3.0.0", - "risc0-zkp 3.0.1", + "risc0-zkp 3.0.2", "tracing", ] [[package]] name = "risc0-circuit-rv32im" -version = "4.0.1" +version = "4.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fdd0865593941a6800c65a7c3b48be8700f73eb597681f6f594c7465839ce8a" +checksum = "ae1b0689f4a270a2f247b04397ebb431b8f64fe5170e98ee4f9d71bd04825205" dependencies = [ "anyhow", "bit-vec", "bytemuck", "derive_more", "paste", - "risc0-binfmt 3.0.1", + "risc0-binfmt 3.0.2", "risc0-core 3.0.0", - "risc0-zkp 3.0.1", + "risc0-zkp 3.0.2", "serde", "tracing", ] @@ -3320,9 +3320,9 @@ dependencies = [ [[package]] name = "risc0-groth16" -version = "3.0.1" +version = "3.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b68a622c69d0b97f511ee43db1d7f7f00b4dacead9c8aceae03fc5383f4764c1" +checksum = "724285dc79604abfb2d40feaefe3e335420a6b293511661f77d6af62f1f5fae9" dependencies = [ "anyhow", "ark-bn254", @@ -3334,26 +3334,27 @@ dependencies = [ "hex", "num-bigint", "num-traits", - "risc0-binfmt 3.0.1", - "risc0-zkp 3.0.1", + "risc0-binfmt 3.0.2", + "risc0-zkp 3.0.2", "serde", ] [[package]] name = "risc0-zkos-v1compat" -version = "2.0.2" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "328c9f0ec5f6eb8b7624347b5dcf82729f304adbc364399825f3ab6f8588189c" +checksum = "840c2228803557a8b7dc035a8f196516b6fd68c9dc6ac092f0c86241b5b1bafb" dependencies = [ "include_bytes_aligned", "no_std_strings", + "risc0-zkvm-platform", ] [[package]] name = "risc0-zkp" -version = "2.0.2" +version = "2.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a287e9cd6d7b3b38eeb49c62090c46a1935922309fbd997a9143ed8c43c8f3cb" +checksum = "355de69bdd62c99a48497fbf67501665a2eb9c4ed205549e7af3cdb83b40ef12" dependencies = [ "anyhow", "blake2", @@ -3369,16 +3370,16 @@ dependencies = [ "risc0-core 2.0.0", "risc0-zkvm-platform", "serde", - "sha2 0.10.9", + "sha2", "stability", "tracing", ] [[package]] name = "risc0-zkp" -version = "3.0.1" +version = "3.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c246f34b86a165308e37a064afa86e66ee7b8525f02bcf03f2124aaeedba04f" +checksum = "ffb6bf356f469bb8744f72a07a37134c5812c1d55d6271bba80e87bdb7a58c8e" dependencies = [ "anyhow", "blake2", @@ -3394,16 +3395,16 @@ dependencies = [ "risc0-core 3.0.0", "risc0-zkvm-platform", "serde", - "sha2 0.10.9", + "sha2", "stability", "tracing", ] [[package]] name = "risc0-zkvm" -version = "3.0.1" +version = "3.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fdf8d11f9e61cfd3e577fb6e6e11cc34ca247831c2555ee0a6a53deba9702d2" +checksum = "3fcce11648a9ff60b8e7af2f0ce7fbf8d25275ab6d414cc91b9da69ee75bc978" dependencies = [ "anyhow", "bincode", @@ -3415,21 +3416,21 @@ dependencies = [ "hex", "lazy-regex", "prost", - "risc0-binfmt 3.0.1", - "risc0-build 3.0.1", + "risc0-binfmt 3.0.2", + "risc0-build 3.0.3", "risc0-circuit-keccak", "risc0-circuit-recursion", "risc0-circuit-rv32im", "risc0-core 3.0.0", "risc0-groth16", "risc0-zkos-v1compat", - "risc0-zkp 3.0.1", + "risc0-zkp 3.0.2", "risc0-zkvm-platform", "rrs-lib", - "rzup 0.5.0", + "rzup 0.5.1", "semver 1.0.26", "serde", - "sha2 0.10.9", + "sha2", "stability", "tempfile", "tracing", @@ -3437,15 +3438,17 @@ dependencies = [ [[package]] name = "risc0-zkvm-platform" -version = "2.0.4" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06fc0e464f4ac44c3f1fd17b479e09e3ccbd1c40219837d750580b03030dca60" +checksum = "5c826f09626ab2ae76671673e5a232548ddd95a34eece2ea4ced5f010383f95b" dependencies = [ "bytemuck", "cfg-if", "getrandom 0.2.16", "getrandom 0.3.3", "libm", + "num_enum", + "paste", "stability", ] @@ -3648,16 +3651,16 @@ dependencies = [ [[package]] name = "rzup" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76c6dfdbd72b2b0a537ad1e6256a3ce493ac87b9e89815465e393ee6595968e2" +checksum = "5d2aed296f203fa64bcb4b52069356dd86d6ec578593985b919b6995bee1f0ae" dependencies = [ "hex", "rsa", "semver 1.0.26", "serde", "serde_with", - "sha2 0.10.9", + "sha2", "strum 0.27.2", "tempfile", "thiserror 2.0.16", @@ -3838,17 +3841,6 @@ dependencies = [ "digest 0.10.7", ] -[[package]] -name = "sha2" -version = "0.10.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest 0.10.7", -] - [[package]] name = "sha3" version = "0.10.8" @@ -3912,16 +3904,6 @@ version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b6b67fb9a61334225b5b790716f609cd58395f895b3fe8b328786812a40bc3b" -[[package]] -name = "socket2" -version = "0.5.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" -dependencies = [ - "libc", - "windows-sys 0.52.0", -] - [[package]] name = "socket2" version = "0.6.0" @@ -4244,7 +4226,7 @@ dependencies = [ "mio", "pin-project-lite", "slab", - "socket2 0.6.0", + "socket2", "windows-sys 0.59.0", ] @@ -4412,14 +4394,14 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.19" +version = "0.3.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" +checksum = "2054a14f5307d601f88daf0553e1cbf472acc4f2c51afab632431cdcd72124d5" dependencies = [ "matchers", "nu-ansi-term", "once_cell", - "regex", + "regex-automata", "sharded-slab", "smallvec", "thread_local", @@ -4521,13 +4503,14 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.6" +version = "2.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "137a3c834eaf7139b73688502f3f1141a0337c5d8e4d9b536f9b8c796e26a7c4" +checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" dependencies = [ "form_urlencoded", "idna", "percent-encoding", + "serde", ] [[package]] @@ -4580,11 +4563,11 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasi" -version = "0.14.2+wasi-0.2.4" +version = "0.14.3+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +checksum = "6a51ae83037bdd272a9e28ce236db8c07016dd0d50c27038b3f407533c030c95" dependencies = [ - "wit-bindgen-rt", + "wit-bindgen", ] [[package]] @@ -4700,28 +4683,6 @@ dependencies = [ "rustls-pki-types", ] -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - [[package]] name = "windows-core" version = "0.61.2" @@ -5013,13 +4974,10 @@ dependencies = [ ] [[package]] -name = "wit-bindgen-rt" -version = "0.39.0" +name = "wit-bindgen" +version = "0.45.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" -dependencies = [ - "bitflags 2.9.3", -] +checksum = "052283831dbae3d879dc7f51f3d92703a316ca49f91540417d38591826127814" [[package]] name = "writeable" diff --git a/host/Makefile b/host/Makefile index e2cffb6..9fb6bec 100644 --- a/host/Makefile +++ b/host/Makefile @@ -7,19 +7,22 @@ DOWNLOAD_SCRIPT = ./subscripts/download_ef_data.sh PARSE_SCRIPT = ./subscripts/parse_log_to_table.sh SORT_SCRIPT = ./subscripts/sort_table.sh -OPERATIONS = attestation attester_slashing block_header bls_to_execution_change deposit execution_payload proposer_slashing sync_aggregate voluntary_exit withdrawals +BLOCK_OPERATIONS = attestation attester_slashing block_header bls_to_execution_change deposit execution_payload proposer_slashing sync_aggregate voluntary_exit withdrawals EPOCH_OPERATIONS = justification_and_finalization inactivity_updates rewards_and_penalties registry_updates slashings eth1_data_reset pending_deposits pending_consolidations effective_balance_updates slashings_reset randao_mixes_reset historical_summaries_update participation_flag_updates RISC0_DEV_MODE = 1 -RUST_BACKTRACE = 0 +RUST_BACKTRACE = full -.PHONY: all download run clean $(addprefix run-, $(OPERATIONS)) $(addprefix run-, $(EPOCH_OPERATIONS)) epoch-all +.PHONY: all download run clean $(addprefix run-block-, $(BLOCK_OPERATIONS)) $(addprefix run-epoch-, $(EPOCH_OPERATIONS)) block-all epoch-all -# run-execution_payload (not implemented) and run-withdrawals (incompatible with BeaconState workaround) are excluded -all: download run-attestation run-attester_slashing run-block_header run-bls_to_execution_change run-deposit run-proposer_slashing run-sync_aggregate run-voluntary_exit +# run-block-execution_payload (not implemented) and run-block-withdrawals (incompatible with BeaconState workaround) are excluded +all: download run-block-attestation run-block-attester_slashing run-block-block_header run-block-bls_to_execution_change run-block-deposit run-block-proposer_slashing run-block-sync_aggregate run-block-voluntary_exit + +# Run all block processing benchmarks +block-all: $(addprefix run-block-, $(BLOCK_OPERATIONS)) # Run all epoch processing benchmarks -epoch-all: $(addprefix run-, $(EPOCH_OPERATIONS)) +epoch-all: $(addprefix run-epoch-, $(EPOCH_OPERATIONS)) download: @echo "Running download script..." @@ -27,36 +30,40 @@ download: @$(DOWNLOAD_SCRIPT) run: - @echo "Specify an operation: $(OPERATIONS)" + @echo "Specify a block operation: $(BLOCK_OPERATIONS)" + @echo "Specify an epoch operation: $(EPOCH_OPERATIONS)" + @echo "Use: make run-block- or make run-epoch-" @exit 1 -$(addprefix run-, $(OPERATIONS)): run-%: $(EXTRACT_DIR) +$(addprefix run-block-, $(BLOCK_OPERATIONS)): run-block-%: $(EXTRACT_DIR) @mkdir -p $(LOGS_DIR) @mkdir -p $(SUMMARIES_DIR) @echo "##################################################" - @echo "Running benchmarks for $*..." + @echo "Running block benchmarks for $*..." @echo "##################################################" @NO_COLOR=1 RISC0_DEV_MODE=$(RISC0_DEV_MODE) RUST_BACKTRACE=$(RUST_BACKTRACE) \ - cargo run --release -- -o $* \ + cargo run --release -- \ --excluded-cases multi_proposer_index_iterations \ --excluded-cases random_with_exits_with_duplicates \ - 2>&1 | tee $(LOGS_DIR)/execution_$*.log - @echo "Execution complete for $*." - @$(PARSE_SCRIPT) $* - @$(SORT_SCRIPT) $(SUMMARIES_DIR)/summary_$*.md + block $* \ + 2>&1 | tee $(LOGS_DIR)/execution_block_$*.log + @echo "Execution complete for block $*." + @$(PARSE_SCRIPT) block_$* + @$(SORT_SCRIPT) $(SUMMARIES_DIR)/summary_block_$*.md -$(addprefix run-, $(EPOCH_OPERATIONS)): run-%: $(EXTRACT_DIR) +$(addprefix run-epoch-, $(EPOCH_OPERATIONS)): run-epoch-%: $(EXTRACT_DIR) @mkdir -p $(LOGS_DIR) @mkdir -p $(SUMMARIES_DIR) @echo "##################################################" @echo "Running epoch processing benchmarks for $*..." @echo "##################################################" @NO_COLOR=1 RISC0_DEV_MODE=$(RISC0_DEV_MODE) RUST_BACKTRACE=$(RUST_BACKTRACE) \ - cargo run --release -- --fork electra -o $* \ - 2>&1 | tee $(LOGS_DIR)/execution_$*.log - @echo "Execution complete for $*." - @$(PARSE_SCRIPT) $* - @$(SORT_SCRIPT) $(SUMMARIES_DIR)/summary_$*.md + cargo run --release -- \ + epoch $* \ + 2>&1 | tee $(LOGS_DIR)/execution_epoch_$*.log + @echo "Execution complete for epoch $*." + @$(PARSE_SCRIPT) epoch_$* + @$(SORT_SCRIPT) $(SUMMARIES_DIR)/summary_epoch_$*.md clean: @echo "Cleaning up downloaded/execution files..." diff --git a/host/src/bin/cli/operation.rs b/host/src/bin/cli/operation.rs index c964956..5e9d3b0 100644 --- a/host/src/bin/cli/operation.rs +++ b/host/src/bin/cli/operation.rs @@ -1,16 +1,29 @@ -use clap::{Parser, ValueEnum}; +use clap::{Parser, Subcommand, ValueEnum}; use derive_more::Display; -use ream_lib::input::EpochProcessingType; +use ream_lib::input::{BlockOperationType, EpochOperationType}; +use std::path::PathBuf; #[derive(Debug, Clone, Parser)] pub struct OperationArgs { - #[clap(long, short)] - pub operation_name: OperationName, + #[clap(subcommand)] + pub operation: Operation, +} + +#[derive(Debug, Clone, Subcommand)] +pub enum Operation { + Block { + #[clap(value_enum)] + operation: BlockOperation, + }, + Epoch { + #[clap(value_enum)] + operation: EpochOperation, + }, } #[derive(ValueEnum, Debug, Clone, Display)] #[clap(rename_all = "snake_case")] -pub enum OperationName { +pub enum BlockOperation { #[display("attestation")] Attestation, #[display("attester_slashing")] @@ -31,7 +44,11 @@ pub enum OperationName { VoluntaryExit, #[display("withdrawals")] Withdrawals, - // Epoch processing operations +} + +#[derive(ValueEnum, Debug, Clone, Display)] +#[clap(rename_all = "snake_case")] +pub enum EpochOperation { #[display("justification_and_finalization")] JustificationAndFinalization, #[display("inactivity_updates")] @@ -60,70 +77,130 @@ pub enum OperationName { ParticipationFlagUpdates, } -impl OperationName { - pub fn to_input_name(&self) -> String { +// Generic traits for operation handling +pub trait OperationHandler { + fn prepare_input(&self, case_dir: &PathBuf) -> ream_lib::input::OperationInput; + fn load_test_cases(&self, fork: &crate::cli::fork::Fork) -> (PathBuf, Vec); + fn get_operation_category(&self) -> &'static str; +} + +// Block operation trait implementation +impl OperationHandler for BlockOperation { + fn prepare_input(&self, case_dir: &PathBuf) -> ream_lib::input::OperationInput { + use ream_lib::{file::ssz_from_file, input::{OperationInput, BlockOperationWrapper}}; + + let input_path = case_dir.join(format!("{}.ssz_snappy", self.get_input_filename())); + let ssz_bytes = ssz_from_file(&input_path); + + OperationInput::Block(BlockOperationWrapper { + operation_type: self.to_block_operation_type(), + ssz_bytes, + }) + } + + fn load_test_cases(&self, fork: &crate::cli::fork::Fork) -> (PathBuf, Vec) { + let test_case_dir = std::path::PathBuf::from(env!("CARGO_MANIFEST_DIR")) + .join("mainnet") + .join("tests") + .join("mainnet"); + + let base_dir = test_case_dir + .join(format!("{}", fork)) + .join(self.get_operation_category()) + .join(self.to_string()) + .join("pyspec_tests"); + + let test_cases = ream_lib::file::get_test_cases(&base_dir); + (base_dir, test_cases) + } + + fn get_operation_category(&self) -> &'static str { + "operations" + } +} + +// Epoch operation trait implementation +impl OperationHandler for EpochOperation { + fn prepare_input(&self, _case_dir: &PathBuf) -> ream_lib::input::OperationInput { + use ream_lib::input::{OperationInput, EpochOperationWrapper}; + + OperationInput::Epoch(EpochOperationWrapper { + operation_type: self.to_epoch_operation_type(), + }) + } + + fn load_test_cases(&self, fork: &crate::cli::fork::Fork) -> (PathBuf, Vec) { + let test_case_dir = std::path::PathBuf::from(env!("CARGO_MANIFEST_DIR")) + .join("mainnet") + .join("tests") + .join("mainnet"); + + let base_dir = test_case_dir + .join(format!("{}", fork)) + .join(self.get_operation_category()) + .join(self.to_string()) + .join("pyspec_tests"); + + let test_cases = ream_lib::file::get_test_cases(&base_dir); + (base_dir, test_cases) + } + + fn get_operation_category(&self) -> &'static str { + "epoch_processing" + } +} + +// Block operation specific methods +impl BlockOperation { + fn get_input_filename(&self) -> &'static str { match self { - OperationName::Attestation => "attestation".to_string(), - OperationName::AttesterSlashing => "attester_slashing".to_string(), - OperationName::BlockHeader => "block".to_string(), - OperationName::BLSToExecutionChange => "address_change".to_string(), - OperationName::Deposit => "deposit".to_string(), - OperationName::ExecutionPayload => "body".to_string(), - OperationName::ProposerSlashing => "proposer_slashing".to_string(), - OperationName::SyncAggregate => "sync_aggregate".to_string(), - OperationName::VoluntaryExit => "voluntary_exit".to_string(), - OperationName::Withdrawals => "execution_payload".to_string(), - // Epoch processing operations don't need input files - OperationName::JustificationAndFinalization => "".to_string(), - OperationName::InactivityUpdates => "".to_string(), - OperationName::RewardsAndPenalties => "".to_string(), - OperationName::RegistryUpdates => "".to_string(), - OperationName::Slashings => "".to_string(), - OperationName::Eth1DataReset => "".to_string(), - OperationName::PendingDeposits => "".to_string(), - OperationName::PendingConsolidations => "".to_string(), - OperationName::EffectiveBalanceUpdates => "".to_string(), - OperationName::SlashingsReset => "".to_string(), - OperationName::RandaoMixesReset => "".to_string(), - OperationName::HistoricalSummariesUpdate => "".to_string(), - OperationName::ParticipationFlagUpdates => "".to_string(), + BlockOperation::Attestation => "attestation", + BlockOperation::AttesterSlashing => "attester_slashing", + BlockOperation::BlockHeader => "block", + BlockOperation::BLSToExecutionChange => "address_change", + BlockOperation::Deposit => "deposit", + BlockOperation::ExecutionPayload => "body", + BlockOperation::ProposerSlashing => "proposer_slashing", + BlockOperation::SyncAggregate => "sync_aggregate", + BlockOperation::VoluntaryExit => "voluntary_exit", + BlockOperation::Withdrawals => "execution_payload", } } - pub fn is_epoch_processing(&self) -> bool { - matches!(self, - OperationName::JustificationAndFinalization | - OperationName::InactivityUpdates | - OperationName::RewardsAndPenalties | - OperationName::RegistryUpdates | - OperationName::Slashings | - OperationName::Eth1DataReset | - OperationName::PendingDeposits | - OperationName::PendingConsolidations | - OperationName::EffectiveBalanceUpdates | - OperationName::SlashingsReset | - OperationName::RandaoMixesReset | - OperationName::HistoricalSummariesUpdate | - OperationName::ParticipationFlagUpdates - ) + fn to_block_operation_type(&self) -> BlockOperationType { + match self { + BlockOperation::Attestation => BlockOperationType::Attestation, + BlockOperation::AttesterSlashing => BlockOperationType::AttesterSlashing, + BlockOperation::BlockHeader => BlockOperationType::BlockHeader, + BlockOperation::BLSToExecutionChange => BlockOperationType::BLSToExecutionChange, + BlockOperation::Deposit => BlockOperationType::Deposit, + BlockOperation::ExecutionPayload => BlockOperationType::ExecutionPayload, + BlockOperation::ProposerSlashing => BlockOperationType::ProposerSlashing, + BlockOperation::SyncAggregate => BlockOperationType::SyncAggregate, + BlockOperation::VoluntaryExit => BlockOperationType::VoluntaryExit, + BlockOperation::Withdrawals => BlockOperationType::Withdrawals, + } } +} - pub fn to_epoch_processing_type(&self) -> Option { +// Epoch operation specific methods +impl EpochOperation { + fn to_epoch_operation_type(&self) -> EpochOperationType { match self { - OperationName::JustificationAndFinalization => Some(EpochProcessingType::JustificationAndFinalization), - OperationName::InactivityUpdates => Some(EpochProcessingType::InactivityUpdates), - OperationName::RewardsAndPenalties => Some(EpochProcessingType::RewardsAndPenalties), - OperationName::RegistryUpdates => Some(EpochProcessingType::RegistryUpdates), - OperationName::Slashings => Some(EpochProcessingType::Slashings), - OperationName::Eth1DataReset => Some(EpochProcessingType::Eth1DataReset), - OperationName::PendingDeposits => Some(EpochProcessingType::PendingDeposits), - OperationName::PendingConsolidations => Some(EpochProcessingType::PendingConsolidations), - OperationName::EffectiveBalanceUpdates => Some(EpochProcessingType::EffectiveBalanceUpdates), - OperationName::SlashingsReset => Some(EpochProcessingType::SlashingsReset), - OperationName::RandaoMixesReset => Some(EpochProcessingType::RandaoMixesReset), - OperationName::HistoricalSummariesUpdate => Some(EpochProcessingType::HistoricalSummariesUpdate), - OperationName::ParticipationFlagUpdates => Some(EpochProcessingType::ParticipationFlagUpdates), - _ => None, + EpochOperation::JustificationAndFinalization => EpochOperationType::JustificationAndFinalization, + EpochOperation::InactivityUpdates => EpochOperationType::InactivityUpdates, + EpochOperation::RewardsAndPenalties => EpochOperationType::RewardsAndPenalties, + EpochOperation::RegistryUpdates => EpochOperationType::RegistryUpdates, + EpochOperation::Slashings => EpochOperationType::Slashings, + EpochOperation::Eth1DataReset => EpochOperationType::Eth1DataReset, + EpochOperation::PendingDeposits => EpochOperationType::PendingDeposits, + EpochOperation::PendingConsolidations => EpochOperationType::PendingConsolidations, + EpochOperation::EffectiveBalanceUpdates => EpochOperationType::EffectiveBalanceUpdates, + EpochOperation::SlashingsReset => EpochOperationType::SlashingsReset, + EpochOperation::RandaoMixesReset => EpochOperationType::RandaoMixesReset, + EpochOperation::HistoricalSummariesUpdate => EpochOperationType::HistoricalSummariesUpdate, + EpochOperation::ParticipationFlagUpdates => EpochOperationType::ParticipationFlagUpdates, } } } + diff --git a/host/src/bin/main.rs b/host/src/bin/main.rs index 20e029a..426aa5b 100644 --- a/host/src/bin/main.rs +++ b/host/src/bin/main.rs @@ -1,25 +1,12 @@ use clap::Parser; use risc0_zkvm::{default_prover, ExecutorEnv, ProverOpts}; use std::path::PathBuf; -use tracing::{error, info}; +use tracing::{info}; use tree_hash::{Hash256, TreeHash}; - -use ream_consensus::{ - attestation::Attestation, - attester_slashing::AttesterSlashing, - bls_to_execution_change::SignedBLSToExecutionChange, - deposit::Deposit, - electra::{ - beacon_block::BeaconBlock, beacon_state::BeaconState, execution_payload::ExecutionPayload, - }, - proposer_slashing::ProposerSlashing, - sync_aggregate::SyncAggregate, - voluntary_exit::SignedVoluntaryExit, -}; -use ream_lib::{file::ssz_from_file, input::{OperationInput, EpochProcessingType}, ssz::from_ssz_bytes}; - +use ream_consensus::{electra::{beacon_state::BeaconState, }}; +use ream_lib::{file::ssz_from_file, input::OperationInput, ssz::from_ssz_bytes}; mod cli; -use cli::{fork::Fork, operation::OperationName}; +use cli::{fork::Fork, operation::{Operation, OperationHandler}}; // These constants represent the RISC-V ELF and the image ID generated by risc0-build. // The ELF is used for proving and the ID is used for verification. @@ -51,8 +38,26 @@ struct Args { fn main() { setup_log(); - let (fork, operation_name, excluded_cases, compare_specs, compare_recompute) = parse_args(); - let (base_dir, test_cases) = load_test_cases(&fork, &operation_name); + let (fork, operation, excluded_cases, compare_specs, compare_recompute) = parse_args(); + + match operation { + Operation::Block { operation: block_op } => { + run_tests(&fork, &block_op, excluded_cases, compare_specs, compare_recompute); + } + Operation::Epoch { operation: epoch_op } => { + run_tests(&fork, &epoch_op, excluded_cases, compare_specs, compare_recompute); + } + } +} + +fn run_tests( + fork: &Fork, + operation: &T, + excluded_cases: Vec, + compare_specs: bool, + compare_recompute: bool, +) { + let (base_dir, test_cases) = operation.load_test_cases(fork); for test_case in test_cases { if excluded_cases.contains(&test_case) { @@ -60,10 +65,10 @@ fn main() { continue; } - info!("[{operation_name}] Test case: {test_case}"); + info!("[{operation}] Test case: {test_case}"); let case_dir = &base_dir.join(&test_case); - let input = prepare_input(&case_dir, &operation_name); + let input = operation.prepare_input(&case_dir); let pre_state_ssz_bytes: Vec = ssz_from_file(&case_dir.join("pre.ssz_snappy")); // Setup the executor environment and inject inputs @@ -136,84 +141,18 @@ fn setup_log() { .init(); } -fn parse_args() -> (Fork, OperationName, Vec, bool, bool) { +fn parse_args() -> (Fork, Operation, Vec, bool, bool) { let args = Args::parse(); ( args.fork.fork, - args.operation.operation_name, + args.operation.operation, args.excluded_cases, args.compare_specs, args.compare_recompute, ) } -fn prepare_input(case_dir: &PathBuf, operation_name: &OperationName) -> OperationInput { - if operation_name.is_epoch_processing() { - // For epoch processing, we don't need input files, just the processing type - OperationInput::EpochProcessing(operation_name.to_epoch_processing_type().unwrap()) - } else { - let input_path = &case_dir.join(format!("{}.ssz_snappy", operation_name.to_input_name())); - - match operation_name { - OperationName::Attestation => OperationInput::Attestation(ssz_from_file(input_path)), - OperationName::AttesterSlashing => { - OperationInput::AttesterSlashing(ssz_from_file(input_path)) - } - OperationName::BlockHeader => OperationInput::BeaconBlock(ssz_from_file(input_path)), - OperationName::BLSToExecutionChange => { - OperationInput::SignedBLSToExecutionChange(ssz_from_file(input_path)) - } - OperationName::Deposit => OperationInput::Deposit(ssz_from_file(input_path)), - OperationName::ExecutionPayload => { - OperationInput::BeaconBlockBody(ssz_from_file(input_path)) - } - OperationName::ProposerSlashing => { - OperationInput::ProposerSlashing(ssz_from_file(input_path)) - } - OperationName::SyncAggregate => OperationInput::SyncAggregate(ssz_from_file(input_path)), - OperationName::VoluntaryExit => { - OperationInput::SignedVoluntaryExit(ssz_from_file(input_path)) - } - OperationName::Withdrawals => OperationInput::ExecutionPayload(ssz_from_file(input_path)), - _ => unreachable!("Epoch processing should be handled above"), - } - } -} - -fn load_test_cases(fork: &Fork, operation_name: &OperationName) -> (PathBuf, Vec) { - // These assets are from consensus-specs repo. - let test_case_dir = std::path::PathBuf::from(env!("CARGO_MANIFEST_DIR")) - .join("mainnet") - .join("tests") - .join("mainnet"); - - if !std::path::Path::new(&test_case_dir).exists() { - error!("Error: You must first download test data via `make download`"); - std::process::exit(1); - } - - let base_dir = if operation_name.is_epoch_processing() { - // Epoch processing tests are in epoch_processing directory - test_case_dir - .join(format!("{}", fork)) - .join("epoch_processing") - .join(format!("{}", operation_name)) - .join("pyspec_tests") - } else { - // Regular operations are in operations directory - test_case_dir - .join(format!("{}", fork)) - .join("operations") - .join(format!("{}", operation_name)) - .join("pyspec_tests") - }; - - let test_cases = ream_lib::file::get_test_cases(&base_dir); - - (base_dir, test_cases) -} - fn assert_state_root_matches_specs( new_state_root: &Hash256, pre_state_ssz_bytes: &[u8], @@ -252,95 +191,7 @@ fn assert_state_root_matches_recompute( ) { let mut state: BeaconState = from_ssz_bytes(&pre_state_ssz_bytes).unwrap(); - match input { - OperationInput::Attestation(ssz_bytes) => { - let attestation: Attestation = from_ssz_bytes(&ssz_bytes).unwrap(); - let _ = state.process_attestation(&attestation); - } - OperationInput::AttesterSlashing(ssz_bytes) => { - let attester_slashing: AttesterSlashing = from_ssz_bytes(&ssz_bytes).unwrap(); - let _ = state.process_attester_slashing(&attester_slashing); - } - OperationInput::BeaconBlock(ssz_bytes) => { - let block: BeaconBlock = from_ssz_bytes(&ssz_bytes).unwrap(); - let _ = state.process_block_header(&block); - } - OperationInput::SignedBLSToExecutionChange(ssz_bytes) => { - let bls_change: SignedBLSToExecutionChange = from_ssz_bytes(&ssz_bytes).unwrap(); - let _ = state.process_bls_to_execution_change(&bls_change); - } - OperationInput::Deposit(ssz_bytes) => { - let deposit: Deposit = from_ssz_bytes(&ssz_bytes).unwrap(); - let _ = state.process_deposit(&deposit); - } - OperationInput::BeaconBlockBody(_ssz_bytes) => { - panic!("Not implemented"); - // let block_body: BeaconBlockBody = from_ssz_bytes(&ssz_bytes).unwrap(); - // let _ = state.process_execution_payload(&block_body); - } - OperationInput::ProposerSlashing(ssz_bytes) => { - let proposer_slashing: ProposerSlashing = from_ssz_bytes(&ssz_bytes).unwrap(); - let _ = state.process_proposer_slashing(&proposer_slashing); - } - OperationInput::SyncAggregate(ssz_bytes) => { - let sync_aggregate: SyncAggregate = from_ssz_bytes(&ssz_bytes).unwrap(); - let _ = state.process_sync_aggregate(&sync_aggregate); - } - OperationInput::SignedVoluntaryExit(ssz_bytes) => { - let voluntary_exit: SignedVoluntaryExit = from_ssz_bytes(&ssz_bytes).unwrap(); - let _ = state.process_voluntary_exit(&voluntary_exit); - } - OperationInput::ExecutionPayload(ssz_bytes) => { - let execution_payload: ExecutionPayload = from_ssz_bytes(&ssz_bytes).unwrap(); - let _ = state.process_withdrawals(&execution_payload); - } - OperationInput::EpochProcessing(epoch_type) => { - match epoch_type { - EpochProcessingType::JustificationAndFinalization => { - let _ = state.process_justification_and_finalization(); - } - EpochProcessingType::InactivityUpdates => { - let _ = state.process_inactivity_updates(); - } - EpochProcessingType::RewardsAndPenalties => { - let _ = state.process_rewards_and_penalties(); - } - EpochProcessingType::RegistryUpdates => { - let _ = state.process_registry_updates(); - } - EpochProcessingType::Slashings => { - let _ = state.process_slashings(); - } - EpochProcessingType::Eth1DataReset => { - let _ = state.process_eth1_data_reset(); - } - EpochProcessingType::PendingDeposits => { - let _ = state.process_pending_deposits(); - } - EpochProcessingType::PendingConsolidations => { - let _ = state.process_pending_consolidations(); - } - EpochProcessingType::EffectiveBalanceUpdates => { - let _ = state.process_effective_balance_updates(); - } - EpochProcessingType::SlashingsReset => { - let _ = state.process_slashings_reset(); - } - EpochProcessingType::RandaoMixesReset => { - let _ = state.process_randao_mixes_reset(); - } - EpochProcessingType::HistoricalSummariesUpdate => { - let _ = state.process_historical_summaries_update(); - } - EpochProcessingType::ParticipationFlagUpdates => { - let _ = state.process_participation_flag_updates(); - } - EpochProcessingType::SyncCommitteeUpdates => { - let _ = state.process_sync_committee_updates(); - } - } - } - } + input.process(&mut state); let recomputed_state_root = state.tree_hash_root(); diff --git a/lib/src/input.rs b/lib/src/input.rs index d64a5b3..789016f 100644 --- a/lib/src/input.rs +++ b/lib/src/input.rs @@ -1,22 +1,39 @@ use serde::{Deserialize, Serialize}; - +use ream_consensus::electra::beacon_state::BeaconState; + #[derive(Serialize, Deserialize, Debug)] pub enum OperationInput { - Attestation(Vec), - AttesterSlashing(Vec), - BeaconBlock(Vec), - SignedBLSToExecutionChange(Vec), - Deposit(Vec), - BeaconBlockBody(Vec), - ProposerSlashing(Vec), - SyncAggregate(Vec), - SignedVoluntaryExit(Vec), - ExecutionPayload(Vec), - EpochProcessing(EpochProcessingType), + Block(BlockOperationWrapper), + Epoch(EpochOperationWrapper), +} + +#[derive(Serialize, Deserialize, Debug)] +pub struct BlockOperationWrapper { + pub operation_type: BlockOperationType, + pub ssz_bytes: Vec, } #[derive(Serialize, Deserialize, Debug)] -pub enum EpochProcessingType { +pub struct EpochOperationWrapper { + pub operation_type: EpochOperationType, +} + +#[derive(Serialize, Deserialize, Debug)] +pub enum BlockOperationType { + Attestation, + AttesterSlashing, + BlockHeader, + BLSToExecutionChange, + Deposit, + ExecutionPayload, + ProposerSlashing, + SyncAggregate, + VoluntaryExit, + Withdrawals, +} + +#[derive(Serialize, Deserialize, Debug)] +pub enum EpochOperationType { JustificationAndFinalization, InactivityUpdates, RewardsAndPenalties, @@ -30,5 +47,112 @@ pub enum EpochProcessingType { RandaoMixesReset, HistoricalSummariesUpdate, ParticipationFlagUpdates, - SyncCommitteeUpdates, } + +impl OperationInput { + /// Process the operation on the beacon state. + pub fn process(&self, state: &mut BeaconState) { + match self { + OperationInput::Block(wrapper) => { + let _ = wrapper.process_operation(state); + } + OperationInput::Epoch(wrapper) => { + let _ = wrapper.process_operation(state); + } + } + } +} + +impl BlockOperationWrapper { + pub fn process_operation(&self, state: &mut BeaconState) { + use crate::ssz::from_ssz_bytes; + + match self.operation_type { + BlockOperationType::Attestation => { + let op: ream_consensus::attestation::Attestation = from_ssz_bytes(&self.ssz_bytes).unwrap(); + let _ = state.process_attestation(&op); + } + BlockOperationType::AttesterSlashing => { + let op: ream_consensus::attester_slashing::AttesterSlashing = from_ssz_bytes(&self.ssz_bytes).unwrap(); + let _ = state.process_attester_slashing(&op); + } + BlockOperationType::BlockHeader => { + let op: ream_consensus::electra::beacon_block::BeaconBlock = from_ssz_bytes(&self.ssz_bytes).unwrap(); + let _ = state.process_block_header(&op); + } + BlockOperationType::BLSToExecutionChange => { + let op: ream_consensus::bls_to_execution_change::SignedBLSToExecutionChange = from_ssz_bytes(&self.ssz_bytes).unwrap(); + let _ = state.process_bls_to_execution_change(&op); + } + BlockOperationType::Deposit => { + let op: ream_consensus::deposit::Deposit = from_ssz_bytes(&self.ssz_bytes).unwrap(); + let _ = state.process_deposit(&op); + } + BlockOperationType::ExecutionPayload => { + panic!("Not implemented"); + } + BlockOperationType::ProposerSlashing => { + let op: ream_consensus::proposer_slashing::ProposerSlashing = from_ssz_bytes(&self.ssz_bytes).unwrap(); + let _ = state.process_proposer_slashing(&op); + } + BlockOperationType::SyncAggregate => { + let op: ream_consensus::sync_aggregate::SyncAggregate = from_ssz_bytes(&self.ssz_bytes).unwrap(); + let _ = state.process_sync_aggregate(&op); + } + BlockOperationType::VoluntaryExit => { + let op: ream_consensus::voluntary_exit::SignedVoluntaryExit = from_ssz_bytes(&self.ssz_bytes).unwrap(); + let _ = state.process_voluntary_exit(&op); + } + BlockOperationType::Withdrawals => { + let op: ream_consensus::electra::execution_payload::ExecutionPayload = from_ssz_bytes(&self.ssz_bytes).unwrap(); + let _ = state.process_withdrawals(&op); + } + } + } +} + +impl EpochOperationWrapper { + pub fn process_operation(&self, state: &mut BeaconState) { + match self.operation_type { + EpochOperationType::JustificationAndFinalization => { + let _ = state.process_justification_and_finalization(); + } + EpochOperationType::InactivityUpdates => { + let _ = state.process_inactivity_updates(); + } + EpochOperationType::RewardsAndPenalties => { + let _ = state.process_rewards_and_penalties(); + } + EpochOperationType::RegistryUpdates => { + let _ = state.process_registry_updates(); + } + EpochOperationType::Slashings => { + let _ = state.process_slashings(); + } + EpochOperationType::Eth1DataReset => { + let _ = state.process_eth1_data_reset(); + } + EpochOperationType::PendingDeposits => { + let _ = state.process_pending_deposits(); + } + EpochOperationType::PendingConsolidations => { + let _ = state.process_pending_consolidations(); + } + EpochOperationType::EffectiveBalanceUpdates => { + let _ = state.process_effective_balance_updates(); + } + EpochOperationType::SlashingsReset => { + let _ = state.process_slashings_reset(); + } + EpochOperationType::RandaoMixesReset => { + let _ = state.process_randao_mixes_reset(); + } + EpochOperationType::HistoricalSummariesUpdate => { + let _ = state.process_historical_summaries_update(); + } + EpochOperationType::ParticipationFlagUpdates => { + let _ = state.process_participation_flag_updates(); + } + } + } +} \ No newline at end of file diff --git a/methods/guest/src/main.rs b/methods/guest/src/main.rs index 3722c52..9df912d 100644 --- a/methods/guest/src/main.rs +++ b/methods/guest/src/main.rs @@ -1,22 +1,9 @@ use risc0_zkvm::guest::env; use tree_hash::TreeHash; -use ream_consensus::{ - attestation::Attestation, - attester_slashing::AttesterSlashing, - bls_to_execution_change::SignedBLSToExecutionChange, - electra::{ - beacon_block::BeaconBlock, - beacon_state::BeaconState, - execution_payload::ExecutionPayload, - }, - deposit::Deposit, - proposer_slashing::ProposerSlashing, - sync_aggregate::SyncAggregate, - voluntary_exit::SignedVoluntaryExit, -}; +use ream_consensus::electra::beacon_state::BeaconState; use ream_lib::{ - input::{OperationInput, EpochProcessingType}, + input::OperationInput, ssz::from_ssz_bytes, }; @@ -38,6 +25,7 @@ fn main() { eprintln!("{}:{}: {}", "read-pre-state-ssz", "end", env::cycle_count()); let mut state: BeaconState = deserialize(&pre_state_ssz_bytes); + eprintln!("{}:{}: {}", "read-operation-input", "start", env::cycle_count()); let input: OperationInput = env::read(); eprintln!("{}:{}: {}", "read-operation-input", "end", env::cycle_count()); @@ -46,97 +34,7 @@ fn main() { // State transition of the beacon state. eprintln!("{}:{}: {}", "process-operation", "start", env::cycle_count()); - - match input { - OperationInput::Attestation(ssz_bytes) => { - let attestation: Attestation = deserialize(&ssz_bytes); - let _ = state.process_attestation(&attestation); - } - OperationInput::AttesterSlashing(ssz_bytes) => { - let attester_slashing: AttesterSlashing = deserialize(&ssz_bytes); - let _ = state.process_attester_slashing(&attester_slashing); - } - OperationInput::BeaconBlock(ssz_bytes) => { - let block: BeaconBlock = deserialize(&ssz_bytes); - let _ = state.process_block_header(&block); - } - OperationInput::SignedBLSToExecutionChange(ssz_bytes) => { - let bls_change: SignedBLSToExecutionChange = deserialize(&ssz_bytes); - let _ = state.process_bls_to_execution_change(&bls_change); - } - OperationInput::Deposit(ssz_bytes) => { - let deposit: Deposit = deserialize(&ssz_bytes); - let _ = state.process_deposit(&deposit); - } - OperationInput::BeaconBlockBody(_ssz_bytes) => { - panic!("Not implemented"); - // let block_body: BeaconBlockBody = deserialize(&ssz_bytes); - // let _ = state.process_execution_payload(&block_body); - } - OperationInput::ProposerSlashing(ssz_bytes) => { - let proposer_slashing: ProposerSlashing = deserialize(&ssz_bytes); - let _ = state.process_proposer_slashing(&proposer_slashing); - } - OperationInput::SyncAggregate(ssz_bytes) => { - let sync_aggregate: SyncAggregate = deserialize(&ssz_bytes); - let _ = state.process_sync_aggregate(&sync_aggregate); - } - OperationInput::SignedVoluntaryExit(ssz_bytes) => { - let voluntary_exit: SignedVoluntaryExit = deserialize(&ssz_bytes); - let _ = state.process_voluntary_exit(&voluntary_exit); - } - OperationInput::ExecutionPayload(ssz_bytes) => { - let execution_payload: ExecutionPayload = deserialize(&ssz_bytes); - let _ = state.process_withdrawals(&execution_payload); - } - OperationInput::EpochProcessing(epoch_type) => { - match epoch_type { - EpochProcessingType::JustificationAndFinalization => { - let _ = state.process_justification_and_finalization(); - } - EpochProcessingType::InactivityUpdates => { - let _ = state.process_inactivity_updates(); - } - EpochProcessingType::RewardsAndPenalties => { - let _ = state.process_rewards_and_penalties(); - } - EpochProcessingType::RegistryUpdates => { - let _ = state.process_registry_updates(); - } - EpochProcessingType::Slashings => { - let _ = state.process_slashings(); - } - EpochProcessingType::Eth1DataReset => { - let _ = state.process_eth1_data_reset(); - } - EpochProcessingType::PendingDeposits => { - let _ = state.process_pending_deposits(); - } - EpochProcessingType::PendingConsolidations => { - let _ = state.process_pending_consolidations(); - } - EpochProcessingType::EffectiveBalanceUpdates => { - let _ = state.process_effective_balance_updates(); - } - EpochProcessingType::SlashingsReset => { - let _ = state.process_slashings_reset(); - } - EpochProcessingType::RandaoMixesReset => { - let _ = state.process_randao_mixes_reset(); - } - EpochProcessingType::HistoricalSummariesUpdate => { - let _ = state.process_historical_summaries_update(); - } - EpochProcessingType::ParticipationFlagUpdates => { - let _ = state.process_participation_flag_updates(); - } - EpochProcessingType::SyncCommitteeUpdates => { - let _ = state.process_sync_committee_updates(); - } - } - } - } - + input.process(&mut state); eprintln!("{}:{}: {}", "process-operation", "end", env::cycle_count()); // Merkleize the processed state From b75e2be8edb4fad2e94831f71c98a232ad6d41e6 Mon Sep 17 00:00:00 2001 From: x-senpai-x Date: Fri, 5 Sep 2025 14:29:28 +0530 Subject: [PATCH 5/7] chore: cargo fmt --- host/src/bin/cli/operation.rs | 28 +++++++++------ host/src/bin/main.rs | 41 ++++++++++++++++------ lib/src/input.rs | 32 ++++++++++------- methods/guest/src/main.rs | 65 ++++++++++++++++++++++++++++------- 4 files changed, 119 insertions(+), 47 deletions(-) diff --git a/host/src/bin/cli/operation.rs b/host/src/bin/cli/operation.rs index 5e9d3b0..e0c9dc4 100644 --- a/host/src/bin/cli/operation.rs +++ b/host/src/bin/cli/operation.rs @@ -1,8 +1,13 @@ use clap::{Parser, Subcommand, ValueEnum}; use derive_more::Display; -use ream_lib::input::{BlockOperationType, EpochOperationType}; +use ream_lib::{ + file::ssz_from_file, + input::{ + BlockOperationType, BlockOperationWrapper, EpochOperationType, EpochOperationWrapper, + OperationInput, + }, +}; use std::path::PathBuf; - #[derive(Debug, Clone, Parser)] pub struct OperationArgs { #[clap(subcommand)] @@ -87,11 +92,9 @@ pub trait OperationHandler { // Block operation trait implementation impl OperationHandler for BlockOperation { fn prepare_input(&self, case_dir: &PathBuf) -> ream_lib::input::OperationInput { - use ream_lib::{file::ssz_from_file, input::{OperationInput, BlockOperationWrapper}}; - let input_path = case_dir.join(format!("{}.ssz_snappy", self.get_input_filename())); let ssz_bytes = ssz_from_file(&input_path); - + OperationInput::Block(BlockOperationWrapper { operation_type: self.to_block_operation_type(), ssz_bytes, @@ -122,8 +125,6 @@ impl OperationHandler for BlockOperation { // Epoch operation trait implementation impl OperationHandler for EpochOperation { fn prepare_input(&self, _case_dir: &PathBuf) -> ream_lib::input::OperationInput { - use ream_lib::input::{OperationInput, EpochOperationWrapper}; - OperationInput::Epoch(EpochOperationWrapper { operation_type: self.to_epoch_operation_type(), }) @@ -187,7 +188,9 @@ impl BlockOperation { impl EpochOperation { fn to_epoch_operation_type(&self) -> EpochOperationType { match self { - EpochOperation::JustificationAndFinalization => EpochOperationType::JustificationAndFinalization, + EpochOperation::JustificationAndFinalization => { + EpochOperationType::JustificationAndFinalization + } EpochOperation::InactivityUpdates => EpochOperationType::InactivityUpdates, EpochOperation::RewardsAndPenalties => EpochOperationType::RewardsAndPenalties, EpochOperation::RegistryUpdates => EpochOperationType::RegistryUpdates, @@ -198,9 +201,12 @@ impl EpochOperation { EpochOperation::EffectiveBalanceUpdates => EpochOperationType::EffectiveBalanceUpdates, EpochOperation::SlashingsReset => EpochOperationType::SlashingsReset, EpochOperation::RandaoMixesReset => EpochOperationType::RandaoMixesReset, - EpochOperation::HistoricalSummariesUpdate => EpochOperationType::HistoricalSummariesUpdate, - EpochOperation::ParticipationFlagUpdates => EpochOperationType::ParticipationFlagUpdates, + EpochOperation::HistoricalSummariesUpdate => { + EpochOperationType::HistoricalSummariesUpdate + } + EpochOperation::ParticipationFlagUpdates => { + EpochOperationType::ParticipationFlagUpdates + } } } } - diff --git a/host/src/bin/main.rs b/host/src/bin/main.rs index 426aa5b..2c542b4 100644 --- a/host/src/bin/main.rs +++ b/host/src/bin/main.rs @@ -1,12 +1,15 @@ use clap::Parser; +use ream_consensus::electra::beacon_state::BeaconState; +use ream_lib::{file::ssz_from_file, input::OperationInput, ssz::from_ssz_bytes}; use risc0_zkvm::{default_prover, ExecutorEnv, ProverOpts}; use std::path::PathBuf; -use tracing::{info}; +use tracing::info; use tree_hash::{Hash256, TreeHash}; -use ream_consensus::{electra::{beacon_state::BeaconState, }}; -use ream_lib::{file::ssz_from_file, input::OperationInput, ssz::from_ssz_bytes}; mod cli; -use cli::{fork::Fork, operation::{Operation, OperationHandler}}; +use cli::{ + fork::Fork, + operation::{Operation, OperationHandler}, +}; // These constants represent the RISC-V ELF and the image ID generated by risc0-build. // The ELF is used for proving and the ID is used for verification. @@ -39,13 +42,29 @@ fn main() { setup_log(); let (fork, operation, excluded_cases, compare_specs, compare_recompute) = parse_args(); - + match operation { - Operation::Block { operation: block_op } => { - run_tests(&fork, &block_op, excluded_cases, compare_specs, compare_recompute); - } - Operation::Epoch { operation: epoch_op } => { - run_tests(&fork, &epoch_op, excluded_cases, compare_specs, compare_recompute); + Operation::Block { + operation: block_op, + } => { + run_tests( + &fork, + &block_op, + excluded_cases, + compare_specs, + compare_recompute, + ); + } + Operation::Epoch { + operation: epoch_op, + } => { + run_tests( + &fork, + &epoch_op, + excluded_cases, + compare_specs, + compare_recompute, + ); } } } @@ -191,7 +210,7 @@ fn assert_state_root_matches_recompute( ) { let mut state: BeaconState = from_ssz_bytes(&pre_state_ssz_bytes).unwrap(); - input.process(&mut state); + input.process(&mut state); let recomputed_state_root = state.tree_hash_root(); diff --git a/lib/src/input.rs b/lib/src/input.rs index 789016f..d6eaaa8 100644 --- a/lib/src/input.rs +++ b/lib/src/input.rs @@ -1,6 +1,6 @@ -use serde::{Deserialize, Serialize}; use ream_consensus::electra::beacon_state::BeaconState; - +use serde::{Deserialize, Serialize}; + #[derive(Serialize, Deserialize, Debug)] pub enum OperationInput { Block(BlockOperationWrapper), @@ -66,22 +66,26 @@ impl OperationInput { impl BlockOperationWrapper { pub fn process_operation(&self, state: &mut BeaconState) { use crate::ssz::from_ssz_bytes; - + match self.operation_type { BlockOperationType::Attestation => { - let op: ream_consensus::attestation::Attestation = from_ssz_bytes(&self.ssz_bytes).unwrap(); + let op: ream_consensus::attestation::Attestation = + from_ssz_bytes(&self.ssz_bytes).unwrap(); let _ = state.process_attestation(&op); } BlockOperationType::AttesterSlashing => { - let op: ream_consensus::attester_slashing::AttesterSlashing = from_ssz_bytes(&self.ssz_bytes).unwrap(); + let op: ream_consensus::attester_slashing::AttesterSlashing = + from_ssz_bytes(&self.ssz_bytes).unwrap(); let _ = state.process_attester_slashing(&op); } BlockOperationType::BlockHeader => { - let op: ream_consensus::electra::beacon_block::BeaconBlock = from_ssz_bytes(&self.ssz_bytes).unwrap(); + let op: ream_consensus::electra::beacon_block::BeaconBlock = + from_ssz_bytes(&self.ssz_bytes).unwrap(); let _ = state.process_block_header(&op); } BlockOperationType::BLSToExecutionChange => { - let op: ream_consensus::bls_to_execution_change::SignedBLSToExecutionChange = from_ssz_bytes(&self.ssz_bytes).unwrap(); + let op: ream_consensus::bls_to_execution_change::SignedBLSToExecutionChange = + from_ssz_bytes(&self.ssz_bytes).unwrap(); let _ = state.process_bls_to_execution_change(&op); } BlockOperationType::Deposit => { @@ -92,19 +96,23 @@ impl BlockOperationWrapper { panic!("Not implemented"); } BlockOperationType::ProposerSlashing => { - let op: ream_consensus::proposer_slashing::ProposerSlashing = from_ssz_bytes(&self.ssz_bytes).unwrap(); + let op: ream_consensus::proposer_slashing::ProposerSlashing = + from_ssz_bytes(&self.ssz_bytes).unwrap(); let _ = state.process_proposer_slashing(&op); } BlockOperationType::SyncAggregate => { - let op: ream_consensus::sync_aggregate::SyncAggregate = from_ssz_bytes(&self.ssz_bytes).unwrap(); + let op: ream_consensus::sync_aggregate::SyncAggregate = + from_ssz_bytes(&self.ssz_bytes).unwrap(); let _ = state.process_sync_aggregate(&op); } BlockOperationType::VoluntaryExit => { - let op: ream_consensus::voluntary_exit::SignedVoluntaryExit = from_ssz_bytes(&self.ssz_bytes).unwrap(); + let op: ream_consensus::voluntary_exit::SignedVoluntaryExit = + from_ssz_bytes(&self.ssz_bytes).unwrap(); let _ = state.process_voluntary_exit(&op); } BlockOperationType::Withdrawals => { - let op: ream_consensus::electra::execution_payload::ExecutionPayload = from_ssz_bytes(&self.ssz_bytes).unwrap(); + let op: ream_consensus::electra::execution_payload::ExecutionPayload = + from_ssz_bytes(&self.ssz_bytes).unwrap(); let _ = state.process_withdrawals(&op); } } @@ -155,4 +163,4 @@ impl EpochOperationWrapper { } } } -} \ No newline at end of file +} diff --git a/methods/guest/src/main.rs b/methods/guest/src/main.rs index 9df912d..55718bc 100644 --- a/methods/guest/src/main.rs +++ b/methods/guest/src/main.rs @@ -2,15 +2,24 @@ use risc0_zkvm::guest::env; use tree_hash::TreeHash; use ream_consensus::electra::beacon_state::BeaconState; -use ream_lib::{ - input::OperationInput, - ssz::from_ssz_bytes, -}; +use ream_lib::{input::OperationInput, ssz::from_ssz_bytes}; fn deserialize(ssz_bytes: &[u8]) -> T { - eprintln!("{}-{}:{}: {}", "deserialize", std::any::type_name::(), "start", env::cycle_count()); + eprintln!( + "{}-{}:{}: {}", + "deserialize", + std::any::type_name::(), + "start", + env::cycle_count() + ); let deserialized = from_ssz_bytes(&ssz_bytes).unwrap(); - eprintln!("{}-{}:{}: {}", "deserialize", std::any::type_name::(), "end", env::cycle_count()); + eprintln!( + "{}-{}:{}: {}", + "deserialize", + std::any::type_name::(), + "end", + env::cycle_count() + ); deserialized } @@ -18,29 +27,59 @@ fn deserialize(ssz_bytes: &[u8]) -> T { fn main() { // Read inputs to the program. - eprintln!("{}:{}: {}", "read-pre-state-ssz", "start", env::cycle_count()); + eprintln!( + "{}:{}: {}", + "read-pre-state-ssz", + "start", + env::cycle_count() + ); let pre_state_len: usize = env::read(); let mut pre_state_ssz_bytes = vec![0u8; pre_state_len]; env::read_slice(&mut pre_state_ssz_bytes); eprintln!("{}:{}: {}", "read-pre-state-ssz", "end", env::cycle_count()); let mut state: BeaconState = deserialize(&pre_state_ssz_bytes); - - eprintln!("{}:{}: {}", "read-operation-input", "start", env::cycle_count()); + + eprintln!( + "{}:{}: {}", + "read-operation-input", + "start", + env::cycle_count() + ); let input: OperationInput = env::read(); - eprintln!("{}:{}: {}", "read-operation-input", "end", env::cycle_count()); + eprintln!( + "{}:{}: {}", + "read-operation-input", + "end", + env::cycle_count() + ); // Main logic of the program. // State transition of the beacon state. - eprintln!("{}:{}: {}", "process-operation", "start", env::cycle_count()); + eprintln!( + "{}:{}: {}", + "process-operation", + "start", + env::cycle_count() + ); input.process(&mut state); eprintln!("{}:{}: {}", "process-operation", "end", env::cycle_count()); // Merkleize the processed state - eprintln!("{}:{}: {}", "merkleize-operation", "start", env::cycle_count()); + eprintln!( + "{}:{}: {}", + "merkleize-operation", + "start", + env::cycle_count() + ); let state_root = state.tree_hash_root(); - eprintln!("{}:{}: {}", "merkleize-operation", "end", env::cycle_count()); + eprintln!( + "{}:{}: {}", + "merkleize-operation", + "end", + env::cycle_count() + ); eprintln!("{}:{}: {}", "commit", "start", env::cycle_count()); env::commit(&state_root); From 752db8f4add5aafcbdc078aca5f59da8fdaa71fe Mon Sep 17 00:00:00 2001 From: x-senpai-x Date: Sat, 6 Sep 2025 17:45:55 +0530 Subject: [PATCH 6/7] added From trait, Display trait, updated riscZero and toolchain to latest and formatted the codebase --- Cargo.lock | 556 +++++++++++----------------------- README.md | 61 +++- host/Cargo.toml | 2 +- host/Makefile | 2 +- host/src/bin/cli/operation.rs | 21 +- host/src/bin/main.rs | 2 +- methods/Cargo.toml | 2 +- methods/guest/Cargo.toml | 4 +- rust-toolchain | 2 +- 9 files changed, 252 insertions(+), 400 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index fae9b99..e3333f7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -46,9 +46,9 @@ checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "alloy-consensus" -version = "1.0.27" +version = "1.0.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7345077623aaa080fc06735ac13b8fa335125c8550f9c4f64135a5bf6f79967" +checksum = "d213580c17d239ae83c0d897ac3315db7cda83d2d4936a9823cc3517552f2e24" dependencies = [ "alloy-eips", "alloy-primitives", @@ -59,7 +59,7 @@ dependencies = [ "derive_more", "either", "once_cell", - "thiserror 2.0.16", + "thiserror", ] [[package]] @@ -71,7 +71,7 @@ dependencies = [ "alloy-primitives", "alloy-rlp", "crc", - "thiserror 2.0.16", + "thiserror", ] [[package]] @@ -92,14 +92,14 @@ checksum = "9d4769c6ffddca380b0070d71c8b7f30bed375543fe76bb2f74ec0acf4b7cd16" dependencies = [ "alloy-primitives", "alloy-rlp", - "thiserror 2.0.16", + "thiserror", ] [[package]] name = "alloy-eips" -version = "1.0.27" +version = "1.0.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c219a87fb386a75780ddbdbbced242477321887e426b0f946c05815ceabe5e09" +checksum = "2a15b4b0f6bab47aae017d52bb5a739bda381553c09fb9918b7172721ef5f5de" dependencies = [ "alloy-eip2124", "alloy-eip2930", @@ -110,7 +110,7 @@ dependencies = [ "derive_more", "either", "sha2", - "thiserror 2.0.16", + "thiserror", ] [[package]] @@ -179,12 +179,12 @@ dependencies = [ [[package]] name = "alloy-tx-macros" -version = "1.0.27" +version = "1.0.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d14809f908822dbff0dc472c77ca4aa129ab12e22fd9bff2dd1ef54603e68e3d" +checksum = "3b5becb9c269a7d05a2f28d549f86df5a5dbc923e2667eff84fdecac8cda534c" dependencies = [ "alloy-primitives", - "darling", + "darling 0.21.3", "proc-macro2", "quote", "syn 2.0.106", @@ -710,9 +710,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.9.3" +version = "2.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34efbcccd345379ca2868b2b2c9d3782e9cc58ba87bc7d79d5b53d9c9ae6f25d" +checksum = "2261d10cca569e4643e526d8dc2e62e433cc8aba21ab764233731f8d369bf394" [[package]] name = "bitvec" @@ -773,7 +773,7 @@ dependencies = [ "maybe-async", "reqwest", "serde", - "thiserror 2.0.16", + "thiserror", ] [[package]] @@ -813,18 +813,18 @@ checksum = "7575182f7272186991736b70173b0ea045398f984bf5ebbb3804736ce1330c9d" [[package]] name = "bytemuck" -version = "1.23.1" +version = "1.23.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c76a5792e44e4abe34d3abf15636779261d45a7450612059293d1d2cfc63422" +checksum = "3995eaeebcdf32f91f980d360f78732ddc061097ab4e39991ae7a6ace9194677" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.8.1" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fa76293b4f7bb636ab88fd78228235b5248b4d05cc589aed610f954af5d7c7a" +checksum = "4f154e572231cb6ba2bd1176980827e3d5dc04cc183a75dea38109fbdd672d29" dependencies = [ "proc-macro2", "quote", @@ -875,15 +875,16 @@ dependencies = [ "semver 1.0.26", "serde", "serde_json", - "thiserror 2.0.16", + "thiserror", ] [[package]] name = "cc" -version = "1.2.34" +version = "1.2.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42bc4aea80032b7bf409b0bc7ccad88853858911b7713a8062fdc0623867bedc" +checksum = "5252b3d2648e5eedbc1a6f501e3c795e07025c1e93bbf8bbdd6eef7f447a6d54" dependencies = [ + "find-msvc-tools", "shlex", ] @@ -909,14 +910,14 @@ dependencies = [ "iana-time-zone", "num-traits", "serde", - "windows-link", + "windows-link 0.1.3", ] [[package]] name = "clap" -version = "4.5.46" +version = "4.5.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c5e4fcf9c21d2e544ca1ee9d8552de13019a42aa7dbf32747fa7aaf1df76e57" +checksum = "7eac00902d9d136acd712710d71823fb8ac8004ca445a89e73a41d45aa712931" dependencies = [ "clap_builder", "clap_derive", @@ -924,9 +925,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.46" +version = "4.5.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fecb53a0e6fcfb055f686001bc2e2592fa527efaf38dbe81a6a9563562e57d41" +checksum = "2ad9bbf750e73b5884fb8a211a9424a1906c1e156724260fdae972f31d70e1d6" dependencies = [ "anstream", "anstyle", @@ -936,9 +937,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.45" +version = "4.5.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14cb31bb0a7d536caef2639baa7fad459e15c3144efefa6dbd1c84562c4739f6" +checksum = "bbfd7eae0b0f1a6e63d4b13c9c478de77c2eb546fba158ad50b4203dc24b9f9c" dependencies = [ "heck", "proc-macro2", @@ -958,7 +959,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fa961b519f0b462e3a3b4a34b64d119eeaca1d59af726fe450bbba07a9fc0a1" dependencies = [ - "thiserror 2.0.16", + "thiserror", ] [[package]] @@ -1135,8 +1136,18 @@ version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" dependencies = [ - "darling_core", - "darling_macro", + "darling_core 0.20.11", + "darling_macro 0.20.11", +] + +[[package]] +name = "darling" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0" +dependencies = [ + "darling_core 0.21.3", + "darling_macro 0.21.3", ] [[package]] @@ -1153,13 +1164,38 @@ dependencies = [ "syn 2.0.106", ] +[[package]] +name = "darling_core" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.106", +] + [[package]] name = "darling_macro" version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ - "darling_core", + "darling_core 0.20.11", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "darling_macro" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" +dependencies = [ + "darling_core 0.21.3", "quote", "syn 2.0.106", ] @@ -1177,9 +1213,9 @@ dependencies = [ [[package]] name = "deranged" -version = "0.4.0" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e" +checksum = "d630bccd429a5bb5a64b5e94f693bfc48c9f8566418fda4c494cc94f911f87cc" dependencies = [ "powerfmt", "serde", @@ -1211,7 +1247,7 @@ version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2d5bcf7b024d6835cfb3d473887cd966994907effbe9227e8c8219824d06c4e8" dependencies = [ - "darling", + "darling 0.20.11", "proc-macro2", "quote", "syn 2.0.106", @@ -1270,34 +1306,13 @@ dependencies = [ "subtle", ] -[[package]] -name = "dirs" -version = "5.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" -dependencies = [ - "dirs-sys 0.4.1", -] - [[package]] name = "dirs" version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e" dependencies = [ - "dirs-sys 0.5.0", -] - -[[package]] -name = "dirs-sys" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" -dependencies = [ - "libc", - "option-ext", - "redox_users 0.4.6", - "windows-sys 0.48.0", + "dirs-sys", ] [[package]] @@ -1308,8 +1323,8 @@ checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab" dependencies = [ "libc", "option-ext", - "redox_users 0.5.2", - "windows-sys 0.60.2", + "redox_users", + "windows-sys 0.61.0", ] [[package]] @@ -1524,7 +1539,7 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0dd55d08012b4e0dfcc92b8d6081234df65f2986ad34cc76eeed69c5e2ce7506" dependencies = [ - "darling", + "darling 0.20.11", "proc-macro2", "quote", "syn 2.0.106", @@ -1569,6 +1584,12 @@ dependencies = [ "subtle", ] +[[package]] +name = "find-msvc-tools" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fd99930f64d146689264c637b5af2f0233a933bef0d8570e2526bf9e083192d" + [[package]] name = "fixed-hash" version = "0.8.0" @@ -1731,7 +1752,7 @@ dependencies = [ "js-sys", "libc", "r-efi", - "wasi 0.14.3+wasi-0.2.4", + "wasi 0.14.4+wasi-0.2.4", "wasm-bindgen", ] @@ -1758,15 +1779,6 @@ version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" -[[package]] -name = "hashbrown" -version = "0.14.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" -dependencies = [ - "ahash", -] - [[package]] name = "hashbrown" version = "0.15.5" @@ -1778,15 +1790,6 @@ dependencies = [ "serde", ] -[[package]] -name = "hashlink" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ba4ff7128dee98c7dc9794b6a411377e1404dba1c97deb8d1a55297bd25d8af" -dependencies = [ - "hashbrown 0.14.5", -] - [[package]] name = "hashlink" version = "0.10.0" @@ -2119,7 +2122,7 @@ version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "046fa2d4d00aea763528b4950358d0ead425372445dc8ff86312b3c69ff7727b" dependencies = [ - "bitflags 2.9.3", + "bitflags 2.9.4", "cfg-if", "libc", ] @@ -2181,9 +2184,9 @@ checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" [[package]] name = "js-sys" -version = "0.3.77" +version = "0.3.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +checksum = "0c0b063578492ceec17683ef2f8c5e89121fbd0b172cbc280635ab7567db2738" dependencies = [ "once_cell", "wasm-bindgen", @@ -2271,7 +2274,7 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "391290121bad3d37fbddad76d8f5d1c1c314cfc646d143d7e07a3086ddff0ce3" dependencies = [ - "bitflags 2.9.3", + "bitflags 2.9.4", "libc", ] @@ -2289,9 +2292,9 @@ checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" [[package]] name = "log" -version = "0.4.27" +version = "0.4.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" +checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" [[package]] name = "lru-slab" @@ -2352,7 +2355,7 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ecfd3296f8c56b7c1f6fbac3c71cefa9d78ce009850c45000015f206dc7fa21" dependencies = [ - "bitflags 2.9.3", + "bitflags 2.9.4", "block", "core-graphics-types", "foreign-types", @@ -2365,7 +2368,7 @@ dependencies = [ name = "methods" version = "0.1.0" dependencies = [ - "risc0-build 2.3.2", + "risc0-build", ] [[package]] @@ -2599,7 +2602,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1db05f56d34358a8b1066f67cbb203ee3e7ed2ba674a6263a1d5ec6db2204323" dependencies = [ "memchr", - "thiserror 2.0.16", + "thiserror", "ucd-trie", ] @@ -2722,7 +2725,7 @@ checksum = "6fcdab19deb5195a31cf7726a210015ff1496ba1464fd42cb4f537b8b01b471f" dependencies = [ "bit-set", "bit-vec", - "bitflags 2.9.3", + "bitflags 2.9.4", "lazy_static", "num-traits", "rand 0.9.2", @@ -2777,7 +2780,7 @@ dependencies = [ "rustc-hash", "rustls", "socket2", - "thiserror 2.0.16", + "thiserror", "tokio", "tracing", "web-time", @@ -2798,7 +2801,7 @@ dependencies = [ "rustls", "rustls-pki-types", "slab", - "thiserror 2.0.16", + "thiserror", "tinyvec", "tracing", "web-time", @@ -2912,7 +2915,7 @@ dependencies = [ [[package]] name = "ream-bls" version = "0.1.0" -source = "git+https://github.com/ReamLabs/ream.git#23e93fba74f359f9b292652784976df45372cabb" +source = "git+https://github.com/ReamLabs/ream.git#0050f0f030a7a158bb57966dc94d4340ec968ee7" dependencies = [ "alloy-primitives", "anyhow", @@ -2923,7 +2926,7 @@ dependencies = [ "serde", "sha2", "ssz_types 0.11.0 (git+https://github.com/ReamLabs/ssz_types?branch=removable-variable-list)", - "thiserror 2.0.16", + "thiserror", "tree_hash", "tree_hash_derive", ] @@ -2931,7 +2934,7 @@ dependencies = [ [[package]] name = "ream-consensus-beacon" version = "0.1.0" -source = "git+https://github.com/ReamLabs/ream.git#23e93fba74f359f9b292652784976df45372cabb" +source = "git+https://github.com/ReamLabs/ream.git#0050f0f030a7a158bb57966dc94d4340ec968ee7" dependencies = [ "alloy-consensus", "alloy-primitives", @@ -2953,7 +2956,7 @@ dependencies = [ "sha2", "snap", "ssz_types 0.11.0 (git+https://github.com/ReamLabs/ssz_types?branch=removable-variable-list)", - "thiserror 2.0.16", + "thiserror", "tracing", "tree_hash", "tree_hash_derive", @@ -2962,7 +2965,7 @@ dependencies = [ [[package]] name = "ream-consensus-misc" version = "0.1.0" -source = "git+https://github.com/ReamLabs/ream.git#23e93fba74f359f9b292652784976df45372cabb" +source = "git+https://github.com/ReamLabs/ream.git#0050f0f030a7a158bb57966dc94d4340ec968ee7" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -2976,7 +2979,7 @@ dependencies = [ "serde_json", "sha2", "ssz_types 0.11.0 (git+https://github.com/ReamLabs/ssz_types?branch=removable-variable-list)", - "thiserror 2.0.16", + "thiserror", "tree_hash", "tree_hash_derive", ] @@ -3001,7 +3004,7 @@ dependencies = [ [[package]] name = "ream-merkle" version = "0.1.0" -source = "git+https://github.com/ReamLabs/ream.git#23e93fba74f359f9b292652784976df45372cabb" +source = "git+https://github.com/ReamLabs/ream.git#0050f0f030a7a158bb57966dc94d4340ec968ee7" dependencies = [ "alloy-primitives", "anyhow", @@ -3012,7 +3015,7 @@ dependencies = [ [[package]] name = "ream-network-spec" version = "0.1.0" -source = "git+https://github.com/ReamLabs/ream.git#23e93fba74f359f9b292652784976df45372cabb" +source = "git+https://github.com/ReamLabs/ream.git#0050f0f030a7a158bb57966dc94d4340ec968ee7" dependencies = [ "alloy-primitives", "anyhow", @@ -3022,17 +3025,6 @@ dependencies = [ "serde_yaml", ] -[[package]] -name = "redox_users" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" -dependencies = [ - "getrandom 0.2.16", - "libredox", - "thiserror 1.0.69", -] - [[package]] name = "redox_users" version = "0.5.2" @@ -3041,7 +3033,7 @@ checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" dependencies = [ "getrandom 0.2.16", "libredox", - "thiserror 2.0.16", + "thiserror", ] [[package]] @@ -3159,25 +3151,6 @@ dependencies = [ "windows-sys 0.52.0", ] -[[package]] -name = "risc0-binfmt" -version = "2.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f84c73972691d73955126d3d889c47e7f20900a69c74d775c9eab7c25d10b3d9" -dependencies = [ - "anyhow", - "borsh", - "derive_more", - "elf", - "lazy_static", - "postcard", - "risc0-zkp 2.0.3", - "risc0-zkvm-platform", - "semver 1.0.26", - "serde", - "tracing", -] - [[package]] name = "risc0-binfmt" version = "3.0.2" @@ -3192,7 +3165,7 @@ dependencies = [ "lazy_static", "postcard", "rand 0.9.2", - "risc0-zkp 3.0.2", + "risc0-zkp", "risc0-zkvm-platform", "ruint", "semver 1.0.26", @@ -3200,30 +3173,6 @@ dependencies = [ "tracing", ] -[[package]] -name = "risc0-build" -version = "2.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4079b9f8d1e20704071374ec8aa58eddc8adcd6586d109436a39a852e1ddf16" -dependencies = [ - "anyhow", - "cargo_metadata", - "derive_builder", - "dirs 5.0.1", - "docker-generate", - "hex", - "risc0-binfmt 2.0.3", - "risc0-zkos-v1compat", - "risc0-zkp 2.0.3", - "risc0-zkvm-platform", - "rzup 0.4.1", - "semver 1.0.26", - "serde", - "serde_json", - "stability", - "tempfile", -] - [[package]] name = "risc0-build" version = "3.0.3" @@ -3233,14 +3182,14 @@ dependencies = [ "anyhow", "cargo_metadata", "derive_builder", - "dirs 6.0.0", + "dirs", "docker-generate", "hex", - "risc0-binfmt 3.0.2", + "risc0-binfmt", "risc0-zkos-v1compat", - "risc0-zkp 3.0.2", + "risc0-zkp", "risc0-zkvm-platform", - "rzup 0.5.1", + "rzup", "semver 1.0.26", "serde", "serde_json", @@ -3257,10 +3206,10 @@ dependencies = [ "anyhow", "bytemuck", "paste", - "risc0-binfmt 3.0.2", + "risc0-binfmt", "risc0-circuit-recursion", - "risc0-core 3.0.0", - "risc0-zkp 3.0.2", + "risc0-core", + "risc0-zkp", "tracing", ] @@ -3274,8 +3223,8 @@ dependencies = [ "bytemuck", "hex", "metal", - "risc0-core 3.0.0", - "risc0-zkp 3.0.2", + "risc0-core", + "risc0-zkp", "tracing", ] @@ -3290,24 +3239,13 @@ dependencies = [ "bytemuck", "derive_more", "paste", - "risc0-binfmt 3.0.2", - "risc0-core 3.0.0", - "risc0-zkp 3.0.2", + "risc0-binfmt", + "risc0-core", + "risc0-zkp", "serde", "tracing", ] -[[package]] -name = "risc0-core" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "317bbf70a8750b64d4fd7a2bdc9d7d5f30d8bb305cae486962c797ef35c8d08e" -dependencies = [ - "bytemuck", - "bytemuck_derive", - "rand_core 0.6.4", -] - [[package]] name = "risc0-core" version = "3.0.0" @@ -3334,8 +3272,8 @@ dependencies = [ "hex", "num-bigint", "num-traits", - "risc0-binfmt 3.0.2", - "risc0-zkp 3.0.2", + "risc0-binfmt", + "risc0-zkp", "serde", ] @@ -3350,31 +3288,6 @@ dependencies = [ "risc0-zkvm-platform", ] -[[package]] -name = "risc0-zkp" -version = "2.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "355de69bdd62c99a48497fbf67501665a2eb9c4ed205549e7af3cdb83b40ef12" -dependencies = [ - "anyhow", - "blake2", - "borsh", - "bytemuck", - "cfg-if", - "digest 0.10.7", - "hex", - "hex-literal", - "metal", - "paste", - "rand_core 0.6.4", - "risc0-core 2.0.0", - "risc0-zkvm-platform", - "serde", - "sha2", - "stability", - "tracing", -] - [[package]] name = "risc0-zkp" version = "3.0.2" @@ -3392,7 +3305,7 @@ dependencies = [ "metal", "paste", "rand_core 0.9.3", - "risc0-core 3.0.0", + "risc0-core", "risc0-zkvm-platform", "serde", "sha2", @@ -3416,18 +3329,18 @@ dependencies = [ "hex", "lazy-regex", "prost", - "risc0-binfmt 3.0.2", - "risc0-build 3.0.3", + "risc0-binfmt", + "risc0-build", "risc0-circuit-keccak", "risc0-circuit-recursion", "risc0-circuit-rv32im", - "risc0-core 3.0.0", + "risc0-core", "risc0-groth16", "risc0-zkos-v1compat", - "risc0-zkp 3.0.2", + "risc0-zkp", "risc0-zkvm-platform", "rrs-lib", - "rzup 0.5.1", + "rzup", "semver 1.0.26", "serde", "sha2", @@ -3438,9 +3351,9 @@ dependencies = [ [[package]] name = "risc0-zkvm-platform" -version = "2.2.0" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c826f09626ab2ae76671673e5a232548ddd95a34eece2ea4ced5f010383f95b" +checksum = "cfaa10feba15828c788837ddde84b994393936d8f5715228627cfe8625122a40" dependencies = [ "bytemuck", "cfg-if", @@ -3568,7 +3481,7 @@ version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8" dependencies = [ - "bitflags 2.9.3", + "bitflags 2.9.4", "errno", "libc", "linux-raw-sys", @@ -3634,21 +3547,6 @@ version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" -[[package]] -name = "rzup" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "400558bf12d4292a7804093b60a437ba8b0219ea7d53716b2c010a0d31e5f4a8" -dependencies = [ - "semver 1.0.26", - "serde", - "strum 0.26.3", - "tempfile", - "thiserror 2.0.16", - "toml", - "yaml-rust2 0.9.0", -] - [[package]] name = "rzup" version = "0.5.1" @@ -3661,11 +3559,11 @@ dependencies = [ "serde", "serde_with", "sha2", - "strum 0.27.2", + "strum", "tempfile", - "thiserror 2.0.16", + "thiserror", "toml", - "yaml-rust2 0.10.3", + "yaml-rust2", ] [[package]] @@ -3812,7 +3710,7 @@ version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "de90945e6565ce0d9a25098082ed4ee4002e047cb59892c318d66821e14bb30f" dependencies = [ - "darling", + "darling 0.20.11", "proc-macro2", "quote", "syn 2.0.106", @@ -3989,35 +3887,13 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" -[[package]] -name = "strum" -version = "0.26.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" -dependencies = [ - "strum_macros 0.26.4", -] - [[package]] name = "strum" version = "0.27.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf" dependencies = [ - "strum_macros 0.27.2", -] - -[[package]] -name = "strum_macros" -version = "0.26.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" -dependencies = [ - "heck", - "proc-macro2", - "quote", - "rustversion", - "syn 2.0.106", + "strum_macros", ] [[package]] @@ -4099,33 +3975,13 @@ dependencies = [ "windows-sys 0.60.2", ] -[[package]] -name = "thiserror" -version = "1.0.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" -dependencies = [ - "thiserror-impl 1.0.69", -] - [[package]] name = "thiserror" version = "2.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3467d614147380f2e4e374161426ff399c91084acd2363eaf549172b3d5e60c0" dependencies = [ - "thiserror-impl 2.0.16", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.106", + "thiserror-impl", ] [[package]] @@ -4150,12 +4006,11 @@ dependencies = [ [[package]] name = "time" -version = "0.3.41" +version = "0.3.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40" +checksum = "83bde6f1ec10e72d583d91623c939f623002284ef622b87de38cfd546cbf2031" dependencies = [ "deranged", - "itoa", "num-conv", "powerfmt", "serde", @@ -4165,15 +4020,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.4" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c" +checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b" [[package]] name = "time-macros" -version = "0.2.22" +version = "0.2.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49" +checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3" dependencies = [ "num-conv", "time-core", @@ -4315,7 +4170,7 @@ version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" dependencies = [ - "bitflags 2.9.3", + "bitflags 2.9.4", "bytes", "futures-util", "http", @@ -4429,7 +4284,7 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0bee2ea1551f90040ab0e34b6fb7f2fa3bad8acc925837ac654f2c78a13e3089" dependencies = [ - "darling", + "darling 0.20.11", "proc-macro2", "quote", "syn 2.0.106", @@ -4563,30 +4418,31 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasi" -version = "0.14.3+wasi-0.2.4" +version = "0.14.4+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a51ae83037bdd272a9e28ce236db8c07016dd0d50c27038b3f407533c030c95" +checksum = "88a5f4a424faf49c3c2c344f166f0662341d470ea185e939657aaff130f0ec4a" dependencies = [ "wit-bindgen", ] [[package]] name = "wasm-bindgen" -version = "0.2.100" +version = "0.2.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" +checksum = "7e14915cadd45b529bb8d1f343c4ed0ac1de926144b746e2710f9cd05df6603b" dependencies = [ "cfg-if", "once_cell", "rustversion", "wasm-bindgen-macro", + "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.100" +version = "0.2.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" +checksum = "e28d1ba982ca7923fd01448d5c30c6864d0a14109560296a162f80f305fb93bb" dependencies = [ "bumpalo", "log", @@ -4598,9 +4454,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.50" +version = "0.4.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" +checksum = "0ca85039a9b469b38336411d6d6ced91f3fc87109a2a27b0c197663f5144dffe" dependencies = [ "cfg-if", "js-sys", @@ -4611,9 +4467,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.100" +version = "0.2.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" +checksum = "7c3d463ae3eff775b0c45df9da45d68837702ac35af998361e2c84e7c5ec1b0d" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -4621,9 +4477,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.100" +version = "0.2.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" +checksum = "7bb4ce89b08211f923caf51d527662b75bdc9c9c7aab40f86dcb9fb85ac552aa" dependencies = [ "proc-macro2", "quote", @@ -4634,9 +4490,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.100" +version = "0.2.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +checksum = "f143854a3b13752c6950862c906306adb27c7e839f7414cec8fea35beab624c1" dependencies = [ "unicode-ident", ] @@ -4656,9 +4512,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.77" +version = "0.3.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" +checksum = "77e4b637749ff0d92b8fad63aa1f7cff3cbe125fd49c175cd6345e7272638b12" dependencies = [ "js-sys", "wasm-bindgen", @@ -4691,7 +4547,7 @@ checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" dependencies = [ "windows-implement", "windows-interface", - "windows-link", + "windows-link 0.1.3", "windows-result", "windows-strings", ] @@ -4724,13 +4580,19 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" +[[package]] +name = "windows-link" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45e46c0661abb7180e7b9c281db115305d49ca1709ab8242adf09666d2173c65" + [[package]] name = "windows-result" version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" dependencies = [ - "windows-link", + "windows-link 0.1.3", ] [[package]] @@ -4739,16 +4601,7 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" dependencies = [ - "windows-link", -] - -[[package]] -name = "windows-sys" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" -dependencies = [ - "windows-targets 0.48.5", + "windows-link 0.1.3", ] [[package]] @@ -4779,18 +4632,12 @@ dependencies = [ ] [[package]] -name = "windows-targets" -version = "0.48.5" +name = "windows-sys" +version = "0.61.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +checksum = "e201184e40b2ede64bc2ea34968b28e33622acdbbf37104f0e4a33f7abe657aa" dependencies = [ - "windows_aarch64_gnullvm 0.48.5", - "windows_aarch64_msvc 0.48.5", - "windows_i686_gnu 0.48.5", - "windows_i686_msvc 0.48.5", - "windows_x86_64_gnu 0.48.5", - "windows_x86_64_gnullvm 0.48.5", - "windows_x86_64_msvc 0.48.5", + "windows-link 0.2.0", ] [[package]] @@ -4815,7 +4662,7 @@ version = "0.53.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d5fe6031c4041849d7c496a8ded650796e7b6ecc19df1a431c1a363342e5dc91" dependencies = [ - "windows-link", + "windows-link 0.1.3", "windows_aarch64_gnullvm 0.53.0", "windows_aarch64_msvc 0.53.0", "windows_i686_gnu 0.53.0", @@ -4826,12 +4673,6 @@ dependencies = [ "windows_x86_64_msvc 0.53.0", ] -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" - [[package]] name = "windows_aarch64_gnullvm" version = "0.52.6" @@ -4844,12 +4685,6 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" -[[package]] -name = "windows_aarch64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" - [[package]] name = "windows_aarch64_msvc" version = "0.52.6" @@ -4862,12 +4697,6 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" -[[package]] -name = "windows_i686_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" - [[package]] name = "windows_i686_gnu" version = "0.52.6" @@ -4892,12 +4721,6 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" -[[package]] -name = "windows_i686_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" - [[package]] name = "windows_i686_msvc" version = "0.52.6" @@ -4910,12 +4733,6 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" -[[package]] -name = "windows_x86_64_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" - [[package]] name = "windows_x86_64_gnu" version = "0.52.6" @@ -4928,12 +4745,6 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" - [[package]] name = "windows_x86_64_gnullvm" version = "0.52.6" @@ -4946,12 +4757,6 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" -[[package]] -name = "windows_x86_64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" - [[package]] name = "windows_x86_64_msvc" version = "0.52.6" @@ -4975,9 +4780,9 @@ dependencies = [ [[package]] name = "wit-bindgen" -version = "0.45.0" +version = "0.45.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "052283831dbae3d879dc7f51f3d92703a316ca49f91540417d38591826127814" +checksum = "5c573471f125075647d03df72e026074b7203790d41351cd6edc96f46bcccd36" [[package]] name = "writeable" @@ -4994,17 +4799,6 @@ dependencies = [ "tap", ] -[[package]] -name = "yaml-rust2" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a1a1c0bc9823338a3bdf8c61f994f23ac004c6fa32c08cd152984499b445e8d" -dependencies = [ - "arraydeque", - "encoding_rs", - "hashlink 0.9.1", -] - [[package]] name = "yaml-rust2" version = "0.10.3" @@ -5013,7 +4807,7 @@ checksum = "4ce2a4ff45552406d02501cea6c18d8a7e50228e7736a872951fe2fe75c91be7" dependencies = [ "arraydeque", "encoding_rs", - "hashlink 0.10.0", + "hashlink", ] [[package]] diff --git a/README.md b/README.md index 4db7d7d..be5e91e 100644 --- a/README.md +++ b/README.md @@ -11,14 +11,69 @@ ### Generate benchmarks +First, download the required test data: + ```sh cd host make download -make run- ``` +Then, run benchmarks for specific operations: + +#### Block Operations +Run a specific block operation: +```sh +make run-block- +``` + +Available block operations: +- attestation +- attester_slashing +- block_header +- bls_to_execution_change +- deposit +- execution_payload (not implemented) +- proposer_slashing +- sync_aggregate +- voluntary_exit +- withdrawals (incompatible with BeaconState workaround) +Run all block operations: +```sh +make block-all +``` + +#### Epoch Operations +Run a specific epoch processing operation: +```sh +make run-epoch- +``` + +Available epoch operations: +- justification_and_finalization +- inactivity_updates +- rewards_and_penalties +- registry_updates +- slashings +- eth1_data_reset +- pending_deposits +- pending_consolidations +- effective_balance_updates +- slashings_reset +- randao_mixes_reset +- historical_summaries_update +- participation_flag_updates + +Run all epoch operations: +```sh +make epoch-all +``` + +#### Run All Executable Operations +Run all operations that can be executed (excludes execution_payload and withdrawals from block operations): ```sh -OPERATIONS = attestation attester_slashing block_header bls_to_execution_change deposit execution_payload proposer_slashing sync_aggregate voluntary_exit withdrawals +make all ``` -This will execute the program and generate benchmarks (especially for cycles) in `./host/summaries` directory. +### Output +- Logs are saved in `./host/logs/` +- Benchmark summaries (including cycle counts) are generated in `./host/summaries/` diff --git a/host/Cargo.toml b/host/Cargo.toml index 49bc4ec..2e7d3be 100644 --- a/host/Cargo.toml +++ b/host/Cargo.toml @@ -13,7 +13,7 @@ derive_more = { version = "2.0.1", features = ["full"] } dotenv = "0.15.0" hex = "0.4.3" methods = { path = "../methods" } -risc0-zkvm = { version = "3.0.1" } +risc0-zkvm = { version = "3.0.3" } serde = { version = "1.0", default-features = false, features = ["derive"] } serde_json = { version = "1.0.139", default-features = false, features = ["alloc"] } tracing = { workspace = true } diff --git a/host/Makefile b/host/Makefile index 9fb6bec..194aba8 100644 --- a/host/Makefile +++ b/host/Makefile @@ -16,7 +16,7 @@ RUST_BACKTRACE = full .PHONY: all download run clean $(addprefix run-block-, $(BLOCK_OPERATIONS)) $(addprefix run-epoch-, $(EPOCH_OPERATIONS)) block-all epoch-all # run-block-execution_payload (not implemented) and run-block-withdrawals (incompatible with BeaconState workaround) are excluded -all: download run-block-attestation run-block-attester_slashing run-block-block_header run-block-bls_to_execution_change run-block-deposit run-block-proposer_slashing run-block-sync_aggregate run-block-voluntary_exit +all: download $(addprefix run-block-, $(filter-out execution_payload withdrawals, $(BLOCK_OPERATIONS))) $(addprefix run-epoch-, $(EPOCH_OPERATIONS)) # Run all block processing benchmarks block-all: $(addprefix run-block-, $(BLOCK_OPERATIONS)) diff --git a/host/src/bin/cli/operation.rs b/host/src/bin/cli/operation.rs index e0c9dc4..c16b304 100644 --- a/host/src/bin/cli/operation.rs +++ b/host/src/bin/cli/operation.rs @@ -83,7 +83,7 @@ pub enum EpochOperation { } // Generic traits for operation handling -pub trait OperationHandler { +pub trait OperationHandler: std::fmt::Display { fn prepare_input(&self, case_dir: &PathBuf) -> ream_lib::input::OperationInput; fn load_test_cases(&self, fork: &crate::cli::fork::Fork) -> (PathBuf, Vec); fn get_operation_category(&self) -> &'static str; @@ -96,7 +96,7 @@ impl OperationHandler for BlockOperation { let ssz_bytes = ssz_from_file(&input_path); OperationInput::Block(BlockOperationWrapper { - operation_type: self.to_block_operation_type(), + operation_type: BlockOperationType::from(self.clone()), ssz_bytes, }) } @@ -126,7 +126,7 @@ impl OperationHandler for BlockOperation { impl OperationHandler for EpochOperation { fn prepare_input(&self, _case_dir: &PathBuf) -> ream_lib::input::OperationInput { OperationInput::Epoch(EpochOperationWrapper { - operation_type: self.to_epoch_operation_type(), + operation_type: EpochOperationType::from(self.clone()), }) } @@ -167,9 +167,12 @@ impl BlockOperation { BlockOperation::Withdrawals => "execution_payload", } } +} - fn to_block_operation_type(&self) -> BlockOperationType { - match self { +// Convert BlockOperation to BlockOperationType using From trait +impl From for BlockOperationType { + fn from(operation: BlockOperation) -> Self { + match operation { BlockOperation::Attestation => BlockOperationType::Attestation, BlockOperation::AttesterSlashing => BlockOperationType::AttesterSlashing, BlockOperation::BlockHeader => BlockOperationType::BlockHeader, @@ -184,10 +187,10 @@ impl BlockOperation { } } -// Epoch operation specific methods -impl EpochOperation { - fn to_epoch_operation_type(&self) -> EpochOperationType { - match self { +// Convert EpochOperation to EpochOperationType using From trait +impl From for EpochOperationType { + fn from(operation: EpochOperation) -> Self { + match operation { EpochOperation::JustificationAndFinalization => { EpochOperationType::JustificationAndFinalization } diff --git a/host/src/bin/main.rs b/host/src/bin/main.rs index 2c542b4..c927e74 100644 --- a/host/src/bin/main.rs +++ b/host/src/bin/main.rs @@ -69,7 +69,7 @@ fn main() { } } -fn run_tests( +fn run_tests( fork: &Fork, operation: &T, excluded_cases: Vec, diff --git a/methods/Cargo.toml b/methods/Cargo.toml index 34768fb..73b5fe1 100644 --- a/methods/Cargo.toml +++ b/methods/Cargo.toml @@ -4,7 +4,7 @@ edition = "2024" version = "0.1.0" [build-dependencies] -risc0-build = { version = "2.0.1" } +risc0-build = { version = "3.0.3" } [package.metadata.risc0] methods = ["guest"] diff --git a/methods/guest/Cargo.toml b/methods/guest/Cargo.toml index 3f9afb1..ebe7b5f 100644 --- a/methods/guest/Cargo.toml +++ b/methods/guest/Cargo.toml @@ -5,11 +5,11 @@ edition = "2021" [dependencies] # Risc0 dependencies -risc0-zkvm = { version = "3.0.1", default-features = false, features = ['std'] } +risc0-zkvm = { version = "3.0.3", default-features = false, features = ['std'] } # Ream dependencies ethereum_ssz = { workspace = true } -ream-consensus = { workspace=true } +ream-consensus = { workspace = true } ream-lib = { path = "../../lib" } tree_hash = { workspace = true } tree_hash_derive = { workspace = true } diff --git a/rust-toolchain b/rust-toolchain index be2b6a6..4fe8fce 100644 --- a/rust-toolchain +++ b/rust-toolchain @@ -1,3 +1,3 @@ [toolchain] -channel = "1.85.0" +channel = "1.89.0" components = ["llvm-tools", "rustc-dev"] From e6b1cacf7455e1c757aa4caa62303aeccc07d704 Mon Sep 17 00:00:00 2001 From: x-senpai-x Date: Wed, 24 Sep 2025 12:45:15 +0530 Subject: [PATCH 7/7] updated workflow --- .github/workflows/core-rust.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/core-rust.yml b/.github/workflows/core-rust.yml index 87020b8..d3a6524 100644 --- a/.github/workflows/core-rust.yml +++ b/.github/workflows/core-rust.yml @@ -39,14 +39,14 @@ jobs: uses: actions-rs/toolchain@v1 with: profile: minimal - toolchain: 1.85.0 + toolchain: 1.89.0 - name: Install Risc0 toolchain run: | curl -L https://risczero.com/install | bash - /home/runner/.risc0/bin/rzup install rust 1.85.0 - /home/runner/.risc0/bin/rzup install r0vm 2.0.1 - /home/runner/.risc0/bin/rzup install cargo-risczero 2.0.1 + /home/runner/.risc0/bin/rzup install rust 1.88.0 + /home/runner/.risc0/bin/rzup install r0vm 3.0.3 + /home/runner/.risc0/bin/rzup install cargo-risczero 3.0.3 - name: Build Risc0 guest program run: |