From 357f141803a280b115009ccaf25fd896a5ac97d2 Mon Sep 17 00:00:00 2001 From: Blake <0xblake.sg@gmail.com> Date: Tue, 23 Jun 2026 00:35:40 +0800 Subject: [PATCH 1/2] remove wrapper proofs --- Cargo.lock | 24 - Cargo.toml | 2 - circuits/README.md | 9 +- .../operator-wrapper-proof/guest/Cargo.lock | 6696 ----------------- .../operator-wrapper-proof/guest/Cargo.toml | 33 - .../operator-wrapper-proof/guest/src/main.rs | 39 - .../operator-wrapper-proof/host/Cargo.toml | 25 - circuits/operator-wrapper-proof/host/build.rs | 5 - .../operator-wrapper-proof/host/src/lib.rs | 302 - .../operator-wrapper-proof/host/src/main.rs | 24 - circuits/proof-builder/src/lib.rs | 85 +- circuits/run-operator-wrapper-proof.sh | 51 - .../bitcoin-light-client-circuit/src/lib.rs | 14 - crates/bitvm-gc/src/babe_adapter.rs | 2 +- ...0260622000000_drop_wrapper_proof_table.sql | 1 + crates/store/src/localdb.rs | 296 +- crates/store/src/schema.rs | 24 - .../proof-builder-rpc/proof-builder.toml | 6 - node/src/env.rs | 12 - node/src/handle.rs | 24 +- node/src/rpc_service/routes.rs | 1 - node/src/utils.rs | 205 +- proof-builder-rpc/Cargo.toml | 1 - proof-builder-rpc/proof-builder.toml.example | 6 - proof-builder-rpc/src/api/mod.rs | 8 +- proof-builder-rpc/src/api/proof_handler.rs | 138 +- proof-builder-rpc/src/api/routes.rs | 2 - proof-builder-rpc/src/config.rs | 2 - proof-builder-rpc/src/task/mod.rs | 31 - proof-builder-rpc/src/task/wrapper_proof.rs | 259 - 30 files changed, 29 insertions(+), 8298 deletions(-) delete mode 100644 circuits/operator-wrapper-proof/guest/Cargo.lock delete mode 100644 circuits/operator-wrapper-proof/guest/Cargo.toml delete mode 100644 circuits/operator-wrapper-proof/guest/src/main.rs delete mode 100644 circuits/operator-wrapper-proof/host/Cargo.toml delete mode 100644 circuits/operator-wrapper-proof/host/build.rs delete mode 100644 circuits/operator-wrapper-proof/host/src/lib.rs delete mode 100644 circuits/operator-wrapper-proof/host/src/main.rs delete mode 100755 circuits/run-operator-wrapper-proof.sh create mode 100644 crates/store/migrations/20260622000000_drop_wrapper_proof_table.sql delete mode 100644 proof-builder-rpc/src/task/wrapper_proof.rs diff --git a/Cargo.lock b/Cargo.lock index 66f2c452..161e2f46 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8646,29 +8646,6 @@ dependencies = [ "zkm-verifier", ] -[[package]] -name = "operator-wrapper-proof" -version = "0.4.0" -dependencies = [ - "anyhow", - "bincode", - "bitcoin", - "bitcoin-light-client-circuit", - "clap", - "dotenv", - "hex", - "proof-builder", - "serde", - "sha2 0.10.9", - "tokio", - "tracing", - "tracing-subscriber 0.3.23", - "zkm-build", - "zkm-primitives", - "zkm-prover", - "zkm-sdk", -] - [[package]] name = "option-ext" version = "0.2.0" @@ -9788,7 +9765,6 @@ dependencies = [ "header-chain-proof", "http-body-util", "operator-proof", - "operator-wrapper-proof", "prometheus-client", "proof-builder", "serde", diff --git a/Cargo.toml b/Cargo.toml index 340b22a4..0870d287 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -23,7 +23,6 @@ members = [ "circuits/state-chain-proof/host", "circuits/watchtower-proof/host", "circuits/operator-proof/host", - "circuits/operator-wrapper-proof/host", "circuits/proof-builder", ] default-members = ["node"] @@ -127,7 +126,6 @@ state-chain = { path = "crates/state-chain" } verifier = { path = "crates/verifier" } state-chain-proof = { path = "circuits/state-chain-proof/host" } operator-proof = { path = "circuits/operator-proof/host" } -operator-wrapper-proof = { path = "circuits/operator-wrapper-proof/host" } watchtower-proof = { path = "circuits/watchtower-proof/host" } proof-builder = { path = "circuits/proof-builder" } diff --git a/circuits/README.md b/circuits/README.md index 1f15c81a..103f2d27 100644 --- a/circuits/README.md +++ b/circuits/README.md @@ -242,18 +242,13 @@ export WATCHTOWER_CHALLENGE_INIT_TXID="e7723e03ac97172cf033e40d4b9d9c0e22efa7a41 RUST_LOG=info cargo run --package operator-proof --bin operator-proof -r -- --output "data/operator-proof/output.bin" ``` -Then wrap the operator proof before the operator sends assert-commit. The Challenge script validates -the wrapper proof public inputs: - -``` -bash run-operator-wrapper-proof.sh "data/operator-proof/output.bin" "data/operator-wrapper-proof/output.bin" -``` +The operator proof is consumed directly by the Assert flow. BABE setup binds its static public +input, while the dynamic public input is committed after the watchtower challenge set is known. * latest-sequencer-commit-txid: the latest publisher's commitment Bitcoin transaction id * header-chain-input-proof: the header chain's proof, input and vk. * commit-chain-input-proof: the commit chain's proof, input and vk. * included-watchtower: a 256-bit bitmask; each bit flags a valid watchtower inside operator proof. -* operator-wrapper-proof: wraps operator proof and exposes `operator_vk_hash_raw`, raw 16-byte `graph_id`, and `genesis_sequencer_commit_txid` as public inputs for Challenge. * execution-layer-block-number: the block number that including `proceedWithdraw`(Peg-out) transaction of GOAT Network's execution layer(Geth). * watchtower-challenge-info: list of watchtower's challenge transaction id and compressed public key, i.e: [wachtower_info.json](./data/watchtower/watchtower_info.json). * watchtower-challenge-init-txid: the watchtower challenge init transaction id in GOAT's BitVM2 graph. diff --git a/circuits/operator-wrapper-proof/guest/Cargo.lock b/circuits/operator-wrapper-proof/guest/Cargo.lock deleted file mode 100644 index 332cd093..00000000 --- a/circuits/operator-wrapper-proof/guest/Cargo.lock +++ /dev/null @@ -1,6696 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 4 - -[[package]] -name = "addchain" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e33f6a175ec6a9e0aca777567f9ff7c3deefc255660df887e7fa3585e9801d8" -dependencies = [ - "num-bigint 0.3.3", - "num-integer", - "num-traits", -] - -[[package]] -name = "addr2line" -version = "0.25.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b5d307320b3181d6d7954e663bd7c774a838b8220fe0593c86d9fb09f498b4b" -dependencies = [ - "gimli", -] - -[[package]] -name = "adler2" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" - -[[package]] -name = "ahash" -version = "0.8.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" -dependencies = [ - "cfg-if", - "once_cell", - "version_check", - "zerocopy", -] - -[[package]] -name = "aho-corasick" -version = "1.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" -dependencies = [ - "memchr", -] - -[[package]] -name = "allocator-api2" -version = "0.2.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" - -[[package]] -name = "alloy-chains" -version = "0.2.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84e0378e959aa6a885897522080a990e80eb317f1e9a222a604492ea50e13096" -dependencies = [ - "alloy-primitives", - "alloy-rlp", - "num_enum", - "serde", - "strum 0.27.2", -] - -[[package]] -name = "alloy-consensus" -version = "1.0.41" -source = "git+https://github.com/ziren-patches/alloy?branch=patch-1.0.41#08557d4e5f4ca766194a45c1925d8f1625258793" -dependencies = [ - "alloy-eips", - "alloy-primitives", - "alloy-rlp", - "alloy-serde", - "alloy-trie", - "alloy-tx-macros", - "auto_impl", - "c-kzg", - "derive_more 2.1.1", - "either", - "k256", - "once_cell", - "rand 0.8.6", - "secp256k1 0.30.0", - "serde", - "serde_json", - "serde_with", - "thiserror 2.0.18", -] - -[[package]] -name = "alloy-consensus-any" -version = "1.0.41" -source = "git+https://github.com/ziren-patches/alloy?branch=patch-1.0.41#08557d4e5f4ca766194a45c1925d8f1625258793" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-primitives", - "alloy-rlp", - "alloy-serde", - "serde", -] - -[[package]] -name = "alloy-eip2124" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "741bdd7499908b3aa0b159bba11e71c8cddd009a2c2eb7a06e825f1ec87900a5" -dependencies = [ - "alloy-primitives", - "alloy-rlp", - "crc", - "serde", - "thiserror 2.0.18", -] - -[[package]] -name = "alloy-eip2930" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9441120fa82df73e8959ae0e4ab8ade03de2aaae61be313fbf5746277847ce25" -dependencies = [ - "alloy-primitives", - "alloy-rlp", - "borsh", - "serde", -] - -[[package]] -name = "alloy-eip7702" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2919c5a56a1007492da313e7a3b6d45ef5edc5d33416fdec63c0d7a2702a0d20" -dependencies = [ - "alloy-primitives", - "alloy-rlp", - "borsh", - "k256", - "serde", - "serde_with", - "thiserror 2.0.18", -] - -[[package]] -name = "alloy-eips" -version = "1.0.41" -source = "git+https://github.com/ziren-patches/alloy?branch=patch-1.0.41#08557d4e5f4ca766194a45c1925d8f1625258793" -dependencies = [ - "alloy-eip2124", - "alloy-eip2930", - "alloy-eip7702", - "alloy-primitives", - "alloy-rlp", - "alloy-serde", - "auto_impl", - "c-kzg", - "derive_more 2.1.1", - "either", - "serde", - "serde_with", - "sha2 0.10.9", - "thiserror 2.0.18", -] - -[[package]] -name = "alloy-evm" -version = "0.23.0" -source = "git+https://github.com/ziren-patches/evm?branch=patch-0.23.0#3cc30123cc6abb1c0da7e20318202821cab5d663" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-hardforks", - "alloy-primitives", - "alloy-sol-types", - "anyhow", - "auto_impl", - "derive_more 2.1.1", - "revm", - "thiserror 2.0.18", -] - -[[package]] -name = "alloy-genesis" -version = "1.0.41" -source = "git+https://github.com/ziren-patches/alloy?branch=patch-1.0.41#08557d4e5f4ca766194a45c1925d8f1625258793" -dependencies = [ - "alloy-eips", - "alloy-primitives", - "alloy-serde", - "alloy-trie", - "serde", - "serde_with", -] - -[[package]] -name = "alloy-hardforks" -version = "0.4.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83ba208044232d14d4adbfa77e57d6329f51bc1acc21f5667bb7db72d88a0831" -dependencies = [ - "alloy-chains", - "alloy-eip2124", - "alloy-primitives", - "auto_impl", - "dyn-clone", -] - -[[package]] -name = "alloy-json-abi" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5513d5e6bd1cba6bdcf5373470f559f320c05c8c59493b6e98912fbe6733943f" -dependencies = [ - "alloy-primitives", - "alloy-sol-type-parser", - "serde", - "serde_json", -] - -[[package]] -name = "alloy-json-rpc" -version = "1.0.41" -source = "git+https://github.com/ziren-patches/alloy?branch=patch-1.0.41#08557d4e5f4ca766194a45c1925d8f1625258793" -dependencies = [ - "alloy-primitives", - "alloy-sol-types", - "http", - "serde", - "serde_json", - "thiserror 2.0.18", - "tracing", -] - -[[package]] -name = "alloy-network" -version = "1.0.41" -source = "git+https://github.com/ziren-patches/alloy?branch=patch-1.0.41#08557d4e5f4ca766194a45c1925d8f1625258793" -dependencies = [ - "alloy-consensus", - "alloy-consensus-any", - "alloy-eips", - "alloy-json-rpc", - "alloy-network-primitives", - "alloy-primitives", - "alloy-rpc-types-any", - "alloy-rpc-types-eth", - "alloy-serde", - "alloy-signer", - "alloy-sol-types", - "async-trait", - "auto_impl", - "derive_more 2.1.1", - "futures-utils-wasm", - "serde", - "serde_json", - "thiserror 2.0.18", -] - -[[package]] -name = "alloy-network-primitives" -version = "1.0.41" -source = "git+https://github.com/ziren-patches/alloy?branch=patch-1.0.41#08557d4e5f4ca766194a45c1925d8f1625258793" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-primitives", - "alloy-serde", - "serde", -] - -[[package]] -name = "alloy-primitives" -version = "1.4.1" -source = "git+https://github.com/ziren-patches/core.git?branch=patch-alloy-primitives-1.4.1#59313700f710f1373a5b4cdc05c51dc3227d8064" -dependencies = [ - "alloy-rlp", - "bytes", - "cfg-if", - "const-hex", - "derive_more 2.1.1", - "foldhash 0.2.0", - "hashbrown 0.16.1", - "indexmap 2.14.0", - "itoa", - "k256", - "keccak-asm", - "paste", - "proptest", - "rand 0.9.4", - "ruint", - "rustc-hash", - "serde", - "sha3", - "tiny-keccak", - "zkm-zkvm", -] - -[[package]] -name = "alloy-rlp" -version = "0.3.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc90b1e703d3c03f4ff7f48e82dd0bc1c8211ab7d079cd836a06fcfeb06651cb" -dependencies = [ - "alloy-rlp-derive", - "arrayvec", - "bytes", -] - -[[package]] -name = "alloy-rlp-derive" -version = "0.3.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f36834a5c0a2fa56e171bf256c34d70fca07d0c0031583edea1c4946b7889c9e" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "alloy-rpc-types" -version = "1.0.41" -source = "git+https://github.com/ziren-patches/alloy?branch=patch-1.0.41#08557d4e5f4ca766194a45c1925d8f1625258793" -dependencies = [ - "alloy-primitives", - "alloy-rpc-types-eth", - "alloy-serde", - "serde", -] - -[[package]] -name = "alloy-rpc-types-any" -version = "1.0.41" -source = "git+https://github.com/ziren-patches/alloy?branch=patch-1.0.41#08557d4e5f4ca766194a45c1925d8f1625258793" -dependencies = [ - "alloy-consensus-any", - "alloy-rpc-types-eth", - "alloy-serde", -] - -[[package]] -name = "alloy-rpc-types-debug" -version = "1.0.41" -source = "git+https://github.com/ziren-patches/alloy?branch=patch-1.0.41#08557d4e5f4ca766194a45c1925d8f1625258793" -dependencies = [ - "alloy-primitives", - "derive_more 2.1.1", - "serde", - "serde_with", -] - -[[package]] -name = "alloy-rpc-types-engine" -version = "1.0.41" -source = "git+https://github.com/ziren-patches/alloy?branch=patch-1.0.41#08557d4e5f4ca766194a45c1925d8f1625258793" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-primitives", - "alloy-rlp", - "derive_more 2.1.1", - "strum 0.27.2", -] - -[[package]] -name = "alloy-rpc-types-eth" -version = "1.0.41" -source = "git+https://github.com/ziren-patches/alloy?branch=patch-1.0.41#08557d4e5f4ca766194a45c1925d8f1625258793" -dependencies = [ - "alloy-consensus", - "alloy-consensus-any", - "alloy-eips", - "alloy-network-primitives", - "alloy-primitives", - "alloy-rlp", - "alloy-serde", - "alloy-sol-types", - "itertools 0.14.0", - "serde", - "serde_json", - "serde_with", - "thiserror 2.0.18", -] - -[[package]] -name = "alloy-serde" -version = "1.0.41" -source = "git+https://github.com/ziren-patches/alloy?branch=patch-1.0.41#08557d4e5f4ca766194a45c1925d8f1625258793" -dependencies = [ - "alloy-primitives", - "serde", - "serde_json", -] - -[[package]] -name = "alloy-signer" -version = "1.0.41" -source = "git+https://github.com/ziren-patches/alloy?branch=patch-1.0.41#08557d4e5f4ca766194a45c1925d8f1625258793" -dependencies = [ - "alloy-primitives", - "async-trait", - "auto_impl", - "either", - "elliptic-curve", - "k256", - "thiserror 2.0.18", -] - -[[package]] -name = "alloy-sol-macro" -version = "1.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab81bab693da9bb79f7a95b64b394718259fdd7e41dceeced4cad57cb71c4f6a" -dependencies = [ - "alloy-sol-macro-expander", - "alloy-sol-macro-input", - "proc-macro-error2", - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "alloy-sol-macro-expander" -version = "1.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "489f1620bb7e2483fb5819ed01ab6edc1d2f93939dce35a5695085a1afd1d699" -dependencies = [ - "alloy-sol-macro-input", - "const-hex", - "heck", - "indexmap 2.14.0", - "proc-macro-error2", - "proc-macro2", - "quote", - "sha3", - "syn 2.0.117", - "syn-solidity", -] - -[[package]] -name = "alloy-sol-macro-input" -version = "1.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56cef806ad22d4392c5fc83cf8f2089f988eb99c7067b4e0c6f1971fc1cca318" -dependencies = [ - "const-hex", - "dunce", - "heck", - "macro-string", - "proc-macro2", - "quote", - "syn 2.0.117", - "syn-solidity", -] - -[[package]] -name = "alloy-sol-type-parser" -version = "1.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6df77fea9d6a2a75c0ef8d2acbdfd92286cc599983d3175ccdc170d3433d249" -dependencies = [ - "serde", - "winnow 0.7.15", -] - -[[package]] -name = "alloy-sol-types" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70319350969a3af119da6fb3e9bddb1bce66c9ea933600cb297c8b1850ad2a3c" -dependencies = [ - "alloy-json-abi", - "alloy-primitives", - "alloy-sol-macro", - "serde", -] - -[[package]] -name = "alloy-trie" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f14b5d9b2c2173980202c6ff470d96e7c5e202c65a9f67884ad565226df7fbb" -dependencies = [ - "alloy-primitives", - "alloy-rlp", - "derive_more 2.1.1", - "nybbles", - "serde", - "smallvec", - "thiserror 2.0.18", - "tracing", -] - -[[package]] -name = "alloy-tx-macros" -version = "1.0.41" -source = "git+https://github.com/ziren-patches/alloy?branch=patch-1.0.41#08557d4e5f4ca766194a45c1925d8f1625258793" -dependencies = [ - "alloy-primitives", - "darling 0.21.3", - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[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 = "ansi_term" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" -dependencies = [ - "winapi", -] - -[[package]] -name = "anstream" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d" -dependencies = [ - "anstyle", - "anstyle-parse", - "anstyle-query", - "anstyle-wincon", - "colorchoice", - "is_terminal_polyfill", - "utf8parse", -] - -[[package]] -name = "anstyle" -version = "1.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" - -[[package]] -name = "anstyle-parse" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e" -dependencies = [ - "utf8parse", -] - -[[package]] -name = "anstyle-query" -version = "1.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" -dependencies = [ - "windows-sys", -] - -[[package]] -name = "anstyle-wincon" -version = "3.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" -dependencies = [ - "anstyle", - "once_cell_polyfill", - "windows-sys", -] - -[[package]] -name = "anyhow" -version = "1.0.102" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" - -[[package]] -name = "ark-bls12-381" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3df4dcc01ff89867cd86b0da835f23c3f02738353aaee7dde7495af71363b8d5" -dependencies = [ - "ark-ec", - "ark-ff 0.5.0", - "ark-serialize 0.5.0", - "ark-std 0.5.0", -] - -[[package]] -name = "ark-bn254" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d69eab57e8d2663efa5c63135b2af4f396d66424f88954c21104125ab6b3e6bc" -dependencies = [ - "ark-ec", - "ark-ff 0.5.0", - "ark-std 0.5.0", -] - -[[package]] -name = "ark-ec" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43d68f2d516162846c1238e755a7c4d131b892b70cc70c471a8e3ca3ed818fce" -dependencies = [ - "ahash", - "ark-ff 0.5.0", - "ark-poly", - "ark-serialize 0.5.0", - "ark-std 0.5.0", - "educe", - "fnv", - "hashbrown 0.15.5", - "itertools 0.13.0", - "num-bigint 0.4.6", - "num-integer", - "num-traits", - "zeroize", -] - -[[package]] -name = "ark-ff" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b3235cc41ee7a12aaaf2c575a2ad7b46713a8a50bda2fc3b003a04845c05dd6" -dependencies = [ - "ark-ff-asm 0.3.0", - "ark-ff-macros 0.3.0", - "ark-serialize 0.3.0", - "ark-std 0.3.0", - "derivative", - "num-bigint 0.4.6", - "num-traits", - "paste", - "rustc_version 0.3.3", - "zeroize", -] - -[[package]] -name = "ark-ff" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" -dependencies = [ - "ark-ff-asm 0.4.2", - "ark-ff-macros 0.4.2", - "ark-serialize 0.4.2", - "ark-std 0.4.0", - "derivative", - "digest 0.10.7", - "itertools 0.10.5", - "num-bigint 0.4.6", - "num-traits", - "paste", - "rustc_version 0.4.1", - "zeroize", -] - -[[package]] -name = "ark-ff" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a177aba0ed1e0fbb62aa9f6d0502e9b46dad8c2eab04c14258a1212d2557ea70" -dependencies = [ - "ark-ff-asm 0.5.0", - "ark-ff-macros 0.5.0", - "ark-serialize 0.5.0", - "ark-std 0.5.0", - "arrayvec", - "digest 0.10.7", - "educe", - "itertools 0.13.0", - "num-bigint 0.4.6", - "num-traits", - "paste", - "zeroize", -] - -[[package]] -name = "ark-ff-asm" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db02d390bf6643fb404d3d22d31aee1c4bc4459600aef9113833d17e786c6e44" -dependencies = [ - "quote", - "syn 1.0.109", -] - -[[package]] -name = "ark-ff-asm" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" -dependencies = [ - "quote", - "syn 1.0.109", -] - -[[package]] -name = "ark-ff-asm" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" -dependencies = [ - "quote", - "syn 2.0.117", -] - -[[package]] -name = "ark-ff-macros" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db2fd794a08ccb318058009eefdf15bcaaaaf6f8161eb3345f907222bac38b20" -dependencies = [ - "num-bigint 0.4.6", - "num-traits", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "ark-ff-macros" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" -dependencies = [ - "num-bigint 0.4.6", - "num-traits", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "ark-ff-macros" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09be120733ee33f7693ceaa202ca41accd5653b779563608f1234f78ae07c4b3" -dependencies = [ - "num-bigint 0.4.6", - "num-traits", - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "ark-poly" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "579305839da207f02b89cd1679e50e67b4331e2f9294a57693e5051b7703fe27" -dependencies = [ - "ahash", - "ark-ff 0.5.0", - "ark-serialize 0.5.0", - "ark-std 0.5.0", - "educe", - "fnv", - "hashbrown 0.15.5", -] - -[[package]] -name = "ark-serialize" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d6c2b318ee6e10f8c2853e73a83adc0ccb88995aa978d8a3408d492ab2ee671" -dependencies = [ - "ark-std 0.3.0", - "digest 0.9.0", -] - -[[package]] -name = "ark-serialize" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" -dependencies = [ - "ark-std 0.4.0", - "digest 0.10.7", - "num-bigint 0.4.6", -] - -[[package]] -name = "ark-serialize" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f4d068aaf107ebcd7dfb52bc748f8030e0fc930ac8e360146ca54c1203088f7" -dependencies = [ - "ark-serialize-derive", - "ark-std 0.5.0", - "arrayvec", - "digest 0.10.7", - "num-bigint 0.4.6", -] - -[[package]] -name = "ark-serialize-derive" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "213888f660fddcca0d257e88e54ac05bca01885f258ccdf695bafd77031bb69d" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "ark-std" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1df2c09229cbc5a028b1d70e00fdb2acee28b1055dfb5ca73eea49c5a25c4e7c" -dependencies = [ - "num-traits", - "rand 0.8.6", -] - -[[package]] -name = "ark-std" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" -dependencies = [ - "num-traits", - "rand 0.8.6", -] - -[[package]] -name = "ark-std" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "246a225cc6131e9ee4f24619af0f19d67761fff15d7ccc22e42b80846e69449a" -dependencies = [ - "num-traits", - "rand 0.8.6", -] - -[[package]] -name = "arrayref" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" - -[[package]] -name = "arrayvec" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" - -[[package]] -name = "async-trait" -version = "0.1.89" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "aurora-engine-modexp" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "518bc5745a6264b5fd7b09dffb9667e400ee9e2bbe18555fac75e1fe9afa0df9" -dependencies = [ - "hex", - "num", -] - -[[package]] -name = "auto_impl" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffdcb70bdbc4d478427380519163274ac86e52916e10f0a8889adf0f96d3fee7" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "autocfg" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" - -[[package]] -name = "backtrace" -version = "0.3.76" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb531853791a215d7c62a30daf0dde835f381ab5de4589cfe7c649d2cbe92bd6" -dependencies = [ - "addr2line", - "cfg-if", - "libc", - "miniz_oxide", - "object", - "rustc-demangle", - "serde", - "windows-link", -] - -[[package]] -name = "base16ct" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" - -[[package]] -name = "base58ck" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c8d66485a3a2ea485c1913c4572ce0256067a5377ac8c75c4960e1cda98605f" -dependencies = [ - "bitcoin-internals", - "bitcoin_hashes", -] - -[[package]] -name = "base64" -version = "0.21.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" - -[[package]] -name = "base64" -version = "0.22.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" - -[[package]] -name = "base64ct" -version = "1.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2af50177e190e07a26ab74f8b1efbfe2ef87da2116221318cb1c2e82baf7de06" - -[[package]] -name = "bech32" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32637268377fc7b10a8c6d51de3e7fba1ce5dd371a96e342b34e6078db558e7f" - -[[package]] -name = "bincode" -version = "1.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" -dependencies = [ - "serde", -] - -[[package]] -name = "bit-set" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" -dependencies = [ - "bit-vec", -] - -[[package]] -name = "bit-vec" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" - -[[package]] -name = "bitcoin" -version = "0.32.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e499f9fc0407f50fe98af744ab44fa67d409f76b6772e1689ec8485eb0c0f66" -dependencies = [ - "base58ck", - "bech32", - "bitcoin-internals", - "bitcoin-io", - "bitcoin-units", - "bitcoin_hashes", - "hex-conservative", - "hex_lit", - "secp256k1 0.29.0", - "serde", -] - -[[package]] -name = "bitcoin-internals" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30bdbe14aa07b06e6cfeffc529a1f099e5fbe249524f8125358604df99a4bed2" -dependencies = [ - "serde", -] - -[[package]] -name = "bitcoin-io" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dee39a0ee5b4095224a0cfc6bf4cc1baf0f9624b96b367e53b66d974e51d953" - -[[package]] -name = "bitcoin-light-client-circuit" -version = "0.4.0" -dependencies = [ - "alloy-primitives", - "base64 0.21.7", - "bincode", - "bitcoin", - "commit-chain", - "guest-executor", - "header-chain", - "hex", - "prost-build", - "revm-database-interface", - "serde", - "serde_json", - "state-chain", - "tendermint", - "tendermint-light-client-verifier", - "tracing", - "verifier", - "zkm-primitives", - "zkm-verifier", - "zkm-zkvm", -] - -[[package]] -name = "bitcoin-units" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "346568ebaab2918487cea76dd55dae13c27bb618cdb737c952e69eb2017c4118" -dependencies = [ - "bitcoin-internals", - "serde", -] - -[[package]] -name = "bitcoin_hashes" -version = "0.14.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26ec84b80c482df901772e931a9a681e26a1b9ee2302edeff23cb30328745c8b" -dependencies = [ - "bitcoin-io", - "hex-conservative", - "serde", -] - -[[package]] -name = "bitflags" -version = "2.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4512299f36f043ab09a583e57bceb5a5aab7a73db1805848e8fef3c9e8c78b3" -dependencies = [ - "serde_core", -] - -[[package]] -name = "bitvec" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" -dependencies = [ - "funty", - "radium", - "serde", - "tap", - "wyz", -] - -[[package]] -name = "blake2" -version = "0.10.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" -dependencies = [ - "digest 0.10.7", -] - -[[package]] -name = "blake2b_simd" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b79834656f71332577234b50bfc009996f7449e0c056884e6a02492ded0ca2f3" -dependencies = [ - "arrayref", - "arrayvec", - "constant_time_eq", -] - -[[package]] -name = "block-buffer" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" -dependencies = [ - "generic-array 0.14.9", -] - -[[package]] -name = "block-buffer" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" -dependencies = [ - "generic-array 0.14.9", -] - -[[package]] -name = "bls12_381" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3c196a77437e7cc2fb515ce413a6401291578b5afc8ecb29a3c7ab957f05941" -dependencies = [ - "ff 0.12.1", - "group 0.12.1", - "pairing 0.22.0", - "rand_core 0.6.4", - "subtle", -] - -[[package]] -name = "bls12_381" -version = "0.8.0" -source = "git+https://github.com/ziren-patches/bls12_381?branch=patch-0.8.0#bcf9397426410acc171ad625416b508dc913be8e" -dependencies = [ - "cfg-if", - "ff 0.13.1", - "group 0.13.0", - "pairing 0.23.0", - "rand_core 0.6.4", - "subtle", - "zkm-lib", -] - -[[package]] -name = "blst" -version = "0.3.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcdb4c7013139a150f9fc55d123186dbfaba0d912817466282c73ac49e71fb45" -dependencies = [ - "cc", - "glob", - "threadpool", - "zeroize", -] - -[[package]] -name = "borsh" -version = "1.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfd1e3f8955a5d7de9fab72fc8373fade9fb8a703968cb200ae3dc6cf08e185a" -dependencies = [ - "borsh-derive", - "bytes", - "cfg_aliases", -] - -[[package]] -name = "borsh-derive" -version = "1.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfcfdc083699101d5a7965e49925975f2f55060f94f9a05e7187be95d530ca59" -dependencies = [ - "once_cell", - "proc-macro-crate", - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "bumpalo" -version = "3.20.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" - -[[package]] -name = "byte-slice-cast" -version = "1.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7575182f7272186991736b70173b0ea045398f984bf5ebbb3804736ce1330c9d" - -[[package]] -name = "bytemuck" -version = "1.25.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8efb64bd706a16a1bdde310ae86b351e4d21550d98d056f22f8a7f7a2183fec" -dependencies = [ - "bytemuck_derive", -] - -[[package]] -name = "bytemuck_derive" -version = "1.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "byteorder" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" - -[[package]] -name = "bytes" -version = "1.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" -dependencies = [ - "serde", -] - -[[package]] -name = "c-kzg" -version = "2.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6648ed1e4ea8e8a1a4a2c78e1cda29a3fd500bc622899c340d8525ea9a76b24a" -dependencies = [ - "blst", - "cc", - "glob", - "hex", - "libc", - "once_cell", - "serde", -] - -[[package]] -name = "cc" -version = "1.2.61" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d16d90359e986641506914ba71350897565610e87ce0ad9e6f28569db3dd5c6d" -dependencies = [ - "find-msvc-tools", - "jobserver", - "libc", - "shlex", -] - -[[package]] -name = "cfg-if" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" - -[[package]] -name = "cfg_aliases" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" - -[[package]] -name = "chrono" -version = "0.4.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0" -dependencies = [ - "iana-time-zone", - "num-traits", - "serde", - "windows-link", -] - -[[package]] -name = "colorchoice" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" - -[[package]] -name = "commit-chain" -version = "0.4.0" -dependencies = [ - "alloy-primitives", - "base64 0.21.7", - "bincode", - "bitcoin", - "guest-executor", - "hex", - "prost-build", - "revm-database-interface", - "serde", - "sha2 0.10.9", - "tendermint", - "tendermint-light-client-verifier", - "tracing", - "verifier", - "zkm-zkvm", -] - -[[package]] -name = "const-hex" -version = "1.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20d9a563d167a9cce0f94153382b33cb6eded6dfabff03c69ad65a28ea1514e0" -dependencies = [ - "cfg-if", - "cpufeatures", - "proptest", - "serde_core", -] - -[[package]] -name = "const-oid" -version = "0.9.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" - -[[package]] -name = "const_format" -version = "0.2.36" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4481a617ad9a412be3b97c5d403fef8ed023103368908b9c50af598ff467cc1e" -dependencies = [ - "const_format_proc_macros", - "konst", -] - -[[package]] -name = "const_format_proc_macros" -version = "0.2.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d57c2eccfb16dbac1f4e61e206105db5820c9d26c3c472bc17c774259ef7744" -dependencies = [ - "proc-macro2", - "quote", - "unicode-xid", -] - -[[package]] -name = "constant_time_eq" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b" - -[[package]] -name = "convert_case" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "633458d4ef8c78b72454de2d54fd6ab2e60f9e02be22f3c6104cdc8a4e0fceb9" -dependencies = [ - "unicode-segmentation", -] - -[[package]] -name = "core-foundation-sys" -version = "0.8.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" - -[[package]] -name = "cosmos-sdk-proto" -version = "0.27.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95ac39be7373404accccaede7cc1ec942ccef14f0ca18d209967a756bf1dbb1f" -dependencies = [ - "informalsystems-pbjson", - "prost", - "serde", - "tendermint-proto 0.40.4", -] - -[[package]] -name = "cpufeatures" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" -dependencies = [ - "libc", -] - -[[package]] -name = "crc" -version = "3.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5eb8a2a1cd12ab0d987a5d5e825195d372001a4094a0376319d5a0ad71c1ba0d" -dependencies = [ - "crc-catalog", -] - -[[package]] -name = "crc-catalog" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "217698eaf96b4a3f0bc4f3662aaa55bdf913cd54d7204591faa790070c6d0853" - -[[package]] -name = "critical-section" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" - -[[package]] -name = "crossbeam-deque" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" -dependencies = [ - "crossbeam-epoch", - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-epoch" -version = "0.9.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" -dependencies = [ - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-utils" -version = "0.8.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" - -[[package]] -name = "crunchy" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" - -[[package]] -name = "crypto-bigint" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" -dependencies = [ - "generic-array 0.14.9", - "rand_core 0.6.4", - "subtle", - "zeroize", -] - -[[package]] -name = "crypto-common" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" -dependencies = [ - "generic-array 0.14.9", - "typenum", -] - -[[package]] -name = "curve25519-dalek" -version = "4.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" -dependencies = [ - "cfg-if", - "cpufeatures", - "curve25519-dalek-derive", - "fiat-crypto", - "rustc_version 0.4.1", - "subtle", - "zeroize", -] - -[[package]] -name = "curve25519-dalek-derive" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "curve25519-dalek-ng" -version = "4.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c359b7249347e46fb28804470d071c921156ad62b3eef5d34e2ba867533dec8" -dependencies = [ - "byteorder", - "digest 0.9.0", - "rand_core 0.6.4", - "subtle-ng", - "zeroize", -] - -[[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]] -name = "darling" -version = "0.23.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d" -dependencies = [ - "darling_core 0.23.0", - "darling_macro 0.23.0", -] - -[[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", - "serde", - "strsim", - "syn 2.0.117", -] - -[[package]] -name = "darling_core" -version = "0.23.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9865a50f7c335f53564bb694ef660825eb8610e0a53d3e11bf1b0d3df31e03b0" -dependencies = [ - "ident_case", - "proc-macro2", - "quote", - "strsim", - "syn 2.0.117", -] - -[[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.117", -] - -[[package]] -name = "darling_macro" -version = "0.23.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" -dependencies = [ - "darling_core 0.23.0", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "dashu" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85b3e5ac1e23ff1995ef05b912e2b012a8784506987a2651552db2c73fb3d7e0" -dependencies = [ - "dashu-base", - "dashu-float", - "dashu-int", - "dashu-macros", - "dashu-ratio", - "rustversion", -] - -[[package]] -name = "dashu-base" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0b80bf6b85aa68c58ffea2ddb040109943049ce3fbdf4385d0380aef08ef289" - -[[package]] -name = "dashu-float" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85078445a8dbd2e1bd21f04a816f352db8d333643f0c9b78ca7c3d1df71063e7" -dependencies = [ - "dashu-base", - "dashu-int", - "num-modular", - "num-order", - "rustversion", - "static_assertions", -] - -[[package]] -name = "dashu-int" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee99d08031ca34a4d044efbbb21dff9b8c54bb9d8c82a189187c0651ffdb9fbf" -dependencies = [ - "cfg-if", - "dashu-base", - "num-modular", - "num-order", - "rustversion", - "static_assertions", -] - -[[package]] -name = "dashu-macros" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93381c3ef6366766f6e9ed9cf09e4ef9dec69499baf04f0c60e70d653cf0ab10" -dependencies = [ - "dashu-base", - "dashu-float", - "dashu-int", - "dashu-ratio", - "paste", - "proc-macro2", - "quote", - "rustversion", -] - -[[package]] -name = "dashu-ratio" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47e33b04dd7ce1ccf8a02a69d3419e354f2bbfdf4eb911a0b7465487248764c9" -dependencies = [ - "dashu-base", - "dashu-float", - "dashu-int", - "num-modular", - "num-order", - "rustversion", -] - -[[package]] -name = "der" -version = "0.7.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" -dependencies = [ - "const-oid", - "pem-rfc7468", - "zeroize", -] - -[[package]] -name = "deranged" -version = "0.5.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" -dependencies = [ - "powerfmt", - "serde_core", -] - -[[package]] -name = "derivative" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "derive-where" -version = "1.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d08b3a0bcc0d079199cd476b2cae8435016ec11d1c0986c6901c5ac223041534" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "derive_more" -version = "0.99.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6edb4b64a43d977b8e99788fe3a04d483834fba1215a7e02caa415b626497f7f" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "derive_more" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" -dependencies = [ - "derive_more-impl 1.0.0", -] - -[[package]] -name = "derive_more" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d751e9e49156b02b44f9c1815bcb94b984cdcc4396ecc32521c739452808b134" -dependencies = [ - "derive_more-impl 2.1.1", -] - -[[package]] -name = "derive_more-impl" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "derive_more-impl" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "799a97264921d8623a957f6c3b9011f3b5492f557bbb7a5a19b7fa6d06ba8dcb" -dependencies = [ - "convert_case", - "proc-macro2", - "quote", - "rustc_version 0.4.1", - "syn 2.0.117", - "unicode-xid", -] - -[[package]] -name = "digest" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" -dependencies = [ - "generic-array 0.14.9", -] - -[[package]] -name = "digest" -version = "0.10.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" -dependencies = [ - "block-buffer 0.10.4", - "const-oid", - "crypto-common", - "subtle", -] - -[[package]] -name = "displaydoc" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "dunce" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" - -[[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" -source = "git+https://github.com/ziren-patches/signatures.git?branch=patch-ecdsa-0.16.9#da0cd8753b243e09acf82f8e58f8da0e28e7287d" -dependencies = [ - "der", - "digest 0.10.7", - "elliptic-curve", - "rfc6979", - "serdect", - "signature", - "spki", -] - -[[package]] -name = "ed25519" -version = "2.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" -dependencies = [ - "pkcs8", - "signature", -] - -[[package]] -name = "ed25519-consensus" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c8465edc8ee7436ffea81d21a019b16676ee3db267aa8d5a8d729581ecf998b" -dependencies = [ - "curve25519-dalek-ng", - "hex", - "rand_core 0.6.4", - "sha2 0.9.9", - "zeroize", -] - -[[package]] -name = "educe" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d7bc049e1bd8cdeb31b68bbd586a9464ecf9f3944af3958a7a9d0f8b9799417" -dependencies = [ - "enum-ordinalize", - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "either" -version = "1.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" -dependencies = [ - "serde", -] - -[[package]] -name = "elf" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4445909572dbd556c457c849c4ca58623d84b27c8fff1e74b0b4227d8b90d17b" - -[[package]] -name = "elliptic-curve" -version = "0.13.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" -dependencies = [ - "base16ct", - "crypto-bigint", - "digest 0.10.7", - "ff 0.13.1", - "generic-array 0.14.9", - "group 0.13.0", - "hkdf", - "pem-rfc7468", - "pkcs8", - "rand_core 0.6.4", - "sec1", - "serdect", - "subtle", - "zeroize", -] - -[[package]] -name = "enum-map" -version = "2.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6866f3bfdf8207509a033af1a75a7b08abda06bbaaeae6669323fd5a097df2e9" -dependencies = [ - "enum-map-derive", - "serde", -] - -[[package]] -name = "enum-map-derive" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f282cfdfe92516eb26c2af8589c274c7c17681f5ecc03c18255fe741c6aa64eb" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "enum-ordinalize" -version = "4.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a1091a7bb1f8f2c4b28f1fe2cef4980ca2d410a3d727d67ecc3178c9b0800f0" -dependencies = [ - "enum-ordinalize-derive", -] - -[[package]] -name = "enum-ordinalize-derive" -version = "4.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ca9601fb2d62598ee17836250842873a413586e5d7ed88b356e38ddbb0ec631" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "env_filter" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32e90c2accc4b07a8456ea0debdc2e7587bdd890680d71173a15d4ae604f6eef" -dependencies = [ - "log", - "regex", -] - -[[package]] -name = "env_logger" -version = "0.11.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0621c04f2196ac3f488dd583365b9c09be011a4ab8b9f37248ffcc8f6198b56a" -dependencies = [ - "anstream", - "anstyle", - "env_filter", - "jiff", - "log", -] - -[[package]] -name = "equivalent" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" - -[[package]] -name = "errno" -version = "0.3.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" -dependencies = [ - "libc", - "windows-sys", -] - -[[package]] -name = "eyre" -version = "0.6.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cd915d99f24784cdc19fd37ef22b97e3ff0ae756c7e492e9fbfe897d61e2aec" -dependencies = [ - "indenter", - "once_cell", -] - -[[package]] -name = "fastrand" -version = "2.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6" - -[[package]] -name = "fastrlp" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "139834ddba373bbdd213dffe02c8d110508dcf1726c2be27e8d1f7d7e1856418" -dependencies = [ - "arrayvec", - "auto_impl", - "bytes", -] - -[[package]] -name = "fastrlp" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce8dba4714ef14b8274c371879b175aa55b16b30f269663f19d576f380018dc4" -dependencies = [ - "arrayvec", - "auto_impl", - "bytes", -] - -[[package]] -name = "ff" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d013fc25338cc558c5c2cfbad646908fb23591e2404481826742b651c9af7160" -dependencies = [ - "bitvec", - "rand_core 0.6.4", - "subtle", -] - -[[package]] -name = "ff" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" -dependencies = [ - "bitvec", - "byteorder", - "ff_derive", - "rand_core 0.6.4", - "subtle", -] - -[[package]] -name = "ff_derive" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f10d12652036b0e99197587c6ba87a8fc3031986499973c030d8b44fcc151b60" -dependencies = [ - "addchain", - "num-bigint 0.3.3", - "num-integer", - "num-traits", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "fiat-crypto" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" - -[[package]] -name = "find-msvc-tools" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" - -[[package]] -name = "fixed-hash" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" -dependencies = [ - "byteorder", - "rand 0.8.6", - "rustc-hex", - "static_assertions", -] - -[[package]] -name = "fixedbitset" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" - -[[package]] -name = "flex-error" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c606d892c9de11507fa0dcffc116434f94e105d0bbdc4e405b61519464c49d7b" -dependencies = [ - "paste", -] - -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - -[[package]] -name = "foldhash" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" - -[[package]] -name = "foldhash" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" - -[[package]] -name = "form_urlencoded" -version = "1.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" -dependencies = [ - "percent-encoding", -] - -[[package]] -name = "funty" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" - -[[package]] -name = "futures" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b147ee9d1f6d097cef9ce628cd2ee62288d963e16fb287bd9286455b241382d" -dependencies = [ - "futures-channel", - "futures-core", - "futures-io", - "futures-sink", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-channel" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d" -dependencies = [ - "futures-core", - "futures-sink", -] - -[[package]] -name = "futures-core" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" - -[[package]] -name = "futures-io" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718" - -[[package]] -name = "futures-sink" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" - -[[package]] -name = "futures-task" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" - -[[package]] -name = "futures-util" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" -dependencies = [ - "futures-core", - "futures-sink", - "futures-task", - "pin-project-lite", - "slab", -] - -[[package]] -name = "futures-utils-wasm" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42012b0f064e01aa58b545fe3727f90f7dd4020f4a3ea735b50344965f5a57e9" - -[[package]] -name = "gcd" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d758ba1b47b00caf47f24925c0074ecb20d6dfcffe7f6d53395c0465674841a" - -[[package]] -name = "generic-array" -version = "0.14.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bb6743198531e02858aeaea5398fcc883e71851fcbcb5a2f773e2fb6cb1edf2" -dependencies = [ - "typenum", - "version_check", - "zeroize", -] - -[[package]] -name = "generic-array" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dab9e9188e97a93276e1fe7b56401b851e2b45a46d045ca658100c1303ada649" -dependencies = [ - "rustversion", - "serde_core", - "typenum", -] - -[[package]] -name = "getrandom" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" -dependencies = [ - "cfg-if", - "libc", - "wasi", -] - -[[package]] -name = "getrandom" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" -dependencies = [ - "cfg-if", - "libc", - "r-efi 5.3.0", - "wasip2", -] - -[[package]] -name = "getrandom" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" -dependencies = [ - "cfg-if", - "libc", - "r-efi 6.0.0", - "wasip2", - "wasip3", -] - -[[package]] -name = "gimli" -version = "0.32.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7" - -[[package]] -name = "glob" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" - -[[package]] -name = "group" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dfbfb3a6cfbd390d5c9564ab283a0349b9b9fcd46a706c1eb10e0db70bfbac7" -dependencies = [ - "ff 0.12.1", - "memuse", - "rand_core 0.6.4", - "subtle", -] - -[[package]] -name = "group" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" -dependencies = [ - "ff 0.13.1", - "rand_core 0.6.4", - "subtle", -] - -[[package]] -name = "guest" -version = "1.1.0" -dependencies = [ - "bitcoin", - "bitcoin-light-client-circuit", - "hex", - "tracing", - "verifier", - "zkm-primitives", - "zkm-zkvm", -] - -[[package]] -name = "guest-executor" -version = "0.1.0" -source = "git+https://github.com/ProjectZKM/reth-processor?branch=feat%2Fslot-state-check#294aa06127be4bfda47a7fd4905b93bb8e664dca" -dependencies = [ - "alloy-consensus", - "alloy-evm", - "alloy-network", - "alloy-primitives", - "alloy-rpc-types", - "bincode", - "itertools 0.13.0", - "kzg-rs", - "mpt", - "primitives", - "reth-chainspec", - "reth-consensus", - "reth-consensus-common", - "reth-errors", - "reth-ethereum-consensus", - "reth-ethereum-primitives", - "reth-evm", - "reth-evm-ethereum", - "reth-execution-types", - "reth-primitives-traits", - "reth-trie", - "revm", - "revm-primitives", - "serde", - "serde_json", - "serde_with", - "thiserror 1.0.69", -] - -[[package]] -name = "halo2" -version = "0.1.0-beta.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a23c779b38253fe1538102da44ad5bd5378495a61d2c4ee18d64eaa61ae5995" -dependencies = [ - "halo2_proofs", -] - -[[package]] -name = "halo2_proofs" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e925780549adee8364c7f2b685c753f6f3df23bde520c67416e93bf615933760" -dependencies = [ - "blake2b_simd", - "ff 0.12.1", - "group 0.12.1", - "pasta_curves 0.4.1", - "rand_core 0.6.4", - "rayon", -] - -[[package]] -name = "halo2curves" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d380afeef3f1d4d3245b76895172018cfb087d9976a7cabcd5597775b2933e07" -dependencies = [ - "blake2", - "digest 0.10.7", - "ff 0.13.1", - "group 0.13.0", - "halo2derive", - "hex", - "lazy_static", - "num-bigint 0.4.6", - "num-integer", - "num-traits", - "pairing 0.23.0", - "pasta_curves 0.5.1", - "paste", - "rand 0.8.6", - "rand_core 0.6.4", - "rayon", - "serde", - "serde_arrays 0.1.0", - "sha2 0.10.9", - "static_assertions", - "subtle", - "unroll", -] - -[[package]] -name = "halo2derive" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdb99e7492b4f5ff469d238db464131b86c2eaac814a78715acba369f64d2c76" -dependencies = [ - "num-bigint 0.4.6", - "num-integer", - "num-traits", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[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" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" -dependencies = [ - "ahash", - "allocator-api2", - "serde", -] - -[[package]] -name = "hashbrown" -version = "0.15.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" -dependencies = [ - "allocator-api2", - "foldhash 0.1.5", -] - -[[package]] -name = "hashbrown" -version = "0.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" -dependencies = [ - "foldhash 0.2.0", - "serde", - "serde_core", -] - -[[package]] -name = "hashbrown" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f467dd6dccf739c208452f8014c75c18bb8301b050ad1cfb27153803edb0f51" - -[[package]] -name = "header-chain" -version = "0.4.0" -dependencies = [ - "bitcoin", - "borsh", - "crypto-bigint", - "serde", - "sha2 0.10.9", - "verifier", - "zkm-zkvm", -] - -[[package]] -name = "heck" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" - -[[package]] -name = "hermit-abi" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" - -[[package]] -name = "hex" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" -dependencies = [ - "serde", -] - -[[package]] -name = "hex-conservative" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fda06d18ac606267c40c04e41b9947729bf8b9efe74bd4e82b61a5f26a510b9f" -dependencies = [ - "arrayvec", -] - -[[package]] -name = "hex_lit" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3011d1213f159867b13cfd6ac92d2cd5f1345762c63be3554e84092d85a50bbd" - -[[package]] -name = "hkdf" -version = "0.12.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" -dependencies = [ - "hmac", -] - -[[package]] -name = "hmac" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" -dependencies = [ - "digest 0.10.7", -] - -[[package]] -name = "http" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" -dependencies = [ - "bytes", - "itoa", -] - -[[package]] -name = "iana-time-zone" -version = "0.1.65" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470" -dependencies = [ - "android_system_properties", - "core-foundation-sys", - "iana-time-zone-haiku", - "js-sys", - "log", - "wasm-bindgen", - "windows-core 0.62.2", -] - -[[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.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2984d1cd16c883d7935b9e07e44071dca8d917fd52ecc02c04d5fa0b5a3f191c" -dependencies = [ - "displaydoc", - "potential_utf", - "utf8_iter", - "yoke", - "zerofrom", - "zerovec", -] - -[[package]] -name = "icu_locale_core" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92219b62b3e2b4d88ac5119f8904c10f8f61bf7e95b640d25ba3075e6cac2c29" -dependencies = [ - "displaydoc", - "litemap", - "tinystr", - "writeable", - "zerovec", -] - -[[package]] -name = "icu_normalizer" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c56e5ee99d6e3d33bd91c5d85458b6005a22140021cc324cea84dd0e72cff3b4" -dependencies = [ - "icu_collections", - "icu_normalizer_data", - "icu_properties", - "icu_provider", - "smallvec", - "zerovec", -] - -[[package]] -name = "icu_normalizer_data" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da3be0ae77ea334f4da67c12f149704f19f81d1adf7c51cf482943e84a2bad38" - -[[package]] -name = "icu_properties" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bee3b67d0ea5c2cca5003417989af8996f8604e34fb9ddf96208a033901e70de" -dependencies = [ - "icu_collections", - "icu_locale_core", - "icu_properties_data", - "icu_provider", - "zerotrie", - "zerovec", -] - -[[package]] -name = "icu_properties_data" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e2bbb201e0c04f7b4b3e14382af113e17ba4f63e2c9d2ee626b720cbce54a14" - -[[package]] -name = "icu_provider" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "139c4cf31c8b5f33d7e199446eff9c1e02decfc2f0eec2c8d71f65befa45b421" -dependencies = [ - "displaydoc", - "icu_locale_core", - "writeable", - "yoke", - "zerofrom", - "zerotrie", - "zerovec", -] - -[[package]] -name = "id-arena" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" - -[[package]] -name = "ident_case" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" - -[[package]] -name = "idna" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" -dependencies = [ - "idna_adapter", - "smallvec", - "utf8_iter", -] - -[[package]] -name = "idna_adapter" -version = "1.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb68373c0d6620ef8105e855e7745e18b0d00d3bdb07fb532e434244cdb9a714" -dependencies = [ - "icu_normalizer", - "icu_properties", -] - -[[package]] -name = "impl-codec" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" -dependencies = [ - "parity-scale-codec", -] - -[[package]] -name = "impl-trait-for-tuples" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "indenter" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "964de6e86d545b246d84badc0fef527924ace5134f30641c203ef52ba83f58d5" - -[[package]] -name = "indexmap" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown 0.12.3", - "serde", -] - -[[package]] -name = "indexmap" -version = "2.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" -dependencies = [ - "equivalent", - "hashbrown 0.17.0", - "serde", - "serde_core", -] - -[[package]] -name = "informalsystems-pbjson" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aa4a0980c8379295100d70854354e78df2ee1c6ca0f96ffe89afeb3140e3a3d" -dependencies = [ - "base64 0.21.7", - "serde", -] - -[[package]] -name = "is_terminal_polyfill" -version = "1.70.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" - -[[package]] -name = "itertools" -version = "0.10.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" -dependencies = [ - "either", -] - -[[package]] -name = "itertools" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" -dependencies = [ - "either", -] - -[[package]] -name = "itertools" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" -dependencies = [ - "either", -] - -[[package]] -name = "itoa" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" - -[[package]] -name = "jiff" -version = "0.2.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f00b5dbd620d61dfdcb6007c9c1f6054ebd75319f163d886a9055cec1155073d" -dependencies = [ - "jiff-static", - "log", - "portable-atomic", - "portable-atomic-util", - "serde_core", -] - -[[package]] -name = "jiff-static" -version = "0.2.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e000de030ff8022ea1da3f466fbb0f3a809f5e51ed31f6dd931c35181ad8e6d7" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "jobserver" -version = "0.1.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" -dependencies = [ - "getrandom 0.3.4", - "libc", -] - -[[package]] -name = "js-sys" -version = "0.3.97" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1840c94c045fbcf8ba2812c95db44499f7c64910a912551aaaa541decebcacf" -dependencies = [ - "cfg-if", - "futures-util", - "once_cell", - "wasm-bindgen", -] - -[[package]] -name = "jubjub" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a575df5f985fe1cd5b2b05664ff6accfc46559032b954529fd225a2168d27b0f" -dependencies = [ - "bitvec", - "bls12_381 0.7.1", - "ff 0.12.1", - "group 0.12.1", - "rand_core 0.6.4", - "subtle", -] - -[[package]] -name = "k256" -version = "0.13.4" -source = "git+https://github.com/ziren-patches/elliptic-curves?branch=patch-k256-0.13.4#8266b228a39402a0ba68d644b7f26b85b5112fe3" -dependencies = [ - "cfg-if", - "ecdsa", - "elliptic-curve", - "hex", - "once_cell", - "serdect", - "sha2 0.10.9", - "signature", - "zkm-lib", -] - -[[package]] -name = "keccak" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb26cec98cce3a3d96cbb7bced3c4b16e3d13f27ec56dbd62cbc8f39cfb9d653" -dependencies = [ - "cpufeatures", -] - -[[package]] -name = "keccak-asm" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa468878266ad91431012b3e5ef1bf9b170eab22883503a318d46857afa4579a" -dependencies = [ - "digest 0.10.7", - "sha3-asm", -] - -[[package]] -name = "konst" -version = "0.2.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "128133ed7824fcd73d6e7b17957c5eb7bacb885649bd8c69708b2331a10bcefb" -dependencies = [ - "konst_macro_rules", -] - -[[package]] -name = "konst_macro_rules" -version = "0.2.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4933f3f57a8e9d9da04db23fb153356ecaf00cbd14aee46279c33dc80925c37" - -[[package]] -name = "kzg-rs" -version = "0.2.6" -source = "git+https://github.com/ziren-patches/kzg-rs?branch=ziren#4cd5e3086a49dc1e94ffbd63ee4a7a9b2e342faa" -dependencies = [ - "bls12_381 0.8.0", - "ff 0.13.1", - "hex", - "serde_arrays 0.2.0", - "sha2 0.10.9", - "spin", -] - -[[package]] -name = "lazy_static" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" -dependencies = [ - "spin", -] - -[[package]] -name = "leb128fmt" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" - -[[package]] -name = "libc" -version = "0.2.186" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" - -[[package]] -name = "libm" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" - -[[package]] -name = "linux-raw-sys" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" - -[[package]] -name = "litemap" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92daf443525c4cce67b150400bc2316076100ce0b3686209eb8cf3c31612e6f0" - -[[package]] -name = "lock_api" -version = "0.4.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" -dependencies = [ - "scopeguard", -] - -[[package]] -name = "log" -version = "0.4.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" - -[[package]] -name = "macro-string" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b27834086c65ec3f9387b096d66e99f221cf081c2b738042aa252bcd41204e3" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "matchers" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9" -dependencies = [ - "regex-automata", -] - -[[package]] -name = "memchr" -version = "2.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" - -[[package]] -name = "memuse" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d97bbf43eb4f088f8ca469930cde17fa036207c9a5e02ccc5107c4e8b17c964" - -[[package]] -name = "miniz_oxide" -version = "0.8.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" -dependencies = [ - "adler2", -] - -[[package]] -name = "modular-bitfield" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a53d79ba8304ac1c4f9eb3b9d281f21f7be9d4626f72ce7df4ad8fbde4f38a74" -dependencies = [ - "modular-bitfield-impl", - "static_assertions", -] - -[[package]] -name = "modular-bitfield-impl" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a7d5f7076603ebc68de2dc6a650ec331a062a13abaa346975be747bbfa4b789" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "mpt" -version = "0.1.0" -source = "git+https://github.com/ProjectZKM/reth-processor?branch=feat%2Fslot-state-check#294aa06127be4bfda47a7fd4905b93bb8e664dca" -dependencies = [ - "alloy-primitives", - "alloy-rlp", - "alloy-rpc-types", - "alloy-rpc-types-debug", - "reth-trie", - "rlp", - "serde", - "thiserror 1.0.69", -] - -[[package]] -name = "multimap" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d87ecb2933e8aeadb3e3a02b828fed80a7528047e68b4f424523a0981a3a084" - -[[package]] -name = "nohash-hasher" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" - -[[package]] -name = "ntapi" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3b335231dfd352ffb0f8017f3b6027a4917f7df785ea2143d8af2adc66980ae" -dependencies = [ - "winapi", -] - -[[package]] -name = "nu-ansi-term" -version = "0.50.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" -dependencies = [ - "windows-sys", -] - -[[package]] -name = "num" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" -dependencies = [ - "num-bigint 0.4.6", - "num-complex", - "num-integer", - "num-iter", - "num-rational", - "num-traits", -] - -[[package]] -name = "num-bigint" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f6f7833f2cbf2360a6cfd58cd41a53aa7a90bd4c202f5b1c7dd2ed73c57b2c3" -dependencies = [ - "autocfg", - "num-integer", - "num-traits", -] - -[[package]] -name = "num-bigint" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" -dependencies = [ - "num-integer", - "num-traits", - "rand 0.8.6", -] - -[[package]] -name = "num-complex" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" -dependencies = [ - "num-traits", -] - -[[package]] -name = "num-conv" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6673768db2d862beb9b39a78fdcb1a69439615d5794a1be50caa9bc92c81967" - -[[package]] -name = "num-integer" -version = "0.1.46" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" -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-modular" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17bb261bf36fa7d83f4c294f834e91256769097b3cb505d44831e0a179ac647f" - -[[package]] -name = "num-order" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "537b596b97c40fcf8056d153049eb22f481c17ebce72a513ec9286e4986d1bb6" -dependencies = [ - "num-modular", -] - -[[package]] -name = "num-rational" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" -dependencies = [ - "num-bigint 0.4.6", - "num-integer", - "num-traits", -] - -[[package]] -name = "num-traits" -version = "0.2.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" -dependencies = [ - "autocfg", - "libm", -] - -[[package]] -name = "num_cpus" -version = "1.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" -dependencies = [ - "hermit-abi", - "libc", -] - -[[package]] -name = "num_enum" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d0bca838442ec211fa11de3a8b0e0e8f3a4522575b5c4c06ed722e005036f26" -dependencies = [ - "num_enum_derive", - "rustversion", -] - -[[package]] -name = "num_enum_derive" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "680998035259dcfcafe653688bf2aa6d3e2dc05e98be6ab46afb089dc84f1df8" -dependencies = [ - "proc-macro-crate", - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "nums" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf3c74f925fb8cfc49a8022f2afce48a0683b70f9e439885594e84c5edbf5b01" -dependencies = [ - "num-bigint 0.4.6", - "num-integer", - "num-traits", - "rand 0.8.6", -] - -[[package]] -name = "nybbles" -version = "0.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d49ff0c0d00d4a502b39df9af3a525e1efeb14b9dabb5bb83335284c1309210" -dependencies = [ - "alloy-rlp", - "cfg-if", - "proptest", - "ruint", - "serde", - "smallvec", -] - -[[package]] -name = "object" -version = "0.37.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff76201f031d8863c38aa7f905eca4f53abbfa15f609db4277d44cd8938f33fe" -dependencies = [ - "memchr", -] - -[[package]] -name = "once_cell" -version = "1.21.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" -dependencies = [ - "critical-section", - "portable-atomic", -] - -[[package]] -name = "once_cell_polyfill" -version = "1.70.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" - -[[package]] -name = "op-alloy-consensus" -version = "0.22.0" -source = "git+https://github.com/ziren-patches/op-alloy?branch=patch-0.22.0#20048eaa105b1c06ca4fca6108a047a2fda0c494" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-primitives", - "alloy-rlp", - "alloy-serde", - "derive_more 2.1.1", - "serde", - "serde_with", - "thiserror 2.0.18", -] - -[[package]] -name = "opaque-debug" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" - -[[package]] -name = "p256" -version = "0.13.2" -source = "git+https://github.com/ziren-patches/elliptic-curves?branch=patch-p256-0.13.2#a6f1a1fb07020d00f627725a20dc336983be3946" -dependencies = [ - "ecdsa", - "elliptic-curve", - "hex", - "primeorder", - "sha2 0.10.9", - "zkm-lib", -] - -[[package]] -name = "p3-air" -version = "0.1.0" -source = "git+https://github.com/ProjectZKM/Plonky3#faa24ca4597eebeecbf71b194b71c7d1a99b3f01" -dependencies = [ - "p3-field", - "p3-matrix", -] - -[[package]] -name = "p3-bn254-fr" -version = "0.1.0" -source = "git+https://github.com/ProjectZKM/Plonky3#faa24ca4597eebeecbf71b194b71c7d1a99b3f01" -dependencies = [ - "ff 0.13.1", - "halo2curves", - "num-bigint 0.4.6", - "p3-field", - "p3-poseidon2", - "p3-symmetric", - "rand 0.8.6", - "serde", -] - -[[package]] -name = "p3-challenger" -version = "0.1.0" -source = "git+https://github.com/ProjectZKM/Plonky3#faa24ca4597eebeecbf71b194b71c7d1a99b3f01" -dependencies = [ - "p3-field", - "p3-maybe-rayon", - "p3-symmetric", - "p3-util", - "serde", - "tracing", -] - -[[package]] -name = "p3-circle" -version = "0.1.0" -source = "git+https://github.com/ProjectZKM/Plonky3#faa24ca4597eebeecbf71b194b71c7d1a99b3f01" -dependencies = [ - "itertools 0.13.0", - "p3-challenger", - "p3-commit", - "p3-dft", - "p3-field", - "p3-fri", - "p3-matrix", - "p3-maybe-rayon", - "p3-util", - "serde", - "tracing", -] - -[[package]] -name = "p3-commit" -version = "0.1.0" -source = "git+https://github.com/ProjectZKM/Plonky3#faa24ca4597eebeecbf71b194b71c7d1a99b3f01" -dependencies = [ - "itertools 0.13.0", - "p3-challenger", - "p3-dft", - "p3-field", - "p3-matrix", - "p3-util", - "serde", -] - -[[package]] -name = "p3-dft" -version = "0.1.0" -source = "git+https://github.com/ProjectZKM/Plonky3#faa24ca4597eebeecbf71b194b71c7d1a99b3f01" -dependencies = [ - "itertools 0.13.0", - "p3-field", - "p3-matrix", - "p3-maybe-rayon", - "p3-util", - "tracing", -] - -[[package]] -name = "p3-field" -version = "0.1.0" -source = "git+https://github.com/ProjectZKM/Plonky3#faa24ca4597eebeecbf71b194b71c7d1a99b3f01" -dependencies = [ - "itertools 0.13.0", - "num-bigint 0.4.6", - "num-integer", - "num-traits", - "nums", - "p3-maybe-rayon", - "p3-util", - "rand 0.8.6", - "serde", - "tracing", -] - -[[package]] -name = "p3-fri" -version = "0.1.0" -source = "git+https://github.com/ProjectZKM/Plonky3#faa24ca4597eebeecbf71b194b71c7d1a99b3f01" -dependencies = [ - "itertools 0.13.0", - "p3-challenger", - "p3-commit", - "p3-dft", - "p3-field", - "p3-interpolation", - "p3-matrix", - "p3-maybe-rayon", - "p3-util", - "rand 0.8.6", - "serde", - "tracing", -] - -[[package]] -name = "p3-interpolation" -version = "0.1.0" -source = "git+https://github.com/ProjectZKM/Plonky3#faa24ca4597eebeecbf71b194b71c7d1a99b3f01" -dependencies = [ - "p3-field", - "p3-matrix", - "p3-maybe-rayon", - "p3-util", -] - -[[package]] -name = "p3-keccak" -version = "0.1.0" -source = "git+https://github.com/ProjectZKM/Plonky3#faa24ca4597eebeecbf71b194b71c7d1a99b3f01" -dependencies = [ - "itertools 0.13.0", - "p3-field", - "p3-symmetric", - "p3-util", - "tiny-keccak", -] - -[[package]] -name = "p3-keccak-air" -version = "0.1.0" -source = "git+https://github.com/ProjectZKM/Plonky3#faa24ca4597eebeecbf71b194b71c7d1a99b3f01" -dependencies = [ - "p3-air", - "p3-field", - "p3-matrix", - "p3-maybe-rayon", - "p3-util", - "tracing", -] - -[[package]] -name = "p3-koala-bear" -version = "0.1.0" -source = "git+https://github.com/ProjectZKM/Plonky3#faa24ca4597eebeecbf71b194b71c7d1a99b3f01" -dependencies = [ - "p3-field", - "p3-mds", - "p3-monty-31", - "p3-poseidon2", - "p3-symmetric", - "rand 0.8.6", - "serde", -] - -[[package]] -name = "p3-matrix" -version = "0.1.0" -source = "git+https://github.com/ProjectZKM/Plonky3#faa24ca4597eebeecbf71b194b71c7d1a99b3f01" -dependencies = [ - "itertools 0.13.0", - "p3-field", - "p3-maybe-rayon", - "p3-util", - "rand 0.8.6", - "serde", - "tracing", - "transpose", -] - -[[package]] -name = "p3-maybe-rayon" -version = "0.1.0" -source = "git+https://github.com/ProjectZKM/Plonky3#faa24ca4597eebeecbf71b194b71c7d1a99b3f01" -dependencies = [ - "rayon", -] - -[[package]] -name = "p3-mds" -version = "0.1.0" -source = "git+https://github.com/ProjectZKM/Plonky3#faa24ca4597eebeecbf71b194b71c7d1a99b3f01" -dependencies = [ - "itertools 0.13.0", - "p3-dft", - "p3-field", - "p3-matrix", - "p3-symmetric", - "p3-util", - "rand 0.8.6", -] - -[[package]] -name = "p3-merkle-tree" -version = "0.1.0" -source = "git+https://github.com/ProjectZKM/Plonky3#faa24ca4597eebeecbf71b194b71c7d1a99b3f01" -dependencies = [ - "itertools 0.13.0", - "p3-commit", - "p3-field", - "p3-matrix", - "p3-maybe-rayon", - "p3-symmetric", - "p3-util", - "rand 0.8.6", - "serde", - "tracing", -] - -[[package]] -name = "p3-mersenne-31" -version = "0.1.0" -source = "git+https://github.com/ProjectZKM/Plonky3#faa24ca4597eebeecbf71b194b71c7d1a99b3f01" -dependencies = [ - "itertools 0.13.0", - "num-bigint 0.4.6", - "p3-dft", - "p3-field", - "p3-matrix", - "p3-maybe-rayon", - "p3-mds", - "p3-poseidon2", - "p3-symmetric", - "p3-util", - "rand 0.8.6", - "serde", -] - -[[package]] -name = "p3-monty-31" -version = "0.1.0" -source = "git+https://github.com/ProjectZKM/Plonky3#faa24ca4597eebeecbf71b194b71c7d1a99b3f01" -dependencies = [ - "itertools 0.13.0", - "num-bigint 0.4.6", - "p3-dft", - "p3-field", - "p3-matrix", - "p3-maybe-rayon", - "p3-mds", - "p3-poseidon2", - "p3-symmetric", - "p3-util", - "rand 0.8.6", - "serde", - "serde_json", - "tracing", - "transpose", -] - -[[package]] -name = "p3-poseidon2" -version = "0.1.0" -source = "git+https://github.com/ProjectZKM/Plonky3#faa24ca4597eebeecbf71b194b71c7d1a99b3f01" -dependencies = [ - "gcd", - "p3-field", - "p3-mds", - "p3-symmetric", - "rand 0.8.6", - "serde", -] - -[[package]] -name = "p3-symmetric" -version = "0.1.0" -source = "git+https://github.com/ProjectZKM/Plonky3#faa24ca4597eebeecbf71b194b71c7d1a99b3f01" -dependencies = [ - "itertools 0.13.0", - "p3-field", - "serde", -] - -[[package]] -name = "p3-uni-stark" -version = "0.1.0" -source = "git+https://github.com/ProjectZKM/Plonky3#faa24ca4597eebeecbf71b194b71c7d1a99b3f01" -dependencies = [ - "itertools 0.13.0", - "p3-air", - "p3-challenger", - "p3-commit", - "p3-dft", - "p3-field", - "p3-matrix", - "p3-maybe-rayon", - "p3-util", - "serde", - "tracing", -] - -[[package]] -name = "p3-util" -version = "0.1.0" -source = "git+https://github.com/ProjectZKM/Plonky3#faa24ca4597eebeecbf71b194b71c7d1a99b3f01" -dependencies = [ - "lock_api", - "serde", -] - -[[package]] -name = "pairing" -version = "0.22.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "135590d8bdba2b31346f9cd1fb2a912329f5135e832a4f422942eb6ead8b6b3b" -dependencies = [ - "group 0.12.1", -] - -[[package]] -name = "pairing" -version = "0.23.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81fec4625e73cf41ef4bb6846cafa6d44736525f442ba45e407c4a000a13996f" -dependencies = [ - "group 0.13.0", -] - -[[package]] -name = "parity-scale-codec" -version = "3.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "799781ae679d79a948e13d4824a40970bfa500058d245760dd857301059810fa" -dependencies = [ - "arrayvec", - "bitvec", - "byte-slice-cast", - "const_format", - "impl-trait-for-tuples", - "parity-scale-codec-derive", - "rustversion", - "serde", -] - -[[package]] -name = "parity-scale-codec-derive" -version = "3.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34b4653168b563151153c9e4c08ebed57fb8262bebfa79711552fa983c623e7a" -dependencies = [ - "proc-macro-crate", - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "pasta_curves" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cc65faf8e7313b4b1fbaa9f7ca917a0eed499a9663be71477f87993604341d8" -dependencies = [ - "blake2b_simd", - "ff 0.12.1", - "group 0.12.1", - "lazy_static", - "rand 0.8.6", - "static_assertions", - "subtle", -] - -[[package]] -name = "pasta_curves" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3e57598f73cc7e1b2ac63c79c517b31a0877cd7c402cdcaa311b5208de7a095" -dependencies = [ - "blake2b_simd", - "ff 0.13.1", - "group 0.13.0", - "hex", - "lazy_static", - "rand 0.8.6", - "serde", - "static_assertions", - "subtle", -] - -[[package]] -name = "paste" -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.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" - -[[package]] -name = "pest" -version = "2.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0848c601009d37dfa3430c4666e147e49cdcf1b92ecd3e63657d8a5f19da662" -dependencies = [ - "memchr", - "ucd-trie", -] - -[[package]] -name = "petgraph" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772" -dependencies = [ - "fixedbitset", - "indexmap 2.14.0", -] - -[[package]] -name = "phf" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1562dc717473dbaa4c1f85a36410e03c047b2e7df7f45ee938fbef64ae7fadf" -dependencies = [ - "phf_macros", - "phf_shared", - "serde", -] - -[[package]] -name = "phf_generator" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "135ace3a761e564ec88c03a77317a7c6b80bb7f7135ef2544dbe054243b89737" -dependencies = [ - "fastrand", - "phf_shared", -] - -[[package]] -name = "phf_macros" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "812f032b54b1e759ccd5f8b6677695d5268c588701effba24601f6932f8269ef" -dependencies = [ - "phf_generator", - "phf_shared", - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "phf_shared" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e57fef6bc5981e38c2ce2d63bfa546861309f875b8a75f092d1d54ae2d64f266" -dependencies = [ - "siphasher", -] - -[[package]] -name = "pin-project-lite" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" - -[[package]] -name = "pkcs8" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" -dependencies = [ - "der", - "spki", -] - -[[package]] -name = "pkg-config" -version = "0.3.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" - -[[package]] -name = "portable-atomic" -version = "1.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49" - -[[package]] -name = "portable-atomic-util" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2a106d1259c23fac8e543272398ae0e3c0b8d33c88ed73d0cc71b0f1d902618" -dependencies = [ - "portable-atomic", -] - -[[package]] -name = "potential_utf" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0103b1cef7ec0cf76490e969665504990193874ea05c85ff9bab8b911d0a0564" -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" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" -dependencies = [ - "zerocopy", -] - -[[package]] -name = "prettyplease" -version = "0.2.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" -dependencies = [ - "proc-macro2", - "syn 2.0.117", -] - -[[package]] -name = "primeorder" -version = "0.13.1" -source = "git+https://github.com/ziren-patches/elliptic-curves?branch=patch-p256-0.13.2#a6f1a1fb07020d00f627725a20dc336983be3946" -dependencies = [ - "elliptic-curve", -] - -[[package]] -name = "primitive-types" -version = "0.12.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" -dependencies = [ - "fixed-hash", - "impl-codec", - "uint", -] - -[[package]] -name = "primitives" -version = "0.1.0" -source = "git+https://github.com/ProjectZKM/reth-processor?branch=feat%2Fslot-state-check#294aa06127be4bfda47a7fd4905b93bb8e664dca" -dependencies = [ - "alloy-eips", - "alloy-genesis", - "alloy-primitives", - "alloy-rpc-types", - "eyre", - "reth-chainspec", - "reth-primitives-traits", - "reth-trie", - "serde", - "serde_json", -] - -[[package]] -name = "proc-macro-crate" -version = "3.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f" -dependencies = [ - "toml_edit", -] - -[[package]] -name = "proc-macro-error-attr2" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" -dependencies = [ - "proc-macro2", - "quote", -] - -[[package]] -name = "proc-macro-error2" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" -dependencies = [ - "proc-macro-error-attr2", - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "proc-macro2" -version = "1.0.106" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "proptest" -version = "1.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b45fcc2344c680f5025fe57779faef368840d0bd1f42f216291f0dc4ace4744" -dependencies = [ - "bit-set", - "bit-vec", - "bitflags", - "num-traits", - "rand 0.9.4", - "rand_chacha 0.9.0", - "rand_xorshift", - "regex-syntax", - "rusty-fork", - "tempfile", - "unarray", -] - -[[package]] -name = "prost" -version = "0.13.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2796faa41db3ec313a31f7624d9286acf277b52de526150b7e69f3debf891ee5" -dependencies = [ - "bytes", - "prost-derive", -] - -[[package]] -name = "prost-build" -version = "0.13.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be769465445e8c1474e9c5dac2018218498557af32d9ed057325ec9a41ae81bf" -dependencies = [ - "heck", - "itertools 0.14.0", - "log", - "multimap", - "once_cell", - "petgraph", - "prettyplease", - "prost", - "prost-types", - "regex", - "syn 2.0.117", - "tempfile", -] - -[[package]] -name = "prost-derive" -version = "0.13.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d" -dependencies = [ - "anyhow", - "itertools 0.14.0", - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "prost-types" -version = "0.13.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52c2c1bf36ddb1a1c396b3601a3cec27c2462e45f07c386894ec3ccf5332bd16" -dependencies = [ - "prost", -] - -[[package]] -name = "quick-error" -version = "1.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" - -[[package]] -name = "quote" -version = "1.0.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "r-efi" -version = "5.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" - -[[package]] -name = "r-efi" -version = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" - -[[package]] -name = "radium" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" - -[[package]] -name = "rand" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a" -dependencies = [ - "libc", - "rand_chacha 0.3.1", - "rand_core 0.6.4", - "serde", -] - -[[package]] -name = "rand" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea" -dependencies = [ - "rand_chacha 0.9.0", - "rand_core 0.9.5", - "serde", -] - -[[package]] -name = "rand_chacha" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" -dependencies = [ - "ppv-lite86", - "rand_core 0.6.4", -] - -[[package]] -name = "rand_chacha" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" -dependencies = [ - "ppv-lite86", - "rand_core 0.9.5", -] - -[[package]] -name = "rand_core" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" -dependencies = [ - "getrandom 0.2.17", -] - -[[package]] -name = "rand_core" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" -dependencies = [ - "getrandom 0.3.4", - "serde", -] - -[[package]] -name = "rand_xorshift" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "513962919efc330f829edb2535844d1b912b0fbe2ca165d613e4e8788bb05a5a" -dependencies = [ - "rand_core 0.9.5", -] - -[[package]] -name = "rayon" -version = "1.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb39b166781f92d482534ef4b4b1b2568f42613b53e5b6c160e24cfbfa30926d" -dependencies = [ - "either", - "rayon-core", -] - -[[package]] -name = "rayon-core" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" -dependencies = [ - "crossbeam-deque", - "crossbeam-utils", -] - -[[package]] -name = "rayon-scan" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f87cc11a0140b4b0da0ffc889885760c61b13672d80a908920b2c0df078fa14" -dependencies = [ - "rayon", -] - -[[package]] -name = "ref-cast" -version = "1.0.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d" -dependencies = [ - "ref-cast-impl", -] - -[[package]] -name = "ref-cast-impl" -version = "1.0.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "regex" -version = "1.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" -dependencies = [ - "aho-corasick", - "memchr", - "regex-automata", - "regex-syntax", -] - -[[package]] -name = "regex-automata" -version = "0.4.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" -dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax", -] - -[[package]] -name = "regex-syntax" -version = "0.8.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" - -[[package]] -name = "reth-chainspec" -version = "1.9.3" -source = "git+https://github.com/ziren-patches/reth?branch=patch-1.9.3#fb7e5b4b347ac28d7f3f937698a3b084bd158aa2" -dependencies = [ - "alloy-chains", - "alloy-consensus", - "alloy-eips", - "alloy-evm", - "alloy-genesis", - "alloy-primitives", - "alloy-trie", - "auto_impl", - "derive_more 2.1.1", - "reth-ethereum-forks", - "reth-network-peers", - "reth-primitives-traits", - "serde_json", -] - -[[package]] -name = "reth-codecs" -version = "1.9.3" -source = "git+https://github.com/ziren-patches/reth?branch=patch-1.9.3#fb7e5b4b347ac28d7f3f937698a3b084bd158aa2" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-genesis", - "alloy-primitives", - "alloy-trie", - "bytes", - "modular-bitfield", - "op-alloy-consensus", - "reth-codecs-derive", - "reth-zstd-compressors", - "serde", -] - -[[package]] -name = "reth-codecs-derive" -version = "1.9.3" -source = "git+https://github.com/ziren-patches/reth?branch=patch-1.9.3#fb7e5b4b347ac28d7f3f937698a3b084bd158aa2" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "reth-consensus" -version = "1.9.3" -source = "git+https://github.com/ziren-patches/reth?branch=patch-1.9.3#fb7e5b4b347ac28d7f3f937698a3b084bd158aa2" -dependencies = [ - "alloy-consensus", - "alloy-primitives", - "auto_impl", - "reth-execution-types", - "reth-primitives-traits", - "thiserror 2.0.18", -] - -[[package]] -name = "reth-consensus-common" -version = "1.9.3" -source = "git+https://github.com/ziren-patches/reth?branch=patch-1.9.3#fb7e5b4b347ac28d7f3f937698a3b084bd158aa2" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "reth-chainspec", - "reth-consensus", - "reth-primitives-traits", -] - -[[package]] -name = "reth-db-models" -version = "1.9.3" -source = "git+https://github.com/ziren-patches/reth?branch=patch-1.9.3#fb7e5b4b347ac28d7f3f937698a3b084bd158aa2" -dependencies = [ - "alloy-eips", - "alloy-primitives", - "reth-primitives-traits", -] - -[[package]] -name = "reth-errors" -version = "1.9.3" -source = "git+https://github.com/ziren-patches/reth?branch=patch-1.9.3#fb7e5b4b347ac28d7f3f937698a3b084bd158aa2" -dependencies = [ - "reth-consensus", - "reth-execution-errors", - "reth-storage-errors", - "thiserror 2.0.18", -] - -[[package]] -name = "reth-ethereum-consensus" -version = "1.9.3" -source = "git+https://github.com/ziren-patches/reth?branch=patch-1.9.3#fb7e5b4b347ac28d7f3f937698a3b084bd158aa2" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-primitives", - "reth-chainspec", - "reth-consensus", - "reth-consensus-common", - "reth-execution-types", - "reth-primitives-traits", - "tracing", -] - -[[package]] -name = "reth-ethereum-forks" -version = "1.9.3" -source = "git+https://github.com/ziren-patches/reth?branch=patch-1.9.3#fb7e5b4b347ac28d7f3f937698a3b084bd158aa2" -dependencies = [ - "alloy-eip2124", - "alloy-hardforks", - "alloy-primitives", - "auto_impl", - "once_cell", -] - -[[package]] -name = "reth-ethereum-primitives" -version = "1.9.3" -source = "git+https://github.com/ziren-patches/reth?branch=patch-1.9.3#fb7e5b4b347ac28d7f3f937698a3b084bd158aa2" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-primitives", - "alloy-rlp", - "alloy-rpc-types-eth", - "alloy-serde", - "reth-codecs", - "reth-primitives-traits", - "serde", - "serde_with", -] - -[[package]] -name = "reth-evm" -version = "1.9.3" -source = "git+https://github.com/ziren-patches/reth?branch=patch-1.9.3#fb7e5b4b347ac28d7f3f937698a3b084bd158aa2" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-evm", - "alloy-primitives", - "anyhow", - "auto_impl", - "derive_more 2.1.1", - "futures-util", - "reth-execution-errors", - "reth-execution-types", - "reth-primitives-traits", - "reth-storage-api", - "reth-storage-errors", - "reth-trie-common", - "revm", - "revm-database", -] - -[[package]] -name = "reth-evm-ethereum" -version = "1.9.3" -source = "git+https://github.com/ziren-patches/reth?branch=patch-1.9.3#fb7e5b4b347ac28d7f3f937698a3b084bd158aa2" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-evm", - "alloy-primitives", - "alloy-rpc-types-engine", - "reth-chainspec", - "reth-ethereum-forks", - "reth-ethereum-primitives", - "reth-evm", - "reth-execution-types", - "reth-primitives-traits", - "reth-storage-errors", - "revm", -] - -[[package]] -name = "reth-execution-errors" -version = "1.9.3" -source = "git+https://github.com/ziren-patches/reth?branch=patch-1.9.3#fb7e5b4b347ac28d7f3f937698a3b084bd158aa2" -dependencies = [ - "alloy-evm", - "alloy-primitives", - "alloy-rlp", - "nybbles", - "reth-storage-errors", - "thiserror 2.0.18", -] - -[[package]] -name = "reth-execution-types" -version = "1.9.3" -source = "git+https://github.com/ziren-patches/reth?branch=patch-1.9.3#fb7e5b4b347ac28d7f3f937698a3b084bd158aa2" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-evm", - "alloy-primitives", - "derive_more 2.1.1", - "reth-ethereum-primitives", - "reth-primitives-traits", - "reth-trie-common", - "revm", -] - -[[package]] -name = "reth-network-peers" -version = "1.9.3" -source = "git+https://github.com/ziren-patches/reth?branch=patch-1.9.3#fb7e5b4b347ac28d7f3f937698a3b084bd158aa2" -dependencies = [ - "alloy-primitives", - "alloy-rlp", - "serde_with", - "thiserror 2.0.18", - "url", -] - -[[package]] -name = "reth-primitives-traits" -version = "1.9.3" -source = "git+https://github.com/ziren-patches/reth?branch=patch-1.9.3#fb7e5b4b347ac28d7f3f937698a3b084bd158aa2" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-genesis", - "alloy-primitives", - "alloy-rlp", - "alloy-rpc-types-eth", - "alloy-trie", - "auto_impl", - "bytes", - "derive_more 2.1.1", - "once_cell", - "op-alloy-consensus", - "reth-codecs", - "revm-bytecode", - "revm-primitives", - "revm-state", - "secp256k1 0.30.0", - "serde", - "serde_with", - "thiserror 2.0.18", -] - -[[package]] -name = "reth-prune-types" -version = "1.9.3" -source = "git+https://github.com/ziren-patches/reth?branch=patch-1.9.3#fb7e5b4b347ac28d7f3f937698a3b084bd158aa2" -dependencies = [ - "alloy-primitives", - "derive_more 2.1.1", - "strum 0.27.2", - "thiserror 2.0.18", -] - -[[package]] -name = "reth-stages-types" -version = "1.9.3" -source = "git+https://github.com/ziren-patches/reth?branch=patch-1.9.3#fb7e5b4b347ac28d7f3f937698a3b084bd158aa2" -dependencies = [ - "alloy-primitives", - "reth-trie-common", -] - -[[package]] -name = "reth-static-file-types" -version = "1.9.3" -source = "git+https://github.com/ziren-patches/reth?branch=patch-1.9.3#fb7e5b4b347ac28d7f3f937698a3b084bd158aa2" -dependencies = [ - "alloy-primitives", - "derive_more 2.1.1", - "serde", - "strum 0.27.2", -] - -[[package]] -name = "reth-storage-api" -version = "1.9.3" -source = "git+https://github.com/ziren-patches/reth?branch=patch-1.9.3#fb7e5b4b347ac28d7f3f937698a3b084bd158aa2" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-primitives", - "alloy-rpc-types-engine", - "auto_impl", - "reth-chainspec", - "reth-db-models", - "reth-ethereum-primitives", - "reth-execution-types", - "reth-primitives-traits", - "reth-prune-types", - "reth-stages-types", - "reth-storage-errors", - "reth-trie-common", - "revm-database", -] - -[[package]] -name = "reth-storage-errors" -version = "1.9.3" -source = "git+https://github.com/ziren-patches/reth?branch=patch-1.9.3#fb7e5b4b347ac28d7f3f937698a3b084bd158aa2" -dependencies = [ - "alloy-eips", - "alloy-primitives", - "alloy-rlp", - "derive_more 2.1.1", - "reth-primitives-traits", - "reth-prune-types", - "reth-static-file-types", - "revm-database-interface", - "thiserror 2.0.18", -] - -[[package]] -name = "reth-trie" -version = "1.9.3" -source = "git+https://github.com/ziren-patches/reth?branch=patch-1.9.3#fb7e5b4b347ac28d7f3f937698a3b084bd158aa2" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-primitives", - "alloy-rlp", - "alloy-trie", - "auto_impl", - "itertools 0.14.0", - "reth-execution-errors", - "reth-primitives-traits", - "reth-stages-types", - "reth-storage-errors", - "reth-trie-common", - "reth-trie-sparse", - "revm-database", - "tracing", -] - -[[package]] -name = "reth-trie-common" -version = "1.9.3" -source = "git+https://github.com/ziren-patches/reth?branch=patch-1.9.3#fb7e5b4b347ac28d7f3f937698a3b084bd158aa2" -dependencies = [ - "alloy-consensus", - "alloy-primitives", - "alloy-rlp", - "alloy-trie", - "derive_more 2.1.1", - "itertools 0.14.0", - "nybbles", - "rayon", - "reth-primitives-traits", - "revm-database", -] - -[[package]] -name = "reth-trie-sparse" -version = "1.9.3" -source = "git+https://github.com/ziren-patches/reth?branch=patch-1.9.3#fb7e5b4b347ac28d7f3f937698a3b084bd158aa2" -dependencies = [ - "alloy-primitives", - "alloy-rlp", - "alloy-trie", - "auto_impl", - "reth-execution-errors", - "reth-primitives-traits", - "reth-trie-common", - "smallvec", - "tracing", -] - -[[package]] -name = "reth-zstd-compressors" -version = "1.9.3" -source = "git+https://github.com/ziren-patches/reth?branch=patch-1.9.3#fb7e5b4b347ac28d7f3f937698a3b084bd158aa2" -dependencies = [ - "zstd", -] - -[[package]] -name = "revm" -version = "31.0.2" -source = "git+https://github.com/ziren-patches/revm?branch=patch-31.0.2#0cd8a9cffabcc01fd92b8f12d6d601040e0ec88f" -dependencies = [ - "revm-bytecode", - "revm-context", - "revm-context-interface", - "revm-database", - "revm-database-interface", - "revm-handler", - "revm-inspector", - "revm-interpreter", - "revm-precompile", - "revm-primitives", - "revm-state", -] - -[[package]] -name = "revm-bytecode" -version = "7.1.1" -source = "git+https://github.com/ziren-patches/revm?branch=patch-31.0.2#0cd8a9cffabcc01fd92b8f12d6d601040e0ec88f" -dependencies = [ - "bitvec", - "phf", - "revm-primitives", - "serde", -] - -[[package]] -name = "revm-context" -version = "11.0.2" -source = "git+https://github.com/ziren-patches/revm?branch=patch-31.0.2#0cd8a9cffabcc01fd92b8f12d6d601040e0ec88f" -dependencies = [ - "alloy-consensus", - "bitvec", - "cfg-if", - "derive-where", - "revm-bytecode", - "revm-context-interface", - "revm-database-interface", - "revm-primitives", - "revm-state", - "serde", -] - -[[package]] -name = "revm-context-interface" -version = "12.0.1" -source = "git+https://github.com/ziren-patches/revm?branch=patch-31.0.2#0cd8a9cffabcc01fd92b8f12d6d601040e0ec88f" -dependencies = [ - "alloy-consensus", - "alloy-eip2930", - "alloy-eip7702", - "auto_impl", - "either", - "revm-database-interface", - "revm-primitives", - "revm-state", - "serde", -] - -[[package]] -name = "revm-database" -version = "9.0.5" -source = "git+https://github.com/ziren-patches/revm?branch=patch-31.0.2#0cd8a9cffabcc01fd92b8f12d6d601040e0ec88f" -dependencies = [ - "alloy-eips", - "revm-bytecode", - "revm-database-interface", - "revm-primitives", - "revm-state", - "serde", -] - -[[package]] -name = "revm-database-interface" -version = "8.0.5" -source = "git+https://github.com/ziren-patches/revm?branch=patch-31.0.2#0cd8a9cffabcc01fd92b8f12d6d601040e0ec88f" -dependencies = [ - "auto_impl", - "either", - "revm-primitives", - "revm-state", - "serde", -] - -[[package]] -name = "revm-handler" -version = "12.0.2" -source = "git+https://github.com/ziren-patches/revm?branch=patch-31.0.2#0cd8a9cffabcc01fd92b8f12d6d601040e0ec88f" -dependencies = [ - "auto_impl", - "derive-where", - "revm-bytecode", - "revm-context", - "revm-context-interface", - "revm-database-interface", - "revm-interpreter", - "revm-precompile", - "revm-primitives", - "revm-state", - "serde", -] - -[[package]] -name = "revm-inspector" -version = "12.0.2" -source = "git+https://github.com/ziren-patches/revm?branch=patch-31.0.2#0cd8a9cffabcc01fd92b8f12d6d601040e0ec88f" -dependencies = [ - "auto_impl", - "either", - "revm-context", - "revm-database-interface", - "revm-handler", - "revm-interpreter", - "revm-primitives", - "revm-state", - "serde", -] - -[[package]] -name = "revm-interpreter" -version = "29.0.1" -source = "git+https://github.com/ziren-patches/revm?branch=patch-31.0.2#0cd8a9cffabcc01fd92b8f12d6d601040e0ec88f" -dependencies = [ - "revm-bytecode", - "revm-context-interface", - "revm-primitives", - "revm-state", - "serde", -] - -[[package]] -name = "revm-precompile" -version = "29.0.1" -source = "git+https://github.com/ziren-patches/revm?branch=patch-31.0.2#0cd8a9cffabcc01fd92b8f12d6d601040e0ec88f" -dependencies = [ - "ark-bls12-381", - "ark-bn254", - "ark-ec", - "ark-ff 0.5.0", - "ark-serialize 0.5.0", - "arrayref", - "aurora-engine-modexp", - "cfg-if", - "k256", - "p256", - "revm-primitives", - "ripemd", - "sha2 0.10.9", - "substrate-bn", -] - -[[package]] -name = "revm-primitives" -version = "21.0.2" -source = "git+https://github.com/ziren-patches/revm?branch=patch-31.0.2#0cd8a9cffabcc01fd92b8f12d6d601040e0ec88f" -dependencies = [ - "alloy-primitives", - "num_enum", - "once_cell", - "serde", -] - -[[package]] -name = "revm-state" -version = "8.1.1" -source = "git+https://github.com/ziren-patches/revm?branch=patch-31.0.2#0cd8a9cffabcc01fd92b8f12d6d601040e0ec88f" -dependencies = [ - "bitflags", - "revm-bytecode", - "revm-primitives", - "serde", -] - -[[package]] -name = "rfc6979" -version = "0.4.0" -source = "git+https://github.com/ziren-patches/signatures.git?branch=patch-ecdsa-0.16.9#da0cd8753b243e09acf82f8e58f8da0e28e7287d" -dependencies = [ - "hmac", - "subtle", -] - -[[package]] -name = "ripemd" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f" -dependencies = [ - "digest 0.10.7", -] - -[[package]] -name = "rlp" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" -dependencies = [ - "bytes", - "rustc-hex", -] - -[[package]] -name = "ruint" -version = "1.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0298da754d1395046b0afdc2f20ee76d29a8ae310cd30ffa84ed42acba9cb12a" -dependencies = [ - "alloy-rlp", - "ark-ff 0.3.0", - "ark-ff 0.4.2", - "ark-ff 0.5.0", - "bytes", - "fastrlp 0.3.1", - "fastrlp 0.4.0", - "num-bigint 0.4.6", - "num-integer", - "num-traits", - "parity-scale-codec", - "primitive-types", - "proptest", - "rand 0.8.6", - "rand 0.9.4", - "rlp", - "ruint-macro", - "serde_core", - "valuable", - "zeroize", -] - -[[package]] -name = "ruint-macro" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48fd7bd8a6377e15ad9d42a8ec25371b94ddc67abe7c8b9127bec79bebaaae18" - -[[package]] -name = "rustc-demangle" -version = "0.1.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b50b8869d9fc858ce7266cce0194bd74df58b9d0e3f6df3a9fc8eb470d95c09d" - -[[package]] -name = "rustc-hash" -version = "2.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe" - -[[package]] -name = "rustc-hex" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" - -[[package]] -name = "rustc_version" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" -dependencies = [ - "semver 0.11.0", -] - -[[package]] -name = "rustc_version" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" -dependencies = [ - "semver 1.0.28", -] - -[[package]] -name = "rustix" -version = "1.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" -dependencies = [ - "bitflags", - "errno", - "libc", - "linux-raw-sys", - "windows-sys", -] - -[[package]] -name = "rustversion" -version = "1.0.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" - -[[package]] -name = "rusty-fork" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc6bf79ff24e648f6da1f8d1f011e9cac26491b619e6b9280f2b47f1774e6ee2" -dependencies = [ - "fnv", - "quick-error", - "tempfile", - "wait-timeout", -] - -[[package]] -name = "scale-info" -version = "2.11.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "346a3b32eba2640d17a9cb5927056b08f3de90f65b72fe09402c2ad07d684d0b" -dependencies = [ - "cfg-if", - "derive_more 1.0.0", - "parity-scale-codec", - "scale-info-derive", -] - -[[package]] -name = "scale-info-derive" -version = "2.11.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6630024bf739e2179b91fb424b28898baf819414262c5d376677dbff1fe7ebf" -dependencies = [ - "proc-macro-crate", - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[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.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2b42f36aa1cd011945615b92222f6bf73c599a102a300334cd7f8dbeec726cc" -dependencies = [ - "dyn-clone", - "ref-cast", - "serde", - "serde_json", -] - -[[package]] -name = "scopeguard" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" - -[[package]] -name = "sec1" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" -dependencies = [ - "base16ct", - "der", - "generic-array 0.14.9", - "pkcs8", - "serdect", - "subtle", - "zeroize", -] - -[[package]] -name = "secp256k1" -version = "0.29.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e0cc0f1cf93f4969faf3ea1c7d8a9faed25918d96affa959720823dfe86d4f3" -dependencies = [ - "bitcoin_hashes", - "rand 0.8.6", - "secp256k1-sys", - "serde", -] - -[[package]] -name = "secp256k1" -version = "0.30.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b50c5943d326858130af85e049f2661ba3c78b26589b8ab98e65e80ae44a1252" -dependencies = [ - "bitcoin_hashes", - "rand 0.8.6", - "secp256k1-sys", - "serde", -] - -[[package]] -name = "secp256k1-sys" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4387882333d3aa8cb20530a17c69a3752e97837832f34f6dccc760e715001d9" -dependencies = [ - "cc", -] - -[[package]] -name = "semver" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" -dependencies = [ - "semver-parser", -] - -[[package]] -name = "semver" -version = "1.0.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" - -[[package]] -name = "semver-parser" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9900206b54a3527fdc7b8a938bffd94a568bac4f4aa8113b209df75a09c0dec2" -dependencies = [ - "pest", -] - -[[package]] -name = "serde" -version = "1.0.228" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" -dependencies = [ - "serde_core", - "serde_derive", -] - -[[package]] -name = "serde_arrays" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38636132857f68ec3d5f3eb121166d2af33cb55174c4d5ff645db6165cbef0fd" -dependencies = [ - "serde", -] - -[[package]] -name = "serde_arrays" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94a16b99c5ea4fe3daccd14853ad260ec00ea043b2708d1fd1da3106dcd8d9df" -dependencies = [ - "serde", -] - -[[package]] -name = "serde_bytes" -version = "0.11.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5d440709e79d88e51ac01c4b72fc6cb7314017bb7da9eeff678aa94c10e3ea8" -dependencies = [ - "serde", - "serde_core", -] - -[[package]] -name = "serde_core" -version = "1.0.228" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_derive" -version = "1.0.228" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "serde_json" -version = "1.0.149" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" -dependencies = [ - "itoa", - "memchr", - "serde", - "serde_core", - "zmij", -] - -[[package]] -name = "serde_repr" -version = "0.1.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "serde_with" -version = "3.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f05839ce67618e14a09b286535c0d9c94e85ef25469b0e13cb4f844e5593eb19" -dependencies = [ - "base64 0.22.1", - "chrono", - "hex", - "indexmap 1.9.3", - "indexmap 2.14.0", - "schemars 0.9.0", - "schemars 1.2.1", - "serde_core", - "serde_json", - "serde_with_macros", - "time", -] - -[[package]] -name = "serde_with_macros" -version = "3.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf2ebbe86054f9b45bc3881e865683ccfaccce97b9b4cb53f3039d67f355a334" -dependencies = [ - "darling 0.23.0", - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "serdect" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a84f14a19e9a014bb9f4512488d9829a68e04ecabffb0f9904cd1ace94598177" -dependencies = [ - "base16ct", - "serde", -] - -[[package]] -name = "sha2" -version = "0.9.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" -dependencies = [ - "block-buffer 0.9.0", - "cfg-if", - "cpufeatures", - "digest 0.9.0", - "opaque-debug", -] - -[[package]] -name = "sha2" -version = "0.10.9" -source = "git+https://github.com/ziren-patches/RustCrypto-hashes?branch=patch-sha2-0.10.9#dbfdbd088ac7b55e03c0b9eb192278efe35d67dc" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest 0.10.7", -] - -[[package]] -name = "sha3" -version = "0.10.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77fd7028345d415a4034cf8777cd4f8ab1851274233b45f84e3d955502d93874" -dependencies = [ - "digest 0.10.7", - "keccak", -] - -[[package]] -name = "sha3-asm" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59cbb88c189d6352cc8ae96a39d19c7ecad8f7330b29461187f2587fdc2988d5" -dependencies = [ - "cc", - "cfg-if", -] - -[[package]] -name = "sharded-slab" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" -dependencies = [ - "lazy_static", -] - -[[package]] -name = "shlex" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" - -[[package]] -name = "signature" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" -dependencies = [ - "digest 0.10.7", - "rand_core 0.6.4", -] - -[[package]] -name = "siphasher" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649" - -[[package]] -name = "size" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fed904c7fb2856d868b92464fc8fa597fce366edea1a9cbfaa8cb5fe080bd6d" - -[[package]] -name = "slab" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" - -[[package]] -name = "smallvec" -version = "1.15.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" -dependencies = [ - "serde", -] - -[[package]] -name = "snowbridge-amcl" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "460a9ed63cdf03c1b9847e8a12a5f5ba19c4efd5869e4a737e05be25d7c427e5" -dependencies = [ - "parity-scale-codec", - "scale-info", -] - -[[package]] -name = "spin" -version = "0.9.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" - -[[package]] -name = "spki" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" -dependencies = [ - "base64ct", - "der", -] - -[[package]] -name = "stable_deref_trait" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" - -[[package]] -name = "state-chain" -version = "0.4.0" -dependencies = [ - "alloy-consensus", - "alloy-primitives", - "base64 0.21.7", - "bincode", - "bitcoin", - "cosmos-sdk-proto", - "guest-executor", - "header-chain", - "hex", - "prost", - "prost-build", - "prost-derive", - "revm-database-interface", - "serde", - "serde_json", - "sha2 0.10.9", - "tendermint", - "tendermint-light-client-verifier", - "tracing", - "verifier", - "zkm-zkvm", -] - -[[package]] -name = "static_assertions" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" - -[[package]] -name = "strength_reduce" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe895eb47f22e2ddd4dabc02bce419d2e643c8e3b585c78158b349195bc24d82" - -[[package]] -name = "strsim" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" - -[[package]] -name = "strum" -version = "0.26.3" -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.117", -] - -[[package]] -name = "strum_macros" -version = "0.27.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" -dependencies = [ - "heck", - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "substrate-bn" -version = "0.6.0" -source = "git+https://github.com/ziren-patches/bn?branch=patch-0.6.0#aba71380457d798039111e6cc0fdf2e0718c6766" -dependencies = [ - "bytemuck", - "byteorder", - "cfg-if", - "crunchy", - "lazy_static", - "num-bigint 0.4.6", - "rand 0.8.6", - "rustc-hex", - "zkm-lib", -] - -[[package]] -name = "subtle" -version = "2.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" - -[[package]] -name = "subtle-encoding" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dcb1ed7b8330c5eed5441052651dd7a12c75e2ed88f2ec024ae1fa3a5e59945" -dependencies = [ - "zeroize", -] - -[[package]] -name = "subtle-ng" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "734676eb262c623cec13c3155096e08d1f8f29adce39ba17948b18dad1e54142" - -[[package]] -name = "syn" -version = "1.0.109" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "syn" -version = "2.0.117" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "syn-solidity" -version = "1.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53f425ae0b12e2f5ae65542e00898d500d4d318b4baf09f40fd0d410454e9947" -dependencies = [ - "paste", - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "synstructure" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "sysinfo" -version = "0.30.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a5b4ddaee55fb2bea2bf0e5000747e5f5c0de765e5a5ff87f4cd106439f4bb3" -dependencies = [ - "cfg-if", - "core-foundation-sys", - "libc", - "ntapi", - "once_cell", - "rayon", - "windows", -] - -[[package]] -name = "tap" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" - -[[package]] -name = "tempfile" -version = "3.27.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" -dependencies = [ - "fastrand", - "getrandom 0.4.2", - "once_cell", - "rustix", - "windows-sys", -] - -[[package]] -name = "tendermint" -version = "0.40.3" -source = "git+https://github.com/ProjectZKM/tendermint-rs?branch=patch-0.40.3#5bd318a89601f7db2bce05018246c5ef6dc7fb9b" -dependencies = [ - "bytes", - "digest 0.10.7", - "ed25519", - "ed25519-consensus", - "flex-error", - "futures", - "k256", - "num-traits", - "once_cell", - "prost", - "ripemd", - "serde", - "serde_bytes", - "serde_json", - "serde_repr", - "sha2 0.10.9", - "signature", - "subtle", - "subtle-encoding", - "tendermint-proto 0.40.3", - "time", - "zeroize", -] - -[[package]] -name = "tendermint-light-client-verifier" -version = "0.40.3" -source = "git+https://github.com/ProjectZKM/tendermint-rs?branch=patch-0.40.3#5bd318a89601f7db2bce05018246c5ef6dc7fb9b" -dependencies = [ - "derive_more 0.99.20", - "flex-error", - "serde", - "tendermint", - "time", -] - -[[package]] -name = "tendermint-proto" -version = "0.40.3" -source = "git+https://github.com/ProjectZKM/tendermint-rs?branch=patch-0.40.3#5bd318a89601f7db2bce05018246c5ef6dc7fb9b" -dependencies = [ - "bytes", - "flex-error", - "prost", - "serde", - "serde_bytes", - "subtle-encoding", - "time", -] - -[[package]] -name = "tendermint-proto" -version = "0.40.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2c40e13d39ca19082d8a7ed22de7595979350319833698f8b1080f29620a094" -dependencies = [ - "bytes", - "flex-error", - "prost", - "serde", - "serde_bytes", - "subtle-encoding", - "time", -] - -[[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.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" -dependencies = [ - "thiserror-impl 2.0.18", -] - -[[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.117", -] - -[[package]] -name = "thiserror-impl" -version = "2.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "thread_local" -version = "1.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "threadpool" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa" -dependencies = [ - "num_cpus", -] - -[[package]] -name = "time" -version = "0.3.47" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c" -dependencies = [ - "deranged", - "itoa", - "num-conv", - "powerfmt", - "serde_core", - "time-core", - "time-macros", -] - -[[package]] -name = "time-core" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca" - -[[package]] -name = "time-macros" -version = "0.2.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e70e4c5a0e0a8a4823ad65dfe1a6930e4f4d756dcd9dd7939022b5e8c501215" -dependencies = [ - "num-conv", - "time-core", -] - -[[package]] -name = "tiny-keccak" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" -dependencies = [ - "crunchy", -] - -[[package]] -name = "tinystr" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8323304221c2a851516f22236c5722a72eaa19749016521d6dff0824447d96d" -dependencies = [ - "displaydoc", - "zerovec", -] - -[[package]] -name = "toml_datetime" -version = "1.1.1+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" -dependencies = [ - "serde_core", -] - -[[package]] -name = "toml_edit" -version = "0.25.11+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b59c4d22ed448339746c59b905d24568fcbb3ab65a500494f7b8c3e97739f2b" -dependencies = [ - "indexmap 2.14.0", - "toml_datetime", - "toml_parser", - "winnow 1.0.2", -] - -[[package]] -name = "toml_parser" -version = "1.1.2+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" -dependencies = [ - "winnow 1.0.2", -] - -[[package]] -name = "tracing" -version = "0.1.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" -dependencies = [ - "pin-project-lite", - "tracing-attributes", - "tracing-core", -] - -[[package]] -name = "tracing-attributes" -version = "0.1.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "tracing-core" -version = "0.1.36" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" -dependencies = [ - "once_cell", - "valuable", -] - -[[package]] -name = "tracing-forest" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee40835db14ddd1e3ba414292272eddde9dad04d3d4b65509656414d1c42592f" -dependencies = [ - "ansi_term", - "smallvec", - "thiserror 1.0.69", - "tracing", - "tracing-subscriber", -] - -[[package]] -name = "tracing-log" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" -dependencies = [ - "log", - "once_cell", - "tracing-core", -] - -[[package]] -name = "tracing-subscriber" -version = "0.3.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319" -dependencies = [ - "matchers", - "nu-ansi-term", - "once_cell", - "regex-automata", - "sharded-slab", - "smallvec", - "thread_local", - "tracing", - "tracing-core", - "tracing-log", -] - -[[package]] -name = "transpose" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ad61aed86bc3faea4300c7aee358b4c6d0c8d6ccc36524c96e4c92ccf26e77e" -dependencies = [ - "num-integer", - "strength_reduce", -] - -[[package]] -name = "typenum" -version = "1.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40ce102ab67701b8526c123c1bab5cbe42d7040ccfd0f64af1a385808d2f43de" - -[[package]] -name = "ucd-trie" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" - -[[package]] -name = "uint" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" -dependencies = [ - "byteorder", - "crunchy", - "hex", - "static_assertions", -] - -[[package]] -name = "unarray" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" - -[[package]] -name = "unicode-ident" -version = "1.0.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" - -[[package]] -name = "unicode-segmentation" -version = "1.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9629274872b2bfaf8d66f5f15725007f635594914870f65218920345aa11aa8c" - -[[package]] -name = "unicode-xid" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" - -[[package]] -name = "unroll" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ad948c1cb799b1a70f836077721a92a35ac177d4daddf4c20a633786d4cf618" -dependencies = [ - "quote", - "syn 1.0.109", -] - -[[package]] -name = "url" -version = "2.5.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" -dependencies = [ - "form_urlencoded", - "idna", - "percent-encoding", -] - -[[package]] -name = "utf8_iter" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" - -[[package]] -name = "utf8parse" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" - -[[package]] -name = "valuable" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" - -[[package]] -name = "vec_map" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" -dependencies = [ - "serde", -] - -[[package]] -name = "verifier" -version = "0.4.0" -dependencies = [ - "zkm-verifier", -] - -[[package]] -name = "version_check" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" - -[[package]] -name = "wait-timeout" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09ac3b126d3914f9849036f826e054cbabdc8519970b8998ddaf3b5bd3c65f11" -dependencies = [ - "libc", -] - -[[package]] -name = "wasi" -version = "0.11.1+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" - -[[package]] -name = "wasip2" -version = "1.0.3+wasi-0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20064672db26d7cdc89c7798c48a0fdfac8213434a1186e5ef29fd560ae223d6" -dependencies = [ - "wit-bindgen 0.57.1", -] - -[[package]] -name = "wasip3" -version = "0.4.0+wasi-0.3.0-rc-2026-01-06" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" -dependencies = [ - "wit-bindgen 0.51.0", -] - -[[package]] -name = "wasm-bindgen" -version = "0.2.120" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df52b6d9b87e0c74c9edfa1eb2d9bf85e5d63515474513aa50fa181b3c4f5db1" -dependencies = [ - "cfg-if", - "once_cell", - "rustversion", - "wasm-bindgen-macro", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.120" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78b1041f495fb322e64aca85f5756b2172e35cd459376e67f2a6c9dffcedb103" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.120" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dcd0ff20416988a18ac686d4d4d0f6aae9ebf08a389ff5d29012b05af2a1b41" -dependencies = [ - "bumpalo", - "proc-macro2", - "quote", - "syn 2.0.117", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.120" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49757b3c82ebf16c57d69365a142940b384176c24df52a087fb748e2085359ea" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "wasm-encoder" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" -dependencies = [ - "leb128fmt", - "wasmparser", -] - -[[package]] -name = "wasm-metadata" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" -dependencies = [ - "anyhow", - "indexmap 2.14.0", - "wasm-encoder", - "wasmparser", -] - -[[package]] -name = "wasmparser" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" -dependencies = [ - "bitflags", - "hashbrown 0.15.5", - "indexmap 2.14.0", - "semver 1.0.28", -] - -[[package]] -name = "web-time" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "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" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" -dependencies = [ - "windows-core 0.52.0", - "windows-targets", -] - -[[package]] -name = "windows-core" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" -dependencies = [ - "windows-targets", -] - -[[package]] -name = "windows-core" -version = "0.62.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" -dependencies = [ - "windows-implement", - "windows-interface", - "windows-link", - "windows-result", - "windows-strings", -] - -[[package]] -name = "windows-implement" -version = "0.60.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "windows-interface" -version = "0.59.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "windows-link" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" - -[[package]] -name = "windows-result" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" -dependencies = [ - "windows-link", -] - -[[package]] -name = "windows-strings" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" -dependencies = [ - "windows-link", -] - -[[package]] -name = "windows-sys" -version = "0.61.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" -dependencies = [ - "windows-link", -] - -[[package]] -name = "windows-targets" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" -dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_gnullvm", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", -] - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" - -[[package]] -name = "windows_i686_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" - -[[package]] -name = "windows_i686_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" - -[[package]] -name = "windows_i686_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" - -[[package]] -name = "winnow" -version = "0.7.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" -dependencies = [ - "memchr", -] - -[[package]] -name = "winnow" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ee1708bef14716a11bae175f579062d4554d95be2c6829f518df847b7b3fdd0" -dependencies = [ - "memchr", -] - -[[package]] -name = "wit-bindgen" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" -dependencies = [ - "wit-bindgen-rust-macro", -] - -[[package]] -name = "wit-bindgen" -version = "0.57.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" - -[[package]] -name = "wit-bindgen-core" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" -dependencies = [ - "anyhow", - "heck", - "wit-parser", -] - -[[package]] -name = "wit-bindgen-rust" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" -dependencies = [ - "anyhow", - "heck", - "indexmap 2.14.0", - "prettyplease", - "syn 2.0.117", - "wasm-metadata", - "wit-bindgen-core", - "wit-component", -] - -[[package]] -name = "wit-bindgen-rust-macro" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" -dependencies = [ - "anyhow", - "prettyplease", - "proc-macro2", - "quote", - "syn 2.0.117", - "wit-bindgen-core", - "wit-bindgen-rust", -] - -[[package]] -name = "wit-component" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" -dependencies = [ - "anyhow", - "bitflags", - "indexmap 2.14.0", - "log", - "serde", - "serde_derive", - "serde_json", - "wasm-encoder", - "wasm-metadata", - "wasmparser", - "wit-parser", -] - -[[package]] -name = "wit-parser" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" -dependencies = [ - "anyhow", - "id-arena", - "indexmap 2.14.0", - "log", - "semver 1.0.28", - "serde", - "serde_derive", - "serde_json", - "unicode-xid", - "wasmparser", -] - -[[package]] -name = "writeable" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4" - -[[package]] -name = "wyz" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" -dependencies = [ - "tap", -] - -[[package]] -name = "yoke" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abe8c5fda708d9ca3df187cae8bfb9ceda00dd96231bed36e445a1a48e66f9ca" -dependencies = [ - "stable_deref_trait", - "yoke-derive", - "zerofrom", -] - -[[package]] -name = "yoke-derive" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", - "synstructure", -] - -[[package]] -name = "zerocopy" -version = "0.8.48" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eed437bf9d6692032087e337407a86f04cd8d6a16a37199ed57949d415bd68e9" -dependencies = [ - "zerocopy-derive", -] - -[[package]] -name = "zerocopy-derive" -version = "0.8.48" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70e3cd084b1788766f53af483dd21f93881ff30d7320490ec3ef7526d203bad4" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "zerofrom" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69faa1f2a1ea75661980b013019ed6687ed0e83d069bc1114e2cc74c6c04c4df" -dependencies = [ - "zerofrom-derive", -] - -[[package]] -name = "zerofrom-derive" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", - "synstructure", -] - -[[package]] -name = "zeroize" -version = "1.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" -dependencies = [ - "zeroize_derive", -] - -[[package]] -name = "zeroize_derive" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85a5b4158499876c763cb03bc4e49185d3cccbabb15b33c627f7884f43db852e" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "zerotrie" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f9152d31db0792fa83f70fb2f83148effb5c1f5b8c7686c3459e361d9bc20bf" -dependencies = [ - "displaydoc", - "yoke", - "zerofrom", -] - -[[package]] -name = "zerovec" -version = "0.11.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90f911cbc359ab6af17377d242225f4d75119aec87ea711a880987b18cd7b239" -dependencies = [ - "yoke", - "zerofrom", - "zerovec-derive", -] - -[[package]] -name = "zerovec-derive" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "zkhash" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4352d1081da6922701401cdd4cbf29a2723feb4cfabb5771f6fee8e9276da1c7" -dependencies = [ - "ark-ff 0.4.2", - "ark-std 0.4.0", - "bitvec", - "blake2", - "bls12_381 0.7.1", - "byteorder", - "cfg-if", - "group 0.12.1", - "group 0.13.0", - "halo2", - "hex", - "jubjub", - "lazy_static", - "pasta_curves 0.5.1", - "rand 0.8.6", - "serde", - "sha2 0.10.9", - "sha3", - "subtle", -] - -[[package]] -name = "zkm-core-executor" -version = "1.2.5" -source = "git+https://github.com/ProjectZKM/Ziren#7c2071eaa8d43d9d0cb76077ec94b9d98f33073e" -dependencies = [ - "anyhow", - "bincode", - "bytemuck", - "elf", - "enum-map", - "env_logger", - "eyre", - "hashbrown 0.14.5", - "hex", - "itertools 0.13.0", - "log", - "nohash-hasher", - "num", - "num_enum", - "p3-field", - "p3-koala-bear", - "p3-maybe-rayon", - "p3-symmetric", - "rand 0.8.6", - "rayon-scan", - "serde", - "serde_json", - "sha2 0.10.9", - "strum 0.26.3", - "strum_macros 0.26.4", - "thiserror 1.0.69", - "tiny-keccak", - "tracing", - "tracing-subscriber", - "typenum", - "vec_map", - "zkm-curves", - "zkm-primitives", - "zkm-stark", -] - -[[package]] -name = "zkm-core-machine" -version = "1.2.5" -source = "git+https://github.com/ProjectZKM/Ziren#7c2071eaa8d43d9d0cb76077ec94b9d98f33073e" -dependencies = [ - "bincode", - "cfg-if", - "elliptic-curve", - "generic-array 1.4.1", - "hashbrown 0.14.5", - "hex", - "itertools 0.13.0", - "k256", - "log", - "num", - "num_cpus", - "p256", - "p3-air", - "p3-challenger", - "p3-field", - "p3-keccak-air", - "p3-koala-bear", - "p3-matrix", - "p3-maybe-rayon", - "p3-poseidon2", - "p3-uni-stark", - "p3-util", - "rand 0.8.6", - "rayon", - "rayon-scan", - "serde", - "serde_json", - "size", - "snowbridge-amcl", - "static_assertions", - "strum 0.26.3", - "strum_macros 0.26.4", - "tempfile", - "thiserror 1.0.69", - "tiny-keccak", - "tracing", - "tracing-forest", - "tracing-subscriber", - "typenum", - "web-time", - "zkm-core-executor", - "zkm-curves", - "zkm-derive", - "zkm-primitives", - "zkm-stark", -] - -[[package]] -name = "zkm-curves" -version = "1.2.5" -source = "git+https://github.com/ProjectZKM/Ziren#7c2071eaa8d43d9d0cb76077ec94b9d98f33073e" -dependencies = [ - "cfg-if", - "curve25519-dalek", - "dashu", - "elliptic-curve", - "generic-array 1.4.1", - "itertools 0.13.0", - "k256", - "num", - "p256", - "p3-field", - "serde", - "snowbridge-amcl", - "thiserror 1.0.69", - "tracing", - "typenum", - "zkm-primitives", - "zkm-stark", -] - -[[package]] -name = "zkm-derive" -version = "1.2.5" -source = "git+https://github.com/ProjectZKM/Ziren#7c2071eaa8d43d9d0cb76077ec94b9d98f33073e" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "zkm-lib" -version = "1.2.5" -source = "git+https://github.com/ProjectZKM/Ziren#7c2071eaa8d43d9d0cb76077ec94b9d98f33073e" -dependencies = [ - "bincode", - "cfg-if", - "elliptic-curve", - "serde", - "sha2 0.10.9", - "zkm-primitives", -] - -[[package]] -name = "zkm-primitives" -version = "1.2.5" -source = "git+https://github.com/ProjectZKM/Ziren#7c2071eaa8d43d9d0cb76077ec94b9d98f33073e" -dependencies = [ - "bincode", - "hex", - "lazy_static", - "num-bigint 0.4.6", - "p3-field", - "p3-koala-bear", - "p3-monty-31", - "p3-poseidon2", - "p3-symmetric", - "serde", - "sha2 0.10.9", -] - -[[package]] -name = "zkm-recursion-core" -version = "1.2.5" -source = "git+https://github.com/ProjectZKM/Ziren#7c2071eaa8d43d9d0cb76077ec94b9d98f33073e" -dependencies = [ - "backtrace", - "ff 0.13.1", - "hashbrown 0.14.5", - "itertools 0.13.0", - "p3-air", - "p3-bn254-fr", - "p3-challenger", - "p3-commit", - "p3-dft", - "p3-field", - "p3-fri", - "p3-koala-bear", - "p3-matrix", - "p3-maybe-rayon", - "p3-merkle-tree", - "p3-monty-31", - "p3-poseidon2", - "p3-symmetric", - "p3-util", - "rand 0.8.6", - "serde", - "static_assertions", - "thiserror 1.0.69", - "tracing", - "vec_map", - "zkhash", - "zkm-core-machine", - "zkm-derive", - "zkm-primitives", - "zkm-stark", -] - -[[package]] -name = "zkm-stark" -version = "1.2.5" -source = "git+https://github.com/ProjectZKM/Ziren#7c2071eaa8d43d9d0cb76077ec94b9d98f33073e" -dependencies = [ - "arrayref", - "hashbrown 0.14.5", - "itertools 0.13.0", - "num-bigint 0.4.6", - "num-traits", - "p3-air", - "p3-challenger", - "p3-circle", - "p3-commit", - "p3-dft", - "p3-field", - "p3-fri", - "p3-keccak", - "p3-koala-bear", - "p3-matrix", - "p3-maybe-rayon", - "p3-mds", - "p3-merkle-tree", - "p3-mersenne-31", - "p3-poseidon2", - "p3-symmetric", - "p3-uni-stark", - "p3-util", - "rand 0.8.6", - "rayon-scan", - "serde", - "strum 0.26.3", - "strum_macros 0.26.4", - "sysinfo", - "tracing", - "tracing-forest", - "tracing-subscriber", - "zkm-derive", - "zkm-primitives", - "zkm-zkvm", -] - -[[package]] -name = "zkm-verifier" -version = "1.2.5" -source = "git+https://github.com/ProjectZKM/Ziren#7c2071eaa8d43d9d0cb76077ec94b9d98f33073e" -dependencies = [ - "anyhow", - "bincode", - "hex", - "itertools 0.13.0", - "lazy_static", - "once_cell", - "p3-bn254-fr", - "p3-commit", - "p3-field", - "p3-koala-bear", - "p3-symmetric", - "p3-util", - "rayon", - "serde", - "sha2 0.10.9", - "strum_macros 0.26.4", - "substrate-bn", - "thiserror 2.0.18", - "zkm-core-executor", - "zkm-core-machine", - "zkm-primitives", - "zkm-recursion-core", - "zkm-stark", -] - -[[package]] -name = "zkm-zkvm" -version = "1.2.5" -source = "git+https://github.com/ProjectZKM/Ziren#7c2071eaa8d43d9d0cb76077ec94b9d98f33073e" -dependencies = [ - "bincode", - "cfg-if", - "getrandom 0.2.17", - "lazy_static", - "libm", - "p3-field", - "p3-koala-bear", - "rand 0.8.6", - "serde", - "sha2 0.10.9", - "zkm-lib", - "zkm-primitives", -] - -[[package]] -name = "zmij" -version = "1.0.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" - -[[package]] -name = "zstd" -version = "0.13.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a" -dependencies = [ - "zstd-safe", -] - -[[package]] -name = "zstd-safe" -version = "7.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f49c4d5f0abb602a93fb8736af2a4f4dd9512e36f7f570d66e65ff867ed3b9d" -dependencies = [ - "zstd-sys", -] - -[[package]] -name = "zstd-sys" -version = "2.0.16+zstd.1.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748" -dependencies = [ - "cc", - "pkg-config", -] - -[[patch.unused]] -name = "alloy-primitives" -version = "1.0.0" -source = "git+https://github.com/ziren-patches/core.git?branch=patch-alloy-primitives-1.0.0#1367f9d00583135013224d764b51d63ffcdd9145" - -[[patch.unused]] -name = "alloy-primitives" -version = "1.1.0" -source = "git+https://github.com/ziren-patches/core.git?branch=patch-alloy-primitives-1.1.0#66386c419c93166f8471d3ace213d41ffcb13635" - -[[patch.unused]] -name = "alloy-primitives" -version = "1.1.2" -source = "git+https://github.com/ziren-patches/core.git?branch=patch-alloy-primitives-1.1.2#288a6856fc6e4160e85903f2af1c4af92ed4ccf9" - -[[patch.unused]] -name = "secp256k1" -version = "0.29.1" -source = "git+https://github.com/ziren-patches/rust-secp256k1?branch=patch-0.29.1#436fc77c1c72fd151f11004bec618d993b9a2f00" diff --git a/circuits/operator-wrapper-proof/guest/Cargo.toml b/circuits/operator-wrapper-proof/guest/Cargo.toml deleted file mode 100644 index e24a035a..00000000 --- a/circuits/operator-wrapper-proof/guest/Cargo.toml +++ /dev/null @@ -1,33 +0,0 @@ -[workspace] - -[package] -name = "guest" -version = "1.1.0" -edition = "2021" -publish = false - -[dependencies] -bitcoin-light-client-circuit = { path = "../../../crates/bitcoin-light-client-circuit" } -verifier = { path = "../../../crates/verifier" } - -# Ziren -zkm-primitives = { git = "https://github.com/ProjectZKM/Ziren" } -zkm-zkvm = { git = "https://github.com/ProjectZKM/Ziren", features = ["verify"] } - -# Statically turns off logging -tracing = { version = "0.1", features = ["max_level_trace"] } - -bitcoin = { version = "0.32.6", features = ["serde", "rand", "secp-recovery"] } -hex = "0.4.3" - -[patch.crates-io] -# Precompile patches -sha2 = { git = "https://github.com/ziren-patches/RustCrypto-hashes", branch = "patch-sha2-0.10.9", package = "sha2" } -bn = { git = "https://github.com/ziren-patches/bn", branch = "patch-0.6.0", package = "substrate-bn" } -k256 = { git = "https://github.com/ziren-patches/elliptic-curves", branch = "patch-k256-0.13.4" } -p256 = { git = "https://github.com/ziren-patches/elliptic-curves", branch = "patch-p256-0.13.2" } -alloy-primitives-v1-0-0 = { git = "https://github.com/ziren-patches/core.git", package = "alloy-primitives", branch = "patch-alloy-primitives-1.0.0" } -alloy-primitives-v1-1-0 = { git = "https://github.com/ziren-patches/core.git", package = "alloy-primitives", branch = "patch-alloy-primitives-1.1.0" } -alloy-primitives-v1-1-2 = { git = "https://github.com/ziren-patches/core.git", package = "alloy-primitives", branch = "patch-alloy-primitives-1.1.2" } -alloy-primitives-v1-4-1 = { git = "https://github.com/ziren-patches/core.git", package = "alloy-primitives", branch = "patch-alloy-primitives-1.4.1" } -secp256k1-v0-29-1 = { git = "https://github.com/ziren-patches/rust-secp256k1", package = "secp256k1", branch = "patch-0.29.1" } diff --git a/circuits/operator-wrapper-proof/guest/src/main.rs b/circuits/operator-wrapper-proof/guest/src/main.rs deleted file mode 100644 index d4c5903a..00000000 --- a/circuits/operator-wrapper-proof/guest/src/main.rs +++ /dev/null @@ -1,39 +0,0 @@ -#![no_main] -zkm_zkvm::entrypoint!(main); - -use bitcoin_light_client_circuit::{ - decode_operator_public_outputs, hash_operator_constant, zkm_vk_hash_to_raw, -}; -use verifier::verify_groth16_proof; - -pub fn main() { - let operator_proof: Vec = zkm_zkvm::io::read(); - let operator_public_values: Vec = zkm_zkvm::io::read(); - let operator_vk_hash: Vec = zkm_zkvm::io::read(); - let operator_zkm_version: String = zkm_zkvm::io::read(); - let graph_id: [u8; 16] = zkm_zkvm::io::read(); - let genesis_sequencer_commit_txid: [u8; 32] = zkm_zkvm::io::read(); - - verify_groth16_proof( - &operator_proof, - &operator_public_values, - &operator_vk_hash, - &operator_zkm_version, - ) - .expect("Failed to verify operator proof"); - - let expected_constant = hash_operator_constant(graph_id, genesis_sequencer_commit_txid); - let operator_vk_hash_raw = - zkm_vk_hash_to_raw(&operator_vk_hash).expect("Invalid operator vk hash"); - let operator_outputs = decode_operator_public_outputs( - &operator_public_values, - operator_vk_hash_raw, - ) - .expect("Invalid operator public values"); - assert_eq!(operator_outputs.constant, expected_constant); - assert_eq!(operator_outputs.operator_vk_hash, operator_vk_hash_raw); - - zkm_zkvm::io::commit(&operator_vk_hash_raw); - zkm_zkvm::io::commit(&graph_id); - zkm_zkvm::io::commit(&genesis_sequencer_commit_txid); -} diff --git a/circuits/operator-wrapper-proof/host/Cargo.toml b/circuits/operator-wrapper-proof/host/Cargo.toml deleted file mode 100644 index c8eb5ded..00000000 --- a/circuits/operator-wrapper-proof/host/Cargo.toml +++ /dev/null @@ -1,25 +0,0 @@ -[package] -name = "operator-wrapper-proof" -version.workspace = true -edition.workspace = true - -[dependencies] -anyhow.workspace = true -bincode.workspace = true -bitcoin = { workspace = true, features = ["serde", "rand", "secp-recovery"] } -bitcoin-light-client-circuit = { workspace = true } -clap = { workspace = true, features = ["derive", "env"] } -dotenv.workspace = true -hex.workspace = true -proof-builder.workspace = true -serde.workspace = true -sha2.workspace = true -tokio = { workspace = true, features = ["full"] } -tracing = { workspace = true, features = ["max_level_trace"] } -tracing-subscriber.workspace = true -zkm-primitives.workspace = true -zkm-prover.workspace = true -zkm-sdk.workspace = true - -[build-dependencies] -zkm-build.workspace = true diff --git a/circuits/operator-wrapper-proof/host/build.rs b/circuits/operator-wrapper-proof/host/build.rs deleted file mode 100644 index dcfa0c53..00000000 --- a/circuits/operator-wrapper-proof/host/build.rs +++ /dev/null @@ -1,5 +0,0 @@ -use zkm_build::build_program; - -fn main() { - build_program("../guest"); -} diff --git a/circuits/operator-wrapper-proof/host/src/lib.rs b/circuits/operator-wrapper-proof/host/src/lib.rs deleted file mode 100644 index 12e181a5..00000000 --- a/circuits/operator-wrapper-proof/host/src/lib.rs +++ /dev/null @@ -1,302 +0,0 @@ -//! Generate operator wrapper proof. -use anyhow::{Context, ensure}; -use bitcoin::{Txid, hashes::Hash}; -use bitcoin_light_client_circuit::{ - OperatorPublicOutputs, decode_operator_public_outputs, hash_operator_constant, - zkm_vk_hash_to_raw, -}; -use clap::Parser; -use proof_builder::{LongRunning, ProofBuilder, ProofRequest}; -use sha2::{Digest, Sha256}; -use std::fs; -use std::str::FromStr; -use std::sync::OnceLock; -use zkm_sdk::{ - HashableKey, Prover, ProverClient, ZKMProofKind, ZKMProofWithPublicValues, ZKMStdin, - include_elf, -}; - -static ELF_ID: OnceLock = OnceLock::new(); -const OPERATOR_WRAPPER: &[u8] = include_elf!("guest"); - -#[derive(Debug, Clone, Parser, serde::Deserialize, serde::Serialize)] -pub struct Args { - #[serde(default)] - #[arg(long, default_value_t = true)] - pub enable: bool, - - #[serde(default)] - #[clap(long, env, default_value = "")] - pub operator_input_proof: String, - - #[serde(default)] - #[clap(long, env, default_value = "")] - pub graph_id: String, - - #[serde(default)] - #[clap(long, env, default_value = "")] - pub genesis_sequencer_commit_txid: String, - - #[serde(default)] - #[clap(long, env, default_value = "wrapper-proof.bin")] - pub output: String, - - #[serde(default = "default_scan_interval")] - #[arg(long, default_value_t = 30)] - pub scan_interval: u64, -} - -fn default_scan_interval() -> u64 { - 30 -} - -impl Default for Args { - fn default() -> Self { - Self { - enable: false, - operator_input_proof: String::new(), - graph_id: String::new(), - genesis_sequencer_commit_txid: String::new(), - output: "wrapper-proof.bin".to_string(), - scan_interval: 30, - } - } -} - -impl LongRunning for Args { - fn rotate(&self) -> Self { - self.clone() - } -} - -#[derive(Clone, Debug)] -pub struct OperatorProofInputs { - pub proof_bytes: Vec, - pub public_values: Vec, - pub vk_hash: Vec, - pub vk_hash_raw: [u8; 32], - pub zkm_version: String, - pub outputs: OperatorPublicOutputs, -} - -pub struct OperatorWrapperProofBuilder { - client: ProverClient, - proving_key: zkm_sdk::ZKMProvingKey, - verifying_key: zkm_sdk::ZKMVerifyingKey, -} - -impl OperatorWrapperProofBuilder { - pub fn new() -> Self { - let client = ProverClient::new(); - let (proving_key, verifying_key) = client.setup(OPERATOR_WRAPPER); - Self { client, proving_key, verifying_key } - } -} - -pub fn parse_hex_array(value: &str) -> anyhow::Result<[u8; N]> { - let bytes = hex::decode(value.trim_start_matches("0x")) - .with_context(|| format!("failed to decode {N}-byte hex value"))?; - ensure!(bytes.len() == N, "expected {N} bytes, got {}", bytes.len()); - Ok(bytes.try_into().expect("length already checked")) -} - -pub fn read_operator_proof_inputs(path: &str) -> anyhow::Result { - let proof_file = - fs::read(path).with_context(|| format!("failed to read operator proof '{path}'"))?; - let public_values_path = format!("{path}.public_inputs.bin"); - let public_values = fs::read(&public_values_path) - .with_context(|| format!("failed to read operator public inputs '{public_values_path}'"))?; - let vk_hash_path = format!("{path}.vk_hash.bin"); - let vk_hash = fs::read(&vk_hash_path) - .with_context(|| format!("failed to read operator vk hash '{vk_hash_path}'"))?; - let zkm_version_path = format!("{path}.zkm_version.bin"); - let zkm_version = fs::read(&zkm_version_path) - .with_context(|| format!("failed to read operator zkm version '{zkm_version_path}'")) - .and_then(|raw| { - String::from_utf8(raw).with_context(|| format!("invalid UTF-8 in '{zkm_version_path}'")) - })?; - - let proof_bytes = - if let Ok(proof) = bincode::deserialize::(&proof_file) { - ensure!( - proof.public_values.to_vec() == public_values, - "operator proof public values do not match sidecar" - ); - ensure!( - proof.zkm_version == zkm_version, - "operator proof zkm_version does not match sidecar" - ); - proof.bytes() - } else { - proof_file - }; - - let raw_vk_hash = zkm_vk_hash_to_raw(&vk_hash).map_err(anyhow::Error::msg)?; - let outputs = - decode_operator_public_outputs(&public_values, raw_vk_hash).map_err(anyhow::Error::msg)?; - let vk_hash_raw = validate_operator_vk_hash_binding(&outputs, &vk_hash)?; - - Ok(OperatorProofInputs { - proof_bytes, - public_values, - vk_hash, - vk_hash_raw, - zkm_version, - outputs, - }) -} - -pub fn validate_operator_vk_hash_binding( - outputs: &OperatorPublicOutputs, - vk_hash: &[u8], -) -> anyhow::Result<[u8; 32]> { - let raw_vk_hash = zkm_vk_hash_to_raw(vk_hash).map_err(anyhow::Error::msg)?; - ensure!( - outputs.operator_vk_hash == raw_vk_hash, - "operator vk hash does not match authenticated operator public output" - ); - Ok(raw_vk_hash) -} - -impl ProofBuilder for OperatorWrapperProofBuilder { - fn client(&self) -> &zkm_sdk::ProverClient { - &self.client - } - - fn pk(&self) -> &zkm_sdk::ZKMProvingKey { - &self.proving_key - } - - fn vk(&self) -> &zkm_sdk::ZKMVerifyingKey { - &self.verifying_key - } - - fn name() -> String { - "operator-wrapper".to_string() - } - - #[tracing::instrument(level = "info", skip(self, ctx))] - fn build_proof( - &self, - ctx: &ProofRequest, - ) -> anyhow::Result<(Vec, ZKMProofWithPublicValues, u64, f32)> { - let ProofRequest::WrapperProofRequest { - operator_input_proof, - graph_id, - genesis_sequencer_commit_txid, - .. - } = ctx - else { - anyhow::bail!("Invalid proof request type"); - }; - - let operator_inputs = read_operator_proof_inputs(operator_input_proof)?; - let genesis_txid = Txid::from_str(genesis_sequencer_commit_txid) - .with_context(|| format!("invalid genesis txid '{genesis_sequencer_commit_txid}'"))?; - let genesis_txid_bytes = genesis_txid.to_byte_array(); - let expected_constant = hash_operator_constant(*graph_id, genesis_txid_bytes); - ensure!( - operator_inputs.outputs.constant == expected_constant, - "operator public constant does not match wrapper session" - ); - let (proof, cycles, proving_time) = tracing::info_span!("generate wrapper proof") - .in_scope(|| -> anyhow::Result<(ZKMProofWithPublicValues, u64, f32)> { - let mut stdin = ZKMStdin::new(); - stdin.write(&operator_inputs.proof_bytes); - stdin.write(&operator_inputs.public_values); - stdin.write(&operator_inputs.vk_hash); - stdin.write(&operator_inputs.zkm_version); - stdin.write(graph_id); - stdin.write(&genesis_txid_bytes); - - let elf_id = if ELF_ID.get().is_none() { - ELF_ID - .set(hex::encode(Sha256::digest(&self.proving_key.elf))) - .map_err(anyhow::Error::msg)?; - None - } else { - Some(ELF_ID.get().unwrap().clone()) - }; - tracing::info!("elf id: {:?}", elf_id); - - let proving_start = tokio::time::Instant::now(); - let (proof, cycles) = self.client.prove_with_cycles( - &self.proving_key, - &stdin, - ZKMProofKind::Groth16, - elf_id, - )?; - let proving_duration = proving_start.elapsed().as_secs_f32() * 1000.0; - Ok((proof, cycles, proving_duration)) - })?; - - Ok((vec![], proof, cycles, proving_time)) - } - - fn save_proof( - &self, - ctx: &ProofRequest, - _input: &[u8], - _cycles: u64, - proof: ZKMProofWithPublicValues, - ) -> anyhow::Result<(String, usize)> { - let ProofRequest::WrapperProofRequest { output, .. } = ctx else { - anyhow::bail!("invalid context"); - }; - let public_value_hex = hex::encode(proof.public_values.to_vec()); - let serialized_proof = bincode::serialize(&proof)?; - let proof_size = serialized_proof.len(); - let zkm_version = proof.zkm_version.clone(); - fs::write(format!("{output}.public_inputs.bin"), proof.public_values.to_vec())?; - fs::write(format!("{output}.vk_hash.bin"), self.verifying_key.bytes32())?; - fs::write(format!("{output}.zkm_version.bin"), zkm_version)?; - fs::write(output, serialized_proof)?; - Ok((public_value_hex, proof_size)) - } -} - -#[cfg(test)] -mod tests { - use super::*; - use bitcoin_light_client_circuit::zkm_vk_hash_from_raw; - - #[derive(serde::Serialize, serde::Deserialize)] - struct LegacyOperatorPublicOutputs { - btc_best_block_hash: [u8; 32], - constant: [u8; 32], - included_watchtowers: [u8; 32], - } - - #[test] - fn decode_operator_public_outputs_accepts_legacy_public_values() { - let actual_vk_hash = [4u8; 32]; - let legacy_outputs = LegacyOperatorPublicOutputs { - btc_best_block_hash: [0u8; 32], - constant: [1u8; 32], - included_watchtowers: [2u8; 32], - }; - let public_values = bincode::serialize(&legacy_outputs).unwrap(); - - let outputs = decode_operator_public_outputs(&public_values, actual_vk_hash).unwrap(); - - assert_eq!(outputs.btc_best_block_hash, legacy_outputs.btc_best_block_hash); - assert_eq!(outputs.constant, legacy_outputs.constant); - assert_eq!(outputs.included_watchtowers, legacy_outputs.included_watchtowers); - assert_eq!(outputs.operator_vk_hash, actual_vk_hash); - } - - #[test] - fn validate_operator_vk_hash_binding_rejects_mismatched_sidecar() { - let outputs = OperatorPublicOutputs { - btc_best_block_hash: [0u8; 32], - constant: [1u8; 32], - included_watchtowers: [2u8; 32], - operator_vk_hash: [3u8; 32], - }; - let mismatched = zkm_vk_hash_from_raw(&[4u8; 32]); - - let err = validate_operator_vk_hash_binding(&outputs, &mismatched).unwrap_err(); - - assert!(err.to_string().contains("operator vk hash does not match")); - } -} diff --git a/circuits/operator-wrapper-proof/host/src/main.rs b/circuits/operator-wrapper-proof/host/src/main.rs deleted file mode 100644 index df1bc2b5..00000000 --- a/circuits/operator-wrapper-proof/host/src/main.rs +++ /dev/null @@ -1,24 +0,0 @@ -//! Generate operator wrapper proof. -use clap::Parser; -use operator_wrapper_proof::{Args, OperatorWrapperProofBuilder, parse_hex_array}; -use proof_builder::{ProofBuilder, ProofRequest}; - -#[tokio::main] -async fn main() { - dotenv::dotenv().ok(); - let args = Args::parse(); - zkm_sdk::utils::setup_logger(); - - let builder = OperatorWrapperProofBuilder::new(); - let ctx = ProofRequest::WrapperProofRequest { - operator_proof_id: 0, - operator_input_proof: args.operator_input_proof.clone(), - graph_id: parse_hex_array::<16>(&args.graph_id).unwrap(), - genesis_sequencer_commit_txid: args.genesis_sequencer_commit_txid.clone(), - output: args.output.clone(), - }; - - let (input, proof, cycles, _) = builder.build_proof(&ctx).unwrap(); - tracing::info!("Operator wrapper proof cycles: {cycles}"); - builder.save_proof(&ctx, &input, cycles, proof).unwrap(); -} diff --git a/circuits/proof-builder/src/lib.rs b/circuits/proof-builder/src/lib.rs index 9a992e18..ad3081a2 100644 --- a/circuits/proof-builder/src/lib.rs +++ b/circuits/proof-builder/src/lib.rs @@ -68,13 +68,6 @@ pub enum ProofRequest { watchtower_challenge_txn_pubkeys: Vec, watchtower_challenge_txn_scripts: Vec, }, - WrapperProofRequest { - operator_proof_id: i64, - operator_input_proof: String, - graph_id: [u8; 16], - genesis_sequencer_commit_txid: String, - output: String, - }, } #[derive(Error, Debug, Clone)] @@ -140,7 +133,6 @@ pub enum ProofType { StateChain, Operator, Watchtower, - Wrapper, } const HEADER_CHAIN_NAME: &str = "header-chain"; @@ -148,7 +140,6 @@ const COMMIT_CHAIN_NAME: &str = "commit-chain"; const STATE_CHAIN_NAME: &str = "state-chain"; const OPERATOR_NAME: &str = "operator"; const WATCHTOWER_NAME: &str = "watchtower"; -const WRAPPER_NAME: &str = "wrapper"; impl ProofType { pub fn get_chain_name(&self) -> &'static str { match self { @@ -157,7 +148,6 @@ impl ProofType { ProofType::StateChain => STATE_CHAIN_NAME, ProofType::Operator => OPERATOR_NAME, ProofType::Watchtower => WATCHTOWER_NAME, - ProofType::Wrapper => WRAPPER_NAME, } } } @@ -192,14 +182,6 @@ pub struct OperatorProofDescRequest { pub graph_id: String, } -#[derive(Debug, Deserialize)] -pub struct WrapperProofDescRequest { - pub operator_proof_id: Option, - pub instance_id: Option, - pub graph_id: Option, - pub genesis_sequencer_commit_txid: Option, -} - #[derive(Debug, Serialize, Deserialize, Default)] pub struct ProofDescResponse { pub proof_desc: Option, @@ -234,8 +216,7 @@ impl ProofData { | ProofType::CommitChain | ProofType::StateChain | ProofType::Watchtower - | ProofType::Operator - | ProofType::Wrapper => { + | ProofType::Operator => { proof_data.proof = fs::read(path).unwrap_or_default(); proof_data.public_inputs = fs::read(format!("{path}.public_inputs.bin")).unwrap_or_default(); @@ -258,35 +239,6 @@ pub struct OperatorProofResponse { pub error: Option, } -#[derive(Debug, Serialize, Deserialize, Default)] -pub struct WrapperProofMetadata { - pub id: i64, - pub operator_proof_id: i64, - pub instance_id: String, - pub graph_id: String, - pub operator_path_to_proof: String, - pub path_to_proof: Option, - pub public_value_hex: Option, - pub operator_vk_hash: String, - pub genesis_sequencer_commit_txid: String, - pub operator_public_value_hex: Option, - pub proof_state: i64, - pub proof_size: i64, - pub cycles: i64, - pub total_time_to_proof: i64, - pub proving_time: i64, - pub zkm_version: String, - pub created_at: i64, - pub updated_at: i64, -} - -#[derive(Debug, Serialize, Deserialize)] -pub struct WrapperProofResponse { - pub proof_data: Option, - pub metadata: Option, - pub error: Option, -} - #[derive(Debug, Serialize, Deserialize)] pub struct WatchtowerProofRequest { pub instance_id: String, @@ -330,38 +282,3 @@ pub struct WatchtowerProofTimeoutUpdateResponse { pub data: Option, pub error: Option, } - -#[cfg(test)] -mod tests { - use super::*; - use std::path::PathBuf; - use std::time::{SystemTime, UNIX_EPOCH}; - - fn temp_proof_base() -> PathBuf { - let nanos = SystemTime::now().duration_since(UNIX_EPOCH).unwrap().as_nanos(); - std::env::temp_dir().join(format!("proof-data-test-{nanos}")) - } - - #[test] - fn load_proof_data_omits_legacy_vk_sidecar() { - let base = temp_proof_base(); - let base_str = base.to_string_lossy().to_string(); - fs::write(&base, [1u8, 2, 3]).unwrap(); - fs::write(format!("{base_str}.public_inputs.bin"), [4u8, 5, 6]).unwrap(); - fs::write(format!("{base_str}.vk_hash.bin"), b"vk-hash").unwrap(); - fs::write(format!("{base_str}.zkm_version.bin"), b"v1.2.5").unwrap(); - - let proof_data = ProofData::load_proof_data(&base_str, ProofType::Watchtower); - let ProofData { proof, vk, public_inputs, zkm_version } = proof_data; - - assert_eq!(proof, vec![1u8, 2, 3]); - assert_eq!(public_inputs, vec![4u8, 5, 6]); - assert_eq!(vk, "vk-hash"); - assert_eq!(zkm_version, "v1.2.5"); - - let _ = fs::remove_file(&base); - let _ = fs::remove_file(format!("{base_str}.public_inputs.bin")); - let _ = fs::remove_file(format!("{base_str}.vk_hash.bin")); - let _ = fs::remove_file(format!("{base_str}.zkm_version.bin")); - } -} diff --git a/circuits/run-operator-wrapper-proof.sh b/circuits/run-operator-wrapper-proof.sh deleted file mode 100755 index f5482db1..00000000 --- a/circuits/run-operator-wrapper-proof.sh +++ /dev/null @@ -1,51 +0,0 @@ -#!/bin/bash -set -euo pipefail - -source ~/.zkm-toolchain/env -set -a -source .env -set +a - -require_env() { - local name="$1" - if [ -z "${!name:-}" ]; then - echo "Missing required environment variable: $name" >&2 - exit 1 - fi -} - -require_file() { - local path="$1" - if [ ! -f "$path" ]; then - echo "Missing required file: $path" >&2 - exit 1 - fi -} - -operator_input_proof="${1:-}" -output="${2:-}" -if [ -z "$operator_input_proof" ] || [ -z "$output" ]; then - echo "Usage: bash run-operator-wrapper-proof.sh " >&2 - exit 1 -fi - -require_env "GRAPH_ID" -require_env "GENESIS_SEQUENCER_COMMIT_TXID" - -require_file "$operator_input_proof" -require_file "${operator_input_proof}.public_inputs.bin" -require_file "${operator_input_proof}.vk_hash.bin" -require_file "${operator_input_proof}.zkm_version.bin" - -mkdir -p "$(dirname "$output")" - -graph_id_hex="${GRAPH_ID//-/}" - -cargo build -r --bin operator-wrapper-proof --package operator-wrapper-proof -CMD="../target/release/operator-wrapper-proof" - -RUST_LOG=info "$CMD" \ - --operator-input-proof "$operator_input_proof" \ - --graph-id "$graph_id_hex" \ - --genesis-sequencer-commit-txid "$GENESIS_SEQUENCER_COMMIT_TXID" \ - --output "$output" diff --git a/crates/bitcoin-light-client-circuit/src/lib.rs b/crates/bitcoin-light-client-circuit/src/lib.rs index 922500e4..f6824b6c 100644 --- a/crates/bitcoin-light-client-circuit/src/lib.rs +++ b/crates/bitcoin-light-client-circuit/src/lib.rs @@ -499,20 +499,6 @@ pub fn hash_operator_constant( *hash.as_byte_array() } -pub const WRAPPER_PUBLIC_VALUES_SIZE: usize = 32 + GRAPH_ID_SIZE + 32; - -pub fn wrapper_public_values( - operator_vk_hash: [u8; 32], - graph_id: [u8; GRAPH_ID_SIZE], - genesis_sequencer_commit_txid: [u8; 32], -) -> [u8; WRAPPER_PUBLIC_VALUES_SIZE] { - let mut public_values = [0u8; WRAPPER_PUBLIC_VALUES_SIZE]; - public_values[..32].copy_from_slice(&operator_vk_hash); - public_values[32..32 + GRAPH_ID_SIZE].copy_from_slice(&graph_id); - public_values[32 + GRAPH_ID_SIZE..].copy_from_slice(&genesis_sequencer_commit_txid); - public_values -} - // zkm_vk_hash: 66 bytes, prefix with '0x' pub fn zkm_vk_hash_to_raw(vk_hash: &[u8]) -> Result<[u8; 32], String> { let vk_hash = diff --git a/crates/bitvm-gc/src/babe_adapter.rs b/crates/bitvm-gc/src/babe_adapter.rs index 0f34a868..9dc093f0 100644 --- a/crates/bitvm-gc/src/babe_adapter.rs +++ b/crates/bitvm-gc/src/babe_adapter.rs @@ -369,7 +369,7 @@ pub fn extract_gc_circuit_data( }) } -/// Builds the native BABE assertion witness from the validated wrapper Groth16 proof. +/// Builds the native BABE assertion witness from the validated operator Groth16 proof. pub fn build_assert_witness( proof: &ark_groth16::Proof, assert_secret_key: &OperatorAssertSecretKey, diff --git a/crates/store/migrations/20260622000000_drop_wrapper_proof_table.sql b/crates/store/migrations/20260622000000_drop_wrapper_proof_table.sql new file mode 100644 index 00000000..4a542631 --- /dev/null +++ b/crates/store/migrations/20260622000000_drop_wrapper_proof_table.sql @@ -0,0 +1 @@ +DROP TABLE IF EXISTS wrapper_proof; diff --git a/crates/store/src/localdb.rs b/crates/store/src/localdb.rs index c6e0e590..bdd557f9 100644 --- a/crates/store/src/localdb.rs +++ b/crates/store/src/localdb.rs @@ -2,8 +2,8 @@ use crate::utils::{QueryBuilder, QueryParam, create_place_holders}; use crate::{ BridgeOutGlobalStats, GoatTxRecord, Graph, GraphBtcTxVoutMonitor, GraphRawData, Instance, LongRunningTaskProof, Message, Node, NodesOverview, OperatorProof, PeginGraphProcessData, - PeginInstanceProcessData, PendingGraphInit, ProofState, SequencerSetHashChange, - SequencerSetScanState, SerializableTxid, WatchContract, WatchtowerProof, WrapperProof, + PeginInstanceProcessData, PendingGraphInit, SequencerSetHashChange, SequencerSetScanState, + SerializableTxid, WatchContract, WatchtowerProof, }; use indexmap::IndexMap; @@ -2818,223 +2818,6 @@ impl<'a> StorageProcessor<'a> { Ok(res) } - pub async fn create_wrapper_proof( - &mut self, - wrapper_proof: &WrapperProof, - ) -> anyhow::Result { - let res = sqlx::query( - "INSERT INTO wrapper_proof ( - operator_proof_id, - instance_id, - graph_id, - execution_layer_block_number, - operator_path_to_proof, - path_to_proof, - public_value_hex, - operator_vk_hash, - genesis_sequencer_commit_txid, - operator_public_value_hex, - proof_size, - cycles, - proof_state, - total_time_to_proof, - proving_time, - zkm_version, - extra, - created_at, - updated_at - ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", - ) - .bind(wrapper_proof.operator_proof_id) - .bind(wrapper_proof.instance_id) - .bind(wrapper_proof.graph_id) - .bind(wrapper_proof.execution_layer_block_number) - .bind(&wrapper_proof.operator_path_to_proof) - .bind(&wrapper_proof.path_to_proof) - .bind(&wrapper_proof.public_value_hex) - .bind(&wrapper_proof.operator_vk_hash) - .bind(&wrapper_proof.genesis_sequencer_commit_txid) - .bind(&wrapper_proof.operator_public_value_hex) - .bind(wrapper_proof.proof_size) - .bind(wrapper_proof.cycles) - .bind(wrapper_proof.proof_state) - .bind(wrapper_proof.total_time_to_proof) - .bind(wrapper_proof.proving_time) - .bind(&wrapper_proof.zkm_version) - .bind(&wrapper_proof.extra) - .bind(wrapper_proof.created_at) - .bind(wrapper_proof.updated_at) - .execute(self.conn()) - .await?; - Ok(res.rows_affected()) - } - - pub async fn find_wrapper_proof_by_operator_proof_id( - &mut self, - operator_proof_id: i64, - ) -> anyhow::Result> { - let res = sqlx::query_as::<_, WrapperProof>( - "SELECT * FROM wrapper_proof - WHERE operator_proof_id = ? - LIMIT 1", - ) - .bind(operator_proof_id) - .fetch_optional(self.conn()) - .await?; - Ok(res) - } - - pub async fn find_wrapper_proof_by_instance_and_graph( - &mut self, - instance_id: &Uuid, - graph_id: &Uuid, - ) -> anyhow::Result> { - let res = sqlx::query_as::<_, WrapperProof>( - "SELECT * FROM wrapper_proof - WHERE instance_id = ? - AND graph_id = ? - ORDER BY id DESC - LIMIT 1", - ) - .bind(instance_id) - .bind(graph_id) - .fetch_optional(self.conn()) - .await?; - Ok(res) - } - - pub async fn find_next_wrapper_proof(&mut self) -> anyhow::Result> { - let res = sqlx::query_as::<_, WrapperProof>( - "SELECT * FROM wrapper_proof - WHERE proof_state = ? - ORDER BY id ASC - LIMIT 1", - ) - .bind(ProofState::New.to_i64()) - .fetch_optional(self.conn()) - .await?; - Ok(res) - } - - pub async fn claim_next_wrapper_proof(&mut self) -> anyhow::Result> { - let Some(candidate) = self.find_next_wrapper_proof().await? else { - return Ok(None); - }; - - let current_time = get_current_timestamp_secs(); - let updated = sqlx::query( - "UPDATE wrapper_proof - SET proof_state = ?, - updated_at = ? - WHERE id = ? - AND proof_state = ?", - ) - .bind(ProofState::Proving.to_i64()) - .bind(current_time) - .bind(candidate.id) - .bind(ProofState::New.to_i64()) - .execute(self.conn()) - .await? - .rows_affected(); - - if updated == 0 { - return Ok(None); - } - - let res = sqlx::query_as::<_, WrapperProof>( - "SELECT * FROM wrapper_proof - WHERE id = ? - LIMIT 1", - ) - .bind(candidate.id) - .fetch_optional(self.conn()) - .await?; - Ok(res) - } - - pub async fn find_proven_operator_proofs_without_wrapper( - &mut self, - limit: i64, - ) -> anyhow::Result> { - let res = sqlx::query_as::<_, OperatorProof>( - "SELECT operator_proof.* - FROM operator_proof - WHERE operator_proof.proof_state = ? - AND operator_proof.path_to_proof IS NOT NULL - AND NOT EXISTS ( - SELECT 1 - FROM wrapper_proof - WHERE wrapper_proof.operator_proof_id = operator_proof.id - ) - ORDER BY operator_proof.id ASC - LIMIT ?", - ) - .bind(ProofState::Proven.to_i64()) - .bind(limit) - .fetch_all(self.conn()) - .await?; - Ok(res) - } - - #[allow(clippy::too_many_arguments)] - pub async fn update_wrapper_proof_success( - &mut self, - id: i64, - path_to_proof: String, - public_value_hex: String, - proof_size: i64, - cycles: i64, - proving_time: i64, - zkm_version: &str, - ) -> anyhow::Result { - let current_time = get_current_timestamp_secs(); - let res = sqlx::query( - "UPDATE wrapper_proof - SET path_to_proof = ?, - public_value_hex = ?, - proof_size = ?, - cycles = ?, - proof_state = ?, - total_time_to_proof = CASE - WHEN created_at > 0 THEN (? - created_at) * 1000 - ELSE total_time_to_proof - END, - proving_time = ?, - zkm_version = ?, - updated_at = ? - WHERE id = ?", - ) - .bind(path_to_proof) - .bind(public_value_hex) - .bind(proof_size) - .bind(cycles) - .bind(ProofState::Proven.to_i64()) - .bind(current_time) - .bind(proving_time) - .bind(zkm_version) - .bind(current_time) - .bind(id) - .execute(self.conn()) - .await?; - Ok(res.rows_affected()) - } - - pub async fn update_wrapper_proof_failure(&mut self, id: i64) -> anyhow::Result { - let current_time = get_current_timestamp_secs(); - let res = sqlx::query( - "UPDATE wrapper_proof - SET proof_state = ?, - updated_at = ? - WHERE id = ?", - ) - .bind(ProofState::Failed.to_i64()) - .bind(current_time) - .bind(id) - .execute(self.conn()) - .await?; - Ok(res.rows_affected()) - } - #[allow(clippy::too_many_arguments)] pub async fn update_watchtower_proof( &mut self, @@ -3453,79 +3236,4 @@ mod sequencer_set_tests { assert_eq!(state.next_cosmos_block_height, 200); assert_eq!(state.latest_validators_hash, "ddeeff"); } - - #[tokio::test] - async fn test_wrapper_proof_lifecycle() { - let db = setup_db().await; - let mut s = db.acquire().await.unwrap(); - let instance_id = Uuid::parse_str("00112233445566778899aabbccddeeff").unwrap(); - let graph_id = Uuid::parse_str("ffeeddccbbaa99887766554433221100").unwrap(); - let now = get_current_timestamp_secs(); - - let task = WrapperProof { - operator_proof_id: 42, - instance_id, - graph_id, - execution_layer_block_number: 9511055, - operator_path_to_proof: "operator.bin".to_string(), - operator_vk_hash: "operator-vk-hash".to_string(), - genesis_sequencer_commit_txid: - "7f7b4344adb1b8937ddb7124e4f8bba80ee9adf5e8119de76ca8736816bda246".to_string(), - operator_public_value_hex: Some("abcd".to_string()), - proof_state: ProofState::New.to_i64(), - created_at: now, - updated_at: now, - ..Default::default() - }; - - s.create_wrapper_proof(&task).await.unwrap(); - let duplicate = s.create_wrapper_proof(&task).await; - assert!(duplicate.is_err(), "operator_proof_id must be unique"); - - let found = s - .find_wrapper_proof_by_operator_proof_id(42) - .await - .unwrap() - .expect("wrapper proof should be found"); - assert_eq!(found.instance_id, instance_id); - assert_eq!(found.graph_id, graph_id); - assert_eq!(found.proof_state, ProofState::New.to_i64()); - - let claimed = s - .claim_next_wrapper_proof() - .await - .unwrap() - .expect("new wrapper proof should be claimable"); - assert_eq!(claimed.id, found.id); - assert_eq!(claimed.proof_state, ProofState::Proving.to_i64()); - - s.update_wrapper_proof_success( - claimed.id, - "wrapper.bin".to_string(), - "wrapper-public-value-hex".to_string(), - 1234, - 5678, - 90, - "v1.2.5", - ) - .await - .unwrap(); - let proven = s - .find_wrapper_proof_by_instance_and_graph(&instance_id, &graph_id) - .await - .unwrap() - .expect("wrapper proof should be found by instance and graph"); - assert_eq!(proven.proof_state, ProofState::Proven.to_i64()); - assert_eq!(proven.path_to_proof.as_deref(), Some("wrapper.bin")); - assert_eq!(proven.public_value_hex.as_deref(), Some("wrapper-public-value-hex")); - - s.update_wrapper_proof_failure(proven.id).await.unwrap(); - let failed = s - .find_wrapper_proof_by_operator_proof_id(42) - .await - .unwrap() - .expect("wrapper proof should still exist"); - assert_eq!(failed.proof_state, ProofState::Failed.to_i64()); - assert!(s.claim_next_wrapper_proof().await.unwrap().is_none()); - } } diff --git a/crates/store/src/schema.rs b/crates/store/src/schema.rs index 509ebb1f..72c7eb17 100644 --- a/crates/store/src/schema.rs +++ b/crates/store/src/schema.rs @@ -724,30 +724,6 @@ pub struct OperatorProof { pub updated_at: i64, } -#[derive(Clone, FromRow, Debug, Serialize, Deserialize, Default)] -pub struct WrapperProof { - pub id: i64, - pub operator_proof_id: i64, - pub instance_id: Uuid, - pub graph_id: Uuid, - pub execution_layer_block_number: i64, - pub operator_path_to_proof: String, - pub path_to_proof: Option, - pub public_value_hex: Option, - pub operator_vk_hash: String, - pub genesis_sequencer_commit_txid: String, - pub operator_public_value_hex: Option, - pub proof_size: i64, - pub cycles: i64, - pub proof_state: i64, - pub total_time_to_proof: i64, - pub proving_time: i64, - pub zkm_version: String, - pub extra: Option, - pub created_at: i64, - pub updated_at: i64, -} - #[derive(Clone, FromRow, Debug, Serialize, Deserialize, Default)] pub struct LongRunningTaskProof { pub block_start: i64, diff --git a/deployment/regtest/proof-builder-rpc/proof-builder.toml b/deployment/regtest/proof-builder-rpc/proof-builder.toml index 6c050856..114bacce 100644 --- a/deployment/regtest/proof-builder-rpc/proof-builder.toml +++ b/deployment/regtest/proof-builder-rpc/proof-builder.toml @@ -73,9 +73,3 @@ graph_id="0x00112233445566778899aabbccddeeff" execution_layer_block_number = 9511055 index = 1 bitcoin_network = "regtest" - -[wrapper] -enable = false -output = "../circuits/data/wrapper/output.bin" -genesis_sequencer_commit_txid = "5d5a29e1c426abc4b947f90b93c6b043683aafad79cb3b9a9829dfd5e51cad09" -scan_interval = 30 diff --git a/node/src/env.rs b/node/src/env.rs index d79a46af..092937b5 100644 --- a/node/src/env.rs +++ b/node/src/env.rs @@ -80,8 +80,6 @@ pub const ENV_WATCHTOWER_PROOF_WAIT_SECS: &str = "WATCHTOWER_PROOF_WAIT_SECS"; pub const ENV_OPERATOR_PROOF_WAIT_SECS: &str = "OPERATOR_PROOF_WAIT_SECS"; pub const ENV_OPERATOR_VK_HASH: &str = "OPERATOR_VK_HASH"; pub const ENV_OPERATOR_ZKM_VERSION: &str = "OPERATOR_ZKM_VERSION"; -pub const ENV_OPERATOR_WRAPPER_VK_HASH: &str = "OPERATOR_WRAPPER_VK_HASH"; -pub const ENV_OPERATOR_WRAPPER_ZKM_VERSION: &str = "OPERATOR_WRAPPER_ZKM_VERSION"; pub const DEFAULT_WATCHTOWER_PROOF_WAIT_SECS: usize = 60; pub const DEFAULT_OPERATOR_PROOF_WAIT_SECS: usize = 60; pub const ENV_FGC_GATES_PATH: &str = "FGC_GATES_PATH"; @@ -613,16 +611,6 @@ pub fn get_operator_zkm_version() -> anyhow::Result { .map_err(|_| anyhow::anyhow!("{ENV_OPERATOR_ZKM_VERSION} needs to be set")) } -pub fn get_operator_wrapper_vk_hash() -> anyhow::Result { - std::env::var(ENV_OPERATOR_WRAPPER_VK_HASH) - .map_err(|_| anyhow::anyhow!("{ENV_OPERATOR_WRAPPER_VK_HASH} needs to be set")) -} - -pub fn get_operator_wrapper_zkm_version() -> anyhow::Result { - std::env::var(ENV_OPERATOR_WRAPPER_ZKM_VERSION) - .map_err(|_| anyhow::anyhow!("{ENV_OPERATOR_WRAPPER_ZKM_VERSION} needs to be set")) -} - pub struct BabeGcAssetPaths { pub fgc_gates: PathBuf, pub fgc_out_indices: PathBuf, diff --git a/node/src/handle.rs b/node/src/handle.rs index e67785c8..e16f75c9 100644 --- a/node/src/handle.rs +++ b/node/src/handle.rs @@ -1271,7 +1271,7 @@ async fn handle_gen_circuits_operator( let operator_state = state.operator.get_or_insert_with(|| OperatorBabeSetupState { frozen_verifier_pubkeys: None, candidates: vec![], - asserted_wrapper_proof: None, + asserted_operator_proof: None, }); let was_frozen = operator_state.frozen_verifier_pubkeys.is_some(); @@ -3720,20 +3720,20 @@ async fn handle_assert_ready_operator( let dynamic_input = operator_proof.public_inputs[1]; let assert_witness = build_assert_witness(&operator_proof.proof, &assert_secret_key, dynamic_input)?; let assert_message = assert_wots_message(&assert_witness)?; - let mut asserted_wrapper_proof = Vec::new(); - operator_proof.proof.serialize_compressed(&mut asserted_wrapper_proof)?; + let mut asserted_operator_proof = Vec::new(); + operator_proof.proof.serialize_compressed(&mut asserted_operator_proof)?; let mut setup_state = load_babe_setup_state(ctx.local_db, instance_id, graph_id)? .ok_or_else(|| anyhow!("missing operator BABE setup state for graph {graph_id}"))?; let operator_state = setup_state .operator .as_mut() .ok_or_else(|| anyhow!("missing operator BABE setup state for graph {graph_id}"))?; - if let Some(existing) = &operator_state.asserted_wrapper_proof - && existing != &asserted_wrapper_proof + if let Some(existing) = &operator_state.asserted_operator_proof + && existing != &asserted_operator_proof { - bail!("operator assertion wrapper proof conflicts with persisted proof"); + bail!("operator assertion proof conflicts with persisted proof"); } - operator_state.asserted_wrapper_proof = Some(asserted_wrapper_proof); + operator_state.asserted_operator_proof = Some(asserted_operator_proof); save_babe_setup_state(ctx.local_db, instance_id, graph_id, &setup_state)?; let assert_tx = operator_sign_assert(&mut graph, &assert_secret_key, &assert_message)?; @@ -4074,11 +4074,11 @@ async fn handle_challenge_assert_sent_operator( .as_ref() .ok_or_else(|| anyhow!("missing BABE prover state for verifier slot {verifier_index}"))?; let proof_bytes = operator_state - .asserted_wrapper_proof + .asserted_operator_proof .as_ref() - .ok_or_else(|| anyhow!("missing asserted wrapper proof for graph {graph_id}"))?; + .ok_or_else(|| anyhow!("missing asserted operator proof for graph {graph_id}"))?; let proof = Groth16Proof::deserialize_compressed(proof_bytes.as_slice()) - .context("deserialize asserted wrapper proof")?; + .context("deserialize asserted operator proof")?; let vk = crate::vk::get_vk().await.context("load Groth16 verifying key for BABE wrongly challenged")?; let (_, dyn_pubin) = TxAssertWitness { wots_sig: challenge_witness.witness.wots_sig.clone() } .recover_pi1_xd_without_verify() @@ -4763,7 +4763,7 @@ mod tests { gc_data: None, prover_state: None, }], - asserted_wrapper_proof: None, + asserted_operator_proof: None, } } @@ -4780,7 +4780,7 @@ mod tests { gc_data: None, prover_state: None, }], - asserted_wrapper_proof: None, + asserted_operator_proof: None, }; freeze_operator_candidates(&mut state).unwrap(); diff --git a/node/src/rpc_service/routes.rs b/node/src/rpc_service/routes.rs index 901b4bda..1b023c26 100644 --- a/node/src/rpc_service/routes.rs +++ b/node/src/rpc_service/routes.rs @@ -27,7 +27,6 @@ pub(crate) mod v1 { pub const NODES_WATCHTOWER_BASE: &str = "/v1/proofs/watchtower_proofs"; #[allow(dead_code)] pub const NODES_OPERATOR_BASE: &str = "/v1/proofs/operator_proofs"; - pub const PROOFS_WRAPPER_PROOF: &str = "/v1/proofs/wrapper_proofs"; pub const PROOFS_OPERATOR_PROOF_DESC: &str = "/v1/proofs/operator_proofs_desc"; pub const PROOFS_WATCHTOWER_PROOF_TIMEOUT: &str = "/v1/proofs/watchtower_proofs_timeout"; #[allow(dead_code)] diff --git a/node/src/utils.rs b/node/src/utils.rs index 08c6c0f0..c75f58bc 100644 --- a/node/src/utils.rs +++ b/node/src/utils.rs @@ -26,7 +26,6 @@ use bitcoin::{ }; use bitcoin_light_client_circuit::{ VK_HASH_SIZE, build_watchtower_commitment, decode_operator_public_outputs, - wrapper_public_values, }; use bitvm::treepp::*; use bitvm_lib::actors::Actor; @@ -76,7 +75,6 @@ use store::localdb::{ use crate::env; use crate::rpc_service::routes::v1::{ NODES_OPERATOR_BASE, NODES_WATCHTOWER_BASE, PROOFS_WATCHTOWER_PROOF_TIMEOUT, - PROOFS_WRAPPER_PROOF, }; use crate::scheduled_tasks::get_goat_message_content_type; use crate::scheduled_tasks::graph_maintenance_tasks::{ @@ -93,7 +91,7 @@ use client::http_client::async_client::HttpAsyncClient; use proof_builder::{ OperatorProofRequest, OperatorProofResponse, ProofData, WatchtowerProofRequest, WatchtowerProofResponse, WatchtowerProofTimeoutUpdateRequest, - WatchtowerProofTimeoutUpdateResponse, WrapperProofResponse, + WatchtowerProofTimeoutUpdateResponse, }; use store::{ BridgeOutGlobalStats, ByteArray32, Graph, GraphRawData, GraphStatus, Instance, @@ -108,7 +106,7 @@ use zkm_sdk::ZKMProofWithPublicValues; use zkm_stark::PartStarkVerifyingKey; use zkm_verifier::{ Groth16Verifier, IMM_GROTH16_VK_BYTES, convert_ark_imm_wrap_vk, decode_zkm_vkey_hash, - hash_public_inputs, load_ark_public_inputs_from_bytes, + load_ark_public_inputs_from_bytes, }; pub(crate) const BRIDGE_OUT_GLOBAL_STATS_ID: i64 = 1; @@ -127,16 +125,6 @@ pub struct ValidatedOperatorProof { pub zkm_version: String, } -#[derive(Clone)] -pub struct ValidatedOperatorWrapperProof { - pub proof: Groth16Proof, - pub public_inputs: PublicInputs, - pub verifying_key: VerifyingKey, - pub public_values: Vec, - pub wrapper_vk_hash: String, - pub zkm_version: String, -} - #[derive(Clone)] pub struct OperatorStatement { pub static_input: ark_bn254::Fr, @@ -145,14 +133,6 @@ pub struct OperatorStatement { pub constant: [u8; 32], } -#[derive(Clone)] -pub struct OperatorWrapperStatement { - pub public_values: Vec, - pub public_inputs: PublicInputs, - pub wrapper_vk_hash: String, - pub zkm_version: String, -} - pub mod todo_funcs { #![allow(dead_code, unreachable_code, unused_variables)] @@ -2053,30 +2033,6 @@ fn combined_operator_vk_hash(operator_vk_hash: &str, zkm_version: &str) -> Resul Ok(encoded) } -fn combined_wrapper_vk_hash(wrapper_vk_hash: &str, zkm_version: &str) -> Result<[u8; 32]> { - if !wrapper_vk_hash.starts_with("0x") { - bail!("configured wrapper vk hash must use 0x-prefixed Ziren encoding"); - } - let raw_vk_hash = decode_zkm_vkey_hash(wrapper_vk_hash) - .map_err(|e| anyhow!("invalid configured wrapper vk hash: {e:?}"))?; - let part_vk: PartStarkVerifyingKey = - bincode::deserialize(&load_part_stark_vk_for_zkm_version(zkm_version)?) - .context("deserialize configured wrapper partial STARK verifying key")?; - let base = Bn254Fr::from_canonical_u32(256); - let mut field_hash = Bn254Fr::ZERO; - for byte in raw_vk_hash { - field_hash = field_hash * base + Bn254Fr::from_canonical_u32(byte as u32); - } - let combined = zkm_recursion_core::hash_vkey_with_part_vk(&part_vk, field_hash); - let bytes = combined.as_canonical_biguint().to_bytes_be(); - if bytes.len() > 32 { - bail!("combined wrapper verifying key hash exceeds BN254 field encoding"); - } - let mut encoded = [0u8; 32]; - encoded[32 - bytes.len()..].copy_from_slice(&bytes); - Ok(encoded) -} - pub fn derive_operator_statement(graph_id: Uuid) -> Result { let vk_hash = get_operator_vk_hash()?; let zkm_version = get_operator_zkm_version()?; @@ -2086,161 +2042,6 @@ pub fn derive_operator_statement(graph_id: Uuid) -> Result { Ok(OperatorStatement { static_input, vk_hash, zkm_version, constant }) } -pub fn derive_operator_wrapper_statement(graph_id: Uuid) -> Result { - let public_values = wrapper_public_values( - get_operator_vk_hash()?, - *graph_id.as_bytes(), - get_genesis_sequencer_commit_id(), - ) - .to_vec(); - let wrapper_vk_hash = get_operator_wrapper_vk_hash()?; - let zkm_version = get_operator_wrapper_zkm_version()?; - let public_inputs = load_ark_public_inputs_from_bytes( - &combined_wrapper_vk_hash(&wrapper_vk_hash, &zkm_version)?, - &hash_public_inputs(&public_values), - ) - .to_vec(); - Ok(OperatorWrapperStatement { public_values, public_inputs, wrapper_vk_hash, zkm_version }) -} - -/// Returns: -/// - `Ok(Some(WrapperProof), _)` if wrapper proof is available -/// - `Ok(None, wait_secs)` if operator or wrapper proof is not yet available -pub async fn get_operator_wrapper_proof( - local_db: &LocalDB, - http_client: &HttpAsyncClient, - bitvm_graph: &BitvmGcGraph, - btc_client: &BTCClient, - instance_id: Uuid, - graph_id: Uuid, -) -> Result<(Option, usize)> { - let mut storage_processor = local_db.acquire().await?; - let Some(graph) = storage_processor.find_graph(&graph_id).await? else { - warn!("graph:{graph_id} not found"); - bail!("No graph in db"); - }; - drop(storage_processor); - - if graph.proceed_withdraw_height <= 0 { - warn!("graph {graph_id} proceed_withdraw_height <= 0, waiting to been updated"); - return Ok((None, get_operator_proof_wait_secs())); - } - - let watchtower_challenge_init_txid = graph - .watchtower_challenge_init_txid - .ok_or_else(|| anyhow::anyhow!("watchtower_challenge_init_txid is none"))?; - let num_challenger = bitvm_graph.parameters.watchtower_pubkeys.len(); - let (watchtower_challenge_txids, included_watchtowers) = match get_watchtower_challenge_info( - btc_client, - &watchtower_challenge_init_txid, - num_challenger, - ) - .await - { - Ok(info) => info, - Err(e) => { - warn!("Failed to get watchtower challenge info: {e}"); - return Ok((None, get_operator_proof_wait_secs())); - } - }; - let (btc_best_block_hash, _) = compute_operator_pubin_blockhash_and_bitmap( - btc_client, - &watchtower_challenge_txids, - &included_watchtowers, - ) - .await?; - let operator_committed_blockhash = BlockHash::from_byte_array(btc_best_block_hash).to_string(); - - let base_url = Url::parse( - &get_proof_build_rpc_host() - .ok_or_else(|| anyhow::anyhow!("failed to get proof_build_rpc_host"))?, - )?; - let operator_url = base_url.join(NODES_OPERATOR_BASE)?; - let operator_response = http_client - .post_response_json::( - operator_url.as_str(), - &OperatorProofRequest { - instance_id: instance_id.to_string(), - graph_id: graph_id.to_string(), - operator_committed_blockhash, - execution_layer_block_number: graph.proceed_withdraw_height, - watchtower_challenge_txids, - included_watchtowers, - watchtower_challenge_init_txid: watchtower_challenge_init_txid.0.to_string(), - watchtower_challenge_pubkeys: bitvm_graph - .parameters - .watchtower_pubkeys - .iter() - .map(|pk| pk.public_key(secp256k1::Parity::Even).to_string()) - .collect(), - }, - ) - .await?; - - if operator_response.proof_data.is_none() { - return Ok((None, get_operator_proof_wait_secs())); - } - - let statement = derive_operator_wrapper_statement(graph_id)?; - let expected_public_values = statement.public_values.clone(); - let genesis_txid_text = std::env::var(ENV_GENESIS_SEQUENCER_COMMIT_TXID) - .map_err(|_| anyhow!("{ENV_GENESIS_SEQUENCER_COMMIT_TXID} needs to be set"))?; - - let mut wrapper_url = base_url.join(PROOFS_WRAPPER_PROOF)?; - wrapper_url - .query_pairs_mut() - .append_pair("instance_id", &instance_id.to_string()) - .append_pair("graph_id", &graph_id.to_string()) - .append_pair("genesis_sequencer_commit_txid", &genesis_txid_text); - let wrapper_response = - http_client.get_response_json::(wrapper_url.as_str()).await?; - - let Some(proof_data) = wrapper_response.proof_data else { - if let Some(error) = wrapper_response.error { - info!("operator wrapper proof is not ready for graph_id:{graph_id}: {error}"); - } - return Ok((None, get_operator_proof_wait_secs())); - }; - - let proof: ZKMProofWithPublicValues = bincode::deserialize(proof_data.proof.as_slice()) - .map_err(|err| anyhow!("failed to deserialize operator wrapper proof: {err}"))?; - let proof_public_values = proof.public_values.to_vec(); - if proof_public_values != expected_public_values { - bail!("operator wrapper proof public values do not match graph challenge inputs"); - } - if !proof_data.public_inputs.is_empty() && proof_data.public_inputs != expected_public_values { - bail!("operator wrapper proof public input sidecar does not match proof"); - } - let expected_wrapper_vk_hash = statement.wrapper_vk_hash.clone(); - if proof_data.vk != expected_wrapper_vk_hash { - bail!("operator wrapper proof vk hash does not match configured wrapper identity"); - } - let expected_zkm_version = statement.zkm_version.clone(); - if proof.zkm_version != expected_zkm_version || proof_data.zkm_version != expected_zkm_version { - bail!("operator wrapper proof Ziren version does not match configured wrapper identity"); - } - - let part_stark_vk = load_part_stark_vk_for_zkm_version(&proof.zkm_version)?; - let ark_proof = - convert_ark_imm_wrap_vk(&proof, &proof_data.vk, &IMM_GROTH16_VK_BYTES, &part_stark_vk) - .map_err(|e| anyhow!("failed to convert operator wrapper proof to ark format: {e}"))?; - if ark_proof.public_inputs.as_slice() != statement.public_inputs.as_slice() { - bail!("operator wrapper proof public inputs do not match graph setup statement"); - } - - Ok(( - Some(ValidatedOperatorWrapperProof { - proof: ark_proof.proof.clone(), - public_inputs: ark_proof.public_inputs.into(), - verifying_key: ark_proof.groth16_vk.into(), - public_values: expected_public_values, - wrapper_vk_hash: expected_wrapper_vk_hash, - zkm_version: expected_zkm_version, - }), - 0, - )) -} - /// Returns: /// - `Ok(Some(OperatorProof), _)` if operator proof is available and valid /// - `Ok(None, wait_secs)` if operator proof is not yet available @@ -4985,7 +4786,7 @@ pub struct OperatorBabeSetupState { pub frozen_verifier_pubkeys: Option>, pub candidates: Vec, #[serde(default)] - pub asserted_wrapper_proof: Option>, + pub asserted_operator_proof: Option>, } #[cfg(test)] diff --git a/proof-builder-rpc/Cargo.toml b/proof-builder-rpc/Cargo.toml index 68e9b5b3..e478e1de 100644 --- a/proof-builder-rpc/Cargo.toml +++ b/proof-builder-rpc/Cargo.toml @@ -36,7 +36,6 @@ commit-chain = { workspace = true } state-chain-proof = { workspace = true } watchtower-proof = { workspace = true } operator-proof = { workspace = true } -operator-wrapper-proof = { workspace = true } util = { workspace = true } client = { workspace = true } bitcoin-light-client-circuit.workspace = true diff --git a/proof-builder-rpc/proof-builder.toml.example b/proof-builder-rpc/proof-builder.toml.example index c90145c6..96dce504 100644 --- a/proof-builder-rpc/proof-builder.toml.example +++ b/proof-builder-rpc/proof-builder.toml.example @@ -73,9 +73,3 @@ graph_id="86F23E650F6D447885CA320E6BA27ABD" execution_layer_block_number = 10321027 index = 1 bitcoin_network = "regtest" - -[wrapper] -enable = false -output = "../circuits/data/wrapper/output.bin" -genesis_sequencer_commit_txid = "5d5a29e1c426abc4b947f90b93c6b043683aafad79cb3b9a9829dfd5e51cad09" -scan_interval = 30 diff --git a/proof-builder-rpc/src/api/mod.rs b/proof-builder-rpc/src/api/mod.rs index c1f5d999..8ad9cfa0 100644 --- a/proof-builder-rpc/src/api/mod.rs +++ b/proof-builder-rpc/src/api/mod.rs @@ -6,9 +6,9 @@ mod validation; use crate::api::metrics_service::{ApiMetricsState, metrics_handler, metrics_middleware}; use crate::api::proof_handler::{ - get_chain_proof_task_desc, get_operator_proof_task_desc, get_wrapper_proof_task, - get_wrapper_proof_task_desc, post_operator_proof_task, post_watchtower_proof_task, - update_operator_proof_task_timeout, update_watchtower_proof_task_timeout, + get_chain_proof_task_desc, get_operator_proof_task_desc, post_operator_proof_task, + post_watchtower_proof_task, update_operator_proof_task_timeout, + update_watchtower_proof_task_timeout, }; use axum::http::Method; use axum::routing::{get, post}; @@ -48,8 +48,6 @@ pub(crate) async fn serve( .route(routes::v1::PROOFS_OPERATOR_PROOF, post(post_operator_proof_task)) .route(routes::v1::PROOFS_OPERATOR_PROOF_TIMEOUT, post(update_operator_proof_task_timeout)) .route(routes::v1::PROOFS_OPERATOR_PROOF_DESC, get(get_operator_proof_task_desc)) - .route(routes::v1::PROOFS_WRAPPER_PROOF, get(get_wrapper_proof_task)) - .route(routes::v1::PROOFS_WRAPPER_PROOF_DESC, get(get_wrapper_proof_task_desc)) .layer(middleware::from_fn_with_state(api_state.clone(), metrics_middleware)) .layer(CorsLayer::new().allow_headers(Any).allow_origin(Any).allow_methods(vec![ Method::GET, diff --git a/proof-builder-rpc/src/api/proof_handler.rs b/proof-builder-rpc/src/api/proof_handler.rs index dde156e8..e86b1f4e 100644 --- a/proof-builder-rpc/src/api/proof_handler.rs +++ b/proof-builder-rpc/src/api/proof_handler.rs @@ -1,22 +1,20 @@ use crate::api::ApiState; -use crate::api::response::{ApiErrorExt, ApiResult, ErrorResponse, ok_response}; +use crate::api::response::{ApiErrorExt, ApiResult, ok_response}; use crate::api::validation::InputValidator; use crate::task::{ - add_operator_task, add_watchtower_task, create_missing_wrapper_tasks, find_operator_task, - find_watchtower_task, update_operator_task_state, update_watchtower_task_state, + add_operator_task, add_watchtower_task, find_operator_task, find_watchtower_task, + update_operator_task_state, update_watchtower_task_state, }; use axum::Json; use axum::extract::{Query, State}; -use axum::http::StatusCode; use proof_builder::{ ChainProofDescRequest, OperatorProofDescRequest, OperatorProofRequest, OperatorProofResponse, OperatorProofTimeoutUpdateRequest, OperatorProofTimeoutUpdateResponse, ProofData, ProofDesc, ProofDescResponse, ProofType, WatchtowerProofRequest, WatchtowerProofResponse, WatchtowerProofTimeoutUpdateRequest, WatchtowerProofTimeoutUpdateResponse, - WrapperProofDescRequest, WrapperProofMetadata, WrapperProofResponse, }; use std::sync::Arc; -use store::{ProofState, WrapperProof}; +use store::ProofState; use tracing::info; #[axum::debug_handler] @@ -188,62 +186,6 @@ pub(super) async fn post_operator_proof_task( } } -#[axum::debug_handler] -pub(super) async fn get_wrapper_proof_task( - State(api_state): State>, - Query(payload): Query, -) -> ApiResult { - let wrapper_proof = find_wrapper_proof_by_request(&api_state, &payload).await?; - match wrapper_proof { - Some(wrapper_proof) - if wrapper_proof.proof_state == ProofState::Proven.to_i64() - && wrapper_proof.path_to_proof.is_some() => - { - ok_response(WrapperProofResponse { - proof_data: Some(ProofData::load_proof_data( - wrapper_proof.path_to_proof.as_deref().unwrap(), - ProofType::Wrapper, - )), - metadata: Some(wrapper_metadata(&wrapper_proof)), - error: None, - }) - } - Some(wrapper_proof) => ok_response(WrapperProofResponse { - proof_data: None, - metadata: Some(wrapper_metadata(&wrapper_proof)), - error: Some(format!( - "The wrapper proof is not ready, state {}, path:{:?}", - wrapper_proof.proof_state, wrapper_proof.path_to_proof - )), - }), - None => ok_response(WrapperProofResponse { - proof_data: None, - metadata: None, - error: Some("No wrapper proof found".to_string()), - }), - } -} - -#[axum::debug_handler] -pub(super) async fn get_wrapper_proof_task_desc( - State(api_state): State>, - Query(payload): Query, -) -> ApiResult { - let wrapper_proof = find_wrapper_proof_by_request(&api_state, &payload).await?; - match wrapper_proof { - Some(wrapper_proof) => ok_response(WrapperProofResponse { - proof_data: None, - metadata: Some(wrapper_metadata(&wrapper_proof)), - error: None, - }), - None => ok_response(WrapperProofResponse { - proof_data: None, - metadata: None, - error: Some("No wrapper proof found".to_string()), - }), - } -} - #[axum::debug_handler] pub(super) async fn update_operator_proof_task_timeout( State(api_state): State>, @@ -275,78 +217,6 @@ pub(super) async fn update_operator_proof_task_timeout( } } -async fn find_wrapper_proof_by_request( - api_state: &Arc, - payload: &WrapperProofDescRequest, -) -> Result, (StatusCode, Json)> { - if let Some(operator_proof_id) = payload.operator_proof_id { - let mut storage_process = - api_state.local_db.acquire().await.api_error("GET_WRAPPER_PROOF_ERROR")?; - return storage_process - .find_wrapper_proof_by_operator_proof_id(operator_proof_id) - .await - .api_error("GET_WRAPPER_PROOF_ERROR"); - } - - let instance_id = InputValidator::validate_uuid( - payload.instance_id.as_deref().unwrap_or_default(), - "instance_id", - )?; - let graph_id = - InputValidator::validate_uuid(payload.graph_id.as_deref().unwrap_or_default(), "graph_id")?; - - let wrapper_proof = { - let mut storage_process = - api_state.local_db.acquire().await.api_error("GET_WRAPPER_PROOF_ERROR")?; - storage_process - .find_wrapper_proof_by_instance_and_graph(&instance_id, &graph_id) - .await - .api_error("GET_WRAPPER_PROOF_ERROR")? - }; - - if wrapper_proof.is_some() { - return Ok(wrapper_proof); - } - - if let Some(genesis_txid) = payload.genesis_sequencer_commit_txid.as_deref() - && !genesis_txid.is_empty() - { - create_missing_wrapper_tasks(&api_state.local_db, genesis_txid) - .await - .api_error("GET_WRAPPER_PROOF_ERROR")?; - } - - let mut storage_process = - api_state.local_db.acquire().await.api_error("GET_WRAPPER_PROOF_ERROR")?; - storage_process - .find_wrapper_proof_by_instance_and_graph(&instance_id, &graph_id) - .await - .api_error("GET_WRAPPER_PROOF_ERROR") -} - -fn wrapper_metadata(wrapper_proof: &WrapperProof) -> WrapperProofMetadata { - WrapperProofMetadata { - id: wrapper_proof.id, - operator_proof_id: wrapper_proof.operator_proof_id, - instance_id: wrapper_proof.instance_id.to_string(), - graph_id: wrapper_proof.graph_id.to_string(), - operator_path_to_proof: wrapper_proof.operator_path_to_proof.clone(), - path_to_proof: wrapper_proof.path_to_proof.clone(), - public_value_hex: wrapper_proof.public_value_hex.clone(), - operator_vk_hash: wrapper_proof.operator_vk_hash.clone(), - genesis_sequencer_commit_txid: wrapper_proof.genesis_sequencer_commit_txid.clone(), - operator_public_value_hex: wrapper_proof.operator_public_value_hex.clone(), - proof_state: wrapper_proof.proof_state, - proof_size: wrapper_proof.proof_size, - cycles: wrapper_proof.cycles, - total_time_to_proof: wrapper_proof.total_time_to_proof, - proving_time: wrapper_proof.proving_time, - zkm_version: wrapper_proof.zkm_version.clone(), - created_at: wrapper_proof.created_at, - updated_at: wrapper_proof.updated_at, - } -} - #[axum::debug_handler] pub(super) async fn post_watchtower_proof_task( State(api_state): State>, diff --git a/proof-builder-rpc/src/api/routes.rs b/proof-builder-rpc/src/api/routes.rs index df37f6c7..fea597ee 100644 --- a/proof-builder-rpc/src/api/routes.rs +++ b/proof-builder-rpc/src/api/routes.rs @@ -7,6 +7,4 @@ pub(crate) mod v1 { pub(crate) const PROOFS_OPERATOR_PROOF: &str = "/v1/proofs/operator_proofs"; pub(crate) const PROOFS_OPERATOR_PROOF_TIMEOUT: &str = "/v1/proofs/operator_proofs_timeout"; pub(crate) const PROOFS_OPERATOR_PROOF_DESC: &str = "/v1/proofs/operator_proofs_desc"; - pub(crate) const PROOFS_WRAPPER_PROOF: &str = "/v1/proofs/wrapper_proofs"; - pub(crate) const PROOFS_WRAPPER_PROOF_DESC: &str = "/v1/proofs/wrapper_proofs_desc"; } diff --git a/proof-builder-rpc/src/config.rs b/proof-builder-rpc/src/config.rs index c47ff1ce..7c137c5b 100644 --- a/proof-builder-rpc/src/config.rs +++ b/proof-builder-rpc/src/config.rs @@ -9,8 +9,6 @@ pub(crate) struct ProofBuilderConfig { pub state_chain: state_chain_proof::Args, pub watchtower: watchtower_proof::Args, pub operator: operator_proof::Args, - #[serde(default)] - pub wrapper: operator_wrapper_proof::Args, } impl ProofBuilderConfig { diff --git a/proof-builder-rpc/src/task/mod.rs b/proof-builder-rpc/src/task/mod.rs index 6241a103..949c9d49 100644 --- a/proof-builder-rpc/src/task/mod.rs +++ b/proof-builder-rpc/src/task/mod.rs @@ -3,13 +3,11 @@ mod header_chain_proof; mod operator_proof; mod state_chain_proof; mod watchtower_proof; -mod wrapper_proof; use crate::config::ProofBuilderConfig; use crate::task::{ commit_chain_proof::spawn_commit_chain_proof_task, header_chain_proof::spawn_header_chain_proof_task, operator_proof::spawn_operator_proof_task, state_chain_proof::spawn_state_chain_proof_task, watchtower_proof::spawn_watchtower_proof_task, - wrapper_proof::spawn_wrapper_proof_task, }; use ::commit_chain_proof::CommitChainProofBuilder; use ::header_chain_proof::HeaderChainProofBuilder; @@ -20,7 +18,6 @@ use std::collections::HashSet; use std::str::FromStr; use std::time::UNIX_EPOCH; use uuid::Uuid; -pub(crate) use wrapper_proof::create_missing_wrapper_tasks; use futures::future::Either; use proof_builder::{OnDemandTask, ProofBuilder}; @@ -35,7 +32,6 @@ pub(crate) fn is_start_generate_proof_tasks(cfg: &ProofBuilderConfig) -> bool { || cfg.state_chain.enable || cfg.watchtower.enable || cfg.operator.enable - || cfg.wrapper.enable } pub(crate) async fn run_generate_proof_tasks( @@ -104,18 +100,6 @@ pub(crate) async fn run_generate_proof_tasks( Either::Right(std::future::pending::, tokio::task::JoinError>>()) }; - let wrapper_proof_future = if cfg.wrapper.enable { - Either::Left(spawn_wrapper_proof_task( - cfg.wrapper.clone(), - local_db.clone(), - interval, - interval, - cancellation_token.clone(), - )) - } else { - Either::Right(std::future::pending::, tokio::task::JoinError>>()) - }; - tokio::select! { result = header_chain_proof_future => { match result { @@ -192,21 +176,6 @@ pub(crate) async fn run_generate_proof_tasks( } } } - result = wrapper_proof_future => { - match result { - Ok(Ok(_)) => { - info!("Wrapper proof generate task completed successfully"); - } - Ok(Err(e)) => { - error!("Wrapper proof generate task error: {}", e); - return Err(e); - } - Err(e) => { - error!("Wrapper proof generate task panic: {:?}", e); - anyhow::bail!("Wrapper proof generate task panic: {:?}", e); - } - } - } } Ok("tasks_completed".to_string()) diff --git a/proof-builder-rpc/src/task/wrapper_proof.rs b/proof-builder-rpc/src/task/wrapper_proof.rs deleted file mode 100644 index 2078820c..00000000 --- a/proof-builder-rpc/src/task/wrapper_proof.rs +++ /dev/null @@ -1,259 +0,0 @@ -use crate::task::current_time_secs; -use operator_wrapper_proof::OperatorWrapperProofBuilder; -use proof_builder::{ProofBuilder, ProofRequest}; -use std::path::Path; -use std::time::Duration; -use store::localdb::LocalDB; -use store::{ProofState, WrapperProof}; -use tokio::task::JoinHandle; -use tokio_util::sync::CancellationToken; -use zkm_sdk::HashableKey; - -#[tracing::instrument(level = "info", skip(local_db))] -pub(crate) async fn create_missing_wrapper_tasks( - local_db: &LocalDB, - genesis_sequencer_commit_txid: &str, -) -> anyhow::Result { - let mut storage_processor = local_db.acquire().await?; - let operator_proofs = storage_processor.find_proven_operator_proofs_without_wrapper(32).await?; - let mut created = 0u64; - - for operator_proof in operator_proofs { - let Some(operator_path_to_proof) = operator_proof.path_to_proof.clone() else { - continue; - }; - let operator_vk_hash = - read_utf8_sidecar(&format!("{operator_path_to_proof}.vk_hash.bin")).unwrap_or_default(); - let now = current_time_secs(); - let wrapper_proof = WrapperProof { - operator_proof_id: operator_proof.id, - instance_id: operator_proof.instance_id, - graph_id: operator_proof.graph_id, - execution_layer_block_number: operator_proof.execution_layer_block_number, - operator_path_to_proof, - operator_vk_hash, - genesis_sequencer_commit_txid: genesis_sequencer_commit_txid.to_string(), - operator_public_value_hex: operator_proof.public_value_hex.clone(), - proof_state: ProofState::New.to_i64(), - created_at: now, - updated_at: now, - ..Default::default() - }; - - match storage_processor.create_wrapper_proof(&wrapper_proof).await { - Ok(rows) => created += rows, - Err(err) if err.to_string().contains("UNIQUE") => { - tracing::debug!( - operator_proof_id = operator_proof.id, - "wrapper task already exists" - ); - } - Err(err) => return Err(err), - } - } - - Ok(created) -} - -#[tracing::instrument(level = "info", skip(local_db, cancellation_token))] -pub(crate) fn spawn_wrapper_proof_task( - args: operator_wrapper_proof::Args, - local_db: LocalDB, - interval: u64, - initial_delay: u64, - cancellation_token: CancellationToken, -) -> JoinHandle> { - let args = args.clone(); - tokio::spawn(async move { - tokio::select! { - _ = tokio::time::sleep(Duration::from_secs(initial_delay)) => {} - _ = cancellation_token.cancelled() => { - anyhow::bail!("Wrapper proof generate task cancelled"); - } - } - - let builder = OperatorWrapperProofBuilder::new(); - tracing::info!("operator wrapper vk hash {:?}", builder.vk().bytes32()); - let scan_interval = if args.scan_interval == 0 { interval } else { args.scan_interval }; - loop { - tokio::select! { - _ = tokio::time::sleep(Duration::from_secs(scan_interval)) => { - if args.genesis_sequencer_commit_txid.is_empty() { - tracing::warn!("Wrapper proof task skipped: genesis_sequencer_commit_txid is empty"); - continue; - } - - let created = create_missing_wrapper_tasks( - &local_db, - &args.genesis_sequencer_commit_txid, - ).await?; - if created > 0 { - tracing::info!("created {created} wrapper proof tasks"); - } - - let wrapper_task = { - let mut storage_processor = local_db.acquire().await?; - storage_processor - .claim_next_wrapper_proof() - .await? - }; - let Some(wrapper_task) = wrapper_task else { - tracing::debug!("No wrapper proof task found"); - continue; - }; - - let output = wrapper_output_path(&args.output, &wrapper_task); - let ctx = ProofRequest::WrapperProofRequest { - operator_proof_id: wrapper_task.operator_proof_id, - operator_input_proof: wrapper_task.operator_path_to_proof.clone(), - graph_id: *wrapper_task.graph_id.as_bytes(), - genesis_sequencer_commit_txid: wrapper_task.genesis_sequencer_commit_txid.clone(), - output: output.clone(), - }; - - let proving_start = tokio::time::Instant::now(); - let result = builder.build_proof(&ctx).and_then(|(input, proof, cycles, proving_time)| { - let zkm_version = proof.zkm_version.clone(); - let (public_value_hex, proof_size) = - builder.save_proof(&ctx, &input, cycles, proof)?; - Ok((cycles, proving_time, public_value_hex, proof_size, zkm_version)) - }); - - match result { - Ok((cycles, proving_time, public_value_hex, proof_size, zkm_version)) => { - let proving_duration = proving_start.elapsed().as_secs_f32() * 1000.0; - let mut storage_processor = local_db.acquire().await?; - let affected = storage_processor - .update_wrapper_proof_success( - wrapper_task.id, - output, - public_value_hex, - proof_size as i64, - cycles as i64, - proving_time as i64, - &zkm_version, - ) - .await?; - tracing::info!( - wrapper_proof_id = wrapper_task.id, - operator_proof_id = wrapper_task.operator_proof_id, - proving_duration_ms = proving_duration as i64, - affected, - "wrapper proof generated" - ); - } - Err(err) => { - let mut storage_processor = local_db.acquire().await?; - storage_processor - .update_wrapper_proof_failure(wrapper_task.id) - .await?; - tracing::warn!( - wrapper_proof_id = wrapper_task.id, - operator_proof_id = wrapper_task.operator_proof_id, - error = %err, - "wrapper proof generation failed" - ); - } - } - } - _ = cancellation_token.cancelled() => { - anyhow::bail!("Wrapper proof generate task cancelled"); - } - } - } - }) -} - -fn wrapper_output_path(output: &str, wrapper_task: &WrapperProof) -> String { - let path = Path::new(output); - let output_dir = path - .parent() - .filter(|parent| !parent.as_os_str().is_empty()) - .unwrap_or_else(|| Path::new(".")); - output_dir - .join(format!( - "{}-{}.bin", - wrapper_task.graph_id.as_simple(), - wrapper_task.operator_proof_id - )) - .to_string_lossy() - .to_string() -} - -fn read_utf8_sidecar(path: &str) -> anyhow::Result { - Ok(String::from_utf8(std::fs::read(path)?)?) -} - -#[cfg(test)] -mod tests { - use super::*; - use store::{OperatorProof, create_local_db}; - use uuid::Uuid; - - #[tokio::test] - async fn create_missing_wrapper_tasks_is_unique_and_only_consumes_proven_operators() { - let local_db = create_local_db("sqlite::memory:").await; - let instance_id = Uuid::parse_str("00112233445566778899aabbccddeeff").unwrap(); - let graph_id = Uuid::parse_str("ffeeddccbbaa99887766554433221100").unwrap(); - let new_graph_id = Uuid::parse_str("11111111111111111111111111111111").unwrap(); - let now = current_time_secs(); - - { - let mut storage_processor = local_db.acquire().await.unwrap(); - storage_processor - .create_operator_proof(&OperatorProof { - instance_id, - graph_id, - execution_layer_block_number: 9511055, - path_to_proof: Some("operator-proof.bin".to_string()), - public_value_hex: Some("operator-public".to_string()), - proof_state: ProofState::Proven.to_i64(), - created_at: now, - updated_at: now, - operator_committed_blockhash: - "7f7b4344adb1b8937ddb7124e4f8bba80ee9adf5e8119de76ca8736816bda246" - .to_string(), - ..Default::default() - }) - .await - .unwrap(); - storage_processor - .create_operator_proof(&OperatorProof { - instance_id, - graph_id: new_graph_id, - execution_layer_block_number: 9511056, - path_to_proof: Some("operator-new.bin".to_string()), - proof_state: ProofState::New.to_i64(), - created_at: now, - updated_at: now, - operator_committed_blockhash: - "7f7b4344adb1b8937ddb7124e4f8bba80ee9adf5e8119de76ca8736816bda246" - .to_string(), - ..Default::default() - }) - .await - .unwrap(); - } - - let genesis_txid = "7f7b4344adb1b8937ddb7124e4f8bba80ee9adf5e8119de76ca8736816bda246"; - assert_eq!(create_missing_wrapper_tasks(&local_db, genesis_txid).await.unwrap(), 1); - assert_eq!(create_missing_wrapper_tasks(&local_db, genesis_txid).await.unwrap(), 0); - - let mut storage_processor = local_db.acquire().await.unwrap(); - let wrapper_proof = storage_processor - .find_wrapper_proof_by_instance_and_graph(&instance_id, &graph_id) - .await - .unwrap() - .expect("wrapper proof should exist"); - assert_eq!(wrapper_proof.operator_path_to_proof, "operator-proof.bin"); - assert_eq!(wrapper_proof.operator_public_value_hex.as_deref(), Some("operator-public")); - assert_eq!(wrapper_proof.proof_state, ProofState::New.to_i64()); - assert!( - storage_processor - .find_wrapper_proof_by_instance_and_graph(&instance_id, &new_graph_id) - .await - .unwrap() - .is_none() - ); - } -} From 201ad8f43e7c7ccbdc7aef5393762d4c71b7278d Mon Sep 17 00:00:00 2001 From: Blake <0xblake.sg@gmail.com> Date: Tue, 23 Jun 2026 14:43:20 +0800 Subject: [PATCH 2/2] remove operator vk hash from public inputs --- circuits/operator-proof/guest/src/main.rs | 6 +- circuits/operator-proof/host/src/lib.rs | 9 +- .../bitcoin-light-client-circuit/src/lib.rs | 85 ++----------------- node/src/utils.rs | 2 +- 4 files changed, 13 insertions(+), 89 deletions(-) diff --git a/circuits/operator-proof/guest/src/main.rs b/circuits/operator-proof/guest/src/main.rs index 960d8445..3563f489 100644 --- a/circuits/operator-proof/guest/src/main.rs +++ b/circuits/operator-proof/guest/src/main.rs @@ -18,6 +18,7 @@ pub fn main() { println!("read operator commit txn"); let operator_latest_sequencer_commit_txn: Transaction = zkm_zkvm::io::read(); // private inputs let latest_sequencer_commit_txid = operator_latest_sequencer_commit_txn.compute_txid(); // public input + // https://github.com/KSlashh/BitVM/blob/v2/goat/src/transactions/watchtower_challenge.rs#L128 let watchtower_challenge_txns: Vec = zkm_zkvm::io::read(); let watchtower_challenge_txn_pubkey: Vec = zkm_zkvm::io::read(); @@ -29,9 +30,8 @@ pub fn main() { let operator_state_chain: StateChainCircuitInput = zkm_zkvm::io::read(); let spv_ss_commit: SPV = zkm_zkvm::io::read(); let operator_committed_blockhash: [u8; 32] = zkm_zkvm::io::read(); - let actual_operator_vk_hash: [u8; 32] = zkm_zkvm::io::read(); - let (btc_best_block_hash, constant, included_watchtowers, operator_vk_hash) = + let (btc_best_block_hash, constant, included_watchtowers) = bitcoin_light_client_circuit::propose_longest_chain( included_watchtowers, graph_id, @@ -46,11 +46,9 @@ pub fn main() { operator_state_chain, spv_ss_commit, operator_committed_blockhash, - actual_operator_vk_hash, ); zkm_zkvm::io::commit(&btc_best_block_hash); zkm_zkvm::io::commit(&constant); zkm_zkvm::io::commit(&included_watchtowers); - zkm_zkvm::io::commit(&operator_vk_hash); } diff --git a/circuits/operator-proof/host/src/lib.rs b/circuits/operator-proof/host/src/lib.rs index 575b1172..2f37d1dd 100644 --- a/circuits/operator-proof/host/src/lib.rs +++ b/circuits/operator-proof/host/src/lib.rs @@ -6,7 +6,7 @@ use bitcoin::{ hashes::Hash, secp256k1::{PublicKey, XOnlyPublicKey}, }; -use bitcoin_light_client_circuit::{build_spv, zkm_vk_hash_to_raw}; +use bitcoin_light_client_circuit::build_spv; use bitcoin_script::script; use borsh::BorshDeserialize; use clap::Parser; @@ -400,9 +400,6 @@ impl ProofBuilder for OperatorProofBuilder { &bitcoin_block_headers, ); - let actual_operator_vk_hash = zkm_vk_hash_to_raw(self.verifying_key.bytes32().as_bytes()) - .map_err(anyhow::Error::msg)?; - // Generate the proofs let (proof, cycles, proving_time) = tracing::info_span!("generate proof").in_scope( || -> anyhow::Result<(ZKMProofWithPublicValues, u64, f32)> { @@ -426,7 +423,6 @@ impl ProofBuilder for OperatorProofBuilder { stdin.write(&state_chain_input); stdin.write(&spv_ss_commit); stdin.write(&operator_committed_blockhash.to_byte_array()); - stdin.write(&actual_operator_vk_hash); let elf_id = if ELF_ID.get().is_none() { ELF_ID @@ -494,11 +490,8 @@ mod tests { let proof: ZKMProofWithPublicValues = bincode::deserialize(&proof_bytes).unwrap(); let vk_hash = String::from_utf8(vk_bytes).unwrap(); - let operator_vk_hash = - bitcoin_light_client_circuit::zkm_vk_hash_to_raw(vk_hash.as_bytes()).unwrap(); let a = bitcoin_light_client_circuit::decode_operator_public_outputs( proof.public_values.as_slice(), - operator_vk_hash, ) .unwrap(); println!( diff --git a/crates/bitcoin-light-client-circuit/src/lib.rs b/crates/bitcoin-light-client-circuit/src/lib.rs index f6824b6c..df14b446 100644 --- a/crates/bitcoin-light-client-circuit/src/lib.rs +++ b/crates/bitcoin-light-client-circuit/src/lib.rs @@ -47,32 +47,19 @@ pub struct OperatorPublicOutputs { pub btc_best_block_hash: [u8; 32], pub constant: [u8; 32], pub included_watchtowers: [u8; 32], - pub operator_vk_hash: [u8; 32], -} - -#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)] -struct LegacyOperatorPublicOutputs { - btc_best_block_hash: [u8; 32], - constant: [u8; 32], - included_watchtowers: [u8; 32], } pub fn decode_operator_public_outputs( public_values: &[u8], - actual_operator_vk_hash: [u8; 32], ) -> Result { - if let Ok(outputs) = bincode::deserialize::(public_values) { - return Ok(outputs); + if public_values.len() != 96 { + return Err(format!( + "operator public values must be 96 bytes, got {}", + public_values.len() + )); } - - let legacy_outputs = bincode::deserialize::(public_values) - .map_err(|err| format!("failed to decode operator public values: {err}"))?; - Ok(OperatorPublicOutputs { - btc_best_block_hash: legacy_outputs.btc_best_block_hash, - constant: legacy_outputs.constant, - included_watchtowers: legacy_outputs.included_watchtowers, - operator_vk_hash: actual_operator_vk_hash, - }) + bincode::deserialize(public_values) + .map_err(|err| format!("failed to decode operator public values: {err}")) } pub fn watch_longest_chain( @@ -226,8 +213,7 @@ pub fn propose_longest_chain( state_chain: StateChainCircuitInput, spv_ss_commit: SPV, operator_committed_blockhash: [u8; 32], - actual_operator_vk_hash: [u8; 32], -) -> ([u8; 32], [u8; 32], [u8; 32], [u8; 32]) { +) -> ([u8; 32], [u8; 32], [u8; 32]) { // verify operator_latest_sequencer_commit_txid is valid, and on operator head chain // * Check operator_latest_sequencer_commit_txid is derived from genesis_sequencer_commit_txid verify_groth16_proof( @@ -466,26 +452,7 @@ pub fn propose_longest_chain( ); //operator_public_input - ( - operator_committed_blockhash, - constant, - included_watchtowers.to_le_bytes::<32>(), - resolve_operator_vk_hash( - commit_chain_output.chain_state.operator_vk_hash, - actual_operator_vk_hash, - ), - ) -} - -pub fn resolve_operator_vk_hash( - commit_chain_operator_vk_hash: [u8; 32], - actual_operator_vk_hash: [u8; 32], -) -> [u8; 32] { - if commit_chain_operator_vk_hash == commit_chain::LEGACY_OPERATOR_VK_HASH { - actual_operator_vk_hash - } else { - commit_chain_operator_vk_hash - } + (operator_committed_blockhash, constant, included_watchtowers.to_le_bytes::<32>()) } pub fn hash_operator_constant( @@ -499,24 +466,6 @@ pub fn hash_operator_constant( *hash.as_byte_array() } -// zkm_vk_hash: 66 bytes, prefix with '0x' -pub fn zkm_vk_hash_to_raw(vk_hash: &[u8]) -> Result<[u8; 32], String> { - let vk_hash = - std::str::from_utf8(vk_hash).map_err(|err| format!("invalid zkm vk hash UTF-8: {err}"))?; - let Some(hex_hash) = vk_hash.strip_prefix("0x") else { - return Err("zkm vk hash must have 0x prefix".to_string()); - }; - if hex_hash.len() != 64 { - return Err(format!("zkm vk hash must be 64 hex chars, got {}", hex_hash.len())); - } - let bytes = hex::decode(hex_hash).map_err(|err| format!("invalid zkm vk hash hex: {err}"))?; - bytes.try_into().map_err(|_| "zkm vk hash must decode to 32 bytes".to_string()) -} - -pub fn zkm_vk_hash_from_raw(raw: &[u8; 32]) -> Vec { - format!("0x{}", hex::encode(raw)).into_bytes() -} - pub fn hash_partial_binding_witness( constant: [u8; 32], btc_best_block_hash: [u8; 32], @@ -834,20 +783,4 @@ mod tests { assert!(parse_watchtower_commitment(&commitment).is_err()); } - - #[test] - fn test_zkm_vk_hash_to_raw_accepts_prefixed_hash() { - let raw = [0xabu8; 32]; - let prefixed = zkm_vk_hash_from_raw(&raw); - - assert_eq!(zkm_vk_hash_to_raw(&prefixed).unwrap(), raw); - } - - #[test] - fn test_zkm_vk_hash_to_raw_rejects_unprefixed_hash() { - let raw = [0xcdu8; 32]; - let unprefixed = hex::encode(raw); - - assert!(zkm_vk_hash_to_raw(unprefixed.as_bytes()).is_err()); - } } diff --git a/node/src/utils.rs b/node/src/utils.rs index c75f58bc..5a52ad2e 100644 --- a/node/src/utils.rs +++ b/node/src/utils.rs @@ -2137,7 +2137,7 @@ pub async fn get_operator_proof( bail!("operator proof Ziren version does not match configured operator identity"); } - let outputs = decode_operator_public_outputs(&proof.public_values.to_vec(), statement.vk_hash) + let outputs = decode_operator_public_outputs(&proof.public_values.to_vec()) .map_err(|e| anyhow!("invalid operator public outputs: {e}"))?; if outputs.constant != statement.constant { bail!("operator proof constant does not match graph setup");