diff --git a/Makefile b/Makefile index 9e69daaf..48edf84e 100644 --- a/Makefile +++ b/Makefile @@ -10,6 +10,9 @@ export RUST_LOG OPENVM_RUST_TOOLCHAIN ?= nightly-2025-08-18 export OPENVM_RUST_TOOLCHAIN +CENO_RUST_TOOLCHAIN ?= +nightly-2025-11-20 +export CENO_RUST_TOOLCHAIN + # Set GPU config if GPU=1 is set ifeq ($(GPU),1) CARGO_CONFIG_FLAG = --features scroll-zkvm-integration/cuda @@ -86,6 +89,28 @@ prove-zisk-chunk: prove-zisk-chunk-cpu: cd zisk && PATH="$$HOME/.zisk/bin:$$PATH" cargo run --release -p scroll-zkvm-zisk-prover-test -- --circuit chunk --prove --emulator +# ---- Ceno backend (see ceno/AGENTS.md) ---- +CENO_PROVER_FEATURES ?= gpu,jemalloc,aot-x86_64,parallel +CENO_MAX_CELL_PER_SHARD ?= 1245708288 +CENO_CARGO_ENV = CARGO_NET_GIT_FETCH_WITH_CLI=true +CENO_GPU_E2E_ENV = $(CENO_CARGO_ENV) RUSTFLAGS="-C target-feature=+avx2" JEMALLOC_SYS_WITH_MALLOC_CONF=retain:true,background_thread:true,metadata_thp:always,thp:always,dirty_decay_ms:10000,muzzy_decay_ms:10000,abort_conf:true RUST_MIN_STACK=536870912 CENO_EMULATOR_BACKEND=aot CENO_GPU_ENABLE_WITGEN=0 CENO_GPU_WITGEN=0 CENO_CONCURRENT_CHIP_PROVING=1 CENO_GPU_MEM_TRACKING=0 CENO_GPU_CACHE_LEVEL=1 CENO_GPU_JAGGED_RESHAPE_LOG_HEIGHT=23 CENO_GPU_LARGE_TASK_BOOKING_MARGIN_MB=3048 CENO_MAX_CELL_PER_SHARD=$(CENO_MAX_CELL_PER_SHARD) + +build-guest-ceno: + cd ceno && $(CENO_CARGO_ENV) cargo run --release -p scroll-zkvm-build-guest-ceno -- --mode force + cd ceno && $(CENO_CARGO_ENV) RUSTFLAGS="-C target-feature=+avx2" JEMALLOC_SYS_WITH_MALLOC_CONF=retain:true,background_thread:true,metadata_thp:always,thp:always,dirty_decay_ms:10000,muzzy_decay_ms:10000,abort_conf:true cargo build --release -p scroll-zkvm-ceno-prover-test --features $(CENO_PROVER_FEATURES) + +test-e2e-ceno-chunk: + @if [ "$(GPU)" != "1" ]; then echo "GPU=1 is required for Ceno GPU E2E"; exit 1; fi + cd ceno && $(CENO_GPU_E2E_ENV) cargo run --release -p scroll-zkvm-ceno-prover-test --features $(CENO_PROVER_FEATURES) -- --circuit chunk --gpu + +test-e2e-ceno-batch: + @if [ "$(GPU)" != "1" ]; then echo "GPU=1 is required for Ceno GPU E2E"; exit 1; fi + cd ceno && $(CENO_GPU_E2E_ENV) cargo run --release -p scroll-zkvm-ceno-prover-test --features $(CENO_PROVER_FEATURES) -- --circuit batch --gpu + +test-e2e-ceno-bundle: + @if [ "$(GPU)" != "1" ]; then echo "GPU=1 is required for Ceno GPU E2E"; exit 1; fi + cd ceno && $(CENO_GPU_E2E_ENV) cargo run --release -p scroll-zkvm-ceno-prover-test --features $(CENO_PROVER_FEATURES) -- --circuit bundle --gpu + # In-guest recursion PoC: prove the bundle stub, then verify that child proof inside # the batch recursion guest via zisk-verifier. We use the prebuilt emulator (`-l`) because # the ASM microservice path times out on this machine for tiny proofs. diff --git a/ceno/.gitignore b/ceno/.gitignore new file mode 100644 index 00000000..4b724521 --- /dev/null +++ b/ceno/.gitignore @@ -0,0 +1,3 @@ +/target/ +/releases/dev/ceno/*/app +/releases/dev/ceno/prover-test/ diff --git a/ceno/AGENTS.md b/ceno/AGENTS.md new file mode 100644 index 00000000..dc964a3a --- /dev/null +++ b/ceno/AGENTS.md @@ -0,0 +1,30 @@ +# AGENTS.md - Ceno backend + +This directory is an isolated Ceno Cargo workspace. Keep Ceno dependencies and patches here; +do not add Ceno crates to the root OpenVM workspace. + +The workspace uses remote Ceno dependencies in `Cargo.toml`, isolated from the root OpenVM +workspace: + +- `scroll-tech/ceno` on branch `master`. +- `scroll-tech/ceno-gpu` on branch `main`, via the `cuda_hal` patch. This may require + GitHub SSH access on fresh machines. + +Build and validation commands: + +```bash +cd ceno && cargo check --workspace --all-targets +make build-guest-ceno +GPU=1 make test-e2e-ceno-chunk +GPU=1 make test-e2e-ceno-batch +GPU=1 make test-e2e-ceno-bundle +``` + +`GPU=1` is required for E2E proof commands. CPU fallback is intentionally rejected so the +commands fail loudly when GPU proving is unavailable. + +Artifact layout: + +- `ceno/releases/dev/ceno/{chunk,batch,bundle}/app` - compiled Ceno guest ELFs. +- `ceno/releases/dev/ceno/prover-test//` - hints, app proofs, root proof, + verifying-key metadata, and public-output digests. diff --git a/ceno/Cargo.lock b/ceno/Cargo.lock new file mode 100644 index 00000000..82d72f54 --- /dev/null +++ b/ceno/Cargo.lock @@ -0,0 +1,8964 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "abi_stable" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69d6512d3eb05ffe5004c59c206de7f99c34951504056ce23fc953842f12c445" +dependencies = [ + "abi_stable_derive", + "abi_stable_shared", + "const_panic", + "core_extensions", + "crossbeam-channel", + "generational-arena", + "libloading 0.7.4", + "lock_api", + "parking_lot", + "paste", + "repr_offset", + "rustc_version 0.4.1", + "serde", + "serde_derive", + "serde_json", +] + +[[package]] +name = "abi_stable_derive" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7178468b407a4ee10e881bc7a328a65e739f0863615cca4429d43916b05e898" +dependencies = [ + "abi_stable_shared", + "as_derive_utils", + "core_extensions", + "proc-macro2", + "quote", + "rustc_version 0.4.1", + "syn 1.0.109", + "typed-arena", +] + +[[package]] +name = "abi_stable_shared" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2b5df7688c123e63f4d4d649cba63f2967ba7f7861b1664fca3f77d3dad2b63" +dependencies = [ + "core_extensions", +] + +[[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 = "aead" +version = "0.6.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac8202ab55fcbf46ca829833f347a82a2a4ce0596f0304ac322c2d100030cd56" +dependencies = [ + "crypto-common 0.2.0-rc.4", + "inout", +] + +[[package]] +name = "aes" +version = "0.9.0-rc.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e713c57c2a2b19159e7be83b9194600d7e8eb3b7c2cd67e671adf47ce189a05" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures 0.2.17", +] + +[[package]] +name = "aes-gcm" +version = "0.11.0-rc.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2be322be4a73a3a55ad74b9833238e76bfd6034ce69a05c1b41c879f6a3bdca6" +dependencies = [ + "aead", + "aes", + "cipher", + "ctr", + "ghash", + "subtle", +] + +[[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 0.7.6", + "serde", + "strum 0.27.2", +] + +[[package]] +name = "alloy-consensus" +version = "1.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f16daaf7e1f95f62c6c3bf8a3fc3d78b08ae9777810c0bb5e94966c7cd57ef0" +dependencies = [ + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "alloy-serde", + "alloy-trie 0.9.5", + "alloy-tx-macros", + "auto_impl", + "borsh", + "c-kzg", + "derive_more 2.1.1", + "either", + "k256 0.13.4 (registry+https://github.com/rust-lang/crates.io-index)", + "once_cell", + "rand 0.8.7", + "secp256k1 0.30.0", + "serde", + "serde_json", + "serde_with", + "thiserror 2.0.18", +] + +[[package]] +name = "alloy-consensus-any" +version = "1.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "118998d9015332ab1b4720ae1f1e3009491966a0349938a1f43ff45a8a4c6299" +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 0.13.4 (registry+https://github.com/rust-lang/crates.io-index)", + "serde", + "serde_with", + "thiserror 2.0.18", +] + +[[package]] +name = "alloy-eip7928" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b827a6d7784fe3eb3489d40699407a4cdcce74271421a01bdffe60cf573bb16" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "borsh", + "once_cell", + "serde", + "thiserror 2.0.18", +] + +[[package]] +name = "alloy-eips" +version = "1.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6ef28c9fdad22d4eec52d894f5f2673a0895f1e5ef196734568e68c0f6caca8" +dependencies = [ + "alloy-eip2124", + "alloy-eip2930", + "alloy-eip7702", + "alloy-eip7928", + "alloy-primitives", + "alloy-rlp", + "alloy-serde", + "auto_impl", + "borsh", + "c-kzg", + "derive_more 2.1.1", + "either", + "ethereum_ssz", + "ethereum_ssz_derive", + "serde", + "serde_with", + "sha2", +] + +[[package]] +name = "alloy-evm" +version = "0.22.2" +source = "git+https://github.com/alloy-rs/alloy-evm?tag=v0.22.2#c8ee26507257a18921814c66a67644c18cb2aba8" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-hardforks", + "alloy-primitives", + "alloy-rpc-types-engine", + "alloy-rpc-types-eth", + "alloy-sol-types", + "auto_impl", + "derive_more 2.1.1", + "op-alloy-consensus", + "op-alloy-rpc-types-engine", + "op-revm", + "revm 30.1.1", + "thiserror 2.0.18", +] + +[[package]] +name = "alloy-genesis" +version = "1.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbf9480307b09d22876efb67d30cadd9013134c21f3a17ec9f93fd7536d38024" +dependencies = [ + "alloy-eips", + "alloy-primitives", + "alloy-serde", + "alloy-trie 0.9.5", + "borsh", + "serde", + "serde_with", +] + +[[package]] +name = "alloy-hardforks" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83ba208044232d14d4adbfa77e57d6329f51bc1acc21f5667bb7db72d88a0831" +dependencies = [ + "alloy-chains", + "alloy-eip2124", + "alloy-primitives", + "auto_impl", + "dyn-clone", + "serde", +] + +[[package]] +name = "alloy-json-abi" +version = "1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9dbe713da0c737d9e5e387b0ba790eb98b14dd207fe53eef50e19a5a8ec3dac" +dependencies = [ + "alloy-primitives", + "alloy-sol-type-parser", + "serde", + "serde_json", +] + +[[package]] +name = "alloy-network-primitives" +version = "1.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb82711d59a43fdfd79727c99f270b974c784ec4eb5728a0d0d22f26716c87ef" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-serde", + "serde", +] + +[[package]] +name = "alloy-primitives" +version = "1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de3b431b4e72cd8bd0ec7a50b4be18e73dab74de0dba180eef171055e5d5926e" +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 0.13.4 (registry+https://github.com/rust-lang/crates.io-index)", + "keccak-asm", + "paste", + "proptest", + "rand 0.9.5", + "rapidhash", + "ruint", + "rustc-hash", + "serde", + "sha3", +] + +[[package]] +name = "alloy-rlp" +version = "0.3.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24671b1f62edcf0f9b62994c7bf72cd621a04a4b99f5020ece1a647b40e2f103" +dependencies = [ + "alloy-rlp-derive", + "arrayvec", + "bytes", +] + +[[package]] +name = "alloy-rlp-derive" +version = "0.3.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d4311c03125e8a18296504560b9de3d75ecbd0dcda7f71e6cf2a196d57e6fba" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "alloy-rpc-types-debug" +version = "1.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2145138f3214928f08cd13da3cb51ef7482b5920d8ac5a02ecd4e38d1a8f6d1e" +dependencies = [ + "alloy-primitives", + "derive_more 2.1.1", + "serde", + "serde_with", +] + +[[package]] +name = "alloy-rpc-types-engine" +version = "1.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb9b97b6e7965679ad22df297dda809b11cebc13405c1b537e5cffecc95834fa" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "alloy-serde", + "derive_more 2.1.1", + "ethereum_ssz", + "ethereum_ssz_derive", + "serde", + "strum 0.27.2", +] + +[[package]] +name = "alloy-rpc-types-eth" +version = "1.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59c095f92c4e1ff4981d89e9aa02d5f98c762a1980ab66bec49c44be11349da2" +dependencies = [ + "alloy-consensus", + "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.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11ece63b89294b8614ab3f483560c08d016930f842bf36da56bf0b764a15c11e" +dependencies = [ + "alloy-primitives", + "serde", + "serde_json", +] + +[[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.119", +] + +[[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 0.5.0", + "indexmap 2.14.0", + "proc-macro-error2", + "proc-macro2", + "quote", + "sha3", + "syn 2.0.119", + "syn-solidity", +] + +[[package]] +name = "alloy-sol-macro-input" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89bf01077f18650876cfa682eb1f949967b5cde03f1a51c955c469d2c9b4aa67" +dependencies = [ + "const-hex", + "dunce", + "heck 0.5.0", + "macro-string", + "proc-macro2", + "quote", + "syn 2.0.119", + "syn-solidity", +] + +[[package]] +name = "alloy-sol-type-parser" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "857b470ecdd2ed38beaf82ad1a38c516a8ff75266750f38b9eeed001d575241b" +dependencies = [ + "serde", + "winnow 1.0.4", +] + +[[package]] +name = "alloy-sol-types" +version = "1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64612d29379782a5dde6f4b6570d9c756d734d760c0c94c254d361e678a6591f" +dependencies = [ + "alloy-json-abi", + "alloy-primitives", + "alloy-sol-macro", + "serde", +] + +[[package]] +name = "alloy-trie" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "983d99aa81f586cef9dae38443245e585840fcf0fc58b09aee0b1f27aed1d500" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "arrayvec", + "derive_more 2.1.1", + "nybbles 0.3.4", + "serde", + "smallvec", + "tracing", +] + +[[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 0.4.8", + "serde", + "smallvec", + "thiserror 2.0.18", + "tracing", +] + +[[package]] +name = "alloy-tx-macros" +version = "1.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d69722eddcdf1ce096c3ab66cf8116999363f734eb36fe94a148f4f71c85da84" +dependencies = [ + "darling 0.23.0", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[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 0.61.2", +] + +[[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 0.61.2", +] + +[[package]] +name = "anyhow" +version = "1.0.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a4385e2e34eb35d6b3efe798b9eb88096925d87726c0798709bf56d9ed84af3" + +[[package]] +name = "ark-bls12-381" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3df4dcc01ff89867cd86b0da835f23c3f02738353aaee7dde7495af71363b8d5" +dependencies = [ + "ark-ec", + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", +] + +[[package]] +name = "ark-bn254" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d69eab57e8d2663efa5c63135b2af4f396d66424f88954c21104125ab6b3e6bc" +dependencies = [ + "ark-ec", + "ark-ff 0.5.0", + "ark-r1cs-std", + "ark-std 0.5.0", +] + +[[package]] +name = "ark-ec" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43d68f2d516162846c1238e755a7c4d131b892b70cc70c471a8e3ca3ed818fce" +dependencies = [ + "ahash", + "ark-ff 0.5.0", + "ark-poly", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "educe", + "fnv", + "hashbrown 0.15.5", + "itertools 0.13.0", + "num-bigint 0.4.8", + "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.8", + "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.8", + "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.8", + "num-traits", + "paste", + "zeroize", +] + +[[package]] +name = "ark-ff" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7a806ac6c8307b929df4645776290a50ee2aac754ad09d8bdf73391309e43af" +dependencies = [ + "ark-ff-asm 0.6.0", + "ark-ff-macros 0.6.0", + "ark-serialize 0.6.0", + "ark-std 0.6.0", + "digest 0.10.7", + "educe", + "num-bigint 0.4.8", + "num-traits", + "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.119", +] + +[[package]] +name = "ark-ff-asm" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1479009684adc073dff49a1025d3a7065b317a9ead25aaaca38cdc70058ba8a2" +dependencies = [ + "quote", + "syn 2.0.119", +] + +[[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.8", + "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.8", + "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.8", + "num-traits", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "ark-ff-macros" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a0691ed21ef00ef89c1e9bda832eba493dda3ec2f8d892fb25b705f73f06bb8" +dependencies = [ + "num-bigint 0.4.8", + "num-traits", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "ark-poly" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "579305839da207f02b89cd1679e50e67b4331e2f9294a57693e5051b7703fe27" +dependencies = [ + "ahash", + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "educe", + "fnv", + "hashbrown 0.15.5", +] + +[[package]] +name = "ark-r1cs-std" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "941551ef1df4c7a401de7068758db6503598e6f01850bdb2cfdb614a1f9dbea1" +dependencies = [ + "ark-ec", + "ark-ff 0.5.0", + "ark-relations", + "ark-std 0.5.0", + "educe", + "num-bigint 0.4.8", + "num-integer", + "num-traits", + "tracing", +] + +[[package]] +name = "ark-relations" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec46ddc93e7af44bcab5230937635b06fb5744464dd6a7e7b083e80ebd274384" +dependencies = [ + "ark-ff 0.5.0", + "ark-std 0.5.0", + "tracing", + "tracing-subscriber 0.2.25", +] + +[[package]] +name = "ark-serialize" +version = "0.3.0" +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.8", +] + +[[package]] +name = "ark-serialize" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f4d068aaf107ebcd7dfb52bc748f8030e0fc930ac8e360146ca54c1203088f7" +dependencies = [ + "ark-serialize-derive 0.5.0", + "ark-std 0.5.0", + "arrayvec", + "digest 0.10.7", + "num-bigint 0.4.8", +] + +[[package]] +name = "ark-serialize" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a74dd304fd536fb95d0a328e72be759209cc496a9da094c5bc56e5fea4f9e86b" +dependencies = [ + "ark-serialize-derive 0.6.0", + "ark-std 0.6.0", + "digest 0.10.7", + "num-bigint 0.4.8", + "serde_with", +] + +[[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.119", +] + +[[package]] +name = "ark-serialize-derive" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f153690697a2b91e5e1251ff98411ee5371500a111a0fd317a70e588eb300f9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[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.7", +] + +[[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.7", +] + +[[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.7", +] + +[[package]] +name = "ark-std" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "367c9c827ed431bff6868b7aa926e05b16eb46603cc8b6e768e4a5553fa1d155" +dependencies = [ + "num-traits", + "rand 0.8.7", +] + +[[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.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56" +dependencies = [ + "serde", +] + +[[package]] +name = "as_derive_utils" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff3c96645900a44cf11941c111bd08a6573b0e2f9f69bc9264b179d8fae753c4" +dependencies = [ + "core_extensions", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[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.119", +] + +[[package]] +name = "autocfg" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" + +[[package]] +name = "az" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be5eb007b7cacc6c660343e96f650fedf4b5a77512399eb952ca6642cf8d13f7" + +[[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 = "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 = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + +[[package]] +name = "bincode" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36eaf5d7b090263e8150820482d5d93cd964a81e4019913c972f4edcc6edb740" +dependencies = [ + "bincode_derive", + "serde", + "unty", +] + +[[package]] +name = "bincode_derive" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf95709a440f45e986983918d0e8a1f30a9b1df04918fc828670606804ac3c09" +dependencies = [ + "virtue", +] + +[[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 = "bitcode" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a6ed1b54d8dc333e7be604d00fa9262f4635485ffea923647b6521a5fff045d" +dependencies = [ + "bitcode_derive", + "bytemuck", + "serde", +] + +[[package]] +name = "bitcode_derive" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "238b90427dfad9da4a9abd60f3ec1cdee6b80454bde49ed37f1781dd8e9dc7f9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "bitcoin-consensus-encoding" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "207311705279250ba465076a1bac4b1ac982855fff73fc5f67e22158ac58cdc9" +dependencies = [ + "bitcoin-internals", + "hex-conservative 1.2.0", + "serde", +] + +[[package]] +name = "bitcoin-internals" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d573f4cf32996a8dce612e4348cece65a241f1882ed594047c9ba348e8869fa5" + +[[package]] +name = "bitcoin-io" +version = "0.1.101" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb5de036369d1ac59d3c1819ebc4d850f89466f5401c571a285b6ed564a4cb78" +dependencies = [ + "bitcoin-consensus-encoding", +] + +[[package]] +name = "bitcoin_hashes" +version = "0.14.101" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bca4c7abb40c8817d77403c880988cfd484f23ab2365726afb2f798363e2c4a2" +dependencies = [ + "bitcoin-io", + "hex-conservative 0.2.2", +] + +[[package]] +name = "bitflags" +version = "2.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8" +dependencies = [ + "serde_core", +] + +[[package]] +name = "bitstream-io" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6099cdc01846bc367c4e7dd630dc5966dccf36b652fae7a74e17b640411a91b2" + +[[package]] +name = "bitvec" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddcec3d12c579d40898fe0a9a358a803c23e9c52ca3c425707f81c9436211837" +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 = "blake3" +version = "1.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0aa83c34e62843d924f905e0f5c866eb1dd6545fc4d719e803d9ba6030371fce" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", + "cpufeatures 0.3.0", +] + +[[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 = "block-buffer" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96eb4cdd6cf1b31d671e9efe75c5d1ec614776856cefbe109ca373554a6d514f" +dependencies = [ + "hybrid-array", +] + +[[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/sp1-patches/bls12_381?tag=patch-0.8.0-sp1-6.2.0#9e4e2ae4780d3d69cecbec000f5e814df2392468" +dependencies = [ + "cfg-if", + "ff 0.13.1", + "group 0.13.0", + "pairing 0.23.0", + "rand_core 0.6.4", + "sp1-lib", + "subtle", +] + +[[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.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f3f6da4992df95bbcd9af42a6c7dcb994498fc9048230405f3b36ff7cd3f145" +dependencies = [ + "borsh-derive", + "bytes", + "cfg_aliases", +] + +[[package]] +name = "borsh-derive" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ae8fb4fb5740e4b2c4884ff95f5f32f5e8479db1e8fd8eb49ddbe09eb09bb7c" +dependencies = [ + "once_cell", + "proc-macro-crate 3.5.0", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "bs58" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "bumpalo" +version = "3.20.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" + +[[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.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6aedf8ae72766347502cf3cb4f41cf5e9cc37d28bee90f1fdaaae15f9cf9424" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc652a48c352aef3ea3aed32080501cf3ef6ed5da78602a020c991775b0aff04" +dependencies = [ + "serde", +] + +[[package]] +name = "bytesize" +version = "2.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d7c8918969267b2932ffd5655509bbbea0833823058c378876953217f5fc50e" + +[[package]] +name = "c-kzg" +version = "2.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38d04308254695569fdb9bfe3bacc1c91837a670d0806605eb82d63748fbd3a6" +dependencies = [ + "blst", + "cc", + "glob", + "hex", + "libc", + "once_cell", + "serde", +] + +[[package]] +name = "camino" +version = "1.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f2d30e4173c4026932d51d31d6b0613b1fd3014bf3f9f8943d4ba139c437ba0" +dependencies = [ + "serde_core", +] + +[[package]] +name = "cargo-ceno" +version = "0.1.0" +source = "git+https://github.com/scroll-tech/ceno.git?branch=master#92a4c085f6ad0fc54dff4e7872a338efe45029f3" +dependencies = [ + "anyhow", + "bincode 1.3.3", + "cargo_metadata 0.19.2", + "ceno_emul", + "ceno_host", + "ceno_recursion_v2", + "ceno_zkvm", + "clap", + "console", + "ff_ext", + "get_dir", + "gkr_iop", + "mpcs", + "parse-size", + "serde", + "tempfile", + "tikv-jemallocator", + "tracing", + "tracing-forest", + "tracing-subscriber 0.3.23", + "vergen-git2", +] + +[[package]] +name = "cargo-platform" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo-platform" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd0061da739915fae12ea00e16397555ed4371a6bb285431aab930f61b0aa4ba" +dependencies = [ + "serde", + "serde_core", +] + +[[package]] +name = "cargo_metadata" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd5eb614ed4c27c5d706420e4320fbe3216ab31fa1c33cd8246ac36dae4479ba" +dependencies = [ + "camino", + "cargo-platform 0.1.9", + "semver 1.0.28", + "serde", + "serde_json", + "thiserror 2.0.18", +] + +[[package]] +name = "cargo_metadata" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef987d17b0a113becdd19d3d0022d04d7ef41f9efe4f3fb63ac44ba61df3ade9" +dependencies = [ + "camino", + "cargo-platform 0.3.3", + "semver 1.0.28", + "serde", + "serde_json", + "thiserror 2.0.18", +] + +[[package]] +name = "cc" +version = "1.2.67" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e17dd265a7d0f31ef544e1b20e03add05d3b45b491b633b10d67145d2acc1a38" +dependencies = [ + "find-msvc-tools", + "jobserver", + "libc", + "shlex", +] + +[[package]] +name = "ceno-examples" +version = "0.1.0" +source = "git+https://github.com/scroll-tech/ceno.git?branch=master#92a4c085f6ad0fc54dff4e7872a338efe45029f3" +dependencies = [ + "glob", +] + +[[package]] +name = "ceno_crypto_primitives" +version = "0.1.0" +source = "git+https://github.com/scroll-tech/ceno-patch.git?branch=main#6e90bc85bceefe09003f84ca5cc1afbe2911a2db" +dependencies = [ + "ceno_syscall", + "elliptic-curve", +] + +[[package]] +name = "ceno_emul" +version = "0.1.0" +source = "git+https://github.com/scroll-tech/ceno.git?branch=master#92a4c085f6ad0fc54dff4e7872a338efe45029f3" +dependencies = [ + "anyhow", + "ceno_rt", + "ceno_syscall", + "elf", + "ff_ext", + "itertools 0.13.0", + "k256 0.13.4 (git+https://github.com/scroll-tech/elliptic-curves?branch=ceno%2Fk256-13.4)", + "libloading 0.8.9", + "multilinear_extensions", + "num", + "num-derive", + "num-traits", + "once_cell", + "p256 0.13.2 (git+https://github.com/scroll-tech/elliptic-curves?branch=ceno%2Fk256-13.4)", + "rayon", + "rrs-succinct", + "rustc-hash", + "secp", + "serde", + "smallvec", + "sp1-curves", + "strum 0.26.3", + "strum_macros 0.26.4", + "substrate-bn", + "tempfile", + "tiny-keccak", + "tracing", + "typenum", +] + +[[package]] +name = "ceno_host" +version = "0.1.0" +source = "git+https://github.com/scroll-tech/ceno.git?branch=master#92a4c085f6ad0fc54dff4e7872a338efe45029f3" +dependencies = [ + "anyhow", + "ceno_emul", + "ceno_serde", + "itertools 0.13.0", + "serde", + "tiny-keccak", +] + +[[package]] +name = "ceno_recursion_v2" +version = "0.1.0" +source = "git+https://github.com/scroll-tech/ceno.git?branch=master#92a4c085f6ad0fc54dff4e7872a338efe45029f3" +dependencies = [ + "bincode 1.3.3", + "bincode 2.0.1", + "ceno-examples", + "ceno_emul", + "ceno_host", + "ceno_zkvm", + "clap", + "derive-new 0.6.0", + "eyre", + "ff_ext", + "gkr_iop", + "itertools 0.13.0", + "mpcs", + "multilinear_extensions", + "openvm", + "openvm-circuit", + "openvm-circuit-primitives", + "openvm-continuations", + "openvm-cpu-backend", + "openvm-cuda-backend", + "openvm-cuda-builder", + "openvm-cuda-common", + "openvm-poseidon2-air", + "openvm-recursion-circuit", + "openvm-recursion-circuit-derive", + "openvm-stark-backend", + "openvm-stark-sdk", + "openvm-verify-stark-host", + "p3", + "p3-air", + "p3-field 0.4.3", + "p3-matrix 0.4.3", + "p3-maybe-rayon 0.4.3", + "p3-symmetric 0.4.3", + "parse-size", + "rand 0.8.7", + "serde", + "serde_json", + "strum 0.26.3", + "strum_macros 0.26.4", + "sumcheck", + "tracing", + "tracing-forest", + "tracing-subscriber 0.3.23", + "transcript", + "whir", + "witness", +] + +[[package]] +name = "ceno_rt" +version = "0.1.0" +source = "git+https://github.com/scroll-tech/ceno.git?branch=master#92a4c085f6ad0fc54dff4e7872a338efe45029f3" +dependencies = [ + "ceno_serde", + "ceno_syscall", + "getrandom 0.2.17", + "getrandom 0.3.4", + "serde", + "tiny-keccak", +] + +[[package]] +name = "ceno_serde" +version = "0.1.0" +source = "git+https://github.com/scroll-tech/ceno.git?branch=master#92a4c085f6ad0fc54dff4e7872a338efe45029f3" +dependencies = [ + "bytemuck", + "serde", +] + +[[package]] +name = "ceno_syscall" +version = "0.1.0" +source = "git+https://github.com/scroll-tech/ceno-patch.git?branch=main#6e90bc85bceefe09003f84ca5cc1afbe2911a2db" + +[[package]] +name = "ceno_zkvm" +version = "0.1.0" +source = "git+https://github.com/scroll-tech/ceno.git?branch=master#92a4c085f6ad0fc54dff4e7872a338efe45029f3" +dependencies = [ + "arrayref", + "base64", + "bincode 1.3.3", + "ceno-examples", + "ceno_emul", + "ceno_host", + "cfg-if", + "clap", + "crossbeam", + "cuda_hal", + "derive", + "either", + "ff_ext", + "generic-array 1.4.4", + "generic_static", + "gkr_iop", + "glob", + "itertools 0.13.0", + "metrics", + "mpcs", + "multilinear_extensions", + "ndarray", + "num", + "num-bigint 0.4.8", + "once_cell", + "p3", + "parse-size", + "poseidon", + "prettytable-rs", + "rand 0.8.7", + "rayon", + "rustc-hash", + "serde", + "serde_json", + "smallvec", + "sp1-curves", + "strum 0.26.3", + "strum_macros 0.26.4", + "sumcheck", + "tempfile", + "tikv-jemalloc-ctl", + "tikv-jemallocator", + "tiny-keccak", + "tracing", + "tracing-forest", + "tracing-subscriber 0.3.23", + "transcript", + "typenum", + "whir", + "witness", +] + +[[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.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1aa79e62e7697b8e29b513a68abacf485adcd1fe8284a4316c5ae868e6633327" +dependencies = [ + "iana-time-zone", + "num-traits", + "serde", + "windows-link", +] + +[[package]] +name = "cipher" +version = "0.5.0-rc.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e12a13eb01ded5d32ee9658d94f553a19e804204f2dc811df69ab4d9e0cb8c7" +dependencies = [ + "block-buffer 0.11.0", + "crypto-common 0.2.0-rc.4", + "inout", +] + +[[package]] +name = "clap" +version = "4.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ddb117e43bbf7dacf0a4190fef4d345b9bad68dfc649cb349e7d17d28428e51" +dependencies = [ + "clap_builder", + "clap_derive", +] + +[[package]] +name = "clap_builder" +version = "4.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f" +dependencies = [ + "anstream", + "anstyle", + "clap_lex", + "strsim", +] + +[[package]] +name = "clap_derive" +version = "4.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2ce8604710f6733aa641a2b3731eaa1e8b3d9973d5e3565da11800813f997a9" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "clap_lex" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9" + +[[package]] +name = "cobs" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fa961b519f0b462e3a3b4a34b64d119eeaca1d59af726fe450bbba07a9fc0a1" +dependencies = [ + "thiserror 2.0.18", +] + +[[package]] +name = "colorchoice" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" + +[[package]] +name = "console" +version = "0.15.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8" +dependencies = [ + "encode_unicode", + "libc", + "once_cell", + "unicode-width 0.2.2", + "windows-sys 0.59.0", +] + +[[package]] +name = "const-hex" +version = "1.19.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33e2a781ebdf4467d1428dc4593067825fb646f6871475098d8577421af73558" +dependencies = [ + "cfg-if", + "cpufeatures 0.2.17", + "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 = "const_panic" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e262cdaac42494e3ae34c43969f9cdeb7da178bdb4b66fa6a1ea2edb4c8ae652" +dependencies = [ + "typewit", +] + +[[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 = "core_extensions" +version = "1.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42bb5e5d0269fd4f739ea6cedaf29c16d81c27a7ce7582008e90eb50dcd57003" +dependencies = [ + "core_extensions_proc_macros", +] + +[[package]] +name = "core_extensions_proc_macros" +version = "1.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "533d38ecd2709b7608fb8e18e4504deb99e9a72879e6aa66373a76d8dc4259ea" + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "cpufeatures" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b2a41393f66f16b0823bb79094d54ac5fbd34ab292ddafb9a0456ac9f87d201" +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" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1137cd7e7fc0fb5d3c5a8678be38ec56e819125d8d7907411fe24ccb943faca8" +dependencies = [ + "crossbeam-channel", + "crossbeam-deque", + "crossbeam-epoch", + "crossbeam-queue", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d85363c37faeca707aef026efa9f3b34d077bce547e48f770770625c6013679e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5181e0de7b61eb03a81e347d6dd8797bae9da5146707b51077e2d71a54ec0ceb" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d6914041f254d6e9176c01941b21115dcfb7089e55135a35411081bd106ef3f" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-queue" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "803d13fb3b09d88be9f4dbc29062c66b19bf7170867ceb746d2a8689bf6c7a26" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61803da095bee82a81bb1a452ecc25d3b2f1416d1897eb86430c6159ef717c17" + +[[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 = "crypto-common" +version = "0.2.0-rc.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a8235645834fbc6832939736ce2f2d08192652269e11010a6240f61b908a1c6" +dependencies = [ + "hybrid-array", + "rand_core 0.9.5", +] + +[[package]] +name = "csv" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52cd9d68cf7efc6ddfaaee42e7288d3a99d613d4b50f76ce9827ae0c6e14f938" +dependencies = [ + "csv-core", + "itoa", + "ryu", + "serde_core", +] + +[[package]] +name = "csv-core" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "704a3c26996a80471189265814dbc2c257598b96b8a7feae2d31ace646bb9782" +dependencies = [ + "memchr", +] + +[[package]] +name = "ctor" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67773048316103656a637612c4a62477603b777d91d9c62ff2290f9cde178fdb" +dependencies = [ + "ctor-proc-macro", + "dtor", +] + +[[package]] +name = "ctor-proc-macro" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2931af7e13dc045d8e9d26afccc6fa115d64e115c9c84b1166288b46f6782c2" + +[[package]] +name = "ctr" +version = "0.10.0-rc.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27e41d01c6f73b9330177f5cf782ae5b581b5f2c7840e298e0275ceee5001434" +dependencies = [ + "cipher", +] + +[[package]] +name = "cuda-config" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ee74643f7430213a1a78320f88649de309b20b80818325575e393f848f79f5d" +dependencies = [ + "glob", +] + +[[package]] +name = "cuda-runtime-sys" +version = "0.3.0-alpha.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d070b301187fee3c611e75a425cf12247b7c75c09729dbdef95cb9cb64e8c39" +dependencies = [ + "cuda-config", +] + +[[package]] +name = "cuda_hal" +version = "0.1.0" +source = "git+ssh://git@github.com/scroll-tech/ceno-gpu.git?branch=main#8ecb4a4047bae2842147b9c55351bf38d58d45a6" +dependencies = [ + "anyhow", + "cuda-runtime-sys", + "cudarc", + "downcast-rs", + "either", + "ff_ext", + "itertools 0.13.0", + "mpcs", + "multilinear_extensions", + "p3", + "rand 0.8.7", + "rayon", + "sha2", + "sppark", + "sppark_plug", + "sumcheck", + "thiserror 1.0.69", + "tracing", + "transcript", + "witness", +] + +[[package]] +name = "cudarc" +version = "0.17.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf99ab37ee7072d64d906aa2dada9a3422f1d975cdf8c8055a573bc84897ed8" +dependencies = [ + "libloading 0.8.9", +] + +[[package]] +name = "darling" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" +dependencies = [ + "darling_core 0.20.11", + "darling_macro 0.20.11", +] + +[[package]] +name = "darling" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d" +dependencies = [ + "darling_core 0.23.0", + "darling_macro 0.23.0", +] + +[[package]] +name = "darling_core" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.119", +] + +[[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", + "serde", + "strsim", + "syn 2.0.119", +] + +[[package]] +name = "darling_macro" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" +dependencies = [ + "darling_core 0.20.11", + "quote", + "syn 2.0.119", +] + +[[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.119", +] + +[[package]] +name = "dashmap" +version = "6.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6361d5c062261c78a176addb82d4c821ae42bed6089de0e12603cd25de2059c" +dependencies = [ + "cfg-if", + "crossbeam-utils", + "hashbrown 0.14.5", + "lock_api", + "once_cell", + "parking_lot_core", +] + +[[package]] +name = "dashu" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2abd8afe341960b41652e47571cbdf3cd83d76b8eaaa2f2b59e51fc0ea445e5" +dependencies = [ + "dashu-base", + "dashu-float", + "dashu-int", + "dashu-macros", + "dashu-ratio", + "rustversion", +] + +[[package]] +name = "dashu-base" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "993b95dc1b248e3f5747dcb017a41d6e75853a2e5ee4504f7d537c5b8dffdae4" + +[[package]] +name = "dashu-float" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "779046eff25a959dd58c8d876dc9673ef2eaebd184fadf7313e27f73a10dd9bd" +dependencies = [ + "dashu-base", + "dashu-int", + "num-modular", + "num-order", + "rustversion", + "static_assertions", +] + +[[package]] +name = "dashu-int" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49c05a0d5cb0b39fcc87c46432fdac24b90dce239857c7f6b798be4ffc3c42c6" +dependencies = [ + "cfg-if", + "dashu-base", + "num-modular", + "num-order", + "rustversion", + "static_assertions", +] + +[[package]] +name = "dashu-macros" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a89dbf51c81b22b30a0a30a4fcff84c4af8bdcd7a6159a556007b0b2dabc1e79" +dependencies = [ + "dashu-base", + "dashu-float", + "dashu-int", + "dashu-ratio", + "pastey", + "proc-macro2", + "quote", + "rustversion", +] + +[[package]] +name = "dashu-ratio" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b420c8782f033bd96a6ac8b8c2bfad184d44b6d58adffe36a6ae8633ff7662b2" +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 = [ + "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" +version = "0.1.0" +source = "git+https://github.com/scroll-tech/ceno.git?branch=master#92a4c085f6ad0fc54dff4e7872a338efe45029f3" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "derive-new" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d150dea618e920167e5973d70ae6ece4385b7164e0d799fe7c122dd0a5d912ad" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "derive-new" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2cdc8d50f426189eef89dac62fabfa0abb27d5cc008f25bf4156a0203325becc" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[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.119", +] + +[[package]] +name = "derive_builder" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "507dfb09ea8b7fa618fcf76e953f4f5e192547945816d5358edffe39f6f94947" +dependencies = [ + "derive_builder_macro", +] + +[[package]] +name = "derive_builder_core" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d5bcf7b024d6835cfb3d473887cd966994907effbe9227e8c8219824d06c4e8" +dependencies = [ + "darling 0.20.11", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "derive_builder_macro" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" +dependencies = [ + "derive_builder_core", + "syn 2.0.119", +] + +[[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.119", + "unicode-xid", +] + +[[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.119", + "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 0.1.6", + "subtle", +] + +[[package]] +name = "dirs-next" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" +dependencies = [ + "cfg-if", + "dirs-sys-next", +] + +[[package]] +name = "dirs-sys-next" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" +dependencies = [ + "libc", + "redox_users", + "winapi", +] + +[[package]] +name = "displaydoc" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ac70aa55017e108007fbaf5aa0f54b021c98f92ff8af59d42eda9da96e3dd4f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "downcast-rs" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" + +[[package]] +name = "dtor" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "404d02eeb088a82cfd873006cb713fe411306c7d182c344905e101fb1167d301" +dependencies = [ + "dtor-proc-macro", +] + +[[package]] +name = "dtor-proc-macro" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f678cf4a922c215c63e0de95eb1ff08a958a81d47e485cf9da1e27bf6305cfa5" + +[[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 = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +dependencies = [ + "der", + "digest 0.10.7", + "elliptic-curve", + "rfc6979 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serdect", + "signature", + "spki", +] + +[[package]] +name = "ecdsa" +version = "0.16.9" +source = "git+https://github.com/sp1-patches/signatures.git?tag=patch-16.9-sp1-4.1.0#1880299a48fe7ef249edaa616fd411239fb5daf1" +dependencies = [ + "der", + "digest 0.10.7", + "elliptic-curve", + "rfc6979 0.4.0 (git+https://github.com/sp1-patches/signatures.git?tag=patch-16.9-sp1-4.1.0)", + "signature", + "spki", +] + +[[package]] +name = "ecies" +version = "0.1.0" +source = "git+https://github.com/scroll-tech/ecies-rs#e32a93f736aac2158bf5982b8e4786b82be8b854" +dependencies = [ + "aes-gcm", + "digest 0.10.7", + "hkdf", + "k256 0.13.4 (registry+https://github.com/rust-lang/crates.io-index)", + "sha2", + "thiserror 2.0.18", +] + +[[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.119", +] + +[[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 = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + +[[package]] +name = "embedded-io" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d" + +[[package]] +name = "encode_unicode" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" + +[[package]] +name = "encoder-standard" +version = "0.1.0" +source = "git+https://github.com/scroll-tech/da-codec.git#54929786434f00efd00431517a332f1ec8ca58d4" +dependencies = [ + "zstd", +] + +[[package]] +name = "endian-type" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d" + +[[package]] +name = "enum-ordinalize" +version = "4.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07f808d588c10e464ea6f7d3eaed500049eff30aaac103460f61828c2d65b3eb" +dependencies = [ + "enum-ordinalize-derive", +] + +[[package]] +name = "enum-ordinalize-derive" +version = "4.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42e528e2d34ba8a67a1a650b86beae8ef69fc5fdb638016f386b973226590432" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "enumn" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f9ed6b3789237c8a0c1c505af1c7eb2c560df6186f01b098c3a1064ea532f38" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[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 0.61.2", +] + +[[package]] +name = "ethereum_serde_utils" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38df44a7a271ab43835678f9215b53cc2523e4714a215da6643d83dc110245da" +dependencies = [ + "alloy-primitives", + "hex", + "serde", + "serde_derive", + "serde_json", +] + +[[package]] +name = "ethereum_ssz" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dcddb2554d19cde19b099fadddde576929d7a4d0c1cd3512d1fd95cf174375c" +dependencies = [ + "alloy-primitives", + "ethereum_serde_utils", + "itertools 0.13.0", + "serde", + "serde_derive", + "smallvec", + "typenum", +] + +[[package]] +name = "ethereum_ssz_derive" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a657b6b3b7e153637dc6bdc6566ad9279d9ee11a15b12cfb24a2e04360637e9f" +dependencies = [ + "darling 0.20.11", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[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 = "ff_ext" +version = "0.1.0" +source = "git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.34#74efcb2499c036bf8a1c0bc8cb10a5fdcdca0cd2" +dependencies = [ + "once_cell", + "p3", + "rand_core 0.6.4", + "serde", +] + +[[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.7", + "rustc-hex", + "static_assertions", +] + +[[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-executor", + "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-executor" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718" + +[[package]] +name = "futures-macro" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[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-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "slab", +] + +[[package]] +name = "gcd" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d758ba1b47b00caf47f24925c0074ecb20d6dfcffe7f6d53395c0465674841a" + +[[package]] +name = "generational-arena" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877e94aff08e743b651baaea359664321055749b398adff8740a7399af7796e7" +dependencies = [ + "cfg-if", +] + +[[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.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab4e5aa225bc56696909483320f0ff9b600f1a971b52e07a17d70f3d9b43254b" +dependencies = [ + "rustversion", + "serde_core", + "typenum", +] + +[[package]] +name = "generic_static" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28ccff179d8070317671db09aee6d20affc26e88c5394714553b04f509b43a60" +dependencies = [ + "once_cell", +] + +[[package]] +name = "get_dir" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "157475c9ef63284947b6a2f3661795a4fdbf581974d36daf3567cd20cb1e217e" + +[[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.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" +dependencies = [ + "cfg-if", + "libc", + "r-efi 6.0.0", +] + +[[package]] +name = "getset" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6cf442baaabe4213ce7d1239afc26c039180b6456da2cededa316ae2c8a77a77" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "ghash" +version = "0.6.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f88107cb02ed63adcc4282942e60c4d09d80208d33b360ce7c729ce6dae1739" +dependencies = [ + "polyval", +] + +[[package]] +name = "gimli" +version = "0.32.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7" + +[[package]] +name = "git2" +version = "0.20.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b88256088d75a56f8ecfa070513a775dd9107f6530ef14919dac831af9cfe2b" +dependencies = [ + "bitflags", + "libc", + "libgit2-sys", + "log", + "url", +] + +[[package]] +name = "gkr_iop" +version = "0.1.0" +source = "git+https://github.com/scroll-tech/ceno.git?branch=master#92a4c085f6ad0fc54dff4e7872a338efe45029f3" +dependencies = [ + "bincode 1.3.3", + "cuda_hal", + "cudarc", + "either", + "ff_ext", + "itertools 0.13.0", + "mpcs", + "multilinear_extensions", + "once_cell", + "p3", + "p3-field 0.4.3", + "rand 0.8.7", + "rayon", + "rustc-hash", + "serde", + "smallvec", + "strum 0.26.3", + "strum_macros 0.26.4", + "sumcheck", + "thiserror 2.0.18", + "thread_local", + "tracing", + "tracing-forest", + "tracing-subscriber 0.3.23", + "transcript", + "witness", +] + +[[package]] +name = "glob" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" + +[[package]] +name = "gmp-mpfr-sys" +version = "1.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7db155b537cb791b133341f99f68371d86ee7fa4c79aacfbc376d72d23c70531" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + +[[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 = "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 = "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", +] + +[[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.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[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" + +[[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-conservative" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35431185f361ccf3ffc58254628af5f1f5d5f28531da2e02e5d6c82bbc282a10" +dependencies = [ + "arrayvec", +] + +[[package]] +name = "hex-literal" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" + +[[package]] +name = "hex-literal" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e712f64ec3850b98572bffac52e2c6f282b29fe6c5fa6d42334b30be438d95c1" + +[[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 = "home" +version = "0.5.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc627f471c528ff0c4a49e1d5e60450c8f6461dd6d10ba9dcd3a61d3dff7728d" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "hybrid-array" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "818356c5132c1fede50f837ca96afbe78ff42413047f4abb886217845e1b6c8c" +dependencies = [ + "typenum", +] + +[[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", +] + +[[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 = "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.119", +] + +[[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.1", + "serde", + "serde_core", +] + +[[package]] +name = "inout" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4250ce6452e92010fdf7268ccc5d14faa80bb12fc741938534c58f16804e03c7" +dependencies = [ + "hybrid-array", +] + +[[package]] +name = "is-terminal" +version = "0.4.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3640c1c38b8e4e43584d8df18be5fc6b0aa314ce6ebf51b53313d4306cca8e46" +dependencies = [ + "hermit-abi", + "libc", + "windows-sys 0.61.2", +] + +[[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.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +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 = "jobserver" +version = "0.1.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c00acbd29eabad4a2392fa0e921c874934dbbf4194312ad20f04a0ed67a3cb3" +dependencies = [ + "getrandom 0.4.3", + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" +dependencies = [ + "cfg-if", + "futures-util", + "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 = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" +dependencies = [ + "cfg-if", + "ecdsa 0.16.9 (registry+https://github.com/rust-lang/crates.io-index)", + "elliptic-curve", + "once_cell", + "serdect", + "sha2", + "signature", +] + +[[package]] +name = "k256" +version = "0.13.4" +source = "git+https://github.com/scroll-tech/elliptic-curves?branch=ceno%2Fk256-13.4#fbd1bb695a030f3c1b6fd3808295afdbee85db38" +dependencies = [ + "ceno_crypto_primitives", + "ceno_syscall", + "cfg-if", + "ecdsa 0.16.9 (git+https://github.com/sp1-patches/signatures.git?tag=patch-16.9-sp1-4.1.0)", + "elliptic-curve", + "hex", + "once_cell", + "sha2", +] + +[[package]] +name = "keccak" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb26cec98cce3a3d96cbb7bced3c4b16e3d13f27ec56dbd62cbc8f39cfb9d653" +dependencies = [ + "cpufeatures 0.2.17", +] + +[[package]] +name = "keccak-asm" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd5dc2c0d691cbf7595cde551ced329cca99c2387c2cbc97754c5d0cd045d3ee" +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.8" +source = "git+https://github.com/succinctlabs/kzg-rs?tag=v0.2.8-sp1-6.2.0#2d48f8b948746d5cfa62ce7421369278a1c2e405" +dependencies = [ + "bls12_381 0.8.0", + "ff 0.13.1", + "hex", + "serde_arrays", + "sha2", + "spin 0.9.9", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +dependencies = [ + "spin 0.9.9", +] + +[[package]] +name = "libc" +version = "0.2.186" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" + +[[package]] +name = "libgit2-sys" +version = "0.18.5+1.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "005d6ae6eac1912906073e069f7db60b1fa98e052a68227824afe3e3a1c59ca2" +dependencies = [ + "cc", + "libc", + "libz-sys", + "pkg-config", +] + +[[package]] +name = "libloading" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" +dependencies = [ + "cfg-if", + "winapi", +] + +[[package]] +name = "libloading" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" +dependencies = [ + "cfg-if", + "windows-link", +] + +[[package]] +name = "libm" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" + +[[package]] +name = "libredox" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c943259e342f1e06ff2da7a83eabdfe7f92ce10262688dbf1895ff0b3e6e4652" +dependencies = [ + "libc", +] + +[[package]] +name = "libz-sys" +version = "1.1.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85bc9657773828b90eeb625adff10eeac83cc21bbfd8e23a03eaa8a33c9e28d9" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "linux-raw-sys" +version = "0.4.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" + +[[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 = "lockfree-object-pool" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9374ef4228402d4b7e403e5838cb880d9ee663314b0a900d5a6aabf0c213552e" + +[[package]] +name = "log" +version = "0.4.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" + +[[package]] +name = "macro-string" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59a9dbbfc75d2688ed057456ce8a3ee3f48d12eec09229f560f3643b9f275653" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "matchers" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9" +dependencies = [ + "regex-automata", +] + +[[package]] +name = "matrixmultiply" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f607c237553f086e7043417a51df26b2eb899d3caff94e6a67592ff992fedc7" +dependencies = [ + "autocfg", + "rawpointer", +] + +[[package]] +name = "memchr" +version = "2.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" + +[[package]] +name = "memmap2" +version = "0.9.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1219ed1b7f229ee7104d281dd01d6802fe28bb6e95d292942c4daacdeb798c0" +dependencies = [ + "libc", +] + +[[package]] +name = "memuse" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d97bbf43eb4f088f8ca469930cde17fa036207c9a5e02ccc5107c4e8b17c964" + +[[package]] +name = "metrics" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3045b4193fbdc5b5681f32f11070da9be3609f189a79f3390706d42587f46bb5" +dependencies = [ + "ahash", + "portable-atomic", +] + +[[package]] +name = "metrics-tracing-context" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62a6a1f7141f1d9bc7a886b87536bbfc97752e08b369e1e0453a9acfab5f5da4" +dependencies = [ + "indexmap 2.14.0", + "itoa", + "lockfree-object-pool", + "metrics", + "metrics-util", + "once_cell", + "tracing", + "tracing-core", + "tracing-subscriber 0.3.23", +] + +[[package]] +name = "metrics-util" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4259040465c955f9f2f1a4a8a16dc46726169bca0f88e8fb2dbeced487c3e828" +dependencies = [ + "aho-corasick", + "crossbeam-epoch", + "crossbeam-utils", + "hashbrown 0.14.5", + "indexmap 2.14.0", + "metrics", + "num_cpus", + "ordered-float", + "quanta", + "radix_trie", + "sketches-ddsketch", +] + +[[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 = "mpcs" +version = "0.1.0" +source = "git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.34#74efcb2499c036bf8a1c0bc8cb10a5fdcdca0cd2" +dependencies = [ + "bincode 1.3.3", + "clap", + "ff_ext", + "itertools 0.13.0", + "multilinear_extensions", + "num-integer", + "p3", + "rand 0.8.7", + "rand_chacha 0.3.1", + "serde", + "sumcheck", + "tracing", + "tracing-subscriber 0.3.23", + "transcript", + "whir", + "witness", +] + +[[package]] +name = "multilinear_extensions" +version = "0.1.0" +source = "git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.34#74efcb2499c036bf8a1c0bc8cb10a5fdcdca0cd2" +dependencies = [ + "either", + "ff_ext", + "itertools 0.13.0", + "p3", + "rand 0.8.7", + "rayon", + "serde", + "tracing", +] + +[[package]] +name = "ndarray" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "520080814a7a6b4a6e9070823bb24b4531daac8c4627e08ba5de8c5ef2f2752d" +dependencies = [ + "matrixmultiply", + "num-complex", + "num-integer", + "num-traits", + "portable-atomic", + "portable-atomic-util", + "rawpointer", +] + +[[package]] +name = "nibble_vec" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a5d83df9f36fe23f0c3648c6bbb8b0298bb5f1939c8f2704431371f4b84d43" +dependencies = [ + "smallvec", +] + +[[package]] +name = "nu-ansi-term" +version = "0.50.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "num" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" +dependencies = [ + "num-bigint 0.4.8", + "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.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c89e69e7e0f03bea5ef08013795c25018e101932225a656383bd384495ecc367" +dependencies = [ + "num-integer", + "num-traits", + "rand 0.8.7", +] + +[[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.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "521739c6d2bac4aa25192232afe6841231376b2b26d4d9fae5ecf8ca5772e441" + +[[package]] +name = "num-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[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.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c92800bd69a1eac91786bcfe9da64a897eb72911b8dc3095decbd07429e8048b" +dependencies = [ + "num-integer", + "num-traits", +] + +[[package]] +name = "num-modular" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc41a1374056e9672221567958a66c16be12d0e2c1b408761e14d901c237d5e0" + +[[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.8", + "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.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9" +dependencies = [ + "num_enum_derive 0.5.11", +] + +[[package]] +name = "num_enum" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d0bca838442ec211fa11de3a8b0e0e8f3a4522575b5c4c06ed722e005036f26" +dependencies = [ + "num_enum_derive 0.7.6", + "rustversion", +] + +[[package]] +name = "num_enum_derive" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" +dependencies = [ + "proc-macro-crate 1.3.1", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[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 3.5.0", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "num_threads" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9" +dependencies = [ + "libc", +] + +[[package]] +name = "nvtx" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad2e855e8019f99e4b94ac33670eb4e4f570a2e044f3749a0b2c7f83b841e52c" +dependencies = [ + "cc", +] + +[[package]] +name = "nybbles" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8983bb634df7248924ee0c4c3a749609b5abcb082c28fffe3254b3eb3602b307" +dependencies = [ + "alloy-rlp", + "const-hex", + "proptest", + "serde", + "smallvec", +] + +[[package]] +name = "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.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a501241474c3118833d6195312ae7eb7cc90bbb0d5f524cbb0b06619e49ff67" +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 = "op-alloy-rpc-types-engine" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14e50c94013a1d036a529df259151991dbbd6cf8dc215e3b68b784f95eec60e6" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "alloy-rpc-types-engine", + "derive_more 2.1.1", + "ethereum_ssz", + "ethereum_ssz_derive", + "op-alloy-consensus", + "snap", + "thiserror 2.0.18", +] + +[[package]] +name = "op-revm" +version = "11.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f68e30e34902f61fc053ea3094229d0bf7c78ed1d24e6d0d89306c2d2db1687" +dependencies = [ + "auto_impl", + "revm 30.2.0", + "serde", +] + +[[package]] +name = "openvm" +version = "2.0.0-beta.2" +source = "git+https://github.com/openvm-org/openvm.git?rev=53784108cf93718b7acd062c0b5a910a82f40156#53784108cf93718b7acd062c0b5a910a82f40156" +dependencies = [ + "bytemuck", + "num-bigint 0.4.8", + "openvm-custom-insn", + "openvm-platform", + "openvm-riscv-guest", + "serde", +] + +[[package]] +name = "openvm-circuit" +version = "2.0.0-beta.2" +source = "git+https://github.com/openvm-org/openvm.git?rev=53784108cf93718b7acd062c0b5a910a82f40156#53784108cf93718b7acd062c0b5a910a82f40156" +dependencies = [ + "abi_stable", + "backtrace", + "bytesize", + "cfg-if", + "dashmap", + "derive-new 0.6.0", + "derive_more 1.0.0", + "eyre", + "getset", + "itertools 0.14.0", + "libc", + "memmap2", + "openvm-circuit-derive", + "openvm-circuit-primitives", + "openvm-circuit-primitives-derive", + "openvm-cpu-backend", + "openvm-cuda-backend", + "openvm-cuda-builder", + "openvm-cuda-common", + "openvm-instructions", + "openvm-poseidon2-air", + "openvm-stark-backend", + "openvm-stark-sdk", + "p3-baby-bear", + "p3-field 0.4.3", + "rand 0.9.5", + "rustc-hash", + "serde", + "serde-big-array", + "static_assertions", + "thiserror 1.0.69", + "tracing", +] + +[[package]] +name = "openvm-circuit-derive" +version = "2.0.0-beta.2" +source = "git+https://github.com/openvm-org/openvm.git?rev=53784108cf93718b7acd062c0b5a910a82f40156#53784108cf93718b7acd062c0b5a910a82f40156" +dependencies = [ + "itertools 0.14.0", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "openvm-circuit-primitives" +version = "2.0.0-beta.2" +source = "git+https://github.com/openvm-org/openvm.git?rev=53784108cf93718b7acd062c0b5a910a82f40156#53784108cf93718b7acd062c0b5a910a82f40156" +dependencies = [ + "derive-new 0.6.0", + "itertools 0.14.0", + "num-bigint 0.4.8", + "num-traits", + "openvm-circuit-primitives-derive", + "openvm-cpu-backend", + "openvm-cuda-backend", + "openvm-cuda-builder", + "openvm-cuda-common", + "openvm-stark-backend", + "rand 0.9.5", + "struct-reflection", + "tracing", +] + +[[package]] +name = "openvm-circuit-primitives-derive" +version = "2.0.0-beta.2" +source = "git+https://github.com/openvm-org/openvm.git?rev=53784108cf93718b7acd062c0b5a910a82f40156#53784108cf93718b7acd062c0b5a910a82f40156" +dependencies = [ + "itertools 0.14.0", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "openvm-codec-derive" +version = "2.0.0" +source = "git+https://github.com/openvm-org/stark-backend.git?branch=develop-v2#0b04cdcd3f7790c5e2d306a4b5cd8640f89e2e49" +dependencies = [ + "proc-macro-crate 1.3.1", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "openvm-continuations" +version = "2.0.0-beta.2" +source = "git+https://github.com/openvm-org/openvm.git?rev=53784108cf93718b7acd062c0b5a910a82f40156#53784108cf93718b7acd062c0b5a910a82f40156" +dependencies = [ + "cfg-if", + "derive-new 0.6.0", + "eyre", + "itertools 0.14.0", + "num-bigint 0.4.8", + "openvm-circuit", + "openvm-circuit-primitives", + "openvm-cpu-backend", + "openvm-poseidon2-air", + "openvm-recursion-circuit", + "openvm-recursion-circuit-derive", + "openvm-stark-backend", + "openvm-stark-sdk", + "openvm-verify-stark-host", + "p3-air", + "p3-field 0.4.3", + "p3-matrix 0.4.3", + "tracing", +] + +[[package]] +name = "openvm-cpu-backend" +version = "2.0.0" +source = "git+https://github.com/openvm-org/stark-backend.git?branch=develop-v2#0b04cdcd3f7790c5e2d306a4b5cd8640f89e2e49" +dependencies = [ + "cfg-if", + "derive-new 0.7.0", + "getset", + "itertools 0.14.0", + "openvm-stark-backend", + "p3-air", + "p3-baby-bear", + "p3-dft 0.4.3", + "p3-field 0.4.3", + "p3-interpolation", + "p3-matrix 0.4.3", + "p3-maybe-rayon 0.4.3", + "p3-util 0.4.3", + "rayon", + "rustc-hash", + "serde", + "thiserror 1.0.69", + "tracing", +] + +[[package]] +name = "openvm-cuda-backend" +version = "2.0.0" +source = "git+https://github.com/openvm-org/stark-backend.git?branch=develop-v2#0b04cdcd3f7790c5e2d306a4b5cd8640f89e2e49" +dependencies = [ + "derive-new 0.7.0", + "getset", + "glob", + "itertools 0.14.0", + "openvm-cuda-builder", + "openvm-cuda-common", + "openvm-stark-backend", + "openvm-stark-sdk", + "p3-baby-bear", + "p3-bn254", + "p3-dft 0.4.3", + "p3-field 0.4.3", + "p3-symmetric 0.4.3", + "p3-util 0.4.3", + "rand 0.9.5", + "rustc-hash", + "serde", + "thiserror 1.0.69", + "tracing", + "zkhash-axiom", +] + +[[package]] +name = "openvm-cuda-builder" +version = "2.0.0" +source = "git+https://github.com/openvm-org/stark-backend.git?branch=develop-v2#0b04cdcd3f7790c5e2d306a4b5cd8640f89e2e49" +dependencies = [ + "cc", + "glob", +] + +[[package]] +name = "openvm-cuda-common" +version = "2.0.0" +source = "git+https://github.com/openvm-org/stark-backend.git?branch=develop-v2#0b04cdcd3f7790c5e2d306a4b5cd8640f89e2e49" +dependencies = [ + "bytesize", + "ctor", + "lazy_static", + "metrics", + "openvm-cuda-builder", + "thiserror 1.0.69", + "tracing", +] + +[[package]] +name = "openvm-custom-insn" +version = "0.1.0" +source = "git+https://github.com/openvm-org/openvm.git?rev=53784108cf93718b7acd062c0b5a910a82f40156#53784108cf93718b7acd062c0b5a910a82f40156" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "openvm-instructions" +version = "2.0.0-beta.2" +source = "git+https://github.com/openvm-org/openvm.git?rev=53784108cf93718b7acd062c0b5a910a82f40156#53784108cf93718b7acd062c0b5a910a82f40156" +dependencies = [ + "backtrace", + "derive-new 0.6.0", + "itertools 0.14.0", + "num-bigint 0.4.8", + "num-traits", + "openvm-instructions-derive", + "openvm-stark-backend", + "serde", + "strum 0.26.3", + "strum_macros 0.26.4", +] + +[[package]] +name = "openvm-instructions-derive" +version = "2.0.0-beta.2" +source = "git+https://github.com/openvm-org/openvm.git?rev=53784108cf93718b7acd062c0b5a910a82f40156#53784108cf93718b7acd062c0b5a910a82f40156" +dependencies = [ + "quote", + "syn 2.0.119", +] + +[[package]] +name = "openvm-platform" +version = "2.0.0-beta.2" +source = "git+https://github.com/openvm-org/openvm.git?rev=53784108cf93718b7acd062c0b5a910a82f40156#53784108cf93718b7acd062c0b5a910a82f40156" +dependencies = [ + "libm", + "openvm-custom-insn", + "openvm-riscv-guest", +] + +[[package]] +name = "openvm-poseidon2-air" +version = "2.0.0-beta.2" +source = "git+https://github.com/openvm-org/openvm.git?rev=53784108cf93718b7acd062c0b5a910a82f40156#53784108cf93718b7acd062c0b5a910a82f40156" +dependencies = [ + "derivative", + "lazy_static", + "openvm-circuit-primitives", + "openvm-cuda-builder", + "openvm-stark-backend", + "openvm-stark-sdk", + "p3-poseidon2 0.4.3", + "p3-poseidon2-air", + "p3-symmetric 0.4.3", + "rand 0.9.5", + "zkhash", +] + +[[package]] +name = "openvm-recursion-circuit" +version = "2.0.0-beta.2" +source = "git+https://github.com/openvm-org/openvm.git?rev=53784108cf93718b7acd062c0b5a910a82f40156#53784108cf93718b7acd062c0b5a910a82f40156" +dependencies = [ + "derive-new 0.6.0", + "itertools 0.14.0", + "openvm-circuit", + "openvm-circuit-primitives", + "openvm-cpu-backend", + "openvm-cuda-backend", + "openvm-cuda-builder", + "openvm-cuda-common", + "openvm-poseidon2-air", + "openvm-recursion-circuit-derive", + "openvm-stark-backend", + "openvm-stark-sdk", + "p3-air", + "p3-baby-bear", + "p3-field 0.4.3", + "p3-matrix 0.4.3", + "p3-maybe-rayon 0.4.3", + "p3-symmetric 0.4.3", + "strum 0.26.3", + "strum_macros 0.26.4", + "tracing", +] + +[[package]] +name = "openvm-recursion-circuit-derive" +version = "2.0.0-beta.2" +source = "git+https://github.com/openvm-org/openvm.git?rev=53784108cf93718b7acd062c0b5a910a82f40156#53784108cf93718b7acd062c0b5a910a82f40156" +dependencies = [ + "quote", + "syn 2.0.119", +] + +[[package]] +name = "openvm-riscv-guest" +version = "2.0.0-beta.2" +source = "git+https://github.com/openvm-org/openvm.git?rev=53784108cf93718b7acd062c0b5a910a82f40156#53784108cf93718b7acd062c0b5a910a82f40156" +dependencies = [ + "openvm-custom-insn", + "strum_macros 0.26.4", +] + +[[package]] +name = "openvm-stark-backend" +version = "2.0.0" +source = "git+https://github.com/openvm-org/stark-backend.git?branch=develop-v2#0b04cdcd3f7790c5e2d306a4b5cd8640f89e2e49" +dependencies = [ + "cfg-if", + "derivative", + "derive-new 0.7.0", + "eyre", + "getset", + "hex-literal 1.1.0", + "itertools 0.14.0", + "num-bigint 0.4.8", + "openvm-codec-derive", + "p3-air", + "p3-challenger 0.4.3", + "p3-dft 0.4.3", + "p3-field 0.4.3", + "p3-interpolation", + "p3-matrix 0.4.3", + "p3-maybe-rayon 0.4.3", + "p3-symmetric 0.4.3", + "p3-util 0.4.3", + "postcard", + "rayon", + "rustc-hash", + "serde", + "serde_json", + "thiserror 1.0.69", + "tracing", +] + +[[package]] +name = "openvm-stark-sdk" +version = "2.0.0" +source = "git+https://github.com/openvm-org/stark-backend.git?branch=develop-v2#0b04cdcd3f7790c5e2d306a4b5cd8640f89e2e49" +dependencies = [ + "dashmap", + "derive-new 0.7.0", + "eyre", + "hex-literal 1.1.0", + "itertools 0.14.0", + "metrics-tracing-context", + "metrics-util", + "num-bigint 0.4.8", + "nvtx", + "openvm-cpu-backend", + "openvm-stark-backend", + "p3-baby-bear", + "p3-bn254", + "p3-field 0.4.3", + "p3-poseidon2 0.4.3", + "rand 0.9.5", + "serde", + "serde_json", + "static_assertions", + "tracing", + "tracing-forest", + "tracing-subscriber 0.3.23", + "zkhash-axiom", +] + +[[package]] +name = "openvm-verify-stark-host" +version = "2.0.0-beta.2" +source = "git+https://github.com/openvm-org/openvm.git?rev=53784108cf93718b7acd062c0b5a910a82f40156#53784108cf93718b7acd062c0b5a910a82f40156" +dependencies = [ + "bitcode", + "eyre", + "openvm-circuit", + "openvm-circuit-primitives", + "openvm-recursion-circuit-derive", + "openvm-stark-backend", + "openvm-stark-sdk", + "p3-field 0.4.3", + "serde", + "thiserror 1.0.69", + "zstd", +] + +[[package]] +name = "ordered-float" +version = "4.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bb71e1b3fa6ca1c61f383464aaf2bb0e2f8e772a1f01d486832464de363b951" +dependencies = [ + "num-traits", +] + +[[package]] +name = "p256" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" +dependencies = [ + "ecdsa 0.16.9 (registry+https://github.com/rust-lang/crates.io-index)", + "elliptic-curve", + "primeorder 0.13.6 (registry+https://github.com/rust-lang/crates.io-index)", + "sha2", +] + +[[package]] +name = "p256" +version = "0.13.2" +source = "git+https://github.com/scroll-tech/elliptic-curves?branch=ceno%2Fk256-13.4#fbd1bb695a030f3c1b6fd3808295afdbee85db38" +dependencies = [ + "ceno_crypto_primitives", + "ceno_syscall", + "ecdsa 0.16.9 (registry+https://github.com/rust-lang/crates.io-index)", + "elliptic-curve", + "primeorder 0.13.6 (git+https://github.com/scroll-tech/elliptic-curves?branch=ceno%2Fk256-13.4)", + "sha2", +] + +[[package]] +name = "p3" +version = "0.1.0" +source = "git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.34#74efcb2499c036bf8a1c0bc8cb10a5fdcdca0cd2" +dependencies = [ + "p3-air", + "p3-baby-bear", + "p3-challenger 0.4.3", + "p3-commit", + "p3-dft 0.4.3", + "p3-field 0.4.3", + "p3-fri", + "p3-goldilocks", + "p3-matrix 0.4.3", + "p3-maybe-rayon 0.4.3", + "p3-mds 0.4.3", + "p3-merkle-tree", + "p3-monty-31", + "p3-poseidon", + "p3-poseidon2 0.4.3", + "p3-poseidon2-air", + "p3-symmetric 0.4.3", + "p3-util 0.4.3", +] + +[[package]] +name = "p3-air" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daee3082e2ca0db2ac876c43c9c8fd53204b0fcb95cfe7258d21f4a925ad82c4" +dependencies = [ + "p3-field 0.4.3", + "p3-matrix 0.4.3", +] + +[[package]] +name = "p3-baby-bear" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a1a49f4d9c8b8cbdab61e25d9de1b78b3c8347dd2fb88b11d990b3efa8cdd3a" +dependencies = [ + "p3-challenger 0.4.3", + "p3-field 0.4.3", + "p3-mds 0.4.3", + "p3-monty-31", + "p3-poseidon2 0.4.3", + "p3-symmetric 0.4.3", + "rand 0.9.5", +] + +[[package]] +name = "p3-bn254" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "923bd91df7dd93481b4bfb53aa903d46d1a49d51160513472a5e95ca92ef1b46" +dependencies = [ + "num-bigint 0.4.8", + "p3-field 0.4.3", + "p3-poseidon2 0.4.3", + "p3-symmetric 0.4.3", + "p3-util 0.4.3", + "paste", + "rand 0.9.5", + "serde", +] + +[[package]] +name = "p3-bn254-fr" +version = "0.3.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "577200e3fa7e49e2b21e940a6dc7399dc63acb8581da088558cdf7c455adafc0" +dependencies = [ + "ff 0.13.1", + "num-bigint 0.4.8", + "p3-field 0.3.3-succinct", + "p3-poseidon2 0.3.3-succinct", + "p3-symmetric 0.3.3-succinct", + "rand 0.8.7", + "serde", +] + +[[package]] +name = "p3-challenger" +version = "0.3.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75358edd6e2562752c01f5064a66d88144a3e75ace0407166dbdf8a727597f52" +dependencies = [ + "p3-field 0.3.3-succinct", + "p3-maybe-rayon 0.3.3-succinct", + "p3-symmetric 0.3.3-succinct", + "p3-util 0.3.3-succinct", + "serde", + "tracing", +] + +[[package]] +name = "p3-challenger" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7d2d45f5a51dc3f965e8d6da60a6c26c807e88657863d56da275eaa05ad36f1" +dependencies = [ + "p3-field 0.4.3", + "p3-maybe-rayon 0.4.3", + "p3-monty-31", + "p3-symmetric 0.4.3", + "p3-util 0.4.3", + "tracing", +] + +[[package]] +name = "p3-commit" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf6d7dcb58a8f21f0e1325dc7f7699ad749878ccbe7e286e61f9d46bde2bfa88" +dependencies = [ + "itertools 0.14.0", + "p3-challenger 0.4.3", + "p3-dft 0.4.3", + "p3-field 0.4.3", + "p3-matrix 0.4.3", + "p3-util 0.4.3", + "serde", +] + +[[package]] +name = "p3-dft" +version = "0.3.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "761f1e1b014f2b1b69bd0309124e233d64aa3590e6a41ee786000dd849506d51" +dependencies = [ + "p3-field 0.3.3-succinct", + "p3-matrix 0.3.3-succinct", + "p3-maybe-rayon 0.3.3-succinct", + "p3-util 0.3.3-succinct", + "tracing", +] + +[[package]] +name = "p3-dft" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "beabb40bc8ac7f5f95870f271fb844c7e2e1ebb7f0761a8eebb2614b56c6b1c1" +dependencies = [ + "itertools 0.14.0", + "p3-field 0.4.3", + "p3-matrix 0.4.3", + "p3-maybe-rayon 0.4.3", + "p3-util 0.4.3", + "spin 0.10.1", + "tracing", +] + +[[package]] +name = "p3-field" +version = "0.3.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2df7cebaa4079b24e0dd7e3aad59eebcbb99a67c1271f79ad884a7c032f5f183" +dependencies = [ + "itertools 0.12.1", + "num-bigint 0.4.8", + "num-traits", + "p3-util 0.3.3-succinct", + "rand 0.8.7", + "serde", +] + +[[package]] +name = "p3-field" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4819a3e4c1882431a63d4847ffa10d110017aee4cb9cf4319ca6dca191930969" +dependencies = [ + "itertools 0.14.0", + "num-bigint 0.4.8", + "p3-maybe-rayon 0.4.3", + "p3-util 0.4.3", + "paste", + "rand 0.9.5", + "serde", + "tracing", +] + +[[package]] +name = "p3-fri" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13ca6a795cfc4180425fbf16dfdb4c9c2bfa85971dd55b5930d97b513e0835df" +dependencies = [ + "itertools 0.14.0", + "p3-challenger 0.4.3", + "p3-commit", + "p3-dft 0.4.3", + "p3-field 0.4.3", + "p3-interpolation", + "p3-matrix 0.4.3", + "p3-maybe-rayon 0.4.3", + "p3-util 0.4.3", + "rand 0.9.5", + "serde", + "thiserror 2.0.18", + "tracing", +] + +[[package]] +name = "p3-goldilocks" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c47d5c650bbeb25941b9a1fa9bfaf59b3cd202a438ea2c20892489af001399" +dependencies = [ + "num-bigint 0.4.8", + "p3-challenger 0.4.3", + "p3-dft 0.4.3", + "p3-field 0.4.3", + "p3-mds 0.4.3", + "p3-poseidon2 0.4.3", + "p3-symmetric 0.4.3", + "p3-util 0.4.3", + "paste", + "rand 0.9.5", + "serde", +] + +[[package]] +name = "p3-interpolation" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f27a3696641a8f4ec990ff8c91862fb4f3b4ff29f589f78005d046023fe3550f" +dependencies = [ + "p3-field 0.4.3", + "p3-matrix 0.4.3", + "p3-maybe-rayon 0.4.3", + "p3-util 0.4.3", +] + +[[package]] +name = "p3-koala-bear" +version = "0.3.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6cea0ba3389b034b6088d566aea8b57aa29dd2e180966e0c8056f61331c92b4e" +dependencies = [ + "cfg-if", + "num-bigint 0.4.8", + "p3-field 0.3.3-succinct", + "p3-mds 0.3.3-succinct", + "p3-poseidon2 0.3.3-succinct", + "p3-symmetric 0.3.3-succinct", + "rand 0.8.7", + "rustc_version 0.4.1", + "serde", +] + +[[package]] +name = "p3-matrix" +version = "0.3.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fae5cc6ce726cc265cc687c1214e3f1ac1f5c6e973442286ba00d1e75da1c3cb" +dependencies = [ + "itertools 0.12.1", + "p3-field 0.3.3-succinct", + "p3-maybe-rayon 0.3.3-succinct", + "p3-util 0.3.3-succinct", + "rand 0.8.7", + "serde", + "tracing", +] + +[[package]] +name = "p3-matrix" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6fde449bd2963d394284ec46db8c647e6a5602d90601117b76752072ab54168" +dependencies = [ + "itertools 0.14.0", + "p3-field 0.4.3", + "p3-maybe-rayon 0.4.3", + "p3-util 0.4.3", + "rand 0.9.5", + "serde", + "tracing", +] + +[[package]] +name = "p3-maybe-rayon" +version = "0.3.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55ac1d2f102cf8c71dba1b449575c99697781fcc028831e83d2245787bd7a650" + +[[package]] +name = "p3-maybe-rayon" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54afab3883d8a14676b492709d6c4e9fa535c36718b737db0817aacfaaaa11f6" +dependencies = [ + "rayon", +] + +[[package]] +name = "p3-mds" +version = "0.3.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f072643e385d65fb9eb089ee6824b320417f78671a0db748566e057e28b250e" +dependencies = [ + "itertools 0.12.1", + "p3-dft 0.3.3-succinct", + "p3-field 0.3.3-succinct", + "p3-matrix 0.3.3-succinct", + "p3-symmetric 0.3.3-succinct", + "p3-util 0.3.3-succinct", + "rand 0.8.7", +] + +[[package]] +name = "p3-mds" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3895055d735ac96d010747b3aaabd4c2645b9fd80226960550318db2e25afb75" +dependencies = [ + "p3-dft 0.4.3", + "p3-field 0.4.3", + "p3-symmetric 0.4.3", + "p3-util 0.4.3", + "rand 0.9.5", +] + +[[package]] +name = "p3-merkle-tree" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60e20f61ea816e94f83ed7b8134a5e98d0cad7bd6dff226bc1da17a5143c63cb" +dependencies = [ + "itertools 0.14.0", + "p3-commit", + "p3-field 0.4.3", + "p3-matrix 0.4.3", + "p3-maybe-rayon 0.4.3", + "p3-symmetric 0.4.3", + "p3-util 0.4.3", + "rand 0.9.5", + "serde", + "thiserror 2.0.18", + "tracing", +] + +[[package]] +name = "p3-monty-31" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9fe0be661891af1f703ceaf57334fcbd540804988984dc2b500dd99740e7c81" +dependencies = [ + "itertools 0.14.0", + "num-bigint 0.4.8", + "p3-dft 0.4.3", + "p3-field 0.4.3", + "p3-matrix 0.4.3", + "p3-maybe-rayon 0.4.3", + "p3-mds 0.4.3", + "p3-poseidon2 0.4.3", + "p3-symmetric 0.4.3", + "p3-util 0.4.3", + "paste", + "rand 0.9.5", + "serde", + "spin 0.10.1", + "tracing", +] + +[[package]] +name = "p3-poseidon" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "548af7ff569975882bc411f653aba7d89a6d85813ca58ef922fd0b1ecb6b5866" +dependencies = [ + "p3-field 0.4.3", + "p3-mds 0.4.3", + "p3-symmetric 0.4.3", + "rand 0.9.5", +] + +[[package]] +name = "p3-poseidon2" +version = "0.3.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00cc4b6e8a439f79541b0910a016da9e6e12a05a24309bbb713e1db0db396952" +dependencies = [ + "gcd", + "p3-field 0.3.3-succinct", + "p3-mds 0.3.3-succinct", + "p3-symmetric 0.3.3-succinct", + "rand 0.8.7", + "serde", +] + +[[package]] +name = "p3-poseidon2" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c6fc2368447576283f8b3849a36095017f25addf06eab9e33b0ce7f96b0b99d" +dependencies = [ + "p3-field 0.4.3", + "p3-mds 0.4.3", + "p3-symmetric 0.4.3", + "p3-util 0.4.3", + "rand 0.9.5", +] + +[[package]] +name = "p3-poseidon2-air" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a80481b023f74c0f8ded5058dab8054174e8060d82d400da7b67cf7f2f0a87bc" +dependencies = [ + "p3-air", + "p3-field 0.4.3", + "p3-matrix 0.4.3", + "p3-maybe-rayon 0.4.3", + "p3-poseidon2 0.4.3", + "rand 0.9.5", + "tracing", +] + +[[package]] +name = "p3-symmetric" +version = "0.3.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eebff7fea7deb08a57ccf731a0ed39df25cc66a0e0c2d92c4472c4dee02ee21" +dependencies = [ + "itertools 0.12.1", + "p3-field 0.3.3-succinct", + "serde", +] + +[[package]] +name = "p3-symmetric" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a14456a42a7d9e65f13999706f1bca2832175935169b3a54286e18331cf1d82f" +dependencies = [ + "itertools 0.14.0", + "p3-field 0.4.3", + "serde", +] + +[[package]] +name = "p3-util" +version = "0.3.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8164df89bbc92e29938f916cc5f1ccbfe6a36fb5040f21ba93c1f21985b9868" +dependencies = [ + "serde", +] + +[[package]] +name = "p3-util" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "911154accf66034b0eec4452956c088f92a200b37a8225c1caed74cfbd38cc8d" +dependencies = [ + "serde", + "transpose", +] + +[[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 3.5.0", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "parking_lot" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-link", +] + +[[package]] +name = "parse-size" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "487f2ccd1e17ce8c1bfab3a65c89525af41cfad4c8659021a1e9a2aacd73b89b" + +[[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.7", + "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", + "lazy_static", + "rand 0.8.7", + "static_assertions", + "subtle", +] + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[package]] +name = "pastey" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ee67f1008b1ba2321834326597b8e186293b049a023cdef258527550b9935b4" + +[[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.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47627dd7305c6a2d6c8c6bcd24c5a4c17dbbf425f4f9c5313e724b38fc9782e9" +dependencies = [ + "memchr", + "ucd-trie", +] + +[[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.119", +] + +[[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 = "polyval" +version = "0.7.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ffd40cc99d0fbb02b4b3771346b811df94194bc103983efa0203c8893755085" +dependencies = [ + "cfg-if", + "cpufeatures 0.2.17", + "universal-hash", +] + +[[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 = "poseidon" +version = "0.1.0" +source = "git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.34#74efcb2499c036bf8a1c0bc8cb10a5fdcdca0cd2" +dependencies = [ + "ff_ext", + "p3", + "serde", +] + +[[package]] +name = "postcard" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" +dependencies = [ + "cobs", + "embedded-io 0.4.0", + "embedded-io 0.6.1", + "serde", +] + +[[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 = "prettytable-rs" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eea25e07510aa6ab6547308ebe3c036016d162b8da920dbb079e3ba8acf3d95a" +dependencies = [ + "csv", + "encode_unicode", + "is-terminal", + "lazy_static", + "term", + "unicode-width 0.1.14", +] + +[[package]] +name = "primeorder" +version = "0.13.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6" +dependencies = [ + "elliptic-curve", +] + +[[package]] +name = "primeorder" +version = "0.13.6" +source = "git+https://github.com/scroll-tech/elliptic-curves?branch=ceno%2Fk256-13.4#fbd1bb695a030f3c1b6fd3808295afdbee85db38" +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 = "proc-macro-crate" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +dependencies = [ + "once_cell", + "toml_edit 0.19.15", +] + +[[package]] +name = "proc-macro-crate" +version = "3.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f" +dependencies = [ + "toml_edit 0.25.13+spec-1.1.0", +] + +[[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.119", +] + +[[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.5", + "rand_chacha 0.9.0", + "rand_xorshift", + "regex-syntax", + "rusty-fork", + "tempfile", + "unarray", +] + +[[package]] +name = "quanta" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3ab5a9d756f0d97bdc89019bd2e4ea098cf9cde50ee7564dde6b81ccc8f06c7" +dependencies = [ + "crossbeam-utils", + "libc", + "once_cell", + "raw-cpuid", + "wasi", + "web-sys", + "winapi", +] + +[[package]] +name = "quick-error" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" + +[[package]] +name = "quote" +version = "1.0.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfbc457d0c7a0759a614551b11a6409e5951f6c7537be1f1b7682b9ae9230368" +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 = "radix_trie" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c069c179fcdc6a2fe24d8d18305cf085fdbd4f922c041943e203685d6a1c58fd" +dependencies = [ + "endian-type", + "nibble_vec", +] + +[[package]] +name = "rand" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22f6172bdec972074665ed81ed53b71da00bfc44b65a753cfde883ec4c702a1a" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", + "serde", +] + +[[package]] +name = "rand" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9ef1d0d795eb7d84685bca4f72f3649f064e6641543d3a8c415898726a57b41" +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", + "serde", +] + +[[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 = "rapidhash" +version = "4.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5da7e78a036ce858e8d55b7e7dc8ba3a88b78350fd2155d3591bbd966b58589e" +dependencies = [ + "rustversion", +] + +[[package]] +name = "raw-cpuid" +version = "11.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "498cd0dc59d73224351ee52a95fee0f1a617a2eae0e7d9d720cc622c73a54186" +dependencies = [ + "bitflags", +] + +[[package]] +name = "rawpointer" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" + +[[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 = "redox_syscall" +version = "0.5.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" +dependencies = [ + "bitflags", +] + +[[package]] +name = "redox_users" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" +dependencies = [ + "getrandom 0.2.17", + "libredox", + "thiserror 1.0.69", +] + +[[package]] +name = "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.119", +] + +[[package]] +name = "regex" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a0e75113e14dc5acb068cd0786884f214f1312650a3d36d269f5c4f3cdee8a2" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f388202e4b80542a0921078cc23b6333bcf1409c1e3f86404cae4766a6131db" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" + +[[package]] +name = "repr_offset" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb1070755bd29dffc19d0971cab794e607839ba2ef4b69a9e6fbc8733c1b72ea" +dependencies = [ + "tstr", +] + +[[package]] +name = "reth-chainspec" +version = "1.8.2" +source = "git+https://github.com/scroll-tech/reth?tag=scroll-v91.2#11d0a3f73186dee7a1ba0d51ea5416dc8fef3e46" +dependencies = [ + "alloy-chains", + "alloy-consensus", + "alloy-eips", + "alloy-evm", + "alloy-genesis", + "alloy-primitives", + "alloy-trie 0.9.5", + "auto_impl", + "derive_more 2.1.1", + "reth-ethereum-forks", + "reth-network-peers", + "reth-primitives-traits", + "serde_json", +] + +[[package]] +name = "reth-codecs" +version = "1.8.2" +source = "git+https://github.com/scroll-tech/reth?tag=scroll-v91.2#11d0a3f73186dee7a1ba0d51ea5416dc8fef3e46" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-genesis", + "alloy-primitives", + "alloy-trie 0.9.5", + "bytes", + "modular-bitfield", + "op-alloy-consensus", + "reth-codecs-derive", + "reth-zstd-compressors", + "serde", +] + +[[package]] +name = "reth-codecs-derive" +version = "1.8.2" +source = "git+https://github.com/scroll-tech/reth?tag=scroll-v91.2#11d0a3f73186dee7a1ba0d51ea5416dc8fef3e46" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "reth-consensus" +version = "1.8.2" +source = "git+https://github.com/scroll-tech/reth?tag=scroll-v91.2#11d0a3f73186dee7a1ba0d51ea5416dc8fef3e46" +dependencies = [ + "alloy-consensus", + "alloy-primitives", + "auto_impl", + "reth-execution-types", + "reth-primitives-traits", + "thiserror 2.0.18", +] + +[[package]] +name = "reth-consensus-common" +version = "1.8.2" +source = "git+https://github.com/scroll-tech/reth?tag=scroll-v91.2#11d0a3f73186dee7a1ba0d51ea5416dc8fef3e46" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "reth-chainspec", + "reth-consensus", + "reth-primitives-traits", +] + +[[package]] +name = "reth-db-models" +version = "1.8.2" +source = "git+https://github.com/scroll-tech/reth?tag=scroll-v91.2#11d0a3f73186dee7a1ba0d51ea5416dc8fef3e46" +dependencies = [ + "alloy-eips", + "alloy-primitives", + "reth-primitives-traits", +] + +[[package]] +name = "reth-errors" +version = "1.8.2" +source = "git+https://github.com/scroll-tech/reth?tag=scroll-v91.2#11d0a3f73186dee7a1ba0d51ea5416dc8fef3e46" +dependencies = [ + "reth-consensus", + "reth-execution-errors", + "reth-storage-errors", + "thiserror 2.0.18", +] + +[[package]] +name = "reth-ethereum-consensus" +version = "1.8.2" +source = "git+https://github.com/scroll-tech/reth?tag=scroll-v91.2#11d0a3f73186dee7a1ba0d51ea5416dc8fef3e46" +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.8.2" +source = "git+https://github.com/scroll-tech/reth?tag=scroll-v91.2#11d0a3f73186dee7a1ba0d51ea5416dc8fef3e46" +dependencies = [ + "alloy-eip2124", + "alloy-hardforks", + "alloy-primitives", + "auto_impl", + "once_cell", +] + +[[package]] +name = "reth-ethereum-primitives" +version = "1.8.2" +source = "git+https://github.com/scroll-tech/reth?tag=scroll-v91.2#11d0a3f73186dee7a1ba0d51ea5416dc8fef3e46" +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.8.2" +source = "git+https://github.com/scroll-tech/reth?tag=scroll-v91.2#11d0a3f73186dee7a1ba0d51ea5416dc8fef3e46" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-evm", + "alloy-primitives", + "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 30.1.1", + "scroll-alloy-evm", +] + +[[package]] +name = "reth-evm-ethereum" +version = "1.8.2" +source = "git+https://github.com/scroll-tech/reth?tag=scroll-v91.2#11d0a3f73186dee7a1ba0d51ea5416dc8fef3e46" +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 30.1.1", +] + +[[package]] +name = "reth-execution-errors" +version = "1.8.2" +source = "git+https://github.com/scroll-tech/reth?tag=scroll-v91.2#11d0a3f73186dee7a1ba0d51ea5416dc8fef3e46" +dependencies = [ + "alloy-evm", + "alloy-primitives", + "alloy-rlp", + "nybbles 0.4.8", + "reth-storage-errors", + "thiserror 2.0.18", +] + +[[package]] +name = "reth-execution-types" +version = "1.8.2" +source = "git+https://github.com/scroll-tech/reth?tag=scroll-v91.2#11d0a3f73186dee7a1ba0d51ea5416dc8fef3e46" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-evm", + "alloy-primitives", + "derive_more 2.1.1", + "reth-ethereum-primitives", + "reth-primitives-traits", + "reth-trie-common", + "revm 30.1.1", +] + +[[package]] +name = "reth-network-peers" +version = "1.8.2" +source = "git+https://github.com/scroll-tech/reth?tag=scroll-v91.2#11d0a3f73186dee7a1ba0d51ea5416dc8fef3e46" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "serde_with", + "thiserror 2.0.18", + "url", +] + +[[package]] +name = "reth-primitives" +version = "1.8.2" +source = "git+https://github.com/scroll-tech/reth?tag=scroll-v91.2#11d0a3f73186dee7a1ba0d51ea5416dc8fef3e46" +dependencies = [ + "alloy-consensus", + "once_cell", + "reth-ethereum-forks", + "reth-ethereum-primitives", + "reth-primitives-traits", + "reth-static-file-types", +] + +[[package]] +name = "reth-primitives-traits" +version = "1.8.2" +source = "git+https://github.com/scroll-tech/reth?tag=scroll-v91.2#11d0a3f73186dee7a1ba0d51ea5416dc8fef3e46" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-genesis", + "alloy-primitives", + "alloy-rlp", + "alloy-rpc-types-eth", + "alloy-trie 0.9.5", + "auto_impl", + "bytes", + "derive_more 2.1.1", + "once_cell", + "op-alloy-consensus", + "reth-codecs", + "revm-bytecode 7.0.1", + "revm-primitives 21.0.1", + "revm-state 8.0.1", + "scroll-alloy-consensus", + "secp256k1 0.30.0", + "serde", + "serde_with", + "thiserror 2.0.18", +] + +[[package]] +name = "reth-prune-types" +version = "1.8.2" +source = "git+https://github.com/scroll-tech/reth?tag=scroll-v91.2#11d0a3f73186dee7a1ba0d51ea5416dc8fef3e46" +dependencies = [ + "alloy-primitives", + "derive_more 2.1.1", + "thiserror 2.0.18", +] + +[[package]] +name = "reth-revm" +version = "1.8.2" +source = "git+https://github.com/scroll-tech/reth?tag=scroll-v91.2#11d0a3f73186dee7a1ba0d51ea5416dc8fef3e46" +dependencies = [ + "alloy-primitives", + "reth-primitives-traits", + "reth-storage-api", + "reth-storage-errors", + "revm 30.1.1", +] + +[[package]] +name = "reth-scroll-chainspec" +version = "1.8.2" +source = "git+https://github.com/scroll-tech/reth?tag=scroll-v91.2#11d0a3f73186dee7a1ba0d51ea5416dc8fef3e46" +dependencies = [ + "alloy-chains", + "alloy-consensus", + "alloy-eips", + "alloy-genesis", + "alloy-primitives", + "alloy-serde", + "auto_impl", + "derive_more 2.1.1", + "once_cell", + "reth-chainspec", + "reth-ethereum-forks", + "reth-network-peers", + "reth-primitives-traits", + "reth-scroll-forks", + "reth-trie-common", + "scroll-alloy-hardforks", + "serde", + "serde_json", +] + +[[package]] +name = "reth-scroll-evm" +version = "1.8.2" +source = "git+https://github.com/scroll-tech/reth?tag=scroll-v91.2#11d0a3f73186dee7a1ba0d51ea5416dc8fef3e46" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-evm", + "alloy-primitives", + "alloy-rpc-types-engine", + "derive_more 2.1.1", + "reth-chainspec", + "reth-evm", + "reth-execution-types", + "reth-primitives", + "reth-primitives-traits", + "reth-scroll-chainspec", + "reth-scroll-forks", + "reth-scroll-primitives", + "reth-storage-api", + "revm 30.1.1", + "revm-primitives 21.0.1", + "revm-scroll", + "scroll-alloy-consensus", + "scroll-alloy-evm", + "scroll-alloy-hardforks", + "thiserror 2.0.18", + "tracing", +] + +[[package]] +name = "reth-scroll-forks" +version = "1.8.2" +source = "git+https://github.com/scroll-tech/reth?tag=scroll-v91.2#11d0a3f73186dee7a1ba0d51ea5416dc8fef3e46" +dependencies = [ + "alloy-chains", + "alloy-primitives", + "auto_impl", + "once_cell", + "reth-ethereum-forks", + "scroll-alloy-hardforks", + "serde", +] + +[[package]] +name = "reth-scroll-primitives" +version = "1.8.2" +source = "git+https://github.com/scroll-tech/reth?tag=scroll-v91.2#11d0a3f73186dee7a1ba0d51ea5416dc8fef3e46" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "bytes", + "once_cell", + "reth-codecs", + "reth-primitives-traits", + "scroll-alloy-consensus", + "serde", +] + +[[package]] +name = "reth-stages-types" +version = "1.8.2" +source = "git+https://github.com/scroll-tech/reth?tag=scroll-v91.2#11d0a3f73186dee7a1ba0d51ea5416dc8fef3e46" +dependencies = [ + "alloy-primitives", + "reth-trie-common", +] + +[[package]] +name = "reth-stateless" +version = "1.8.2" +source = "git+https://github.com/scroll-tech/reth?tag=scroll-v91.2#11d0a3f73186dee7a1ba0d51ea5416dc8fef3e46" +dependencies = [ + "alloy-consensus", + "alloy-primitives", + "alloy-rlp", + "alloy-rpc-types-debug", + "alloy-trie 0.9.5", + "itertools 0.14.0", + "reth-chainspec", + "reth-consensus", + "reth-errors", + "reth-ethereum-consensus", + "reth-ethereum-primitives", + "reth-evm", + "reth-primitives-traits", + "reth-revm", + "reth-trie-common", + "reth-trie-sparse", + "serde", + "serde_with", + "thiserror 2.0.18", +] + +[[package]] +name = "reth-static-file-types" +version = "1.8.2" +source = "git+https://github.com/scroll-tech/reth?tag=scroll-v91.2#11d0a3f73186dee7a1ba0d51ea5416dc8fef3e46" +dependencies = [ + "alloy-primitives", + "derive_more 2.1.1", + "serde", + "strum 0.27.2", +] + +[[package]] +name = "reth-storage-api" +version = "1.8.2" +source = "git+https://github.com/scroll-tech/reth?tag=scroll-v91.2#11d0a3f73186dee7a1ba0d51ea5416dc8fef3e46" +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 9.0.1", +] + +[[package]] +name = "reth-storage-errors" +version = "1.8.2" +source = "git+https://github.com/scroll-tech/reth?tag=scroll-v91.2#11d0a3f73186dee7a1ba0d51ea5416dc8fef3e46" +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 8.0.2", + "thiserror 2.0.18", +] + +[[package]] +name = "reth-trie" +version = "1.8.2" +source = "git+https://github.com/scroll-tech/reth?tag=scroll-v91.2#11d0a3f73186dee7a1ba0d51ea5416dc8fef3e46" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "alloy-trie 0.9.5", + "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 9.0.1", + "tracing", +] + +[[package]] +name = "reth-trie-common" +version = "1.8.2" +source = "git+https://github.com/scroll-tech/reth?tag=scroll-v91.2#11d0a3f73186dee7a1ba0d51ea5416dc8fef3e46" +dependencies = [ + "alloy-consensus", + "alloy-primitives", + "alloy-rlp", + "alloy-trie 0.9.5", + "derive_more 2.1.1", + "itertools 0.14.0", + "nybbles 0.4.8", + "reth-primitives-traits", + "revm-database 9.0.1", +] + +[[package]] +name = "reth-trie-sparse" +version = "1.8.2" +source = "git+https://github.com/scroll-tech/reth?tag=scroll-v91.2#11d0a3f73186dee7a1ba0d51ea5416dc8fef3e46" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "alloy-trie 0.9.5", + "auto_impl", + "reth-execution-errors", + "reth-primitives-traits", + "reth-trie-common", + "smallvec", + "tracing", +] + +[[package]] +name = "reth-zstd-compressors" +version = "1.8.2" +source = "git+https://github.com/scroll-tech/reth?tag=scroll-v91.2#11d0a3f73186dee7a1ba0d51ea5416dc8fef3e46" +dependencies = [ + "zstd", +] + +[[package]] +name = "revm" +version = "30.1.1" +source = "git+https://github.com/scroll-tech/revm?tag=scroll-v91#10e11b985ed28bd383e624539868bcc3f613d77c" +dependencies = [ + "revm-bytecode 7.0.1", + "revm-context 10.1.1", + "revm-context-interface 11.1.1", + "revm-database 9.0.1", + "revm-database-interface 8.0.2", + "revm-handler 11.1.1", + "revm-inspector 11.1.1", + "revm-interpreter 27.0.1", + "revm-precompile", + "revm-primitives 21.0.1", + "revm-state 8.0.1", +] + +[[package]] +name = "revm" +version = "30.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76df793c6ef3bef8f88f05b3873ebebce1494385a3ce8f58ad2e2e111aa0de11" +dependencies = [ + "revm-bytecode 7.1.1", + "revm-context 10.1.2", + "revm-context-interface 11.1.2", + "revm-database 9.0.6", + "revm-database-interface 8.0.5", + "revm-handler 11.2.0", + "revm-inspector 11.2.0", + "revm-interpreter 28.0.0", + "revm-precompile", + "revm-primitives 21.0.1", + "revm-state 8.1.1", +] + +[[package]] +name = "revm-bytecode" +version = "7.0.1" +source = "git+https://github.com/scroll-tech/revm?tag=scroll-v91#10e11b985ed28bd383e624539868bcc3f613d77c" +dependencies = [ + "bitvec", + "phf", + "revm-primitives 21.0.1", + "serde", +] + +[[package]] +name = "revm-bytecode" +version = "7.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2c6b5e6e8dd1e28a4a60e5f46615d4ef0809111c9e63208e55b5c7058200fb0" +dependencies = [ + "bitvec", + "phf", + "revm-primitives 21.0.2", + "serde", +] + +[[package]] +name = "revm-context" +version = "10.1.1" +source = "git+https://github.com/scroll-tech/revm?tag=scroll-v91#10e11b985ed28bd383e624539868bcc3f613d77c" +dependencies = [ + "bitvec", + "cfg-if", + "derive-where", + "revm-bytecode 7.0.1", + "revm-context-interface 11.1.1", + "revm-database-interface 8.0.2", + "revm-primitives 21.0.1", + "revm-state 8.0.1", + "serde", +] + +[[package]] +name = "revm-context" +version = "10.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7adcce0c14cf59b7128de34185a0fbf8f63309539b9263b35ead870d73584114" +dependencies = [ + "bitvec", + "cfg-if", + "derive-where", + "revm-bytecode 7.1.1", + "revm-context-interface 11.1.2", + "revm-database-interface 8.0.5", + "revm-primitives 21.0.1", + "revm-state 8.1.1", + "serde", +] + +[[package]] +name = "revm-context-interface" +version = "11.1.1" +source = "git+https://github.com/scroll-tech/revm?tag=scroll-v91#10e11b985ed28bd383e624539868bcc3f613d77c" +dependencies = [ + "alloy-eip2930", + "alloy-eip7702", + "auto_impl", + "either", + "revm-database-interface 8.0.2", + "revm-primitives 21.0.1", + "revm-state 8.0.1", + "serde", +] + +[[package]] +name = "revm-context-interface" +version = "11.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d620a9725e443c171fb195a074331fa4a745fa5cbb0018b4bbf42619e64b563" +dependencies = [ + "alloy-eip2930", + "alloy-eip7702", + "auto_impl", + "either", + "revm-database-interface 8.0.5", + "revm-primitives 21.0.1", + "revm-state 8.1.1", + "serde", +] + +[[package]] +name = "revm-database" +version = "9.0.1" +source = "git+https://github.com/scroll-tech/revm?tag=scroll-v91#10e11b985ed28bd383e624539868bcc3f613d77c" +dependencies = [ + "alloy-eips", + "revm-bytecode 7.0.1", + "revm-database-interface 8.0.2", + "revm-primitives 21.0.1", + "revm-state 8.0.1", + "serde", +] + +[[package]] +name = "revm-database" +version = "9.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "980d8d6bba78c5dd35b83abbb6585b0b902eb25ea4448ed7bfba6283b0337191" +dependencies = [ + "alloy-eips", + "revm-bytecode 7.1.1", + "revm-database-interface 8.0.5", + "revm-primitives 21.0.2", + "revm-state 8.1.1", + "serde", +] + +[[package]] +name = "revm-database-interface" +version = "8.0.2" +source = "git+https://github.com/scroll-tech/revm?tag=scroll-v91#10e11b985ed28bd383e624539868bcc3f613d77c" +dependencies = [ + "auto_impl", + "either", + "revm-primitives 21.0.1", + "revm-state 8.0.1", + "serde", +] + +[[package]] +name = "revm-database-interface" +version = "8.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cce03e3780287b07abe58faf4a7f5d8be7e81321f93ccf3343c8f7755602bae" +dependencies = [ + "auto_impl", + "either", + "revm-primitives 21.0.2", + "revm-state 8.1.1", + "serde", +] + +[[package]] +name = "revm-handler" +version = "11.1.1" +source = "git+https://github.com/scroll-tech/revm?tag=scroll-v91#10e11b985ed28bd383e624539868bcc3f613d77c" +dependencies = [ + "auto_impl", + "derive-where", + "revm-bytecode 7.0.1", + "revm-context 10.1.1", + "revm-context-interface 11.1.1", + "revm-database-interface 8.0.2", + "revm-interpreter 27.0.1", + "revm-precompile", + "revm-primitives 21.0.1", + "revm-state 8.0.1", + "serde", +] + +[[package]] +name = "revm-handler" +version = "11.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1d8049b2fbff6636150f4740c95369aa174e41b0383034e0e256cfdffcfcd23" +dependencies = [ + "auto_impl", + "derive-where", + "revm-bytecode 7.1.1", + "revm-context 10.1.2", + "revm-context-interface 11.1.2", + "revm-database-interface 8.0.5", + "revm-interpreter 28.0.0", + "revm-precompile", + "revm-primitives 21.0.1", + "revm-state 8.1.1", + "serde", +] + +[[package]] +name = "revm-inspector" +version = "11.1.1" +source = "git+https://github.com/scroll-tech/revm?tag=scroll-v91#10e11b985ed28bd383e624539868bcc3f613d77c" +dependencies = [ + "auto_impl", + "either", + "revm-context 10.1.1", + "revm-database-interface 8.0.2", + "revm-handler 11.1.1", + "revm-interpreter 27.0.1", + "revm-primitives 21.0.1", + "revm-state 8.0.1", + "serde", + "serde_json", +] + +[[package]] +name = "revm-inspector" +version = "11.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2a21dd773b654ec7e080025eecef4ac84c711150d1bd36acadf0546f471329a" +dependencies = [ + "auto_impl", + "either", + "revm-context 10.1.2", + "revm-database-interface 8.0.5", + "revm-handler 11.2.0", + "revm-interpreter 28.0.0", + "revm-primitives 21.0.1", + "revm-state 8.1.1", + "serde", + "serde_json", +] + +[[package]] +name = "revm-interpreter" +version = "27.0.1" +source = "git+https://github.com/scroll-tech/revm?tag=scroll-v91#10e11b985ed28bd383e624539868bcc3f613d77c" +dependencies = [ + "revm-bytecode 7.0.1", + "revm-context-interface 11.1.1", + "revm-primitives 21.0.1", + "revm-state 8.0.1", + "serde", +] + +[[package]] +name = "revm-interpreter" +version = "28.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1de5c790122f8ded67992312af8acd41ccfcee629b25b819e10c5b1f69caf57" +dependencies = [ + "revm-bytecode 7.1.1", + "revm-context-interface 11.1.2", + "revm-primitives 21.0.1", + "revm-state 8.1.1", + "serde", +] + +[[package]] +name = "revm-precompile" +version = "28.1.1" +source = "git+https://github.com/scroll-tech/revm?tag=scroll-v91#10e11b985ed28bd383e624539868bcc3f613d77c" +dependencies = [ + "ark-bls12-381", + "ark-bn254", + "ark-ec", + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "arrayref", + "aurora-engine-modexp", + "c-kzg", + "cfg-if", + "k256 0.13.4 (registry+https://github.com/rust-lang/crates.io-index)", + "p256 0.13.2 (registry+https://github.com/rust-lang/crates.io-index)", + "revm-primitives 21.0.1", + "ripemd", + "rug", + "secp256k1 0.31.1", + "sha2", +] + +[[package]] +name = "revm-primitives" +version = "21.0.1" +source = "git+https://github.com/scroll-tech/revm?tag=scroll-v91#10e11b985ed28bd383e624539868bcc3f613d77c" +dependencies = [ + "alloy-primitives", + "num_enum 0.7.6", + "once_cell", + "serde", +] + +[[package]] +name = "revm-primitives" +version = "21.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29e161db429d465c09ba9cbff0df49e31049fe6b549e28eb0b7bd642fcbd4412" +dependencies = [ + "alloy-primitives", + "num_enum 0.7.6", + "once_cell", + "serde", +] + +[[package]] +name = "revm-scroll" +version = "0.1.0" +source = "git+https://github.com/scroll-tech/scroll-revm?tag=scroll-v91#a1ac004adf0019d9926defc4e31e6a76a7e558f7" +dependencies = [ + "auto_impl", + "enumn", + "once_cell", + "revm 30.1.1", + "revm-inspector 11.1.1", + "revm-primitives 21.0.1", + "serde", +] + +[[package]] +name = "revm-state" +version = "8.0.1" +source = "git+https://github.com/scroll-tech/revm?tag=scroll-v91#10e11b985ed28bd383e624539868bcc3f613d77c" +dependencies = [ + "bitflags", + "revm-bytecode 7.0.1", + "revm-primitives 21.0.1", + "serde", +] + +[[package]] +name = "revm-state" +version = "8.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d8be953b7e374dbdea0773cf360debed8df394ea8d82a8b240a6b5da37592fc" +dependencies = [ + "bitflags", + "revm-bytecode 7.1.1", + "revm-primitives 21.0.2", + "serde", +] + +[[package]] +name = "rfc6979" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +dependencies = [ + "hmac", + "subtle", +] + +[[package]] +name = "rfc6979" +version = "0.4.0" +source = "git+https://github.com/sp1-patches/signatures.git?tag=patch-16.9-sp1-4.1.0#1880299a48fe7ef249edaa616fd411239fb5daf1" +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 = "risc0-ethereum-trie" +version = "0.1.0" +source = "git+https://github.com/risc0/risc0-ethereum#3aa137844818f0f44e6b2962b6eb958f26d04be7" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "alloy-trie 0.8.1", + "arrayvec", + "bincode 1.3.3", + "itertools 0.14.0", + "serde", + "thiserror 2.0.18", +] + +[[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 = "rrs-succinct" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3372685893a9f67d18e98e792d690017287fd17379a83d798d958e517d380fa9" +dependencies = [ + "downcast-rs", + "num_enum 0.5.11", + "paste", +] + +[[package]] +name = "rug" +version = "1.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07a8857882aec59d27254b02481c709327c13de6fad1da60bfc4f9783eaaa61e" +dependencies = [ + "az", + "gmp-mpfr-sys", + "libc", + "libm", +] + +[[package]] +name = "ruint" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45caf26f647c19115bf9c453c70ffe4a4a3a6390dceebd942610584f99b8ddce" +dependencies = [ + "alloy-rlp", + "ark-ff 0.3.0", + "ark-ff 0.4.2", + "ark-ff 0.5.0", + "ark-ff 0.6.0", + "bytes", + "fastrlp 0.3.1", + "fastrlp 0.4.0", + "num-bigint 0.4.8", + "num-integer", + "num-traits", + "parity-scale-codec", + "primitive-types", + "proptest", + "rand 0.8.7", + "rand 0.9.5", + "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.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b74b56ffa8bb2830709a538c2cbcae9aa062db0d2a42563bfb09bdaae44020eb" + +[[package]] +name = "rustc-hash" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b1e7f9a428571be2dc5bc0505c13fb6bf936822b894ec87abf8a08a4e51742d" + +[[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 = "0.38.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" +dependencies = [ + "bitflags", + "errno", + "libc", + "linux-raw-sys 0.4.15", + "windows-sys 0.59.0", +] + +[[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 0.12.1", + "windows-sys 0.61.2", +] + +[[package]] +name = "rustversion" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" + +[[package]] +name = "rusty-fork" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc6bf79ff24e648f6da1f8d1f011e9cac26491b619e6b9280f2b47f1774e6ee2" +dependencies = [ + "fnv", + "quick-error", + "tempfile", + "wait-timeout", +] + +[[package]] +name = "ryu" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" + +[[package]] +name = "sbv-core" +version = "2.0.0" +source = "git+https://github.com/scroll-tech/stateless-block-verifier?tag=scroll-v91.2#3a32848c9438432125751eae8837757f6b87562e" +dependencies = [ + "auto_impl", + "itertools 0.14.0", + "reth-primitives-traits", + "reth-stateless", + "sbv-helpers", + "sbv-primitives", + "sbv-trie", + "serde", + "serde_with", +] + +[[package]] +name = "sbv-helpers" +version = "2.0.0" +source = "git+https://github.com/scroll-tech/stateless-block-verifier?tag=scroll-v91.2#3a32848c9438432125751eae8837757f6b87562e" +dependencies = [ + "tracing", +] + +[[package]] +name = "sbv-primitives" +version = "2.0.0" +source = "git+https://github.com/scroll-tech/stateless-block-verifier?tag=scroll-v91.2#3a32848c9438432125751eae8837757f6b87562e" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-evm", + "alloy-primitives", + "alloy-rpc-types-debug", + "alloy-rpc-types-eth", + "alloy-serde", + "reth-chainspec", + "reth-ethereum-forks", + "reth-evm", + "reth-evm-ethereum", + "reth-execution-types", + "reth-primitives", + "reth-primitives-traits", + "reth-scroll-chainspec", + "reth-scroll-evm", + "reth-scroll-forks", + "reth-scroll-primitives", + "revm 30.1.1", + "revm-scroll", + "sbv-helpers", + "scroll-alloy-consensus", + "scroll-alloy-evm", + "scroll-alloy-rpc-types", + "serde", +] + +[[package]] +name = "sbv-trie" +version = "2.0.0" +source = "git+https://github.com/scroll-tech/stateless-block-verifier?tag=scroll-v91.2#3a32848c9438432125751eae8837757f6b87562e" +dependencies = [ + "alloy-rlp", + "alloy-trie 0.9.5", + "reth-stateless", + "reth-trie", + "risc0-ethereum-trie", + "sbv-primitives", +] + +[[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 3.5.0", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[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 = "scroll-alloy-consensus" +version = "1.8.2" +source = "git+https://github.com/scroll-tech/reth?tag=scroll-v91.2#11d0a3f73186dee7a1ba0d51ea5416dc8fef3e46" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "alloy-serde", + "derive_more 2.1.1", + "reth-codecs", + "serde", + "serde_with", +] + +[[package]] +name = "scroll-alloy-evm" +version = "1.8.2" +source = "git+https://github.com/scroll-tech/reth?tag=scroll-v91.2#11d0a3f73186dee7a1ba0d51ea5416dc8fef3e46" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-evm", + "alloy-primitives", + "auto_impl", + "encoder-standard", + "revm 30.1.1", + "revm-scroll", + "scroll-alloy-consensus", + "scroll-alloy-hardforks", + "serde", +] + +[[package]] +name = "scroll-alloy-hardforks" +version = "1.8.2" +source = "git+https://github.com/scroll-tech/reth?tag=scroll-v91.2#11d0a3f73186dee7a1ba0d51ea5416dc8fef3e46" +dependencies = [ + "alloy-hardforks", + "auto_impl", + "serde", +] + +[[package]] +name = "scroll-alloy-rpc-types" +version = "1.8.2" +source = "git+https://github.com/scroll-tech/reth?tag=scroll-v91.2#11d0a3f73186dee7a1ba0d51ea5416dc8fef3e46" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-network-primitives", + "alloy-primitives", + "alloy-rpc-types-eth", + "alloy-serde", + "derive_more 2.1.1", + "scroll-alloy-consensus", + "serde", + "serde_json", +] + +[[package]] +name = "scroll-zkvm-backend" +version = "0.8.0" +dependencies = [ + "base64", + "serde", + "thiserror 2.0.18", +] + +[[package]] +name = "scroll-zkvm-build-guest-ceno" +version = "0.8.0" +dependencies = [ + "clap", + "eyre", + "tracing", + "tracing-subscriber 0.3.23", +] + +[[package]] +name = "scroll-zkvm-ceno-batch-circuit" +version = "0.8.0" +dependencies = [ + "alloy-primitives", + "ceno_rt", + "scroll-zkvm-types-base", + "scroll-zkvm-types-batch", +] + +[[package]] +name = "scroll-zkvm-ceno-bundle-circuit" +version = "0.8.0" +dependencies = [ + "alloy-primitives", + "ceno_rt", + "scroll-zkvm-types-base", + "scroll-zkvm-types-bundle", +] + +[[package]] +name = "scroll-zkvm-ceno-chunk-circuit" +version = "0.8.0" +dependencies = [ + "alloy-primitives", + "ceno_rt", + "scroll-zkvm-types-base", + "scroll-zkvm-types-chunk", +] + +[[package]] +name = "scroll-zkvm-ceno-prover-test" +version = "0.8.0" +dependencies = [ + "alloy-primitives", + "bincode 2.0.1", + "bitcode", + "cargo-ceno", + "ceno_emul", + "ceno_host", + "ceno_zkvm", + "clap", + "eyre", + "ff_ext", + "mpcs", + "sbv-core", + "sbv-primitives", + "scroll-zkvm-backend", + "scroll-zkvm-types-base", + "scroll-zkvm-types-batch", + "scroll-zkvm-types-bundle", + "scroll-zkvm-types-chunk", + "serde", + "serde_json", + "tiny-keccak", + "tracing", + "tracing-subscriber 0.3.23", + "vm-zstd", +] + +[[package]] +name = "scroll-zkvm-types-base" +version = "0.8.0" +dependencies = [ + "alloy-primitives", + "alloy-serde", + "serde", + "sha2", + "sha3", +] + +[[package]] +name = "scroll-zkvm-types-batch" +version = "0.8.0" +dependencies = [ + "alloy-primitives", + "bls12_381 0.8.0", + "c-kzg", + "itertools 0.14.0", + "kzg-rs", + "sbv-primitives", + "scroll-zkvm-types-base", + "serde", + "sha2", + "vm-zstd", +] + +[[package]] +name = "scroll-zkvm-types-bundle" +version = "0.8.0" +dependencies = [ + "scroll-zkvm-types-base", + "serde", +] + +[[package]] +name = "scroll-zkvm-types-chunk" +version = "0.8.0" +dependencies = [ + "alloy-consensus", + "alloy-primitives", + "alloy-sol-types", + "ecies", + "hashbrown 0.15.5", + "hex-literal 0.4.1", + "itertools 0.14.0", + "sbv-core", + "sbv-helpers", + "sbv-primitives", + "sbv-trie", + "scroll-zkvm-types-base", + "serde", + "thiserror 2.0.18", +] + +[[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 = "secp" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85ed54b1141d8cec428d8a4abf01282755ba4e4c8a621dd23fa2e0ed761814c2" +dependencies = [ + "base16ct", + "once_cell", + "secp256k1 0.30.0", + "subtle", +] + +[[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.7", + "secp256k1-sys 0.10.1", + "serde", +] + +[[package]] +name = "secp256k1" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c3c81b43dc2d8877c216a3fccf76677ee1ebccd429566d3e67447290d0c42b2" +dependencies = [ + "bitcoin_hashes", + "rand 0.9.5", + "secp256k1-sys 0.11.0", +] + +[[package]] +name = "secp256k1-sys" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4387882333d3aa8cb20530a17c69a3752e97837832f34f6dccc760e715001d9" +dependencies = [ + "cc", +] + +[[package]] +name = "secp256k1-sys" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcb913707158fadaf0d8702c2db0e857de66eb003ccfdda5924b5f5ac98efb38" +dependencies = [ + "cc", +] + +[[package]] +name = "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" +dependencies = [ + "serde", + "serde_core", +] + +[[package]] +name = "semver-parser" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9900206b54a3527fdc7b8a938bffd94a568bac4f4aa8113b209df75a09c0dec2" +dependencies = [ + "pest", +] + +[[package]] +name = "serde" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde-big-array" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11fc7cc2c76d73e0f27ee52abbd64eec84d46f370c88371120433196934e4b7f" +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_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.119", +] + +[[package]] +name = "serde_json" +version = "1.0.150" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" +dependencies = [ + "indexmap 2.14.0", + "itoa", + "memchr", + "serde", + "serde_core", + "zmij", +] + +[[package]] +name = "serde_with" +version = "3.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a5c54c7310e7b8b9577c286d7e399ddd876c3e12b3ed917a8aabc4b96e9e8c" +dependencies = [ + "base64", + "bs58", + "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.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84d57bc0c8b9a17920c178daa6bb924850d54a9c97ab45194bb8c17ad66bb660" +dependencies = [ + "darling 0.23.0", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[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.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures 0.2.17", + "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.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6287fd675f713484342a89cbf0a386abef5f15919cfad607e5e1f19e1e15331" +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 = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" + +[[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 = "sketches-ddsketch" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85636c14b73d81f541e525f585c0a2109e6744e1565b5c1668e31c70c10ed65c" + +[[package]] +name = "slab" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" + +[[package]] +name = "slop-algebra" +version = "6.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a473c3a06b466dd0708829415a8a9fab451740da066e07862c8c098904aaad6" +dependencies = [ + "itertools 0.14.0", + "p3-field 0.3.3-succinct", + "serde", +] + +[[package]] +name = "slop-bn254" +version = "6.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7fbae5dd16a3d1e87c9e99cfd557338171710be01458bd5b12dded3878d3fd8" +dependencies = [ + "ff 0.13.1", + "p3-bn254-fr", + "serde", + "slop-algebra", + "slop-challenger", + "slop-poseidon2", + "slop-symmetric", +] + +[[package]] +name = "slop-challenger" +version = "6.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4e80df718cef7d3100658dc8b46fafcc994b814421ec9a7d0763a6ee1e5070c" +dependencies = [ + "futures", + "p3-challenger 0.3.3-succinct", + "serde", + "slop-algebra", + "slop-symmetric", +] + +[[package]] +name = "slop-koala-bear" +version = "6.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6586b1c0e66c503e4026a8cb007349fa99c2466957c5b09d18fe658d1391ed8" +dependencies = [ + "lazy_static", + "p3-koala-bear", + "serde", + "slop-algebra", + "slop-challenger", + "slop-poseidon2", + "slop-symmetric", +] + +[[package]] +name = "slop-poseidon2" +version = "6.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c956b11fff1b8a071fa4ba982dc35e458cff1620dc7b33d9cf22d8df30895f79" +dependencies = [ + "p3-poseidon2 0.3.3-succinct", +] + +[[package]] +name = "slop-primitives" +version = "6.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de169e0ca381847f9efa0db5a54533371c10558d7aaed4cb3b2a9bae24a0fe83" +dependencies = [ + "slop-algebra", +] + +[[package]] +name = "slop-symmetric" +version = "6.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "955145ad6e3a1d083a428f9274071cfbb44c3b29013aae9d6c4c29fb7328cfc0" +dependencies = [ + "p3-symmetric 0.3.3-succinct", +] + +[[package]] +name = "smallvec" +version = "1.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90" +dependencies = [ + "serde", +] + +[[package]] +name = "snap" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b6b67fb9a61334225b5b790716f609cd58395f895b3fe8b328786812a40bc3b" + +[[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 = "sp1-curves" +version = "0.1.0" +source = "git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.34#74efcb2499c036bf8a1c0bc8cb10a5fdcdca0cd2" +dependencies = [ + "cfg-if", + "dashu", + "elliptic-curve", + "ff_ext", + "generic-array 1.4.4", + "itertools 0.13.0", + "k256 0.13.4 (registry+https://github.com/rust-lang/crates.io-index)", + "multilinear_extensions", + "num", + "p256 0.13.2 (registry+https://github.com/rust-lang/crates.io-index)", + "p3", + "rug", + "serde", + "snowbridge-amcl", + "typenum", +] + +[[package]] +name = "sp1-lib" +version = "6.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02cd166e010c80e542585bf74585ea80eff117c361656cae43f2968cf0af12d4" +dependencies = [ + "bincode 1.3.3", + "serde", + "sp1-primitives", +] + +[[package]] +name = "sp1-primitives" +version = "6.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4df14efe799ebd675cf530c853153a4787327a2385067716dfad4ede79ff31ad" +dependencies = [ + "bincode 1.3.3", + "blake3", + "elf", + "hex", + "itertools 0.14.0", + "lazy_static", + "num-bigint 0.4.8", + "serde", + "sha2", + "slop-algebra", + "slop-bn254", + "slop-challenger", + "slop-koala-bear", + "slop-poseidon2", + "slop-primitives", + "slop-symmetric", +] + +[[package]] +name = "spin" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3763264f6b73151db08c50ff20d7d8a0b8796e021cdea7ceedad07b80155fa0e" + +[[package]] +name = "spin" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "023a211cb3138dbc438680b32560ad89f699977624c9f8dbb95a47d5b4c07dd3" +dependencies = [ + "lock_api", +] + +[[package]] +name = "spki" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +dependencies = [ + "base64ct", + "der", +] + +[[package]] +name = "sppark" +version = "0.1.11" +source = "git+ssh://git@github.com/scroll-tech/ceno-gpu.git?branch=main#8ecb4a4047bae2842147b9c55351bf38d58d45a6" +dependencies = [ + "cc", + "which", +] + +[[package]] +name = "sppark_plug" +version = "0.1.0" +source = "git+ssh://git@github.com/scroll-tech/ceno-gpu.git?branch=main#8ecb4a4047bae2842147b9c55351bf38d58d45a6" +dependencies = [ + "cc", + "ff_ext", + "itertools 0.13.0", + "p3", + "sppark", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" + +[[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 = "struct-reflection" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "701b671d1ad68e250e05718f95dae3014a17f4e69cbe51842531c30495ff3301" +dependencies = [ + "struct-reflection-derive", +] + +[[package]] +name = "struct-reflection-derive" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ab74230a0592602e361bd63c645413fa8cbe4500d10274e849179e5c72548f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "strum" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125" + +[[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.25.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23dc1fa9ac9c169a78ba62f0b841814b7abae11bdd047b9c58f893439e309ea0" +dependencies = [ + "heck 0.4.1", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.119", +] + +[[package]] +name = "strum_macros" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.119", +] + +[[package]] +name = "strum_macros" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "substrate-bn" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b5bbfa79abbae15dd642ea8176a21a635ff3c00059961d1ea27ad04e5b441c" +dependencies = [ + "byteorder", + "crunchy", + "lazy_static", + "rand 0.8.7", + "rustc-hex", +] + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "sumcheck" +version = "0.1.0" +source = "git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.34#74efcb2499c036bf8a1c0bc8cb10a5fdcdca0cd2" +dependencies = [ + "either", + "ff_ext", + "itertools 0.13.0", + "multilinear_extensions", + "p3", + "rayon", + "serde", + "sumcheck_macro", + "thiserror 1.0.69", + "tracing", + "transcript", +] + +[[package]] +name = "sumcheck_macro" +version = "0.1.0" +source = "git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.34#74efcb2499c036bf8a1c0bc8cb10a5fdcdca0cd2" +dependencies = [ + "itertools 0.13.0", + "p3", + "proc-macro2", + "quote", + "rand 0.8.7", + "syn 2.0.119", +] + +[[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.119" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn-solidity" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec005042c7d952febc1a3ef5b0f6674e9054aa836877a31c90b20e25b3d31744" +dependencies = [ + "paste", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[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.119", +] + +[[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.3", + "once_cell", + "rustix 1.1.4", + "windows-sys 0.61.2", +] + +[[package]] +name = "term" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c59df8ac95d96ff9bede18eb7300b0fda5e5d8d90960e76f8e14ae765eedbf1f" +dependencies = [ + "dirs-next", + "rustversion", + "winapi", +] + +[[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.119", +] + +[[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.119", +] + +[[package]] +name = "thread_local" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ad99c4c6d32803332c548b1af0540b357b3f5fc0be8f6c6bfe8b2e6ae784070" +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 = "tikv-jemalloc-ctl" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "661f1f6a57b3a36dc9174a2c10f19513b4866816e13425d3e418b11cc37bc24c" +dependencies = [ + "libc", + "paste", + "tikv-jemalloc-sys", +] + +[[package]] +name = "tikv-jemalloc-sys" +version = "0.6.1+5.3.0-1-ge13ca993e8ccb9ba9847cc330696e02839f328f7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd8aa5b2ab86a2cefa406d889139c162cbb230092f7d1d7cbc1716405d852a3b" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "tikv-jemallocator" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0359b4327f954e0567e69fb191cf1436617748813819c94b8cd4a431422d053a" +dependencies = [ + "libc", + "tikv-jemalloc-sys", +] + +[[package]] +name = "time" +version = "0.3.53" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18dfaaeddcb932337b5e7866ee7d0ce9b76d2fd092997146f187ec09b4558a50" +dependencies = [ + "deranged", + "libc", + "num-conv", + "num_threads", + "powerfmt", + "serde_core", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1c906769ad99c88eaa54e728060edef082f8e358ff32030cb7c7d315e81109" + +[[package]] +name = "time-macros" +version = "0.2.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c431b87111666e491a90baa837f914fb45cd5dc3c268591b0220ff5057f2085f" +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 = "tinyvec" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb4ebadaa0af04fab11ae01eb5f9fdb5f9c5b875506e210e71c07873528baa7f" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "toml_datetime" +version = "0.6.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" + +[[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.19.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +dependencies = [ + "indexmap 2.14.0", + "toml_datetime 0.6.11", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.25.13+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6975367e4d2ef766d86af01ffad14b622fecc8d4357a998fbc4deb6e9bacaf9b" +dependencies = [ + "indexmap 2.14.0", + "toml_datetime 1.1.1+spec-1.1.0", + "toml_parser", + "winnow 1.0.4", +] + +[[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.4", +] + +[[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.119", +] + +[[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 0.3.23", +] + +[[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.2.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e0d2eaa99c3c2e41547cfa109e910a68ea03823cccad4a0525dcbc9b01e8c71" +dependencies = [ + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.23" +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 = "transcript" +version = "0.1.0" +source = "git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.34#74efcb2499c036bf8a1c0bc8cb10a5fdcdca0cd2" +dependencies = [ + "ff_ext", + "itertools 0.13.0", + "p3", + "poseidon", +] + +[[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 = "tstr" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f8e0294f14baae476d0dd0a2d780b2e24d66e349a9de876f5126777a37bdba7" +dependencies = [ + "tstr_proc_macros", +] + +[[package]] +name = "tstr_proc_macros" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e78122066b0cb818b8afd08f7ed22f7fdbc3e90815035726f0840d0d26c0747a" + +[[package]] +name = "typed-arena" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6af6ae20167a9ece4bcb41af5b80f8a1f1df981f6391189ce00fd257af04126a" + +[[package]] +name = "typenum" +version = "1.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" + +[[package]] +name = "typewit" +version = "1.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "214ca0b2191785cbc06209b9ca1861e048e39b5ba33574b3cedd58363d5bb5f6" + +[[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.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8" + +[[package]] +name = "unicode-width" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" + +[[package]] +name = "unicode-width" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" + +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + +[[package]] +name = "universal-hash" +version = "0.6.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a55be643b40a21558f44806b53ee9319595bc7ca6896372e4e08e5d7d83c9cd6" +dependencies = [ + "crypto-common 0.2.0-rc.4", + "subtle", +] + +[[package]] +name = "unty" +version = "0.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d49784317cd0d1ee7ec5c716dd598ec5b4483ea832a2dced265471cc0f690ae" + +[[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", + "serde", +] + +[[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 = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "vergen" +version = "9.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b849a1f6d8639e8de261e81ee0fc881e3e3620db1af9f2e0da015d4382ceaf75" +dependencies = [ + "anyhow", + "cargo_metadata 0.23.1", + "derive_builder", + "regex", + "rustc_version 0.4.1", + "rustversion", + "time", + "vergen-lib", +] + +[[package]] +name = "vergen-git2" +version = "9.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d51ab55ddf1188c8d679f349775362b0fa9e90bd7a4ac69838b2a087623f0d57" +dependencies = [ + "anyhow", + "derive_builder", + "git2", + "rustversion", + "time", + "vergen", + "vergen-lib", +] + +[[package]] +name = "vergen-lib" +version = "9.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b34a29ba7e9c59e62f229ae1932fb1b8fb8a6fdcc99215a641913f5f5a59a569" +dependencies = [ + "anyhow", + "derive_builder", + "rustversion", +] + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "virtue" +version = "0.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "051eb1abcf10076295e815102942cc58f9d5e3b4560e46e53c21e8ff6f3af7b1" + +[[package]] +name = "vm-zstd" +version = "0.1.1" +source = "git+https://github.com/scroll-tech/rust-zstd-decompressor.git?rev=b027327#b0273278316245fef733df54cc29ee3baa3d7382" +dependencies = [ + "anyhow", + "bitstream-io", + "encoder-standard", + "itertools 0.11.0", + "serde", + "strum 0.25.0", + "strum_macros 0.25.3", +] + +[[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.4+wasi-0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b67efb37e106e55ce722a510d6b5f9c17f083e5fc79afc2badeb12cc313d9487" +dependencies = [ + "wit-bindgen", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.126" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b067c0c11094aef6b7a801c1e34a26affafdf3d051dba08456b868789aaf9a4" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.126" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "167ce5e579f6bcf889c4f7175a8a5a585de84e8ff93976ce393efa5f2837aab1" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.126" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3997c7839262f4ef12cf90b818d6340c18e80f263f1a94bf157d0ec4420380e" +dependencies = [ + "bumpalo", + "proc-macro2", + "quote", + "syn 2.0.119", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.126" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc1b4cb0cc549fcf58d7dfc081778139b3d283a081644e833e84682ad71cea24" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "web-sys" +version = "0.3.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8622dcb61c0bcc9fffa6938bed81210af2da9a7e4a1a834b2e37a59b6dfb6141" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "which" +version = "4.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" +dependencies = [ + "either", + "home", + "once_cell", + "rustix 0.38.44", +] + +[[package]] +name = "whir" +version = "0.1.0" +source = "git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.34#74efcb2499c036bf8a1c0bc8cb10a5fdcdca0cd2" +dependencies = [ + "bincode 1.3.3", + "clap", + "derive_more 1.0.0", + "ff_ext", + "itertools 0.14.0", + "multilinear_extensions", + "p3", + "rand 0.8.7", + "rand_chacha 0.3.1", + "rayon", + "serde", + "sumcheck", + "tracing", + "transcript", + "transpose", + "witness", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-core" +version = "0.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.119", +] + +[[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.119", +] + +[[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.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets", +] + +[[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.5.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +dependencies = [ + "memchr", +] + +[[package]] +name = "winnow" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23b97319f7b8343df12cc98938e5c3eb436064524c8d2b4e30a1d3a36eecdf81" +dependencies = [ + "memchr", +] + +[[package]] +name = "wit-bindgen" +version = "0.57.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" + +[[package]] +name = "witness" +version = "0.1.0" +source = "git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.34#74efcb2499c036bf8a1c0bc8cb10a5fdcdca0cd2" +dependencies = [ + "ff_ext", + "multilinear_extensions", + "p3", + "rand 0.8.7", + "rayon", + "tracing", +] + +[[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.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "709fe23a0424b6a435d82152b1bd3fdfb0833487d5fa90d05d42762a9891fef5" +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.119", + "synstructure", +] + +[[package]] +name = "zerocopy" +version = "0.8.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7cbbc0a705a0fd05cc3676525980d2bf5a9bc4adac6d6475209a7887cf59d19" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2e817b7b52d0c7358d3246da9d69935ebb18116b2b102b4230dac079b4862f5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "zerofrom" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ec05a11813ea801ff6d75110ad09cd0824ddba17dfe17128ea0d5f68e6c5272" +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.119", + "synstructure", +] + +[[package]] +name = "zeroize" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c50655cbb0fe3fc43170059e702f1ce5e19b84cec58dc87b037a09935c2f328" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[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.119", +] + +[[package]] +name = "zkhash" +version = "0.2.0" +source = "git+https://github.com/HorizenLabs/poseidon2.git?rev=bb476b9#bb476b9ca38198cf5092487283c8b8c5d4317c4e" +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.7", + "serde", + "sha2", + "sha3", + "subtle", +] + +[[package]] +name = "zkhash-axiom" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d038a7895d0e3ab0a352f53e7eb4f1f829f88fce2fb3cff93d665a8a0e01af6" +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.7", + "serde", + "sha2", + "sha3", + "subtle", +] + +[[package]] +name = "zmij" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b" + +[[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", +] diff --git a/ceno/Cargo.toml b/ceno/Cargo.toml new file mode 100644 index 00000000..e6321a35 --- /dev/null +++ b/ceno/Cargo.toml @@ -0,0 +1,68 @@ +# Ceno zkVM backend, isolated from the root OpenVM workspace. +[workspace] +members = [ + "circuits/chunk-circuit", + "circuits/batch-circuit", + "circuits/bundle-circuit", + "build-guest", + "prover-test", +] +resolver = "2" + +[workspace.package] +authors = ["Scroll developers"] +edition = "2021" +homepage = "https://github.com/scroll-tech/zkvm-prover" +readme = "../README.md" +repository = "https://github.com/scroll-tech/zkvm-prover" +version = "0.8.0" + +[workspace.dependencies] +ceno_emul = { git = "https://github.com/scroll-tech/ceno.git", package = "ceno_emul", branch = "master" } +ceno_host = { git = "https://github.com/scroll-tech/ceno.git", package = "ceno_host", branch = "master" } +ceno_rt = { git = "https://github.com/scroll-tech/ceno.git", package = "ceno_rt", branch = "master" } +ceno_sdk = { git = "https://github.com/scroll-tech/ceno.git", package = "cargo-ceno", branch = "master", default-features = false } +ceno_zkvm = { git = "https://github.com/scroll-tech/ceno.git", package = "ceno_zkvm", branch = "master" } +ff_ext = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "ff_ext", tag = "v1.0.0-alpha.34" } +mpcs = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "mpcs", tag = "v1.0.0-alpha.34", features = ["whir"] } + +scroll-zkvm-backend = { path = "../crates/backend" } +scroll-zkvm-types-base = { path = "../crates/types/base" } +scroll-zkvm-types-chunk = { path = "../crates/types/chunk", default-features = false } +scroll-zkvm-types-batch = { path = "../crates/types/batch", default-features = false } +scroll-zkvm-types-bundle = { path = "../crates/types/bundle", default-features = false } + +alloy-primitives = { version = "1.4", default-features = false, features = ["std"] } +alloy-consensus = "1.0" +sbv-core = { git = "https://github.com/scroll-tech/stateless-block-verifier", tag = "scroll-v91.2" } +sbv-primitives = { git = "https://github.com/scroll-tech/stateless-block-verifier", tag = "scroll-v91.2" } +alloy-serde = { version = "1.0.13", default-features = false } +serde = { version = "1", default-features = false, features = ["derive"] } +serde_json = { version = "1.0" } +clap = "4.5" +hex = "0.4" +tracing = "0.1" +tracing-subscriber = "0.3" +bitcode = { version = "0.6.5", default-features = false, features = ["serde", "derive"] } +bincode = { version = "2.0", features = ["serde"] } +eyre = "0.6" +vm-zstd = { git = "https://github.com/scroll-tech/rust-zstd-decompressor.git", rev = "b027327", features = ["zstd"] } +tiny-keccak = { version = "2.0", features = ["keccak"] } + +[patch.crates-io] +revm = { git = "https://github.com/scroll-tech/revm", tag = "scroll-v91" } +alloy-evm = { git = "https://github.com/alloy-rs/alloy-evm", tag = "v0.22.2" } +revm-bytecode = { git = "https://github.com/scroll-tech/revm", tag = "scroll-v91" } +revm-context = { git = "https://github.com/scroll-tech/revm", tag = "scroll-v91" } +revm-context-interface = { git = "https://github.com/scroll-tech/revm", tag = "scroll-v91" } +revm-database = { git = "https://github.com/scroll-tech/revm", tag = "scroll-v91" } +revm-database-interface = { git = "https://github.com/scroll-tech/revm", tag = "scroll-v91" } +revm-handler = { git = "https://github.com/scroll-tech/revm", tag = "scroll-v91" } +revm-inspector = { git = "https://github.com/scroll-tech/revm", tag = "scroll-v91" } +revm-interpreter = { git = "https://github.com/scroll-tech/revm", tag = "scroll-v91" } +revm-precompile = { git = "https://github.com/scroll-tech/revm", tag = "scroll-v91" } +revm-primitives = { git = "https://github.com/scroll-tech/revm", tag = "scroll-v91" } +revm-state = { git = "https://github.com/scroll-tech/revm", tag = "scroll-v91" } + +[patch."https://github.com/scroll-tech/ceno-gpu-mock.git"] +cuda_hal = { git = "ssh://git@github.com/scroll-tech/ceno-gpu.git", package = "cuda_hal", branch = "main" } diff --git a/ceno/build-guest/Cargo.toml b/ceno/build-guest/Cargo.toml new file mode 100644 index 00000000..80496bb7 --- /dev/null +++ b/ceno/build-guest/Cargo.toml @@ -0,0 +1,19 @@ +[package] +name = "scroll-zkvm-build-guest-ceno" +edition.workspace = true +readme.workspace = true +repository.workspace = true +version.workspace = true + +[[bin]] +name = "build-guest-ceno" +path = "src/main.rs" + +[dependencies] +clap = { workspace = true, features = ["derive", "env"] } +eyre = { workspace = true } +tracing = { workspace = true } +tracing-subscriber = { workspace = true } + +[features] +default = [] diff --git a/ceno/build-guest/src/main.rs b/ceno/build-guest/src/main.rs new file mode 100644 index 00000000..41070f7c --- /dev/null +++ b/ceno/build-guest/src/main.rs @@ -0,0 +1,103 @@ +use std::path::{Path, PathBuf}; +use std::process::Command; + +use clap::Parser; +use tracing::info; + +#[derive(clap::ValueEnum, Clone, Debug, Default)] +enum BuildMode { + #[default] + Auto, + Force, +} + +#[derive(Parser, Debug)] +#[command(author, version, about)] +struct Args { + #[arg(long, default_value = "releases/dev/ceno")] + output_dir: PathBuf, + + #[arg(long, value_delimiter = ',', default_value = "chunk,batch,bundle")] + projects: Vec, + + #[arg(long, value_enum, default_value = "auto")] + mode: BuildMode, + + /// Path to cargo-ceno. The installed `cargo ceno` subcommand is `cargo-ceno`. + #[arg(long, default_value = "cargo-ceno")] + cargo_ceno: String, + + /// Optional Rust toolchain selector passed to cargo-ceno, e.g. `+nightly`. + #[arg(long, env = "CENO_RUST_TOOLCHAIN")] + toolchain: Option, +} + +fn main() -> eyre::Result<()> { + tracing_subscriber::fmt::init(); + let args = Args::parse(); + std::fs::create_dir_all(&args.output_dir)?; + + for project in &args.projects { + info!("building Ceno guest: {project}"); + let elf_path = build_ceno_program(&args, project)?; + info!("ELF written to: {}", elf_path.display()); + } + + Ok(()) +} + +fn build_ceno_program(args: &Args, project: &str) -> eyre::Result { + let out_dir = args.output_dir.join(project); + std::fs::create_dir_all(&out_dir)?; + let dst = out_dir.join("app"); + + if matches!(args.mode, BuildMode::Auto) && dst.exists() { + info!("ELF already exists at {}, skipping build", dst.display()); + return Ok(dst); + } + + let package = format!("scroll-zkvm-ceno-{project}-circuit"); + let manifest = Path::new("Cargo.toml"); + if !manifest.exists() { + eyre::bail!("run build-guest-ceno from the ceno workspace root"); + } + + let mut cmd = Command::new(&args.cargo_ceno); + cmd.arg("ceno"); + if let Some(toolchain) = &args.toolchain { + cmd.arg(toolchain); + } + cmd.arg("build") + .arg("--release") + .arg("-p") + .arg(&package) + .arg("--bin") + .arg(project) + .arg("--target-dir") + .arg("target"); + + let status = cmd + .status() + .map_err(|e| eyre::eyre!("failed to spawn `{}`: {e}", args.cargo_ceno))?; + if !status.success() { + eyre::bail!("`cargo ceno build` failed for {project} (status {status})"); + } + + let built = Path::new("target") + .join("riscv32im-ceno-zkvm-elf") + .join("release") + .join(project); + if !built.exists() { + eyre::bail!("expected Ceno ELF not found at {}", built.display()); + } + + std::fs::copy(&built, &dst).map_err(|e| { + eyre::eyre!( + "failed to copy {} -> {}: {e}", + built.display(), + dst.display() + ) + })?; + + Ok(dst) +} diff --git a/ceno/circuits/batch-circuit/Cargo.toml b/ceno/circuits/batch-circuit/Cargo.toml new file mode 100644 index 00000000..78e5437a --- /dev/null +++ b/ceno/circuits/batch-circuit/Cargo.toml @@ -0,0 +1,19 @@ +[package] +name = "scroll-zkvm-ceno-batch-circuit" +edition.workspace = true +readme.workspace = true +repository.workspace = true +version.workspace = true + +[[bin]] +name = "batch" +path = "src/main.rs" + +[dependencies] +ceno_rt = { workspace = true } +alloy-primitives = { workspace = true } +scroll-zkvm-types-base = { workspace = true } +scroll-zkvm-types-batch = { workspace = true } + +[features] +default = [] diff --git a/ceno/circuits/batch-circuit/src/main.rs b/ceno/circuits/batch-circuit/src/main.rs new file mode 100644 index 00000000..e0dcf8fa --- /dev/null +++ b/ceno/circuits/batch-circuit/src/main.rs @@ -0,0 +1,82 @@ +extern crate ceno_rt; + +use alloy_primitives::B256; +use scroll_zkvm_types_base::public_inputs::{ + MultiVersionPublicInputs, PublicInputs, Version, scroll::batch::BatchInfo, +}; +use scroll_zkvm_types_batch::{ + BatchHeader, BatchHeaderV6, BatchHeaderV7, BatchWitness, Envelope, EnvelopeV6, EnvelopeV7, + N_BLOB_BYTES, Payload, PayloadV6, PayloadV7, ReferenceHeader, +}; + +fn main() { + let child_pi_hashes: Vec<[u8; 32]> = ceno_rt::read(); + let witness: BatchWitness = ceno_rt::read(); + + assert_eq!( + child_pi_hashes.len(), + witness.chunk_infos.len(), + "BatchCircuit: child metadata count does not match witness" + ); + + let version = Version::from(witness.version); + assert_eq!(version.fork, witness.fork_name); + for (child_hash, info) in child_pi_hashes.iter().zip(&witness.chunk_infos) { + assert_eq!( + child_hash.as_slice(), + info.pi_hash_by_version(version).as_slice(), + "BatchCircuit: child pi_hash metadata mismatch" + ); + } + + let batch_info = match &witness.reference_header { + ReferenceHeader::V7_V8_V9(header) => build_batch_info_v7(&witness, header), + ReferenceHeader::V6(header) => build_batch_info_v6(&witness, header), + _ => panic!("BatchCircuit: unsupported reference header"), + }; + + let pi_hash: B256 = (batch_info, version).pi_hash(); + ceno_rt::commit(pi_hash.as_slice()); +} + +fn build_batch_info_v7(witness: &BatchWitness, header: &BatchHeaderV7) -> BatchInfo { + let mut blob_bytes = witness.blob_bytes.clone(); + blob_bytes.resize(N_BLOB_BYTES, 0); + + let envelope = EnvelopeV7::from_slice(&blob_bytes); + let stf_version = witness.version; + assert_eq!(envelope.version(), Some(stf_version)); + assert_eq!(header.version(), stf_version); + + let payload = PayloadV7::from_envelope(&envelope); + let (first, last) = payload.validate(header, &witness.chunk_infos); + BatchInfo { + parent_state_root: first.prev_state_root, + parent_batch_hash: header.parent_batch_hash, + state_root: last.post_state_root, + batch_hash: header.batch_hash(), + chain_id: last.chain_id, + withdraw_root: last.withdraw_root, + prev_msg_queue_hash: first.prev_msg_queue_hash, + post_msg_queue_hash: last.post_msg_queue_hash, + encryption_key: None, + } +} + +fn build_batch_info_v6(witness: &BatchWitness, header: &BatchHeaderV6) -> BatchInfo { + let envelope = EnvelopeV6::from_slice(&witness.blob_bytes); + let payload = PayloadV6::from_envelope(&envelope); + let (first, last) = payload.validate(header, &witness.chunk_infos); + + BatchInfo { + parent_state_root: first.prev_state_root, + parent_batch_hash: header.parent_batch_hash, + state_root: last.post_state_root, + batch_hash: header.batch_hash(), + chain_id: last.chain_id, + withdraw_root: last.withdraw_root, + prev_msg_queue_hash: Default::default(), + post_msg_queue_hash: Default::default(), + encryption_key: Default::default(), + } +} diff --git a/ceno/circuits/bundle-circuit/Cargo.toml b/ceno/circuits/bundle-circuit/Cargo.toml new file mode 100644 index 00000000..7104d919 --- /dev/null +++ b/ceno/circuits/bundle-circuit/Cargo.toml @@ -0,0 +1,19 @@ +[package] +name = "scroll-zkvm-ceno-bundle-circuit" +edition.workspace = true +readme.workspace = true +repository.workspace = true +version.workspace = true + +[[bin]] +name = "bundle" +path = "src/main.rs" + +[dependencies] +ceno_rt = { workspace = true } +alloy-primitives = { workspace = true } +scroll-zkvm-types-base = { workspace = true } +scroll-zkvm-types-bundle = { workspace = true } + +[features] +default = [] diff --git a/ceno/circuits/bundle-circuit/src/main.rs b/ceno/circuits/bundle-circuit/src/main.rs new file mode 100644 index 00000000..e88e9979 --- /dev/null +++ b/ceno/circuits/bundle-circuit/src/main.rs @@ -0,0 +1,32 @@ +extern crate ceno_rt; + +use alloy_primitives::B256; +use scroll_zkvm_types_base::public_inputs::{ + MultiVersionPublicInputs, PublicInputs, Version, scroll::bundle::BundleInfo, +}; +use scroll_zkvm_types_bundle::BundleWitness; + +fn main() { + let child_pi_hashes: Vec<[u8; 32]> = ceno_rt::read(); + let witness: BundleWitness = ceno_rt::read(); + + assert_eq!( + child_pi_hashes.len(), + witness.batch_infos.len(), + "BundleCircuit: child metadata count does not match witness" + ); + + let version = Version::from(witness.version); + assert_eq!(version.fork, witness.fork_name); + for (child_hash, info) in child_pi_hashes.iter().zip(&witness.batch_infos) { + assert_eq!( + child_hash.as_slice(), + info.pi_hash_by_version(version).as_slice(), + "BundleCircuit: child pi_hash metadata mismatch" + ); + } + + let bundle_info = BundleInfo::from(&witness); + let pi_hash: B256 = (bundle_info, version).pi_hash(); + ceno_rt::commit(pi_hash.as_slice()); +} diff --git a/ceno/circuits/chunk-circuit/Cargo.toml b/ceno/circuits/chunk-circuit/Cargo.toml new file mode 100644 index 00000000..a8d22fbf --- /dev/null +++ b/ceno/circuits/chunk-circuit/Cargo.toml @@ -0,0 +1,19 @@ +[package] +name = "scroll-zkvm-ceno-chunk-circuit" +edition.workspace = true +readme.workspace = true +repository.workspace = true +version.workspace = true + +[[bin]] +name = "chunk" +path = "src/main.rs" + +[dependencies] +ceno_rt = { workspace = true } +alloy-primitives = { workspace = true } +scroll-zkvm-types-base = { workspace = true } +scroll-zkvm-types-chunk = { workspace = true, features = ["scroll"] } + +[features] +default = [] diff --git a/ceno/circuits/chunk-circuit/src/main.rs b/ceno/circuits/chunk-circuit/src/main.rs new file mode 100644 index 00000000..89feddbd --- /dev/null +++ b/ceno/circuits/chunk-circuit/src/main.rs @@ -0,0 +1,16 @@ +extern crate ceno_rt; + +use alloy_primitives::B256; +use scroll_zkvm_types_base::public_inputs::{PublicInputs, Version, scroll::chunk::ChunkInfo}; +use scroll_zkvm_types_chunk::scroll::ChunkWitness; + +fn main() { + let witness: ChunkWitness = ceno_rt::read(); + + let version = Version::from(witness.version); + assert_eq!(version.fork, witness.fork_name); + let chunk_info = ChunkInfo::try_from(witness).expect("failed to execute chunk"); + + let pi_hash: B256 = (chunk_info, version).pi_hash(); + ceno_rt::commit(pi_hash.as_slice()); +} diff --git a/ceno/prover-test/Cargo.toml b/ceno/prover-test/Cargo.toml new file mode 100644 index 00000000..50f78121 --- /dev/null +++ b/ceno/prover-test/Cargo.toml @@ -0,0 +1,43 @@ +[package] +name = "scroll-zkvm-ceno-prover-test" +edition.workspace = true +readme.workspace = true +repository.workspace = true +version.workspace = true + +[[bin]] +name = "prove-ceno" +path = "src/main.rs" + +[dependencies] +ceno_emul = { workspace = true } +ceno_host = { workspace = true } +ceno_sdk = { workspace = true } +ceno_zkvm = { workspace = true } +ff_ext = { workspace = true } +mpcs = { workspace = true } +scroll-zkvm-backend = { workspace = true } +scroll-zkvm-types-base = { workspace = true } +scroll-zkvm-types-chunk = { workspace = true, features = ["scroll", "scroll-compress-info"] } +scroll-zkvm-types-batch = { workspace = true, features = ["sp1", "host"] } +scroll-zkvm-types-bundle = { workspace = true } +sbv-core = { workspace = true } +sbv-primitives = { workspace = true, features = ["revm-types", "reth-evm-types"] } +alloy-primitives = { workspace = true } +bincode = { workspace = true } +bitcode = { workspace = true } +clap = { workspace = true, features = ["derive"] } +eyre = { workspace = true } +serde = { workspace = true, features = ["derive"] } +serde_json = { workspace = true } +tiny-keccak = { workspace = true } +tracing = { workspace = true } +tracing-subscriber = { workspace = true, features = ["env-filter"] } +vm-zstd = { workspace = true } + +[features] +default = [] +gpu = ["ceno_sdk/gpu"] +jemalloc = ["ceno_sdk/jemalloc"] +aot-x86_64 = ["ceno_sdk/aot-x86_64"] +parallel = ["ceno_zkvm/parallel"] diff --git a/ceno/prover-test/src/main.rs b/ceno/prover-test/src/main.rs new file mode 100644 index 00000000..0444a037 --- /dev/null +++ b/ceno/prover-test/src/main.rs @@ -0,0 +1,281 @@ +mod witness; + +use std::path::{Path, PathBuf}; +use std::time::{Duration, Instant}; + +use alloy_primitives::B256; +use ceno_emul::Program; +use ceno_host::CenoStdin; +use ceno_zkvm::e2e::{MultiProver, Preset, run_e2e_full_trace_verify, setup_platform}; +use ceno_zkvm::scheme::constants::MAX_NUM_VARIABLES; +use clap::Parser; +use mpcs::{Basefold, BasefoldRSParams, Jagged, SecurityLevel}; +use scroll_zkvm_types_base::public_inputs::scroll::{ + batch::BatchInfo, bundle::BundleInfo, chunk::ChunkInfo, +}; +use scroll_zkvm_types_base::public_inputs::{MultiVersionPublicInputs, PublicInputs}; +use tiny_keccak::{Hasher, Keccak}; +use tracing::info; + +type CenoPcs = Jagged>; +type CenoSdk = ceno_sdk::sdk::CenoSDK; + +const MAX_CYCLE_PER_SHARD: u64 = 1 << 29; + +#[derive(Parser, Debug)] +#[command(author, version, about)] +struct Args { + /// Circuit to prove (chunk, batch, bundle). + #[arg(long, default_value = "chunk")] + circuit: String, + + /// Require the CUDA Ceno prover. + #[arg(long)] + gpu: bool, + + /// Directory containing compiled Ceno ELFs. + #[arg(long, default_value = "releases/dev/ceno")] + elf_dir: PathBuf, + + /// Directory to write proof artifacts. + #[arg(long, default_value = "releases/dev/ceno/prover-test")] + output_dir: PathBuf, + + /// Inclusive block range `start..=end` for chunk proving. + #[arg(long)] + block_range: Option, +} + +fn main() -> eyre::Result<()> { + tracing_subscriber::fmt() + .with_env_filter(tracing_subscriber::EnvFilter::from_default_env()) + .init(); + let args = Args::parse(); + + if args.gpu { + require_gpu_feature()?; + } + + let output_dir = args.output_dir.join(&args.circuit); + std::fs::create_dir_all(&output_dir)?; + + match args.circuit.as_str() { + "chunk" => prove_chunk(&args, &output_dir), + "batch" => prove_batch(&args, &output_dir), + "bundle" => prove_bundle(&args, &output_dir), + other => eyre::bail!("unknown circuit: {other}"), + } +} + +#[cfg(feature = "gpu")] +fn require_gpu_feature() -> eyre::Result<()> { + println!("CUDA Backend Enabled"); + Ok(()) +} + +#[cfg(not(feature = "gpu"))] +fn require_gpu_feature() -> eyre::Result<()> { + eyre::bail!( + "Ceno GPU proving requested, but scroll-zkvm-ceno-prover-test was built without --features gpu" + ) +} + +fn parse_block_range(s: &str) -> eyre::Result> { + let s = s.trim(); + let idx = s + .find("..") + .ok_or_else(|| eyre::eyre!("BLOCK_RANGE must be start..=end or start..end"))?; + let start = s[..idx].trim().parse::()?; + let end = if s[idx..].starts_with("..=") { + s[idx + 3..].trim().parse::()? + } else { + s[idx + 2..].trim().parse::()? + }; + Ok((start..=end).collect()) +} + +fn prove_chunk(args: &Args, output_dir: &Path) -> eyre::Result<()> { + let block_range = match &args.block_range { + Some(r) => parse_block_range(r)?, + None => witness::preset_chunk_block_range(), + }; + info!("building chunk witness for blocks {:?}", block_range); + let chunk_witness = witness::build_chunk_witness(block_range.into_iter())?; + let version = witness::testing_version(); + let chunk_info = ChunkInfo::try_from(chunk_witness.clone()) + .map_err(|e| eyre::eyre!("chunk execution failed: {e}"))?; + let pi_hash: B256 = (chunk_info, version).pi_hash(); + + let mut stdin = CenoStdin::default(); + stdin.write(&chunk_witness)?; + prove_circuit(args, output_dir, "chunk", stdin, pi_hash) +} + +fn prove_batch(args: &Args, output_dir: &Path) -> eyre::Result<()> { + let chunk_witnesses: Vec<_> = witness::preset_batch_chunk_ranges() + .into_iter() + .map(|r| witness::build_chunk_witness(r.into_iter())) + .collect::>>()?; + let batch_witness = witness::build_batch_witness(&chunk_witnesses)?; + let version = witness::testing_version(); + let child_pi_hashes: Vec<[u8; 32]> = batch_witness + .chunk_infos + .iter() + .map(|info| *info.pi_hash_by_version(version).as_ref()) + .collect(); + let batch_info: BatchInfo = witness::batch_info_from_witness(&batch_witness)?; + let pi_hash: B256 = (batch_info, version).pi_hash(); + + let mut stdin = CenoStdin::default(); + stdin.write(&child_pi_hashes)?; + stdin.write(&batch_witness)?; + prove_circuit(args, output_dir, "batch", stdin, pi_hash) +} + +fn prove_bundle(args: &Args, output_dir: &Path) -> eyre::Result<()> { + let batch_witnesses = witness::preset_batch_witnesses()?; + let bundle_witness = witness::build_bundle_witness(&batch_witnesses)?; + let version = witness::testing_version(); + let child_pi_hashes: Vec<[u8; 32]> = bundle_witness + .batch_infos + .iter() + .map(|info| *info.pi_hash_by_version(version).as_ref()) + .collect(); + let bundle_info = BundleInfo::from(&bundle_witness); + let pi_hash: B256 = (bundle_info, version).pi_hash(); + + let mut stdin = CenoStdin::default(); + stdin.write(&child_pi_hashes)?; + stdin.write(&bundle_witness)?; + prove_circuit(args, output_dir, "bundle", stdin, pi_hash) +} + +fn prove_circuit( + args: &Args, + output_dir: &Path, + circuit: &str, + stdin: CenoStdin, + pi_hash: B256, +) -> eyre::Result<()> { + let elf = load_elf(args, circuit)?; + let program = Program::load_elf(&elf, u32::MAX) + .map_err(|err| eyre::eyre!("failed to load Ceno ELF: {err:?}"))?; + let stack_size = 128 * 1024 * 1024; + let heap_size = 128 * 1024 * 1024; + let platform = setup_platform(Preset::Ceno, &program, stack_size, heap_size); + + let max_cell_per_shard = std::env::var("CENO_MAX_CELL_PER_SHARD") + .ok() + .and_then(|value| value.parse::().ok()) + .unwrap_or((1 << 30) * 6 / 4 / 2); + println!("ceno max_cell_per_shard: {max_cell_per_shard}"); + + let mut sdk = CenoSdk::new_with_app_config( + program, + platform, + MultiProver::new(0, 1, max_cell_per_shard, MAX_CYCLE_PER_SHARD), + ); + + let setup_start = Instant::now(); + sdk.init_base_prover(MAX_NUM_VARIABLES, SecurityLevel::default()); + println!( + "ceno {circuit} base prover setup time: {:?}", + setup_start.elapsed() + ); + + let public_io_digest = ceno_commit_digest(pi_hash.as_slice()); + std::fs::write(output_dir.join("pi_hash.bin"), pi_hash.as_slice())?; + std::fs::write( + output_dir.join("public_io_digest.bin"), + digest_words_as_bytes(public_io_digest), + )?; + std::fs::write(output_dir.join("hints.bin"), Vec::::from(&stdin))?; + + let prove_start = Instant::now(); + let proofs = sdk.generate_base_proof(stdin, public_io_digest, usize::MAX, None); + let app_proving_time = prove_start.elapsed(); + println!("ceno {circuit} app proving time (setup excluded): {app_proving_time:?}"); + std::fs::write( + output_dir.join("app_proof.bitcode"), + bitcode::serialize(&proofs)?, + )?; + + let verifier = sdk.create_zkvm_verifier(); + run_e2e_full_trace_verify(&verifier, proofs.clone(), Some(0), usize::MAX); + println!("ceno {circuit} app proof verified"); + + let app_vk = sdk.get_app_vk(); + std::fs::write( + output_dir.join("app_vk.bitcode"), + bitcode::serialize(&app_vk)?, + )?; + + let agg_prover = sdk + .init_agg_prover() + .map_err(|err| eyre::eyre!("{err:?}"))?; + let root_start = Instant::now(); + let timed_root_output = agg_prover.prove_with_root_vk_timed(&proofs)?; + let root_output = timed_root_output.root_output; + let root_wall_time = root_start.elapsed(); + let root_proving_time = timed_root_output.timings.total_create_proof; + println!( + "ceno {circuit} root proving time (setup excluded): {:?}", + root_proving_time + ); + let total_proving_time = app_proving_time + root_proving_time; + println!( + "ceno {circuit} total proving time (setup excluded): {:?}", + total_proving_time + ); + std::fs::write( + output_dir.join("proving_time_ms.txt"), + duration_millis(total_proving_time).to_string(), + )?; + agg_prover + .verify_root_proof(&root_output.root_vk, &root_output.root_proof) + .map_err(|err| eyre::eyre!("root proof verification failed: {err:?}"))?; + println!("ceno {circuit} root proof verified after root proving wall time {root_wall_time:?}"); + + let root_bytes = + bincode::serde::encode_to_vec(&root_output.root_proof, bincode::config::standard())?; + std::fs::write(output_dir.join("root_proof.bin"), root_bytes)?; + let root_vk_bytes = + bincode::serde::encode_to_vec(&root_output.root_vk, bincode::config::standard())?; + std::fs::write(output_dir.join("root_vk.bin"), root_vk_bytes)?; + + Ok(()) +} + +fn load_elf(args: &Args, circuit: &str) -> eyre::Result> { + let path = args.elf_dir.join(circuit).join("app"); + if !path.exists() { + eyre::bail!( + "Ceno ELF not found at {}; run `make build-guest-ceno` first", + path.display() + ); + } + Ok(std::fs::read(path)?) +} + +fn ceno_commit_digest(bytes: &[u8]) -> [u32; 8] { + let mut keccak = Keccak::v256(); + keccak.update(bytes); + let mut digest = [0u8; 32]; + keccak.finalize(&mut digest); + core::array::from_fn(|i| { + u32::from_le_bytes([ + digest[i * 4], + digest[i * 4 + 1], + digest[i * 4 + 2], + digest[i * 4 + 3], + ]) + }) +} + +fn digest_words_as_bytes(words: [u32; 8]) -> Vec { + words.into_iter().flat_map(u32::to_le_bytes).collect() +} + +fn duration_millis(duration: Duration) -> u128 { + duration.as_millis() +} diff --git a/ceno/prover-test/src/witness.rs b/ceno/prover-test/src/witness.rs new file mode 100644 index 00000000..1e020b59 --- /dev/null +++ b/ceno/prover-test/src/witness.rs @@ -0,0 +1,249 @@ +use std::path::{Path, PathBuf}; + +use alloy_primitives::B256; +use eyre::Context; +use sbv_core::witness::BlockWitness; +use scroll_zkvm_types_base::aggregation::{AggregationInput, ProgramCommitment}; +use scroll_zkvm_types_base::public_inputs::scroll::{batch::BatchInfo, chunk::ChunkInfo}; +use scroll_zkvm_types_base::public_inputs::{MultiVersionPublicInputs, Version}; +use scroll_zkvm_types_base::utils::keccak256; +use scroll_zkvm_types_batch::{ + BatchHeader as _, BatchHeaderV7, BatchWitness, Envelope, EnvelopeV7, N_BLOB_BYTES, Payload, + PayloadV7, ReferenceHeader, +}; +use scroll_zkvm_types_bundle::BundleWitness; +use scroll_zkvm_types_chunk::scroll::ChunkWitness; + +const PATH_TESTDATA: &str = "../crates/integration/testdata"; + +pub fn testing_version() -> Version { + Version::galileo_v2() +} + +pub fn read_block_witness

(path: P) -> eyre::Result +where + P: AsRef, +{ + let path = path.as_ref(); + if !path.exists() { + eyre::bail!("block witness file not found: {}", path.display()); + } + + if let Ok(ret) = serde_json::from_reader::<_, BlockWitness>(std::fs::File::open(path)?) { + Ok(ret) + } else { + let witness = std::fs::File::open(path)?; + Ok(BlockWitness::from(serde_json::from_reader::< + _, + sbv_primitives::legacy_types::BlockWitness, + >(witness)?)) + } +} + +pub fn build_chunk_witness(block_range: impl Iterator) -> eyre::Result { + let version = testing_version(); + let fork_dir = version.fork.to_string(); + let paths: Vec = block_range + .map(|block_n| { + Path::new(PATH_TESTDATA) + .join(&fork_dir) + .join("witnesses") + .join(format!("{block_n}.json")) + }) + .collect(); + + let block_witnesses: Vec = paths + .iter() + .map(read_block_witness) + .collect::>>() + .context("failed to read block witnesses")?; + + Ok(ChunkWitness::new_scroll( + version.as_version_byte(), + &block_witnesses, + B256::repeat_byte(1u8), + version.fork, + )) +} + +pub fn preset_chunk_block_range() -> Vec { + vec![20239240] +} + +pub fn preset_batch_chunk_ranges() -> Vec> { + vec![vec![20239240], vec![20239241]] +} + +pub fn build_batch_witness(chunk_witnesses: &[ChunkWitness]) -> eyre::Result { + let version = testing_version(); + let chunk_infos: Vec = chunk_witnesses + .iter() + .cloned() + .map(|w| ChunkInfo::try_from(w).map_err(|e| eyre::eyre!("chunk execution failed: {e}"))) + .collect::>>()?; + + let (_sizes, chunk_digests, chunk_tx_bytes): (Vec, Vec, Vec) = + chunk_witnesses.iter().fold( + (Vec::new(), Vec::new(), Vec::new()), + |(mut sizes, mut digests, mut tx_bytes), chunk_wit| { + let bytes: Vec = chunk_wit + .blocks + .iter() + .flat_map(|blk| &blk.transactions) + .filter(|tx| !tx.is_l1_message()) + .fold(Vec::new(), |mut out, tx| { + use sbv_primitives::types::eips::Encodable2718; + tx.encode_2718(&mut out); + out + }); + sizes.push(bytes.len()); + digests.push(keccak256(&bytes)); + tx_bytes.extend(bytes); + (sizes, digests, tx_bytes) + }, + ); + + for (digest, info) in chunk_digests.iter().zip(chunk_infos.iter()) { + assert_eq!(digest, &info.tx_data_digest, "chunk tx digest mismatch"); + } + + let num_blocks = chunk_witnesses + .iter() + .map(|w| w.blocks.len()) + .sum::() as u16; + let prev_msg_queue_hash = chunk_witnesses[0].prev_msg_queue_hash; + let initial_block_number = chunk_witnesses[0].blocks[0].header.number; + let post_msg_queue_hash = chunk_infos + .last() + .expect("at least one chunk") + .post_msg_queue_hash; + + let mut payload = Vec::new(); + payload.extend_from_slice(prev_msg_queue_hash.as_slice()); + payload.extend_from_slice(post_msg_queue_hash.as_slice()); + payload.extend(initial_block_number.to_be_bytes()); + payload.extend(num_blocks.to_be_bytes()); + for info in &chunk_infos { + for ctx in &info.block_ctxs { + payload.extend(ctx.to_bytes()); + } + } + payload.extend(chunk_tx_bytes); + + let compressed_payload = vm_zstd::zstd_encode(&payload); + assert!(compressed_payload.len() <= N_BLOB_BYTES - 5); + + let heading = compressed_payload.len() as u32 + ((version.stf_version as u32) << 24); + let mut blob_bytes = Vec::from(heading.to_be_bytes()); + blob_bytes.push(1u8); + blob_bytes.extend(compressed_payload); + blob_bytes.resize(N_BLOB_BYTES, 0); + + let blob_for_kzg = scroll_zkvm_types_batch::utils::point_eval::to_blob(&blob_bytes); + let kzg_commitment = + scroll_zkvm_types_batch::utils::point_eval::blob_to_kzg_commitment(&blob_for_kzg); + let blob_versioned_hash = + scroll_zkvm_types_batch::utils::point_eval::get_versioned_hash(&kzg_commitment); + + let envelope = EnvelopeV7::from_slice(&blob_bytes); + let challenge_digest = envelope.challenge_digest(blob_versioned_hash); + let (kzg_proof, _y) = + scroll_zkvm_types_batch::utils::point_eval::get_kzg_proof(&blob_for_kzg, challenge_digest); + let point_eval_witness = scroll_zkvm_types_batch::build_point_eval_witness( + *kzg_commitment.to_bytes(), + *kzg_proof.to_bytes(), + ); + + let reference_header = ReferenceHeader::V7_V8_V9(BatchHeaderV7 { + version: version.as_version_byte(), + batch_index: 124, + parent_batch_hash: B256::new([ + 0xab, 0xac, 0xad, 0xae, 0xaf, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + ]), + blob_versioned_hash, + }); + + let chunk_proofs = chunk_infos + .iter() + .map(|info| AggregationInput { + public_values: info + .pi_hash_by_version(version) + .as_slice() + .iter() + .map(|&b| b as u32) + .collect(), + commitment: ProgramCommitment::default(), + }) + .collect(); + + Ok(BatchWitness { + version: version.as_version_byte(), + chunk_proofs, + chunk_infos, + reference_header, + blob_bytes, + point_eval_witness: Some(point_eval_witness), + fork_name: version.fork, + }) +} + +pub fn batch_info_from_witness(witness: &BatchWitness) -> eyre::Result { + match &witness.reference_header { + ReferenceHeader::V7_V8_V9(header) => { + let mut blob_bytes = witness.blob_bytes.clone(); + blob_bytes.resize(N_BLOB_BYTES, 0); + let envelope = EnvelopeV7::from_slice(&blob_bytes); + let payload = PayloadV7::from_envelope(&envelope); + let (first, last) = payload.validate(header, &witness.chunk_infos); + Ok(BatchInfo { + parent_state_root: first.prev_state_root, + parent_batch_hash: header.parent_batch_hash, + state_root: last.post_state_root, + batch_hash: header.batch_hash(), + chain_id: last.chain_id, + withdraw_root: last.withdraw_root, + prev_msg_queue_hash: first.prev_msg_queue_hash, + post_msg_queue_hash: last.post_msg_queue_hash, + encryption_key: None, + }) + } + _ => eyre::bail!("only V7 batch headers are supported by ceno prover-test"), + } +} + +pub fn preset_batch_witnesses() -> eyre::Result> { + let chunks: Vec = preset_batch_chunk_ranges() + .into_iter() + .map(|r| build_chunk_witness(r.into_iter())) + .collect::>>()?; + Ok(vec![build_batch_witness(&chunks)?]) +} + +pub fn build_bundle_witness(batch_witnesses: &[BatchWitness]) -> eyre::Result { + let version = testing_version(); + let batch_infos: Vec = batch_witnesses + .iter() + .map(batch_info_from_witness) + .collect::>>()?; + + let batch_proofs = batch_infos + .iter() + .map(|info| AggregationInput { + public_values: info + .pi_hash_by_version(version) + .as_slice() + .iter() + .map(|&b| b as u32) + .collect(), + commitment: ProgramCommitment::default(), + }) + .collect(); + + Ok(BundleWitness { + version: version.as_version_byte(), + batch_infos, + batch_proofs, + fork_name: version.fork, + }) +} diff --git a/ceno/rust-toolchain.toml b/ceno/rust-toolchain.toml new file mode 100644 index 00000000..6ca961e7 --- /dev/null +++ b/ceno/rust-toolchain.toml @@ -0,0 +1,4 @@ +[toolchain] +channel = "nightly-2025-11-20" +targets = ["riscv32im-unknown-none-elf"] +components = ["rust-src"] diff --git a/crates/prover/src/prover/mod.rs b/crates/prover/src/prover/mod.rs index e243a1d6..50db94b1 100644 --- a/crates/prover/src/prover/mod.rs +++ b/crates/prover/src/prover/mod.rs @@ -244,9 +244,15 @@ impl Prover { self.execute_and_check(&stdin)?; let sdk = self.get_sdk()?; + let t = std::time::Instant::now(); let evm_proof = sdk .prove_evm(self.app_exe.clone(), stdin) .map_err(|e| Error::GenProof(format!("{}", e)))?; + let proving_time_mills = t.elapsed().as_millis() as u64; + tracing::info!( + "openvm {} evm create_proof time (setup excluded): {proving_time_mills}ms", + self.prover_name + ); Ok(evm_proof) } diff --git a/crates/types/batch/src/blob_consistency/constants.rs b/crates/types/batch/src/blob_consistency/constants.rs index edaf0bed..1e7d7e7c 100644 --- a/crates/types/batch/src/blob_consistency/constants.rs +++ b/crates/types/batch/src/blob_consistency/constants.rs @@ -2,9 +2,8 @@ use alloy_primitives::U256; /// BLS12-381 scalar modulus `q`, as defined in EIP-4844. pub const BLS_MODULUS: U256 = U256::from_be_bytes([ - 0x73, 0xed, 0xa7, 0x53, 0x29, 0x9d, 0x7d, 0x48, 0x33, 0x39, 0xd8, 0x08, - 0x09, 0xa1, 0xd8, 0x05, 0x53, 0xbd, 0xa4, 0x02, 0xff, 0xfe, 0x5b, 0xfe, - 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x01, + 0x73, 0xed, 0xa7, 0x53, 0x29, 0x9d, 0x7d, 0x48, 0x33, 0x39, 0xd8, 0x08, 0x09, 0xa1, 0xd8, 0x05, + 0x53, 0xbd, 0xa4, 0x02, 0xff, 0xfe, 0x5b, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x01, ]); /// The version byte for EIP-4844 versioned KZG hashes. diff --git a/crates/types/batch/src/blob_consistency/mod.rs b/crates/types/batch/src/blob_consistency/mod.rs index 5a03ffe8..5bd68051 100644 --- a/crates/types/batch/src/blob_consistency/mod.rs +++ b/crates/types/batch/src/blob_consistency/mod.rs @@ -8,10 +8,10 @@ mod constants; #[cfg(feature = "openvm")] mod openvm; -#[cfg(feature = "openvm")] -mod types; #[cfg(feature = "sp1")] mod sp1; +#[cfg(feature = "openvm")] +mod types; pub use constants::{BLS_MODULUS, VERSIONED_HASH_VERSION_KZG}; diff --git a/crates/types/batch/src/blob_consistency/openvm.rs b/crates/types/batch/src/blob_consistency/openvm.rs index bd840760..e3ee149c 100644 --- a/crates/types/batch/src/blob_consistency/openvm.rs +++ b/crates/types/batch/src/blob_consistency/openvm.rs @@ -1,5 +1,3 @@ -#![cfg(feature = "openvm")] - use std::ops::{AddAssign, MulAssign}; use std::sync::LazyLock; @@ -12,7 +10,9 @@ use openvm_pairing::bls12_381::{Bls12_381, G1Affine, G2Affine, Scalar}; use openvm_pairing_guest::{algebra, pairing::PairingCheck}; use super::types::ToIntrinsic; -use crate::blob_consistency::constants::{BLS_MODULUS, KZG_G2_SETUP_BYTES, VERSIONED_HASH_VERSION_KZG}; +use crate::blob_consistency::constants::{ + BLS_MODULUS, KZG_G2_SETUP_BYTES, VERSIONED_HASH_VERSION_KZG, +}; use super::{BLOB_WIDTH, LOG_BLOB_WIDTH}; diff --git a/crates/types/batch/src/blob_consistency/sp1.rs b/crates/types/batch/src/blob_consistency/sp1.rs index 7795484c..e0df4edc 100644 --- a/crates/types/batch/src/blob_consistency/sp1.rs +++ b/crates/types/batch/src/blob_consistency/sp1.rs @@ -1,5 +1,3 @@ -#![cfg(feature = "sp1")] - use alloy_primitives::{B256, U256}; use bls12_381::G1Affine; use kzg_rs::{ @@ -37,8 +35,7 @@ pub fn verify_blob_versioned_hash( ); // Reconstruct the full EIP-4844 blob (4096 32-byte field elements, MSB zeroed). - let blob = - Blob::from_slice(&envelope_to_blob_bytes(blob_bytes)).expect("invalid blob bytes"); + let blob = Blob::from_slice(&envelope_to_blob_bytes(blob_bytes)).expect("invalid blob bytes"); // `kzg-rs` is patched for the SP1 target so that `load_trusted_setup_file()` returns a static // copy of the EIP-4844 trusted setup rather than reading from the (non-existent) guest fs. @@ -58,13 +55,12 @@ pub fn verify_blob_versioned_hash( // Evaluate the blob polynomial at the challenge point. let settings = KzgSettings::load_trusted_setup_file().expect("failed to load KZG settings"); - let polynomial = blob.as_polynomial().expect("failed to parse blob polynomial"); - let evaluation = evaluate_polynomial_in_evaluation_form( - polynomial, - challenge_scalar, - &settings, - ) - .expect("failed to evaluate blob polynomial"); + let polynomial = blob + .as_polynomial() + .expect("failed to parse blob polynomial"); + let evaluation = + evaluate_polynomial_in_evaluation_form(polynomial, challenge_scalar, &settings) + .expect("failed to evaluate blob polynomial"); // kzg-rs `Scalar::to_bytes()` is little-endian, but `verify_kzg_proof` expects big-endian. let mut evaluation_be = evaluation.to_bytes(); @@ -119,9 +115,10 @@ mod tests { b[31] = 0x42; b }; - let challenge = - kzg_rs::kzg_proof::safe_scalar_affine_from_bytes(&Bytes32::from_slice(&challenge_bytes).unwrap()) - .unwrap(); + let challenge = kzg_rs::kzg_proof::safe_scalar_affine_from_bytes( + &Bytes32::from_slice(&challenge_bytes).unwrap(), + ) + .unwrap(); let y = evaluate_polynomial_in_evaluation_form(polynomial, challenge, &settings).unwrap(); @@ -177,30 +174,22 @@ mod tests { let ckzg_commitment = c_kzg::ethereum_kzg_settings(0) .blob_to_kzg_commitment(&ckzg_blob) .unwrap(); - let standard_challenge = - kzg_rs::kzg_proof::compute_challenge(&blob, &{ - let g1: G1Affine = Option::from(G1Affine::from_compressed( - ckzg_commitment.to_bytes().as_ref(), - )) - .unwrap(); - g1 - }) + let standard_challenge = kzg_rs::kzg_proof::compute_challenge(&blob, &{ + let g1: G1Affine = Option::from(G1Affine::from_compressed( + ckzg_commitment.to_bytes().as_ref(), + )) .unwrap(); - - let y = evaluate_polynomial_in_evaluation_form( - polynomial, - standard_challenge, - &settings, - ) + g1 + }) .unwrap(); + let y = evaluate_polynomial_in_evaluation_form(polynomial, standard_challenge, &settings) + .unwrap(); + let mut standard_challenge_be = standard_challenge.to_bytes(); standard_challenge_be.reverse(); let (_proof, ckzg_y) = c_kzg::ethereum_kzg_settings(0) - .compute_kzg_proof( - &ckzg_blob, - &c_kzg::Bytes32::new(standard_challenge_be), - ) + .compute_kzg_proof(&ckzg_blob, &c_kzg::Bytes32::new(standard_challenge_be)) .unwrap(); let mut y_be = y.to_bytes(); @@ -235,16 +224,8 @@ mod tests { }; let (proof, _y) = point_eval::get_kzg_proof(&blob, challenge_digest); - let witness = crate::build_point_eval_witness( - *commitment.to_bytes(), - *proof.to_bytes(), - ); - - verify_blob_versioned_hash( - &envelope, - versioned_hash, - challenge_digest, - &witness, - ); + let witness = crate::build_point_eval_witness(*commitment.to_bytes(), *proof.to_bytes()); + + verify_blob_versioned_hash(&envelope, versioned_hash, challenge_digest, &witness); } } diff --git a/crates/types/batch/src/blob_consistency/types.rs b/crates/types/batch/src/blob_consistency/types.rs index 857ab559..826dfc8b 100644 --- a/crates/types/batch/src/blob_consistency/types.rs +++ b/crates/types/batch/src/blob_consistency/types.rs @@ -1,5 +1,3 @@ -#![cfg(feature = "openvm")] - use halo2curves_axiom::bls12_381::{ Fq as Bls12_381_Fq, G1Affine as Bls12_381_G1, G2Affine as Bls12_381_G2, }; diff --git a/crates/types/batch/src/builder/v6.rs b/crates/types/batch/src/builder/v6.rs index 07e27bd9..becf0222 100644 --- a/crates/types/batch/src/builder/v6.rs +++ b/crates/types/batch/src/builder/v6.rs @@ -1,5 +1,3 @@ -#![cfg(feature = "openvm")] - use alloy_primitives::B256; use types_base::public_inputs::scroll::batch::BatchInfo; diff --git a/crates/types/batch/src/builder/v7.rs b/crates/types/batch/src/builder/v7.rs index 9d688f69..b2e69930 100644 --- a/crates/types/batch/src/builder/v7.rs +++ b/crates/types/batch/src/builder/v7.rs @@ -1,5 +1,3 @@ -#![cfg(feature = "openvm")] - use std::marker::PhantomData; use alloy_primitives::B256; diff --git a/crates/types/batch/src/lib.rs b/crates/types/batch/src/lib.rs index 3faee8a0..a0700b3d 100644 --- a/crates/types/batch/src/lib.rs +++ b/crates/types/batch/src/lib.rs @@ -20,8 +20,8 @@ pub mod blob_consistency; mod builder; mod witness; -pub use witness::{BatchWitness, Bytes48, PointEvalWitness}; #[cfg(any(feature = "openvm", feature = "sp1"))] pub use witness::build_point_eval_witness; +pub use witness::{BatchWitness, Bytes48, PointEvalWitness}; pub mod utils; diff --git a/crates/types/batch/src/witness.rs b/crates/types/batch/src/witness.rs index 1bcd71b6..456fde47 100644 --- a/crates/types/batch/src/witness.rs +++ b/crates/types/batch/src/witness.rs @@ -1,9 +1,9 @@ +#[cfg(feature = "openvm")] +use types_base::public_inputs::scroll::batch::BatchInfo; use types_base::{ aggregation::{AggregationInput, ProofCarryingWitness}, public_inputs::{ForkName, scroll::chunk::ChunkInfo}, }; -#[cfg(feature = "openvm")] -use types_base::public_inputs::scroll::batch::BatchInfo; use crate::header::ReferenceHeader; @@ -44,7 +44,7 @@ pub struct PointEvalWitness { pub kzg_proof_y: Bytes48, } -#[cfg(feature = "openvm")] +#[cfg(all(feature = "openvm", not(feature = "sp1")))] pub fn build_point_eval_witness(kzg_commitment: Bytes48, kzg_proof: Bytes48) -> PointEvalWitness { use halo2curves_axiom::bls12_381::G1Affine; let kzg_commitment = G1Affine::from_compressed_be(&kzg_commitment).expect("invalid"); @@ -60,10 +60,10 @@ pub fn build_point_eval_witness(kzg_commitment: Bytes48, kzg_proof: Bytes48) -> #[cfg(feature = "sp1")] pub fn build_point_eval_witness(kzg_commitment: Bytes48, kzg_proof: Bytes48) -> PointEvalWitness { use bls12_381::G1Affine; - let commitment: G1Affine = Option::from(G1Affine::from_compressed(&kzg_commitment)) - .expect("invalid kzg commitment"); - let proof: G1Affine = Option::from(G1Affine::from_compressed(&kzg_proof)) - .expect("invalid kzg proof"); + let commitment: G1Affine = + Option::from(G1Affine::from_compressed(&kzg_commitment)).expect("invalid kzg commitment"); + let proof: G1Affine = + Option::from(G1Affine::from_compressed(&kzg_proof)).expect("invalid kzg proof"); let commitment_uncompressed = commitment.to_uncompressed(); let proof_uncompressed = proof.to_uncompressed(); PointEvalWitness { @@ -90,7 +90,10 @@ pub fn build_intrinsic_point( #[cfg(feature = "openvm")] pub fn build_point(x: Bytes48, y: Bytes48) -> Option { - use halo2curves_axiom::{CurveAffine, bls12_381::{Fq, G1Affine}}; + use halo2curves_axiom::{ + CurveAffine, + bls12_381::{Fq, G1Affine}, + }; let x = Fq::from_bytes_be(&x).into_option()?; let y = Fq::from_bytes_be(&y).into_option()?; G1Affine::from_xy(x, y).into_option() @@ -128,9 +131,8 @@ impl ProofCarryingWitness for BatchWitness { impl From<&BatchWitness> for BatchInfo { fn from(witness: &BatchWitness) -> Self { use crate::builder::{ - BatchInfoBuilder, BatchInfoBuilderV6, BatchInfoBuilderV7, + BatchInfoBuilder, BatchInfoBuilderV6, BatchInfoBuilderV7, BuilderArgsV6, BuilderArgsV7, validium::{ValidiumBatchInfoBuilder, ValidiumBuilderArgs}, - BuilderArgsV6, BuilderArgsV7, }; let chunk_infos = witness.chunk_infos.to_vec(); diff --git a/crates/types/chunk/Cargo.toml b/crates/types/chunk/Cargo.toml index f92c4d71..2934c9cf 100644 --- a/crates/types/chunk/Cargo.toml +++ b/crates/types/chunk/Cargo.toml @@ -52,7 +52,7 @@ openvm = [ "dep:openvm-pairing", "alloy-primitives/native-keccak", ] -host = ["scroll-compress-info", "alloy-primitives/tiny-keccak"] +host = ["scroll", "scroll-compress-info", "alloy-primitives/tiny-keccak"] scroll = [ "sbv-core/scroll", "sbv-primitives/scroll-evm-types", @@ -60,4 +60,4 @@ scroll = [ "sbv-primitives/scroll-revm-types", "sbv-primitives/scroll-reth-evm-types", ] -scroll-compress-info = ["sbv-core/scroll-compress-info"] +scroll-compress-info = ["sbv-core/scroll", "sbv-core/scroll-compress-info"] diff --git a/crates/types/chunk/src/crypto.rs b/crates/types/chunk/src/crypto.rs index 74c02f09..6dfb73cd 100644 --- a/crates/types/chunk/src/crypto.rs +++ b/crates/types/chunk/src/crypto.rs @@ -1,8 +1,8 @@ use alloy_consensus::crypto::RecoveryError; +use alloc::sync::Arc; use alloy_primitives::Address; use sbv_primitives::types::revm::precompile; use sbv_primitives::types::revm::precompile::PrecompileError; -use std::sync::Arc; mod bn254; mod secp256k1; diff --git a/crates/types/chunk/src/crypto/bn254.rs b/crates/types/chunk/src/crypto/bn254.rs index 51c3d6ec..620b66a1 100644 --- a/crates/types/chunk/src/crypto/bn254.rs +++ b/crates/types/chunk/src/crypto/bn254.rs @@ -1,6 +1,6 @@ // Copied from https://github.com/axiom-crypto/revm/blob/v75-openvm/crates/precompile/src/bn128.rs under MIT License +use alloc::vec::Vec; use sbv_primitives::types::revm::precompile::PrecompileError; -use std::vec::Vec; use hex_literal::hex; use openvm_ecc_guest::{ diff --git a/crates/types/chunk/src/ethereum/witness.rs b/crates/types/chunk/src/ethereum/witness.rs index 7aeae585..359774a2 100644 --- a/crates/types/chunk/src/ethereum/witness.rs +++ b/crates/types/chunk/src/ethereum/witness.rs @@ -1,5 +1,5 @@ -use sbv_core::BlockWitness; use hashbrown::HashSet; +use sbv_core::BlockWitness; /// The witness type accepted by the chunk-circuit. #[derive(Clone, Debug, serde::Serialize, serde::Deserialize)] diff --git a/crates/types/chunk/src/scroll/execute.rs b/crates/types/chunk/src/scroll/execute.rs index a8a79e01..76090ae5 100644 --- a/crates/types/chunk/src/scroll/execute.rs +++ b/crates/types/chunk/src/scroll/execute.rs @@ -86,9 +86,6 @@ pub fn execute(witness: ChunkWitness) -> Result { }), }; - #[cfg(all(target_os = "zkvm", feature = "openvm"))] - println!("chunk_info = {}", chunk_info); - Ok(chunk_info) } diff --git a/crates/types/chunk/src/scroll/types.rs b/crates/types/chunk/src/scroll/types.rs index 3803296e..1bd1cb0f 100644 --- a/crates/types/chunk/src/scroll/types.rs +++ b/crates/types/chunk/src/scroll/types.rs @@ -2,6 +2,7 @@ use super::{types::validium::SecretKey, witness::ValidiumInputs}; use alloc::vec::Vec; use alloy_primitives::keccak256; use alloy_sol_types::sol; +use core::ops::Deref; use itertools::Itertools; use sbv_primitives::{ B256, U256, @@ -11,7 +12,6 @@ use sbv_primitives::{ reth::primitives::{Block, RecoveredBlock, TransactionSigned}, }, }; -use core::ops::Deref; pub mod validium; diff --git a/crates/types/chunk/src/scroll/witness.rs b/crates/types/chunk/src/scroll/witness.rs index 7e2b790b..11fed89f 100644 --- a/crates/types/chunk/src/scroll/witness.rs +++ b/crates/types/chunk/src/scroll/witness.rs @@ -3,10 +3,10 @@ use alloc::boxed::Box; use alloc::string::String; use alloc::vec::Vec; use alloy_primitives::B256; +use hashbrown::HashSet; use sbv_core::witness::BlockWitness; use sbv_primitives::types::consensus::TxL1Message; use sbv_primitives::types::evm::ScrollTxCompressionInfos; -use hashbrown::HashSet; use types_base::version::Version; use types_base::{fork_name::ForkName, public_inputs::scroll::chunk::ChunkInfo}; diff --git a/scripts/compare-openvm-ceno-4090.sh b/scripts/compare-openvm-ceno-4090.sh new file mode 100755 index 00000000..18a16501 --- /dev/null +++ b/scripts/compare-openvm-ceno-4090.sh @@ -0,0 +1,282 @@ +#!/usr/bin/env bash +set -euo pipefail + +usage() { + cat <<'USAGE' +Usage: scripts/compare-openvm-ceno-4090.sh [--setup] [--skip-openvm] [--skip-ceno] + +Runs a fair Scroll OpenVM vs Ceno proof-time comparison on a 4090-class GPU. + +Options: + --setup Run one-time checks and guest builds before benchmarking. + --skip-openvm Do not run OpenVM. + --skip-ceno Do not run Ceno. + -h, --help Show this help. + +The reported metric is setup-excluded e2e create_proof time: + chunk create_proof + batch create_proof + bundle/root create_proof. + +Outputs are written under .output/ceno-openvm-4090-/. +USAGE +} + +RUN_SETUP=0 +RUN_OPENVM=1 +RUN_CENO=1 + +while [[ $# -gt 0 ]]; do + case "$1" in + --setup) + RUN_SETUP=1 + shift + ;; + --skip-openvm) + RUN_OPENVM=0 + shift + ;; + --skip-ceno) + RUN_CENO=0 + shift + ;; + -h|--help) + usage + exit 0 + ;; + *) + echo "unknown argument: $1" >&2 + usage >&2 + exit 2 + ;; + esac +done + +ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" +cd "$ROOT_DIR" + +if [[ "${RUN_OPENVM}" == "0" && "${RUN_CENO}" == "0" ]]; then + echo "nothing to run: both OpenVM and Ceno are skipped" >&2 + exit 2 +fi + +if ! command -v nvidia-smi >/dev/null 2>&1; then + echo "nvidia-smi not found; this script is intended for a GPU server" >&2 + exit 1 +fi + +if ! nvidia-smi -L | grep -q .; then + echo "no NVIDIA GPU detected by nvidia-smi" >&2 + exit 1 +fi + +if [[ -d "$HOME/.local/bin" ]]; then + export PATH="$HOME/.local/bin:$PATH" +fi + +if [[ "$RUN_OPENVM" == "1" ]] && ! command -v solc >/dev/null 2>&1; then + cat >&2 <<'ERR' +solc not found on PATH. + +OpenVM compiles the generated Halo2 verifier with solc during setup/proof verification. +Install Solidity compiler 0.8.19 before running the OpenVM side, for example: + + python3 -m pip install --user solc-select + export PATH="$HOME/.local/bin:$PATH" + solc-select install 0.8.19 + solc-select use 0.8.19 + +Then verify: + + solc --version + +To run only the Ceno side while solc is missing: + + scripts/compare-openvm-ceno-4090.sh --skip-openvm +ERR + exit 1 +fi + +if [[ "$RUN_OPENVM" == "1" ]]; then + SOLC_VERSION_OUTPUT="$(solc --version)" + if ! grep -Eq 'Version: 0\.8\.19(\+|$)' <<<"$SOLC_VERSION_OUTPUT"; then + cat >&2 <&1 | tee "$OUT_DIR/setup-root-cargo-check.log" + + echo "[setup] cd ceno && cargo check --workspace --all-targets" + ( + cd ceno + cargo check --workspace --all-targets + ) 2>&1 | tee "$OUT_DIR/setup-ceno-cargo-check.log" + + echo "[setup] build OpenVM guests" + cargo run --release -p scroll-zkvm-build-guest -- --mode force \ + 2>&1 | tee "$OUT_DIR/setup-build-guest-openvm.log" + + echo "[setup] build Ceno guests/prover" + make build-guest-ceno 2>&1 | tee "$OUT_DIR/setup-build-guest-ceno.log" +else + echo "[setup] skipped; pass --setup for one-time checks and guest builds" +fi + +clear_outputs() { + rm -rf .output/bundle-tests-* .output/batch-tests-* .output/chunk-tests-* + rm -rf ceno/releases/dev/ceno/prover-test +} + +run_ceno() { + echo "[ceno] clearing cached proof outputs" + clear_outputs + + echo "[ceno] chunk" + GPU=1 CENO_MAX_CELL_PER_SHARD="$CENO_MAX_CELL_PER_SHARD" \ + make test-e2e-ceno-chunk 2>&1 | tee "$OUT_DIR/ceno-chunk.log" + + echo "[ceno] batch" + GPU=1 CENO_MAX_CELL_PER_SHARD="$CENO_MAX_CELL_PER_SHARD" \ + make test-e2e-ceno-batch 2>&1 | tee "$OUT_DIR/ceno-batch.log" + + echo "[ceno] bundle" + GPU=1 CENO_MAX_CELL_PER_SHARD="$CENO_MAX_CELL_PER_SHARD" \ + make test-e2e-ceno-bundle 2>&1 | tee "$OUT_DIR/ceno-bundle.log" +} + +run_openvm() { + echo "[openvm] clearing cached proof outputs" + clear_outputs + + echo "[openvm] bundle e2e; this builds chunk, batch, and bundle/root proofs" + GPU=1 RUST_LOG="$RUST_LOG" \ + make test-e2e-bundle 2>&1 | tee "$OUT_DIR/openvm-bundle.log" +} + +if [[ "$RUN_CENO" == "1" ]]; then + run_ceno +fi + +if [[ "$RUN_OPENVM" == "1" ]]; then + run_openvm +fi + +python3 - "$OUT_DIR" "$RUN_CENO" "$RUN_OPENVM" <<'PY' +import pathlib +import re +import sys + +out_dir = pathlib.Path(sys.argv[1]) +run_ceno = sys.argv[2] == "1" +run_openvm = sys.argv[3] == "1" + +lines = [] +lines.append("# OpenVM vs Ceno 4090 Comparison") +lines.append("") +lines.append("Metric: setup-excluded e2e create_proof time.") +lines.append("") + +if run_ceno: + ceno_paths = [ + pathlib.Path("ceno/releases/dev/ceno/prover-test/chunk/proving_time_ms.txt"), + pathlib.Path("ceno/releases/dev/ceno/prover-test/batch/proving_time_ms.txt"), + pathlib.Path("ceno/releases/dev/ceno/prover-test/bundle/proving_time_ms.txt"), + ] + ceno_labels = ["chunk", "batch", "bundle/root"] + ceno_values = [] + lines.append("## Ceno") + for label, path in zip(ceno_labels, ceno_paths): + if not path.exists(): + raise SystemExit(f"missing Ceno timing file: {path}") + value = int(path.read_text().strip()) + ceno_values.append(value) + lines.append(f"- {label}: {value} ms") + lines.append(f"- total: {sum(ceno_values)} ms") + lines.append("") + +if run_openvm: + log_path = out_dir / "openvm-bundle.log" + if not log_path.exists(): + raise SystemExit(f"missing OpenVM log: {log_path}") + text = log_path.read_text(errors="replace") + + stark_ms = [] + stark_lines = [] + for line in text.splitlines(): + if "proving speed:" not in line or "time:" not in line: + continue + match = re.search(r"time:\s*([0-9]+(?:\.[0-9]+)?)s", line) + if match: + value = round(float(match.group(1)) * 1000) + stark_ms.append(value) + stark_lines.append((value, line.strip())) + + evm_ms = [] + evm_lines = [] + for line in text.splitlines(): + match = re.search( + r"openvm\s+(.+?)\s+evm create_proof time \(setup excluded\):\s*([0-9]+)ms", + line, + ) + if match: + value = int(match.group(2)) + evm_ms.append(value) + evm_lines.append((value, line.strip())) + + lines.append("## OpenVM") + if not stark_ms: + lines.append("- warning: no OpenVM STARK proving-speed lines found") + else: + lines.append(f"- STARK proof subtotal: {sum(stark_ms)} ms") + for idx, (value, raw) in enumerate(stark_lines, 1): + lines.append(f" - stark #{idx}: {value} ms | {raw}") + + if not evm_ms: + lines.append("- warning: no OpenVM EVM/root create_proof timing line found") + lines.append(" Rebuild after the OpenVM timing patch before using this as a fair root-inclusive comparison.") + else: + lines.append(f"- EVM/root proof subtotal: {sum(evm_ms)} ms") + for idx, (value, raw) in enumerate(evm_lines, 1): + lines.append(f" - evm/root #{idx}: {value} ms | {raw}") + + lines.append(f"- total: {sum(stark_ms) + sum(evm_ms)} ms") + lines.append("") + +summary = "\n".join(lines) +(out_dir / "summary.md").write_text(summary + "\n") +print(summary) +print(f"\n[bench] wrote {out_dir / 'summary.md'}") +PY