diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 45bcb037..405e2128 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -74,100 +74,100 @@ jobs: # TODO: Uncomment once https://github.com/EmbarkStudios/cargo-deny-action/issues/67 is released # - name: Cargo-deny # uses: EmbarkStudios/cargo-deny-action@v1 - - bench-regression: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - with: - repository: argumentcomputer/ci-workflows - - uses: ./.github/actions/ci-env - - uses: actions/checkout@v4 - - uses: dtolnay/rust-toolchain@stable - - uses: Swatinem/rust-cache@v2 - - uses: taiki-e/install-action@nextest - - name: Set env - run: | - echo "TESTS=fib_e2e" | tee -a $GITHUB_ENV - echo "LOAM_FIB_ARG=50000" | tee -a $GITHUB_ENV - - name: Get benchmark for PR - id: bench_pr - run: | - BENCH_RESULTS='[]' - - for test_name in ${{ env.TESTS }}; do - cargo nextest run -E "test($test_name)" --release --nocapture --run-ignored all | tee out.txt 2>&1 - BENCH=$(grep 'Total time' out.txt | awk -F'= ' '{ print $2 }') - BENCH_RESULTS=$(echo $BENCH_RESULTS | jq -c ". += [{\"${test_name}\": \"$BENCH\"}]") - done - - echo "BENCH_RESULTS=$BENCH_RESULTS" | tee -a "$GITHUB_OUTPUT" - - uses: actions/checkout@v4 - with: - ref: ${{ github.base_ref }} - - name: Get bench for base branch - id: regression-check - continue-on-error: false - run: | - counter=0 - BENCH_RESULTS='${{ steps.bench_pr.outputs.BENCH_RESULTS }}' - echo "$BENCH_RESULTS" - SLOW_TESTS="" - REGRESSION="false" - - for test_name in ${{ env.TESTS }}; do - cargo nextest run -E "test($test_name)" --release --nocapture --run-ignored all | tee out.txt 2>&1 - BENCH_BASE=$(grep 'Total time' out.txt | awk -F'= ' '{ print $2 }') - BENCH_PR=$(echo "$BENCH_RESULTS" | jq ".[$counter] | to_entries | .[0].value" | sed 's/"//g') - - echo "$test_name summary" - echo "Base = $BENCH_BASE, PR = $BENCH_PR" - - if [[ -z $BENCH_BASE || -z $BENCH_PR ]]; then - exit 1 - fi - - BENCH_BASE_NUM=${BENCH_BASE%% *} - BENCH_PR_NUM=${BENCH_PR%% *} - - # 10% slowdown threshold - REGRESSION_THRESHOLD=$(echo "$BENCH_BASE_NUM * 1.10" | bc) - - if (( $(echo "$BENCH_PR_NUM >= $REGRESSION_THRESHOLD" | bc -l) )); then - echo "Performance regression for test ${test_name}" - REGRESSION="true" - SLOW_TESTS+="\`${test_name}\`\n" - SLOW_TESTS+="Bench result before: $BENCH_BASE\n" - SLOW_TESTS+="Bench result after: $BENCH_PR\n" - fi - counter=$((counter + 1)) - done - - echo "regression=$REGRESSION" | tee -a $GITHUB_OUTPUT - echo "slow-tests<> $GITHUB_OUTPUT - echo -e "$SLOW_TESTS" | tee -a $GITHUB_OUTPUT - echo "EOF" >> $GITHUB_OUTPUT - echo "WORKFLOW_URL=https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" | tee -a $GITHUB_ENV - - uses: actions/checkout@v4 - - name: Comment on failing run - if: steps.regression-check.outputs.regression == 'true' && github.event_name == 'pull_request' - uses: peter-evans/create-or-update-comment@v4 - with: - issue-number: ${{ github.event.pull_request.number }} - body: | - Benchmark regression check failed :x: - - ${{ steps.regression-check.outputs.slow-tests }} - - [Workflow URL](${{ env.WORKFLOW_URL }}) - - uses: JasonEtco/create-an-issue@v2 - if: steps.regression-check.outputs.regression == 'true' && github.event_name == 'merge_group' - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - WORKFLOW_URL: ${{ env.WORKFLOW_URL }} - SLOW_TESTS: ${{ steps.regression-check.outputs.slow-tests }} - with: - update_existing: true - filename: .github/BENCH_REGRESSION.md - + # TODO: Uncomment once the github token works correctly with `JasonEtco/create-an-issue@v2` + # bench-regression: + # enabled: + # runs-on: ubuntu-latest + # steps: + # - uses: actions/checkout@v4 + # with: + # repository: argumentcomputer/ci-workflows + # - uses: ./.github/actions/ci-env + # - uses: actions/checkout@v4 + # - uses: dtolnay/rust-toolchain@stable + # - uses: Swatinem/rust-cache@v2 + # - uses: taiki-e/install-action@nextest + # - name: Set env + # run: | + # echo "TESTS=fib_e2e" | tee -a $GITHUB_ENV + # echo "LOAM_FIB_ARG=50000" | tee -a $GITHUB_ENV + # - name: Get benchmark for PR + # id: bench_pr + # run: | + # BENCH_RESULTS='[]' + + # for test_name in ${{ env.TESTS }}; do + # cargo nextest run -E "test($test_name)" --release --nocapture --run-ignored all | tee out.txt 2>&1 + # BENCH=$(grep 'Total time' out.txt | awk -F'= ' '{ print $2 }') + # BENCH_RESULTS=$(echo $BENCH_RESULTS | jq -c ". += [{\"${test_name}\": \"$BENCH\"}]") + # done + + # echo "BENCH_RESULTS=$BENCH_RESULTS" | tee -a "$GITHUB_OUTPUT" + # - uses: actions/checkout@v4 + # with: + # ref: ${{ github.base_ref }} + # - name: Get bench for base branch + # id: regression-check + # continue-on-error: false + # run: | + # counter=0 + # BENCH_RESULTS='${{ steps.bench_pr.outputs.BENCH_RESULTS }}' + # echo "$BENCH_RESULTS" + # SLOW_TESTS="" + # REGRESSION="false" + + # for test_name in ${{ env.TESTS }}; do + # cargo nextest run -E "test($test_name)" --release --nocapture --run-ignored all | tee out.txt 2>&1 + # BENCH_BASE=$(grep 'Total time' out.txt | awk -F'= ' '{ print $2 }') + # BENCH_PR=$(echo "$BENCH_RESULTS" | jq ".[$counter] | to_entries | .[0].value" | sed 's/"//g') + + # echo "$test_name summary" + # echo "Base = $BENCH_BASE, PR = $BENCH_PR" + + # if [[ -z $BENCH_BASE || -z $BENCH_PR ]]; then + # exit 1 + # fi + + # BENCH_BASE_NUM=${BENCH_BASE%% *} + # BENCH_PR_NUM=${BENCH_PR%% *} + + # # 10% slowdown threshold + # REGRESSION_THRESHOLD=$(echo "$BENCH_BASE_NUM * 1.10" | bc) + + # if (( $(echo "$BENCH_PR_NUM >= $REGRESSION_THRESHOLD" | bc -l) )); then + # echo "Performance regression for test ${test_name}" + # REGRESSION="true" + # SLOW_TESTS+="\`${test_name}\`\n" + # SLOW_TESTS+="Bench result before: $BENCH_BASE\n" + # SLOW_TESTS+="Bench result after: $BENCH_PR\n" + # fi + # counter=$((counter + 1)) + # done + + # echo "regression=$REGRESSION" | tee -a $GITHUB_OUTPUT + # echo "slow-tests<> $GITHUB_OUTPUT + # echo -e "$SLOW_TESTS" | tee -a $GITHUB_OUTPUT + # echo "EOF" >> $GITHUB_OUTPUT + # echo "WORKFLOW_URL=https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" | tee -a $GITHUB_ENV + # - uses: actions/checkout@v4 + # - name: Comment on failing run + # if: steps.regression-check.outputs.regression == 'true' && github.event_name == 'pull_request' + # uses: peter-evans/create-or-update-comment@v4 + # with: + # issue-number: ${{ github.event.pull_request.number }} + # body: | + # Benchmark regression check failed :x: + + # ${{ steps.regression-check.outputs.slow-tests }} + + # [Workflow URL](${{ env.WORKFLOW_URL }}) + # - uses: JasonEtco/create-an-issue@v2 + # if: steps.regression-check.outputs.regression == 'true' && github.event_name == 'merge_group' + # env: + # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # WORKFLOW_URL: ${{ env.WORKFLOW_URL }} + # SLOW_TESTS: ${{ steps.regression-check.outputs.slow-tests }} + # with: + # update_existing: true + # filename: .github/BENCH_REGRESSION.md diff --git a/Cargo.lock b/Cargo.lock index fc58b9f4..fbb65bf3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,6 +2,32 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "addchain" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b2e69442aa5628ea6951fa33e24efe8313f4321a91bd729fc2f75bdfc858570" +dependencies = [ + "num-bigint 0.3.3", + "num-integer", + "num-traits", +] + +[[package]] +name = "addr2line" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" + [[package]] name = "ahash" version = "0.8.11" @@ -11,7 +37,7 @@ dependencies = [ "cfg-if", "once_cell", "version_check", - "zerocopy", + "zerocopy 0.7.35", ] [[package]] @@ -25,9 +51,344 @@ dependencies = [ [[package]] name = "allocator-api2" -version = "0.2.18" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" + +[[package]] +name = "alloy-consensus" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69e32ef5c74bbeb1733c37f4ac7f866f8c8af208b7b4265e21af609dcac5bd5e" +dependencies = [ + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "alloy-serde", + "alloy-trie", + "auto_impl", + "c-kzg", + "derive_more 1.0.0", + "serde", +] + +[[package]] +name = "alloy-consensus-any" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fa13b7b1e1e3fedc42f0728103bfa3b4d566d3d42b606db449504d88dbdbdcf" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "alloy-serde", + "serde", +] + +[[package]] +name = "alloy-eip2124" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "675264c957689f0fd75f5993a73123c2cc3b5c235a38f5b9037fe6c826bfb2c0" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "crc", + "thiserror 2.0.12", +] + +[[package]] +name = "alloy-eip2930" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0069cf0642457f87a01a014f6dc29d5d893cd4fd8fddf0c3cdfad1bb3ebafc41" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "serde", +] + +[[package]] +name = "alloy-eip7702" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b15b13d38b366d01e818fe8e710d4d702ef7499eacd44926a06171dd9585d0c" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "serde", + "thiserror 2.0.12", +] + +[[package]] +name = "alloy-eips" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5591581ca2ab0b3e7226a4047f9a1bfcf431da1d0cce3752fda609fea3c27e37" +dependencies = [ + "alloy-eip2124", + "alloy-eip2930", + "alloy-eip7702", + "alloy-primitives", + "alloy-rlp", + "alloy-serde", + "auto_impl", + "c-kzg", + "derive_more 1.0.0", + "once_cell", + "serde", + "sha2", +] + +[[package]] +name = "alloy-json-rpc" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "762414662d793d7aaa36ee3af6928b6be23227df1681ce9c039f6f11daadef64" +dependencies = [ + "alloy-primitives", + "alloy-sol-types", + "serde", + "serde_json", + "thiserror 2.0.12", + "tracing", +] + +[[package]] +name = "alloy-network" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8be03f2ebc00cf88bd06d3c6caf387dceaa9c7e6b268216779fa68a9bf8ab4e6" +dependencies = [ + "alloy-consensus", + "alloy-consensus-any", + "alloy-eips", + "alloy-json-rpc", + "alloy-network-primitives", + "alloy-primitives", + "alloy-rpc-types-any", + "alloy-rpc-types-eth", + "alloy-serde", + "alloy-signer", + "alloy-sol-types", + "async-trait", + "auto_impl", + "futures-utils-wasm", + "serde", + "serde_json", + "thiserror 2.0.12", +] + +[[package]] +name = "alloy-network-primitives" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a00ce618ae2f78369918be0c20f620336381502c83b6ed62c2f7b2db27698b0" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-serde", + "serde", +] + +[[package]] +name = "alloy-primitives" +version = "0.8.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eacedba97e65cdc7ab592f2b22ef5d3ab8d60b2056bc3a6e6363577e8270ec6f" +dependencies = [ + "alloy-rlp", + "bytes", + "cfg-if", + "const-hex", + "derive_more 2.0.1", + "foldhash", + "hashbrown 0.15.2", + "indexmap 2.8.0", + "itoa", + "k256", + "keccak-asm", + "paste", + "proptest", + "rand", + "ruint", + "rustc-hash 2.1.1", + "serde", + "sha3", + "tiny-keccak", +] + +[[package]] +name = "alloy-rlp" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6c1d995bff8d011f7cd6c81820d51825e6e06d6db73914c1630ecf544d83d6" +dependencies = [ + "alloy-rlp-derive", + "arrayvec", + "bytes", +] + +[[package]] +name = "alloy-rlp-derive" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a40e1ef334153322fd878d07e86af7a529bcb86b2439525920a88eba87bcf943" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "alloy-rpc-types-any" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "318ae46dd12456df42527c3b94c1ae9001e1ceb707f7afe2c7807ac4e49ebad9" +dependencies = [ + "alloy-consensus-any", + "alloy-rpc-types-eth", + "alloy-serde", +] + +[[package]] +name = "alloy-rpc-types-eth" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b4dbee4d82f8a22dde18c28257bed759afeae7ba73da4a1479a039fd1445d04" +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", + "thiserror 2.0.12", +] + +[[package]] +name = "alloy-serde" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" +checksum = "8732058f5ca28c1d53d241e8504620b997ef670315d7c8afab856b3e3b80d945" +dependencies = [ + "alloy-primitives", + "serde", + "serde_json", +] + +[[package]] +name = "alloy-signer" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f96b3526fdd779a4bd0f37319cfb4172db52a7ac24cdbb8804b72091c18e1701" +dependencies = [ + "alloy-primitives", + "async-trait", + "auto_impl", + "either", + "elliptic-curve", + "k256", + "thiserror 2.0.12", +] + +[[package]] +name = "alloy-signer-local" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe8f78cd6b7501c7e813a1eb4a087b72d23af51f5bb66d4e948dc840bdd207d8" +dependencies = [ + "alloy-consensus", + "alloy-network", + "alloy-primitives", + "alloy-signer", + "async-trait", + "k256", + "rand", + "thiserror 2.0.12", +] + +[[package]] +name = "alloy-sol-macro" +version = "0.8.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3637022e781bc73a9e300689cd91105a0e6be00391dd4e2110a71cc7e9f20a94" +dependencies = [ + "alloy-sol-macro-expander", + "alloy-sol-macro-input", + "proc-macro-error2", + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "alloy-sol-macro-expander" +version = "0.8.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b9bd22d0bba90e40f40c625c33d39afb7d62b22192476a2ce1dcf8409dce880" +dependencies = [ + "alloy-sol-macro-input", + "const-hex", + "heck 0.5.0", + "indexmap 2.8.0", + "proc-macro-error2", + "proc-macro2", + "quote", + "syn 2.0.100", + "syn-solidity", + "tiny-keccak", +] + +[[package]] +name = "alloy-sol-macro-input" +version = "0.8.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05ae4646e8123ec2fd10f9c22e361ffe4365c42811431829c2eabae528546bcc" +dependencies = [ + "const-hex", + "dunce", + "heck 0.5.0", + "macro-string", + "proc-macro2", + "quote", + "syn 2.0.100", + "syn-solidity", +] + +[[package]] +name = "alloy-sol-types" +version = "0.8.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "767957235807b021126dca1598ac3ef477007eace07961607dc5f490550909c7" +dependencies = [ + "alloy-primitives", + "alloy-sol-macro", + "const-hex", +] + +[[package]] +name = "alloy-trie" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d95a94854e420f07e962f7807485856cde359ab99ab6413883e15235ad996e8b" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "arrayvec", + "derive_more 1.0.0", + "nybbles", + "serde", + "smallvec", + "tracing", +] [[package]] name = "android-tzdata" @@ -100,19 +461,20 @@ dependencies = [ [[package]] name = "anstyle-wincon" -version = "3.0.6" +version = "3.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125" +checksum = "ca3534e77181a9cc07539ad51f2141fe32f6c3ffd4df76db8ad92346b003ae4e" dependencies = [ "anstyle", + "once_cell", "windows-sys 0.59.0", ] [[package]] name = "anyhow" -version = "1.0.93" +version = "1.0.97" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c95c10ba0b00a02636238b814946408b1322d5ac4760326e6fb8ec956d85775" +checksum = "dcfed56ad506cb2c684a14971b8861fdc3baaaae314b9e5f9bb532cbe3ba7a4f" [[package]] name = "arc-swap" @@ -121,76 +483,338 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457" [[package]] -name = "arrayref" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" - -[[package]] -name = "arrayvec" -version = "0.7.6" +name = "ark-ff" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" - -[[package]] -name = "ascent" -version = "0.6.0" -source = "git+https://github.com/argumentcomputer/ascent.git#b098230dc7c92e7d7e5e8d64af52755b69e97b39" +checksum = "6b3235cc41ee7a12aaaf2c575a2ad7b46713a8a50bda2fc3b003a04845c05dd6" dependencies = [ - "ascent_base", - "ascent_macro", - "boxcar", - "dashmap", - "hashbrown 0.14.5", - "instant", - "once_cell", + "ark-ff-asm 0.3.0", + "ark-ff-macros 0.3.0", + "ark-serialize 0.3.0", + "ark-std 0.3.0", + "derivative", + "num-bigint 0.4.6", + "num-traits", "paste", - "rayon", - "rustc-hash 1.1.0", + "rustc_version 0.3.3", + "zeroize", ] [[package]] -name = "ascent_base" -version = "0.6.0" -source = "git+https://github.com/argumentcomputer/ascent.git#b098230dc7c92e7d7e5e8d64af52755b69e97b39" +name = "ark-ff" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" dependencies = [ + "ark-ff-asm 0.4.2", + "ark-ff-macros 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "derivative", + "digest 0.10.7", + "itertools 0.10.5", + "num-bigint 0.4.6", + "num-traits", "paste", + "rustc_version 0.4.1", + "zeroize", ] [[package]] -name = "ascent_macro" -version = "0.6.0" -source = "git+https://github.com/argumentcomputer/ascent.git#b098230dc7c92e7d7e5e8d64af52755b69e97b39" +name = "ark-ff-asm" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db02d390bf6643fb404d3d22d31aee1c4bc4459600aef9113833d17e786c6e44" dependencies = [ - "ascent_base", - "derive-syn-parse", - "duplicate", - "itertools 0.12.1", - "lazy_static", - "petgraph", - "proc-macro2", "quote", - "syn 2.0.87", + "syn 1.0.109", ] [[package]] -name = "autocfg" -version = "1.4.0" +name = "ark-ff-asm" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" +checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" +dependencies = [ + "quote", + "syn 1.0.109", +] [[package]] -name = "base-x" -version = "0.2.11" +name = "ark-ff-macros" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cbbc9d0964165b47557570cce6c952866c2678457aca742aafc9fb771d30270" +checksum = "db2fd794a08ccb318058009eefdf15bcaaaaf6f8161eb3345f907222bac38b20" +dependencies = [ + "num-bigint 0.4.6", + "num-traits", + "quote", + "syn 1.0.109", +] [[package]] -name = "base16ct" -version = "0.2.0" +name = "ark-ff-macros" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" - +checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" +dependencies = [ + "num-bigint 0.4.6", + "num-traits", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-serialize" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6c2b318ee6e10f8c2853e73a83adc0ccb88995aa978d8a3408d492ab2ee671" +dependencies = [ + "ark-std 0.3.0", + "digest 0.9.0", +] + +[[package]] +name = "ark-serialize" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" +dependencies = [ + "ark-std 0.4.0", + "digest 0.10.7", + "num-bigint 0.4.6", +] + +[[package]] +name = "ark-std" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1df2c09229cbc5a028b1d70e00fdb2acee28b1055dfb5ca73eea49c5a25c4e7c" +dependencies = [ + "num-traits", + "rand", +] + +[[package]] +name = "ark-std" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" +dependencies = [ + "num-traits", + "rand", +] + +[[package]] +name = "arrayref" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" + +[[package]] +name = "arrayvec" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" +dependencies = [ + "serde", +] + +[[package]] +name = "ascent" +version = "0.6.0" +source = "git+https://github.com/argumentcomputer/ascent.git#b098230dc7c92e7d7e5e8d64af52755b69e97b39" +dependencies = [ + "ascent_base", + "ascent_macro", + "boxcar", + "dashmap", + "hashbrown 0.14.5", + "instant", + "once_cell", + "paste", + "rayon", + "rustc-hash 1.1.0", +] + +[[package]] +name = "ascent_base" +version = "0.6.0" +source = "git+https://github.com/argumentcomputer/ascent.git#b098230dc7c92e7d7e5e8d64af52755b69e97b39" +dependencies = [ + "paste", +] + +[[package]] +name = "ascent_macro" +version = "0.6.0" +source = "git+https://github.com/argumentcomputer/ascent.git#b098230dc7c92e7d7e5e8d64af52755b69e97b39" +dependencies = [ + "ascent_base", + "derive-syn-parse", + "duplicate", + "itertools 0.12.1", + "lazy_static", + "petgraph", + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "async-stream" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" +dependencies = [ + "async-stream-impl", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-stream-impl" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "async-trait" +version = "0.1.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d556ec1359574147ec0c4fc5eb525f3f23263a592b1a9c07e0a75b427de55c97" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "auto_impl" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e12882f59de5360c748c4cbf569a042d5fb0eb515f7bea9c1f470b47f6ffbd73" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "autocfg" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" + +[[package]] +name = "axum" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f" +dependencies = [ + "async-trait", + "axum-core", + "bytes", + "futures-util", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-util", + "itoa", + "matchit", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "rustversion", + "serde", + "serde_json", + "serde_path_to_error", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tower 0.5.2", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "axum-core" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199" +dependencies = [ + "async-trait", + "bytes", + "futures-util", + "http", + "http-body", + "http-body-util", + "mime", + "pin-project-lite", + "rustversion", + "sync_wrapper", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "backoff" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b62ddb9cb1ec0a098ad4bbf9344d0713fa193ae1a80af55febcff2627b6a00c1" +dependencies = [ + "futures-core", + "getrandom 0.2.15", + "instant", + "pin-project-lite", + "rand", + "tokio", +] + +[[package]] +name = "backtrace" +version = "0.3.74" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" +dependencies = [ + "addr2line", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", + "serde", + "windows-targets 0.52.6", +] + +[[package]] +name = "base-x" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cbbc9d0964165b47557570cce6c952866c2678457aca742aafc9fb771d30270" + +[[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" @@ -199,9 +823,9 @@ checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "base64ct" -version = "1.6.0" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" +checksum = "bb97d56060ee67d285efb8001fec9d2a4c710c32efd2e14b5cbb5ba71930fc2d" [[package]] name = "bincode" @@ -212,26 +836,46 @@ dependencies = [ "serde", ] +[[package]] +name = "bindgen" +version = "0.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f49d8fed880d473ea71efb9bf597651e77201bdd4893efe54c9e5d65ae04ce6f" +dependencies = [ + "bitflags", + "cexpr", + "clang-sys", + "itertools 0.13.0", + "log", + "prettyplease", + "proc-macro2", + "quote", + "regex", + "rustc-hash 1.1.0", + "shlex", + "syn 2.0.100", +] + [[package]] name = "bit-set" -version = "0.5.3" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" +checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" dependencies = [ "bit-vec", ] [[package]] name = "bit-vec" -version = "0.6.3" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" +checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" [[package]] name = "bitflags" -version = "2.6.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd" [[package]] name = "bitvec" @@ -246,17 +890,23 @@ dependencies = [ ] [[package]] -name = "blake3" -version = "1.5.4" +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.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d82033247fd8e890df8f740e407ad4d038debb9eb1f40533fffb32e7d17dc6f7" +checksum = "06e903a20b159e944f91ec8499fe1e55651480c541ea0a584f5d967c49ad9d99" dependencies = [ "arrayref", "arrayvec", - "cc", - "cfg-if", "constant_time_eq", - "rayon-core", ] [[package]] @@ -265,24 +915,34 @@ version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" dependencies = [ - "generic-array", + "generic-array 0.14.7", ] [[package]] name = "bls12_381" -version = "0.8.0" -source = "git+https://github.com/argumentcomputer/bls12_381.git?branch=zkvm#2a1c7d1b4827a4d42eb4a68f8cb78c2da10f4787" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3c196a77437e7cc2fb515ce413a6401291578b5afc8ecb29a3c7ab957f05941" dependencies = [ - "cfg-if", - "ff", - "group", + "ff 0.12.1", + "group 0.12.1", "pairing", "rand_core", - "sphinx-lib", - "sphinx-zkvm", "subtle", ] +[[package]] +name = "blst" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47c79a94619fade3c0b887670333513a67ac28a6a7e653eb260bf0d4103db38d" +dependencies = [ + "cc", + "glob", + "threadpool", + "zeroize", +] + [[package]] name = "boxcar" version = "0.1.0" @@ -291,9 +951,15 @@ checksum = "38c99613cb3cd7429889a08dfcf651721ca971c86afa30798461f8eee994de47" [[package]] name = "bumpalo" -version = "3.16.0" +version = "3.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" + +[[package]] +name = "byte-slice-cast" +version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" +checksum = "7575182f7272186991736b70173b0ea045398f984bf5ebbb3804736ce1330c9d" [[package]] name = "byte_lookup" @@ -307,8 +973,9 @@ dependencies = [ "p3-maybe-rayon", "rand", "rand_chacha", - "sphinx-core", - "sphinx-derive", + "sp1-core-executor", + "sp1-core-machine", + "sp1-derive", ] [[package]] @@ -319,9 +986,9 @@ checksum = "5ce89b21cab1437276d2650d57e971f9d548a2d9037cc231abdc0562b97498ce" [[package]] name = "bytemuck" -version = "1.19.0" +version = "1.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8334215b81e418a0a7bdb8ef0849474f40bb10c8b71f1c4ed315cff49f32494d" +checksum = "b6b1fc10dbac614ebc03540c9dbd60e83887fda27794998c6528f1782047d540" [[package]] name = "byteorder" @@ -330,39 +997,117 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] -name = "camino" -version = "1.1.9" +name = "bytes" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" +dependencies = [ + "serde", +] [[package]] -name = "cassowary" -version = "0.3.0" +name = "c-kzg" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df8670b8c7b9dae1793364eafadf7239c40d669904660c5960d74cfd80b46a53" +checksum = "f0307f72feab3300336fb803a57134159f6e20139af1357f36c54cb90d8e8928" +dependencies = [ + "blst", + "cc", + "glob", + "hex", + "libc", + "once_cell", + "serde", +] [[package]] -name = "cast" -version = "0.3.0" +name = "camino" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" +checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3" +dependencies = [ + "serde", +] [[package]] -name = "castaway" -version = "0.2.3" +name = "cargo-platform" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0abae9be0aaf9ea96a3b1b8b1b55c602ca751eba1b1500220cea4ecbafe7c0d5" +checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea" dependencies = [ - "rustversion", + "serde", ] [[package]] -name = "cc" -version = "1.1.36" +name = "cargo_metadata" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baee610e9452a8f6f0a1b6194ec09ff9e2d85dea54432acdae41aa0761c95d70" +checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" dependencies = [ - "shlex", + "camino", + "cargo-platform", + "semver 1.0.26", + "serde", + "serde_json", + "thiserror 1.0.69", +] + +[[package]] +name = "cassowary" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df8670b8c7b9dae1793364eafadf7239c40d669904660c5960d74cfd80b46a53" + +[[package]] +name = "cast" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" + +[[package]] +name = "castaway" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0abae9be0aaf9ea96a3b1b8b1b55c602ca751eba1b1500220cea4ecbafe7c0d5" +dependencies = [ + "rustversion", +] + +[[package]] +name = "cbindgen" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fce8dd7fcfcbf3a0a87d8f515194b49d6135acab73e18bd380d1d93bb1a15eb" +dependencies = [ + "clap", + "heck 0.4.1", + "indexmap 2.8.0", + "log", + "proc-macro2", + "quote", + "serde", + "serde_json", + "syn 2.0.100", + "tempfile", + "toml", +] + +[[package]] +name = "cc" +version = "1.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be714c154be609ec7f5dad223a33bf1482fff90472de28f7362806e6d4832b8c" +dependencies = [ + "shlex", +] + +[[package]] +name = "cexpr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +dependencies = [ + "nom", ] [[package]] @@ -377,17 +1122,22 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" +[[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.38" +version = "0.4.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" +checksum = "1a7964611d71df112cb1730f2ee67324fcf4d0fc6606acbbe9bfe06df124637c" dependencies = [ "android-tzdata", "iana-time-zone", "num-traits", - "serde", - "windows-targets", + "windows-link", ] [[package]] @@ -417,11 +1167,22 @@ dependencies = [ "half", ] +[[package]] +name = "clang-sys" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" +dependencies = [ + "glob", + "libc", + "libloading", +] + [[package]] name = "clap" -version = "4.5.20" +version = "4.5.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97f376d85a664d5837dbae44bf546e6477a679ff6610010f17276f686d867e8" +checksum = "6088f3ae8c3608d19260cd7445411865a485688711b78b5be70d78cd96136f83" dependencies = [ "clap_builder", "clap_derive", @@ -429,9 +1190,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.20" +version = "4.5.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19bc80abd44e4bed93ca373a0704ccbd1b710dc5749406201bb018272808dc54" +checksum = "22a7ef7f676155edfb82daa97f99441f3ebf4a58d5e32f295a56259f1b6facc8" dependencies = [ "anstream", "anstyle", @@ -441,21 +1202,21 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.18" +version = "4.5.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" +checksum = "09176aae279615badda0765c0c0b3f6ed53f4709118af73cf4655d85d1530cd7" dependencies = [ - "heck", + "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.100", ] [[package]] name = "clap_lex" -version = "0.7.2" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" +checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "clipboard-win" @@ -474,9 +1235,9 @@ checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" [[package]] name = "compact_str" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6050c3a16ddab2e412160b31f2c871015704239bca62f72f6e5f0be631d3f644" +checksum = "3b79c4069c6cad78e2e0cdfcbd26275770669fb39fd308a752dc110e83b9af32" dependencies = [ "castaway", "cfg-if", @@ -486,18 +1247,74 @@ dependencies = [ "static_assertions", ] +[[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.0", + "windows-sys 0.59.0", +] + +[[package]] +name = "const-hex" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b0485bab839b018a8f1723fc5391819fea5f8f0f32288ef8a735fd096b6160c" +dependencies = [ + "cfg-if", + "cpufeatures", + "hex", + "proptest", + "serde", +] + [[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.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "126f97965c8ad46d6d9163268ff28432e8f6a1196a55578867832e3049df63dd" +dependencies = [ + "const_format_proc_macros", +] + +[[package]] +name = "const_format_proc_macros" +version = "0.2.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d57c2eccfb16dbac1f4e61e206105db5820c9d26c3c472bc17c774259ef7744" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] + [[package]] name = "constant_time_eq" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" +[[package]] +name = "core-foundation" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b55271e5c8c478ad3f38ad24ef34923091e0548492a266d19b3c0b4d82574c63" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "core-foundation-sys" version = "0.8.7" @@ -506,13 +1323,28 @@ checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cpufeatures" -version = "0.2.14" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" dependencies = [ "libc", ] +[[package]] +name = "crc" +version = "3.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69e6e4d7b33a94f0991c26729976b10ebde1d34c3ee82408fb536164fa10d636" +dependencies = [ + "crc-catalog", +] + +[[package]] +name = "crc-catalog" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" + [[package]] name = "criterion" version = "0.5.1" @@ -549,11 +1381,20 @@ dependencies = [ "itertools 0.10.5", ] +[[package]] +name = "crossbeam-channel" +version = "0.5.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06ba6d68e24814cb8de6bb986db8222d3a027d15872cabc0d18817bc3c0e4471" +dependencies = [ + "crossbeam-utils", +] + [[package]] name = "crossbeam-deque" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" dependencies = [ "crossbeam-epoch", "crossbeam-utils", @@ -570,9 +1411,9 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.20" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "crossterm" @@ -584,7 +1425,7 @@ dependencies = [ "crossterm_winapi", "mio", "parking_lot", - "rustix", + "rustix 0.38.44", "signal-hook", "signal-hook-mio", "winapi", @@ -601,9 +1442,9 @@ dependencies = [ [[package]] name = "crunchy" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" +checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929" [[package]] name = "crypto-bigint" @@ -611,7 +1452,7 @@ version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" dependencies = [ - "generic-array", + "generic-array 0.14.7", "rand_core", "subtle", "zeroize", @@ -623,34 +1464,18 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" dependencies = [ - "generic-array", + "generic-array 0.14.7", "typenum", ] [[package]] -name = "curve25519-dalek" -version = "4.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" -dependencies = [ - "cfg-if", - "cpufeatures", - "curve25519-dalek-derive", - "fiat-crypto", - "rustc_version", - "subtle", - "zeroize", -] - -[[package]] -name = "curve25519-dalek-derive" -version = "0.1.1" +name = "ctrlc" +version = "3.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" +checksum = "90eeab0aa92f3f9b4e87f258c72b139c207d251f9cbc1080a0086b86a8870dd3" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.87", + "nix 0.29.0", + "windows-sys 0.59.0", ] [[package]] @@ -674,7 +1499,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.87", + "syn 2.0.100", ] [[package]] @@ -685,7 +1510,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.87", + "syn 2.0.100", ] [[package]] @@ -702,6 +1527,84 @@ dependencies = [ "rayon", ] +[[package]] +name = "dashu" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85b3e5ac1e23ff1995ef05b912e2b012a8784506987a2651552db2c73fb3d7e0" +dependencies = [ + "dashu-base", + "dashu-float", + "dashu-int", + "dashu-macros", + "dashu-ratio", + "rustversion", +] + +[[package]] +name = "dashu-base" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0b80bf6b85aa68c58ffea2ddb040109943049ce3fbdf4385d0380aef08ef289" + +[[package]] +name = "dashu-float" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85078445a8dbd2e1bd21f04a816f352db8d333643f0c9b78ca7c3d1df71063e7" +dependencies = [ + "dashu-base", + "dashu-int", + "num-modular", + "num-order", + "rustversion", + "static_assertions", +] + +[[package]] +name = "dashu-int" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee99d08031ca34a4d044efbbb21dff9b8c54bb9d8c82a189187c0651ffdb9fbf" +dependencies = [ + "cfg-if", + "dashu-base", + "num-modular", + "num-order", + "rustversion", + "static_assertions", +] + +[[package]] +name = "dashu-macros" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93381c3ef6366766f6e9ed9cf09e4ef9dec69499baf04f0c60e70d653cf0ab10" +dependencies = [ + "dashu-base", + "dashu-float", + "dashu-int", + "dashu-ratio", + "paste", + "proc-macro2", + "quote", + "rustversion", +] + +[[package]] +name = "dashu-ratio" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47e33b04dd7ce1ccf8a02a69d3419e354f2bbfdf4eb911a0b7465487248764c9" +dependencies = [ + "dashu-base", + "dashu-float", + "dashu-int", + "num-modular", + "num-order", + "rustversion", +] + [[package]] name = "der" version = "0.7.9" @@ -709,6 +1612,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" dependencies = [ "const-oid", + "pem-rfc7468", "zeroize", ] @@ -719,7 +1623,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" dependencies = [ "powerfmt", - "serde", +] + +[[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]] @@ -730,7 +1644,57 @@ checksum = "d65d7ce8132b7c0e54497a4d9a55a1c2a0912a0d786cf894472ba818fba45762" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.100", +] + +[[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.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678" +dependencies = [ + "derive_more-impl 2.0.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.100", +] + +[[package]] +name = "derive_more-impl" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", + "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.7", ] [[package]] @@ -745,11 +1709,43 @@ dependencies = [ "subtle", ] +[[package]] +name = "dirs" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" +dependencies = [ + "libc", + "option-ext", + "redox_users", + "windows-sys 0.48.0", +] + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + [[package]] name = "dissimilar" -version = "1.0.9" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59f8e79d1fbf76bdfbde321e902714bf6c49df88a7dda6fc682fc2979226962d" +checksum = "8975ffdaa0ef3661bfe02dbdcc06c9f829dfafe6a3c474de366a8d5e44276921" [[package]] name = "downcast-rs" @@ -757,6 +1753,26 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" +[[package]] +name = "downloader" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ac1e888d6830712d565b2f3a974be3200be9296bc1b03db8251a4cbf18a4a34" +dependencies = [ + "digest 0.10.7", + "futures", + "rand", + "reqwest", + "thiserror 1.0.69", + "tokio", +] + +[[package]] +name = "dunce" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" + [[package]] name = "duplicate" version = "1.0.0" @@ -770,7 +1786,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" dependencies = [ "der", - "digest", + "digest 0.10.7", "elliptic-curve", "rfc6979", "signature", @@ -779,9 +1795,9 @@ dependencies = [ [[package]] name = "either" -version = "1.13.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" [[package]] name = "elf" @@ -797,10 +1813,11 @@ checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" dependencies = [ "base16ct", "crypto-bigint", - "digest", - "ff", - "generic-array", - "group", + "digest 0.10.7", + "ff 0.13.1", + "generic-array 0.14.7", + "group 0.13.0", + "pem-rfc7468", "pkcs8", "rand_core", "sec1", @@ -808,26 +1825,53 @@ dependencies = [ "zeroize", ] +[[package]] +name = "encode_unicode" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" + [[package]] name = "endian-type" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d" +[[package]] +name = "enum-map" +version = "2.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6866f3bfdf8207509a033af1a75a7b08abda06bbaaeae6669323fd5a097df2e9" +dependencies = [ + "enum-map-derive", + "serde", +] + +[[package]] +name = "enum-map-derive" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f282cfdfe92516eb26c2af8589c274c7c17681f5ecc03c18255fe741c6aa64eb" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + [[package]] name = "equivalent" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "errno" -version = "0.3.9" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -838,47 +1882,113 @@ checksum = "a5d9305ccc6942a704f4335694ecd3de2ea531b114ac2d51f5f843750787a92f" [[package]] name = "expect-test" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e0be0a561335815e06dab7c62e50353134c796e7a6155402a64bcff66b6a5e0" +checksum = "63af43ff4431e848fb47472a920f14fa71c24de13255a5692e93d4e90302acb0" dependencies = [ "dissimilar", "once_cell", ] +[[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.1.1" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +[[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 = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" +checksum = "ce8dba4714ef14b8274c371879b175aa55b16b30f269663f19d576f380018dc4" +dependencies = [ + "arrayvec", + "auto_impl", + "bytes", +] [[package]] name = "fd-lock" -version = "4.0.2" +version = "4.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e5768da2206272c81ef0b5e951a41862938a6070da63bcea197899942d3b947" +checksum = "0ce92ff622d6dadf7349484f42c93271a0d49b7cc4d466a936405bacbe10aa78" dependencies = [ "cfg-if", - "rustix", - "windows-sys 0.52.0", + "rustix 1.0.2", + "windows-sys 0.59.0", ] [[package]] name = "ff" -version = "0.13.0" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d013fc25338cc558c5c2cfbad646908fb23591e2404481826742b651c9af7160" +dependencies = [ + "bitvec", + "rand_core", + "subtle", +] + +[[package]] +name = "ff" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" +checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" dependencies = [ "bitvec", + "byteorder", + "ff_derive", "rand_core", "subtle", ] [[package]] -name = "fiat-crypto" -version = "0.2.9" +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 = "fixed-hash" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" +checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" +dependencies = [ + "byteorder", + "rand", + "rustc-hex", + "static_assertions", +] [[package]] name = "fixedbitset" @@ -894,9 +2004,18 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "foldhash" -version = "0.1.3" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0d2fde1f7b3d48b8395d5f2de76c18a528bd6a9cdde438df747bfcba3e05d6f" + +[[package]] +name = "form_urlencoded" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f81ec6369c545a7d40e4589b5597581fa1c441fe1cce96dd1de43159910a36a2" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] [[package]] name = "funty" @@ -952,6 +2071,17 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + [[package]] name = "futures-sink" version = "0.3.31" @@ -973,6 +2103,7 @@ dependencies = [ "futures-channel", "futures-core", "futures-io", + "futures-macro", "futures-sink", "futures-task", "memchr", @@ -981,12 +2112,24 @@ dependencies = [ "slab", ] +[[package]] +name = "futures-utils-wasm" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42012b0f064e01aa58b545fe3727f90f7dd4020f4a3ea735b50344965f5a57e9" + [[package]] name = "gcd" version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d758ba1b47b00caf47f24925c0074ecb20d6dfcffe7f6d53395c0465674841a" +[[package]] +name = "gen_ops" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "304de19db7028420975a296ab0fcbbc8e69438c4ed254a1e41e2a7f37d5f0e0a" + [[package]] name = "generic-array" version = "0.14.7" @@ -998,15 +2141,63 @@ dependencies = [ "zeroize", ] +[[package]] +name = "generic-array" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96512db27971c2c3eece70a1e106fbe6c87760234e31e8f7e5634912fe52794a" +dependencies = [ + "serde", + "typenum", +] + +[[package]] +name = "getrandom" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "wasm-bindgen", +] + [[package]] name = "getrandom" -version = "0.2.14" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94b22e06ecb0110981051723910cbf0b5f5e09a2062dd7663334ee79a9d1286c" +checksum = "43a49c392881ce6d5c3b8cb70f98717b7c07aabbdff06687b9030dbfbe2725f8" dependencies = [ "cfg-if", "libc", - "wasi", + "wasi 0.13.3+wasi-0.2.2", + "windows-targets 0.52.6", +] + +[[package]] +name = "gimli" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" + +[[package]] +name = "glob" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" + +[[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", + "subtle", ] [[package]] @@ -1015,11 +2206,30 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" dependencies = [ - "ff", + "ff 0.13.1", "rand_core", "subtle", ] +[[package]] +name = "h2" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5017294ff4bb30944501348f6f8e42e6ad28f42c8bbef7a74029aff064a4e3c2" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http", + "indexmap 2.8.0", + "slab", + "tokio", + "tokio-util", + "tracing", +] + [[package]] name = "half" version = "2.4.1" @@ -1030,6 +2240,29 @@ dependencies = [ "crunchy", ] +[[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", + "rayon", +] + [[package]] name = "hashbrown" version = "0.12.3" @@ -1050,15 +2283,22 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.15.1" +version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a9bfc1af68b1726ea47d3d5109de126281def866b33970e10fbab11b5dafab3" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" dependencies = [ "allocator-api2", "equivalent", "foldhash", + "serde", ] +[[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" @@ -1073,15 +2313,18 @@ checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" [[package]] name = "hermit-abi" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" +checksum = "fbd780fe5cc30f81464441920d82ac8740e2e46b29a6fad543ddd075229ce37e" [[package]] name = "hex" version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +dependencies = [ + "serde", +] [[package]] name = "hmac" @@ -1089,127 +2332,436 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" dependencies = [ - "digest", + "digest 0.10.7", ] [[package]] name = "home" -version = "0.5.9" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" +checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] -name = "hybrid-array" -version = "0.2.1" +name = "http" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45a9a965bb102c1c891fb017c09a05c965186b1265a207640f323ddd009f9deb" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" dependencies = [ - "typenum", + "bytes", + "fnv", + "itoa", ] [[package]] -name = "iana-time-zone" -version = "0.1.61" +name = "http-body" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ - "android_system_properties", - "core-foundation-sys", - "iana-time-zone-haiku", - "js-sys", - "wasm-bindgen", - "windows-core", + "bytes", + "http", ] [[package]] -name = "iana-time-zone-haiku" -version = "0.1.2" +name = "http-body-util" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" dependencies = [ - "cc", + "bytes", + "futures-core", + "http", + "http-body", + "pin-project-lite", ] [[package]] -name = "ident_case" -version = "1.0.1" +name = "httparse" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" [[package]] -name = "indexmap" -version = "1.9.3" +name = "httpdate" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown 0.12.3", - "serde", -] +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] -name = "indexmap" -version = "2.6.0" +name = "hybrid-array" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" +checksum = "f2d35805454dc9f8662a98d6d61886ffe26bd465f5960e0e55345c70d5c0d2a9" dependencies = [ - "equivalent", - "hashbrown 0.15.1", - "rayon", - "serde", + "typenum", ] [[package]] -name = "instability" -version = "0.3.2" +name = "hyper" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b23a0c8dfe501baac4adf6ebbfa6eddf8f0c07f56b058cc1288017e32397846c" +checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" dependencies = [ - "quote", - "syn 2.0.87", + "bytes", + "futures-channel", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", + "want", ] [[package]] -name = "instant" -version = "0.1.13" +name = "hyper-rustls" +version = "0.27.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" +checksum = "2d191583f3da1305256f22463b9bb0471acad48a4e534a5218b9963e9c1f59b2" dependencies = [ - "cfg-if", + "futures-util", + "http", + "hyper", + "hyper-util", + "rustls", + "rustls-pki-types", + "tokio", + "tokio-rustls", + "tower-service", + "webpki-roots", ] [[package]] -name = "is-terminal" -version = "0.4.13" +name = "hyper-timeout" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b" +checksum = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0" dependencies = [ - "hermit-abi 0.4.0", - "libc", - "windows-sys 0.52.0", + "hyper", + "hyper-util", + "pin-project-lite", + "tokio", + "tower-service", ] [[package]] -name = "is_terminal_polyfill" -version = "1.70.1" +name = "hyper-util" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" +checksum = "df2dcfbe0677734ab2f3ffa7fa7bfd4706bfdc1ef393f2ee30184aed67e631b4" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "http", + "http-body", + "hyper", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", +] [[package]] -name = "itertools" -version = "0.10.5" +name = "iana-time-zone" +version = "0.1.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" dependencies = [ - "either", + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows-core", ] [[package]] -name = "itertools" -version = "0.12.1" +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 = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locid" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_locid_transform" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_locid_transform_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_locid_transform_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" + +[[package]] +name = "icu_normalizer" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "utf16_iter", + "utf8_iter", + "write16", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" + +[[package]] +name = "icu_properties" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locid_transform", + "icu_properties_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" + +[[package]] +name = "icu_provider" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_provider_macros", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_provider_macros" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[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.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +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.100", +] + +[[package]] +name = "indenter" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" + +[[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", +] + +[[package]] +name = "indexmap" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3954d50fe15b02142bf25d3b8bdadb634ec3948f103d04ffe3031bc8fe9d7058" +dependencies = [ + "equivalent", + "hashbrown 0.15.2", + "rayon", + "serde", +] + +[[package]] +name = "indicatif" +version = "0.17.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "183b3088984b400f4cfac3620d5e076c84da5364016b4f49473de574b2586235" +dependencies = [ + "console", + "number_prefix", + "portable-atomic", + "unicode-width 0.2.0", + "web-time", +] + +[[package]] +name = "indoc" +version = "2.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c7245a08504955605670dbf141fceab975f15ca21570696aebe9d2e71576bd" + +[[package]] +name = "instability" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf9fed6d91cfb734e7476a06bde8300a1b94e217e1b523b6f0cd1a01998c71d" +dependencies = [ + "darling", + "indoc", + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "instant" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "ipnet" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" + +[[package]] +name = "is-terminal" +version = "0.4.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e04d7f318608d35d4b61ddd75cbdaee86b023ebe2bd5a66ee0915f0bf93095a9" +dependencies = [ + "hermit-abi 0.5.0", + "libc", + "windows-sys 0.59.0", +] + +[[package]] +name = "is_terminal_polyfill" +version = "1.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" + +[[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.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" dependencies = [ @@ -1225,21 +2777,45 @@ 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.11" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" [[package]] name = "js-sys" -version = "0.3.72" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" dependencies = [ + "once_cell", "wasm-bindgen", ] +[[package]] +name = "jubjub" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a575df5f985fe1cd5b2b05664ff6accfc46559032b954529fd225a2168d27b0f" +dependencies = [ + "bitvec", + "bls12_381", + "ff 0.12.1", + "group 0.12.1", + "rand_core", + "subtle", +] + [[package]] name = "k256" version = "0.13.4" @@ -1254,17 +2830,49 @@ dependencies = [ "signature", ] +[[package]] +name = "keccak" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" +dependencies = [ + "cpufeatures", +] + +[[package]] +name = "keccak-asm" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "505d1856a39b200489082f90d897c3f07c455563880bc5952e38eabf731c83b6" +dependencies = [ + "digest 0.10.7", + "sha3-asm", +] + [[package]] name = "lazy_static" version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +dependencies = [ + "spin", +] [[package]] name = "libc" -version = "0.2.162" +version = "0.2.171" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c19937216e9d3aa9956d9bb8dfc0b0c8beb6058fc4f7a4dc4d850edf86a237d6" + +[[package]] +name = "libloading" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18d287de67fe55fd7e1581fe933d965a5a9477b38e949cfa9f8574ef01506398" +checksum = "fc2f4eb4bc735547cfed7c0a4922cbd04a4655978c09b54f1f7b228750664c34" +dependencies = [ + "cfg-if", + "windows-targets 0.52.6", +] [[package]] name = "libm" @@ -1272,11 +2880,33 @@ version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" +[[package]] +name = "libredox" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +dependencies = [ + "bitflags", + "libc", +] + +[[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.4.14" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db9c683daf087dc577b7506e9695b3d556a9f3849903fa28186283afd6809e9" + +[[package]] +name = "litemap" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +checksum = "23fb14cb19457329c82206317a5663005a4d404783dc74f4252769b0d5f42856" [[package]] name = "loam-macros" @@ -1288,7 +2918,7 @@ dependencies = [ "lazy_static", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.100", ] [[package]] @@ -1303,9 +2933,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.22" +version = "0.4.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" +checksum = "30bde2b3dc3671ae49d8e2e9f044c7c005836e7a023ee57cffa25ab82764bb9e" [[package]] name = "lru" @@ -1313,7 +2943,7 @@ version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" dependencies = [ - "hashbrown 0.15.1", + "hashbrown 0.15.2", ] [[package]] @@ -1333,14 +2963,14 @@ dependencies = [ "hashbrown 0.14.5", "home", "hybrid-array", - "indexmap 2.6.0", + "indexmap 2.8.0", "itertools 0.13.0", "lazy_static", "loam-macros", "match_opt", "nom", "nom_locate", - "num-bigint", + "num-bigint 0.4.6", "num-derive", "num-traits", "once_cell", @@ -1361,20 +2991,34 @@ dependencies = [ "rand_xoshiro", "ratatui", "rayon", - "rustc-hash 2.0.0", + "rustc-hash 2.1.1", "rustyline", "rustyline-derive", "serde", "serde_json", "sha2", - "sphinx-core", - "sphinx-derive", + "sp1-core-executor", + "sp1-core-machine", + "sp1-derive", + "sp1-sdk", + "sp1-stark", "strum", "tempfile", - "thiserror", + "thiserror 1.0.69", "vergen", ] +[[package]] +name = "macro-string" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b27834086c65ec3f9387b096d66e99f221cf081c2b738042aa252bcd41204e3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + [[package]] name = "match_opt" version = "0.1.2" @@ -1390,12 +3034,30 @@ dependencies = [ "regex-automata 0.1.10", ] +[[package]] +name = "matchit" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" + [[package]] name = "memchr" version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" +[[package]] +name = "memuse" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d97bbf43eb4f088f8ca469930cde17fa036207c9a5e02ccc5107c4e8b17c964" + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + [[package]] name = "minimal-lexical" version = "0.2.1" @@ -1403,15 +3065,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] -name = "mio" -version = "1.0.2" +name = "miniz_oxide" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" +checksum = "8e3e04debbb59698c15bacbb6d93584a8c0ca9cc3213cb423d31f760d8843ce5" dependencies = [ - "hermit-abi 0.3.9", - "libc", - "log", - "wasi", + "adler2", +] + +[[package]] +name = "mio" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" +dependencies = [ + "libc", + "log", + "wasi 0.11.0+wasi-snapshot-preview1", "windows-sys 0.52.0", ] @@ -1432,7 +3102,19 @@ checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4" dependencies = [ "bitflags", "cfg-if", - "cfg_aliases", + "cfg_aliases 0.1.1", + "libc", +] + +[[package]] +name = "nix" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" +dependencies = [ + "bitflags", + "cfg-if", + "cfg_aliases 0.2.1", "libc", ] @@ -1463,6 +3145,15 @@ dependencies = [ "nom", ] +[[package]] +name = "ntapi" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8a3895c6391c39d7fe7ebc444a87eb2991b2a0bc718fdabd071eec617fc68e4" +dependencies = [ + "winapi", +] + [[package]] name = "nu-ansi-term" version = "0.46.0" @@ -1479,7 +3170,7 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" dependencies = [ - "num-bigint", + "num-bigint 0.4.6", "num-complex", "num-integer", "num-iter", @@ -1487,6 +3178,17 @@ dependencies = [ "num-traits", ] +[[package]] +name = "num-bigint" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6f7833f2cbf2360a6cfd58cd41a53aa7a90bd4c202f5b1c7dd2ed73c57b2c3" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + [[package]] name = "num-bigint" version = "0.4.6" @@ -1520,7 +3222,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.100", ] [[package]] @@ -1543,13 +3245,28 @@ dependencies = [ "num-traits", ] +[[package]] +name = "num-modular" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17bb261bf36fa7d83f4c294f834e91256769097b3cb505d44831e0a179ac647f" + +[[package]] +name = "num-order" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "537b596b97c40fcf8056d153049eb22f481c17ebce72a513ec9286e4986d1bb6" +dependencies = [ + "num-modular", +] + [[package]] name = "num-rational" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" dependencies = [ - "num-bigint", + "num-bigint 0.4.6", "num-integer", "num-traits", ] @@ -1589,7 +3306,7 @@ version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" dependencies = [ - "proc-macro-crate", + "proc-macro-crate 1.3.1", "proc-macro2", "quote", "syn 1.0.109", @@ -1604,17 +3321,55 @@ dependencies = [ "libc", ] +[[package]] +name = "number_prefix" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" + +[[package]] +name = "nybbles" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8983bb634df7248924ee0c4c3a749609b5abcb082c28fffe3254b3eb3602b307" +dependencies = [ + "const-hex", + "serde", + "smallvec", +] + +[[package]] +name = "object" +version = "0.36.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" +dependencies = [ + "memchr", +] + [[package]] name = "once_cell" -version = "1.20.2" +version = "1.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" +checksum = "cde51589ab56b20a6f686b2c68f7a0bd6add753d697abf720d63f8db3ab7b1ad" [[package]] name = "oorandom" -version = "11.1.4" +version = "11.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e" + +[[package]] +name = "openssl-probe" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b410bbe7e14ab526a0e86877eb47c6996a2bd7746f027ba551028c925390e4e9" +checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" + +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" [[package]] name = "overload" @@ -1622,10 +3377,23 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" +[[package]] +name = "p256" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" +dependencies = [ + "ecdsa", + "elliptic-curve", + "primeorder", + "sha2", +] + [[package]] name = "p3-air" -version = "0.1.0" -source = "git+https://github.com/argumentcomputer/Plonky3.git?branch=sp1#a0b9287038ab11e165c78df1fbc2402609a7d6b5" +version = "0.2.0-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02634a874a2286b73f3e0a121e79d6774e92ccbec648c5568f4a7479a4830858" dependencies = [ "p3-field", "p3-matrix", @@ -1633,10 +3401,11 @@ dependencies = [ [[package]] name = "p3-baby-bear" -version = "0.1.0" -source = "git+https://github.com/argumentcomputer/Plonky3.git?branch=sp1#a0b9287038ab11e165c78df1fbc2402609a7d6b5" +version = "0.2.0-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "080896e9d09e9761982febafe3b3da5cbf320e32f0c89b6e2e01e875129f4c2d" dependencies = [ - "num-bigint", + "num-bigint 0.4.6", "p3-field", "p3-mds", "p3-poseidon2", @@ -1646,30 +3415,39 @@ dependencies = [ ] [[package]] -name = "p3-blake3" -version = "0.1.0" -source = "git+https://github.com/argumentcomputer/Plonky3.git?branch=sp1#a0b9287038ab11e165c78df1fbc2402609a7d6b5" +name = "p3-bn254-fr" +version = "0.2.0-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8c53da73873e24d751ec3bd9d8da034bb5f99c71f24f4903ff37190182bff10" dependencies = [ - "blake3", + "ff 0.13.1", + "num-bigint 0.4.6", + "p3-field", + "p3-poseidon2", "p3-symmetric", + "rand", + "serde", ] [[package]] name = "p3-challenger" -version = "0.1.0" -source = "git+https://github.com/argumentcomputer/Plonky3.git?branch=sp1#a0b9287038ab11e165c78df1fbc2402609a7d6b5" +version = "0.2.0-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f5c497659a7d9a87882e30ee9a8d0e20c8dcd32cd10d432410e7d6f146ef103" dependencies = [ "p3-field", "p3-maybe-rayon", "p3-symmetric", "p3-util", + "serde", "tracing", ] [[package]] name = "p3-commit" -version = "0.1.0" -source = "git+https://github.com/argumentcomputer/Plonky3.git?branch=sp1#a0b9287038ab11e165c78df1fbc2402609a7d6b5" +version = "0.2.0-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54ec340c5cb17739a7b9ee189378bdac8f0e684b9b5ce539476c26e77cd6a27d" dependencies = [ "itertools 0.12.1", "p3-challenger", @@ -1681,8 +3459,9 @@ dependencies = [ [[package]] name = "p3-dft" -version = "0.1.0" -source = "git+https://github.com/argumentcomputer/Plonky3.git?branch=sp1#a0b9287038ab11e165c78df1fbc2402609a7d6b5" +version = "0.2.0-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "292e97d02d4c38d8b306c2b8c0428bf15f4d32a11a40bcf80018f675bf33267e" dependencies = [ "p3-field", "p3-matrix", @@ -1693,11 +3472,12 @@ dependencies = [ [[package]] name = "p3-field" -version = "0.1.0" -source = "git+https://github.com/argumentcomputer/Plonky3.git?branch=sp1#a0b9287038ab11e165c78df1fbc2402609a7d6b5" +version = "0.2.0-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f91d8e5f9ede1171adafdb0b6a0df1827fbd4eb6a6217bfa36374e5d86248757" dependencies = [ "itertools 0.12.1", - "num-bigint", + "num-bigint 0.4.6", "num-traits", "p3-util", "rand", @@ -1706,8 +3486,9 @@ dependencies = [ [[package]] name = "p3-fri" -version = "0.1.0" -source = "git+https://github.com/argumentcomputer/Plonky3.git?branch=sp1#a0b9287038ab11e165c78df1fbc2402609a7d6b5" +version = "0.2.0-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ef838ff24d9b3de3d88d0ac984937d2aa2923bf25cb108ba9b2dc357e472197" dependencies = [ "itertools 0.12.1", "p3-challenger", @@ -1724,27 +3505,20 @@ dependencies = [ [[package]] name = "p3-interpolation" -version = "0.1.0" -source = "git+https://github.com/argumentcomputer/Plonky3.git?branch=sp1#a0b9287038ab11e165c78df1fbc2402609a7d6b5" +version = "0.2.0-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c806c3afb8d6acf1d3a78f4be1e9e8b026f13c01b0cdd5ae2e068b70a3ba6d80" dependencies = [ "p3-field", "p3-matrix", "p3-util", ] -[[package]] -name = "p3-keccak" -version = "0.1.0" -source = "git+https://github.com/argumentcomputer/Plonky3.git?branch=sp1#a0b9287038ab11e165c78df1fbc2402609a7d6b5" -dependencies = [ - "p3-symmetric", - "tiny-keccak", -] - [[package]] name = "p3-keccak-air" -version = "0.1.0" -source = "git+https://github.com/argumentcomputer/Plonky3.git?branch=sp1#a0b9287038ab11e165c78df1fbc2402609a7d6b5" +version = "0.2.0-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b46cef7ee8ae1f7cb560e7b7c137e272f6ba75be98179b3aa18695705231e0fb" dependencies = [ "p3-air", "p3-field", @@ -1756,8 +3530,9 @@ dependencies = [ [[package]] name = "p3-matrix" -version = "0.1.0" -source = "git+https://github.com/argumentcomputer/Plonky3.git?branch=sp1#a0b9287038ab11e165c78df1fbc2402609a7d6b5" +version = "0.2.0-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98bf2c7680b8e906a5e147fe4ceb05a11cc9fa35678aa724333bcb35c72483c1" dependencies = [ "itertools 0.12.1", "p3-field", @@ -1770,16 +3545,18 @@ dependencies = [ [[package]] name = "p3-maybe-rayon" -version = "0.1.0" -source = "git+https://github.com/argumentcomputer/Plonky3.git?branch=sp1#a0b9287038ab11e165c78df1fbc2402609a7d6b5" +version = "0.2.0-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd9ac6f1d11ad4d3c13cc496911109d6282315e64f851a666ed80ad4d77c0983" dependencies = [ "rayon", ] [[package]] name = "p3-mds" -version = "0.1.0" -source = "git+https://github.com/argumentcomputer/Plonky3.git?branch=sp1#a0b9287038ab11e165c78df1fbc2402609a7d6b5" +version = "0.2.0-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "706cea48976f54702dc68dffa512684c1304d1a3606cadea423cfe0b1ee25134" dependencies = [ "itertools 0.12.1", "p3-dft", @@ -1792,8 +3569,9 @@ dependencies = [ [[package]] name = "p3-merkle-tree" -version = "0.1.0" -source = "git+https://github.com/argumentcomputer/Plonky3.git?branch=sp1#a0b9287038ab11e165c78df1fbc2402609a7d6b5" +version = "0.2.0-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f4ced385da80dd6b3fd830eaa452c9fa899f2dc3f6463aceba00620d5f071ec" dependencies = [ "itertools 0.12.1", "p3-commit", @@ -1808,20 +3586,22 @@ dependencies = [ [[package]] name = "p3-poseidon2" -version = "0.1.0" -source = "git+https://github.com/argumentcomputer/Plonky3.git?branch=sp1#a0b9287038ab11e165c78df1fbc2402609a7d6b5" +version = "0.2.0-succinct" +source = "git+https://github.com/lurk-lab/p3.git?branch=sp1-v4#ea22464c9a8a519c29e3ce6f436d304b8d26ed1a" dependencies = [ "gcd", "p3-field", "p3-mds", "p3-symmetric", "rand", + "serde", ] [[package]] name = "p3-symmetric" -version = "0.1.0" -source = "git+https://github.com/argumentcomputer/Plonky3.git?branch=sp1#a0b9287038ab11e165c78df1fbc2402609a7d6b5" +version = "0.2.0-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f29dc5bb6c99d3de75869d5c086874b64890280eeb7d3e068955f939e219253" dependencies = [ "itertools 0.12.1", "p3-field", @@ -1830,8 +3610,9 @@ dependencies = [ [[package]] name = "p3-uni-stark" -version = "0.1.0" -source = "git+https://github.com/argumentcomputer/Plonky3.git?branch=sp1#a0b9287038ab11e165c78df1fbc2402609a7d6b5" +version = "0.2.0-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83ceaeef06b0bc97e5af2d220cd340b0b3a72bdf37e4584b73b3bc357cfc9ed3" dependencies = [ "itertools 0.12.1", "p3-air", @@ -1848,19 +3629,48 @@ dependencies = [ [[package]] name = "p3-util" -version = "0.1.0" -source = "git+https://github.com/argumentcomputer/Plonky3.git?branch=sp1#a0b9287038ab11e165c78df1fbc2402609a7d6b5" +version = "0.2.0-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1b84d324cd4ac09194a9d0e8ab1834e67a0e47dec477c28fcf9d68b2824c1fe" dependencies = [ "serde", ] [[package]] name = "pairing" -version = "0.23.0" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "135590d8bdba2b31346f9cd1fb2a912329f5135e832a4f422942eb6ead8b6b3b" +dependencies = [ + "group 0.12.1", +] + +[[package]] +name = "parity-scale-codec" +version = "3.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9fde3d0718baf5bc92f577d652001da0f8d54cd03a7974e118d04fc888dc23d" +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.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81fec4625e73cf41ef4bb6846cafa6d44736525f442ba45e407c4a000a13996f" +checksum = "581c837bb6b9541ce7faa9377c20616e4fb7650f6b0f68bc93c827ee504fb7b3" dependencies = [ - "group", + "proc-macro-crate 3.3.0", + "proc-macro2", + "quote", + "syn 2.0.100", ] [[package]] @@ -1883,7 +3693,37 @@ dependencies = [ "libc", "redox_syscall", "smallvec", - "windows-targets", + "windows-targets 0.52.6", +] + +[[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", + "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", + "static_assertions", + "subtle", ] [[package]] @@ -1892,6 +3732,38 @@ version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" +[[package]] +name = "pathdiff" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" + +[[package]] +name = "pem-rfc7468" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" +dependencies = [ + "base64ct", +] + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "pest" +version = "2.7.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b7cafe60d6cf8e62e1b9b2ea516a089c008945bb5a275416789e7db0bc199dc" +dependencies = [ + "memchr", + "thiserror 2.0.12", + "ucd-trie", +] + [[package]] name = "petgraph" version = "0.6.5" @@ -1899,14 +3771,34 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ "fixedbitset", - "indexmap 2.6.0", + "indexmap 2.8.0", +] + +[[package]] +name = "pin-project" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", ] [[package]] name = "pin-project-lite" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" [[package]] name = "pin-utils" @@ -1952,6 +3844,12 @@ dependencies = [ "plotters-backend", ] +[[package]] +name = "portable-atomic" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "350e9b48cbc6b0e028b0473b114454c6316e57336ee184ceab6e53f72c178b3e" + [[package]] name = "powerfmt" version = "0.2.0" @@ -1960,11 +3858,41 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" -version = "0.2.20" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy 0.8.23", +] + +[[package]] +name = "prettyplease" +version = "0.2.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1ccf34da56fc294e7d4ccf69a85992b7dfb826b7cf57bac6a70bba3494cc08a" +dependencies = [ + "proc-macro2", + "syn 2.0.100", +] + +[[package]] +name = "primeorder" +version = "0.13.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +checksum = "353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6" dependencies = [ - "zerocopy", + "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]] @@ -1974,23 +3902,54 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" dependencies = [ "once_cell", - "toml_edit", + "toml_edit 0.19.15", +] + +[[package]] +name = "proc-macro-crate" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" +dependencies = [ + "toml_edit 0.22.24", +] + +[[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.100", ] [[package]] name = "proc-macro2" -version = "1.0.89" +version = "1.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f139b0662de085916d1fb67d2b4169d1addddda1919e696f3252b740b629986e" +checksum = "a31971752e70b8b2686d7e46ec17fb38dad4051d94024c88df49b667caea9c84" dependencies = [ "unicode-ident", ] [[package]] name = "proptest" -version = "1.5.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4c2511913b88df1637da85cc8d96ec8e43a3f8bb8ccb71ee1ac240d6f3df58d" +checksum = "14cae93065090804185d3b75f0bf93b8eeda30c7a9b4a33d3bdb3988d6229e50" dependencies = [ "bit-set", "bit-vec", @@ -2007,34 +3966,109 @@ dependencies = [ ] [[package]] -name = "quick-error" -version = "1.2.3" +name = "prost" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" +checksum = "2796faa41db3ec313a31f7624d9286acf277b52de526150b7e69f3debf891ee5" +dependencies = [ + "bytes", + "prost-derive", +] [[package]] -name = "quote" -version = "1.0.37" +name = "prost-derive" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d" dependencies = [ + "anyhow", + "itertools 0.14.0", "proc-macro2", + "quote", + "syn 2.0.100", ] [[package]] -name = "radium" -version = "0.7.0" +name = "quick-error" +version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" +checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] -name = "radix_trie" -version = "0.2.1" +name = "quinn" +version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c069c179fcdc6a2fe24d8d18305cf085fdbd4f922c041943e203685d6a1c58fd" +checksum = "62e96808277ec6f97351a2380e6c25114bc9e67037775464979f3037c92d05ef" dependencies = [ - "endian-type", - "nibble_vec", + "bytes", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash 2.1.1", + "rustls", + "socket2", + "thiserror 2.0.12", + "tokio", + "tracing", +] + +[[package]] +name = "quinn-proto" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2fe5ef3495d7d2e377ff17b1a8ce2ee2ec2a18cde8b6ad6619d65d0701c135d" +dependencies = [ + "bytes", + "getrandom 0.2.15", + "rand", + "ring", + "rustc-hash 2.1.1", + "rustls", + "rustls-pki-types", + "slab", + "thiserror 2.0.12", + "tinyvec", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-udp" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e46f3055866785f6b92bc6164b76be02ca8f2eb4b002c0354b28cf4c119e5944" +dependencies = [ + "cfg_aliases 0.2.1", + "libc", + "once_cell", + "socket2", + "tracing", + "windows-sys 0.59.0", +] + +[[package]] +name = "quote" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +dependencies = [ + "proc-macro2", +] + +[[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]] @@ -2046,6 +4080,7 @@ dependencies = [ "libc", "rand_chacha", "rand_core", + "serde", ] [[package]] @@ -2064,7 +4099,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom", + "getrandom 0.2.15", ] [[package]] @@ -2085,6 +4120,18 @@ dependencies = [ "rand_core", ] +[[package]] +name = "range-set-blaze" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8421b5d459262eabbe49048d362897ff3e3830b44eac6cfe341d6acb2f0f13d2" +dependencies = [ + "gen_ops", + "itertools 0.12.1", + "num-integer", + "num-traits", +] + [[package]] name = "ratatui" version = "0.28.1" @@ -2103,7 +4150,7 @@ dependencies = [ "strum_macros", "unicode-segmentation", "unicode-truncate", - "unicode-width", + "unicode-width 0.1.14", ] [[package]] @@ -2137,13 +4184,24 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.7" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" +checksum = "0b8c0c260b63a8219631167be35e6a988e9554dbd323f8bd08439c8ed1302bd1" 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.15", + "libredox", + "thiserror 1.0.69", +] + [[package]] name = "regex" version = "1.11.1" @@ -2152,7 +4210,7 @@ checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.8", + "regex-automata 0.4.9", "regex-syntax 0.8.5", ] @@ -2167,9 +4225,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" dependencies = [ "aho-corasick", "memchr", @@ -2188,6 +4246,66 @@ version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" +[[package]] +name = "reqwest" +version = "0.12.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "989e327e510263980e231de548a33e63d34962d29ae61b467389a1a09627a254" +dependencies = [ + "base64", + "bytes", + "futures-core", + "futures-util", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-rustls", + "hyper-util", + "ipnet", + "js-sys", + "log", + "mime", + "once_cell", + "percent-encoding", + "pin-project-lite", + "quinn", + "rustls", + "rustls-pemfile", + "rustls-pki-types", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tokio-rustls", + "tokio-util", + "tower 0.5.2", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-streams", + "web-sys", + "webpki-roots", + "windows-registry", +] + +[[package]] +name = "reqwest-middleware" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "562ceb5a604d3f7c885a792d42c199fd8af239d0a51b2fa6a78aafa092452b04" +dependencies = [ + "anyhow", + "async-trait", + "http", + "reqwest", + "serde", + "thiserror 1.0.69", + "tower-service", +] + [[package]] name = "rfc6979" version = "0.4.0" @@ -2199,15 +4317,78 @@ dependencies = [ ] [[package]] -name = "rrs-lib" +name = "ring" +version = "0.17.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" +dependencies = [ + "cc", + "cfg-if", + "getrandom 0.2.15", + "libc", + "untrusted", + "windows-sys 0.52.0", +] + +[[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 = "git+https://github.com/GregAC/rrs.git#b23afc16b4e6a1fb5c4a73eb1e337e9400816507" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3372685893a9f67d18e98e792d690017287fd17379a83d798d958e517d380fa9" dependencies = [ "downcast-rs", "num_enum", "paste", ] +[[package]] +name = "ruint" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "825df406ec217a8116bd7b06897c6cc8f65ffefc15d030ae2c9540acc9ed50b6" +dependencies = [ + "alloy-rlp", + "ark-ff 0.3.0", + "ark-ff 0.4.2", + "bytes", + "fastrlp 0.3.1", + "fastrlp 0.4.0", + "num-bigint 0.4.6", + "num-integer", + "num-traits", + "parity-scale-codec", + "primitive-types", + "proptest", + "rand", + "rlp", + "ruint-macro", + "serde", + "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.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" + [[package]] name = "rustc-hash" version = "1.1.0" @@ -2216,9 +4397,24 @@ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" [[package]] name = "rustc-hash" -version = "2.0.0" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" + +[[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 = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152" +checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" +dependencies = [ + "semver 0.11.0", +] [[package]] name = "rustc_version" @@ -2226,27 +4422,96 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "semver", + "semver 1.0.26", ] [[package]] name = "rustix" -version = "0.38.39" +version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "375116bee2be9ed569afe2154ea6a99dfdffd257f533f187498c2a8f5feaf4ee" +checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ "bitflags", "errno", "libc", - "linux-raw-sys", - "windows-sys 0.52.0", + "linux-raw-sys 0.4.15", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustix" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7178faa4b75a30e269c71e61c353ce2748cf3d76f0c44c393f4e60abf49b825" +dependencies = [ + "bitflags", + "errno", + "libc", + "linux-raw-sys 0.9.2", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustls" +version = "0.23.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47796c98c480fce5406ef69d1c76378375492c3b0a0de587be0c1d9feb12f395" +dependencies = [ + "log", + "once_cell", + "ring", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-native-certs" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fcff2dd52b58a8d98a70243663a0d234c4e2b79235637849d15913394a247d3" +dependencies = [ + "openssl-probe", + "rustls-pki-types", + "schannel", + "security-framework", +] + +[[package]] +name = "rustls-pemfile" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "rustls-pki-types" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "917ce264624a4b4db1c364dcc35bfca9ded014d0a958cd47ad3e960e988ea51c" +dependencies = [ + "web-time", +] + +[[package]] +name = "rustls-webpki" +version = "0.102.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" +dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", ] [[package]] name = "rustversion" -version = "1.0.18" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" +checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2" [[package]] name = "rusty-fork" @@ -2274,11 +4539,11 @@ dependencies = [ "libc", "log", "memchr", - "nix", + "nix 0.28.0", "radix_trie", "rustyline-derive", "unicode-segmentation", - "unicode-width", + "unicode-width 0.1.14", "utf8parse", "windows-sys 0.52.0", ] @@ -2291,14 +4556,14 @@ checksum = "e5af959c8bf6af1aff6d2b463a57f71aae53d1332da58419e30ad8dc7011d951" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.100", ] [[package]] name = "ryu" -version = "1.0.18" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" [[package]] name = "same-file" @@ -2309,15 +4574,48 @@ dependencies = [ "winapi-util", ] +[[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.3.0", + "proc-macro2", + "quote", + "syn 2.0.100", +] + [[package]] name = "scc" -version = "2.2.4" +version = "2.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8d25269dd3a12467afe2e510f69fb0b46b698e5afb296b59f2145259deaf8e8" +checksum = "ea091f6cac2595aa38993f04f4ee692ed43757035c36e67c180b6828356385b1" dependencies = [ "sdd", ] +[[package]] +name = "schannel" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" +dependencies = [ + "windows-sys 0.59.0", +] + [[package]] name = "scopeguard" version = "1.2.0" @@ -2326,9 +4624,9 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "sdd" -version = "3.0.4" +version = "3.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49c1eeaf4b6a87c7479688c6d52b9f1153cedd3c489300564f932b065c6eab95" +checksum = "584e070911c7017da6cb2eb0788d09f43d789029b5877d3e5ecc8acf86ceee21" [[package]] name = "sec1" @@ -2338,43 +4636,87 @@ checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" dependencies = [ "base16ct", "der", - "generic-array", + "generic-array 0.14.7", "pkcs8", "subtle", "zeroize", ] +[[package]] +name = "security-framework" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271720403f46ca04f7ba6f55d438f8bd878d6b8ca0a1046e8228c4145bcbb316" +dependencies = [ + "bitflags", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "semver" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" +dependencies = [ + "semver-parser", +] + [[package]] name = "semver" -version = "1.0.23" +version = "1.0.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" +dependencies = [ + "serde", +] + +[[package]] +name = "semver-parser" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" +checksum = "9900206b54a3527fdc7b8a938bffd94a568bac4f4aa8113b209df75a09c0dec2" +dependencies = [ + "pest", +] [[package]] name = "serde" -version = "1.0.214" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f55c3193aca71c12ad7890f1785d2b73e1b9f63a0bbc353c08ef26fe03fc56b5" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.214" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de523f781f095e28fa605cdce0f8307e451cc0fd14e2eb4cd2e98a355b147766" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.100", ] [[package]] name = "serde_json" -version = "1.0.132" +version = "1.0.140" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03" +checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" dependencies = [ "itoa", "memchr", @@ -2383,40 +4725,41 @@ dependencies = [ ] [[package]] -name = "serde_with" -version = "3.11.0" +name = "serde_path_to_error" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e28bdad6db2b8340e449f7108f020b3b092e8583a9e3fb82713e1d4e71fe817" +checksum = "59fab13f937fa393d08645bf3a84bdfe86e296747b506ada67bb15f10f218b2a" dependencies = [ - "base64", - "chrono", - "hex", - "indexmap 1.9.3", - "indexmap 2.6.0", + "itoa", "serde", - "serde_derive", - "serde_json", - "serde_with_macros", - "time", ] [[package]] -name = "serde_with_macros" -version = "3.11.0" +name = "serde_spanned" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d846214a9854ef724f3da161b426242d8de7c1fc7de2f89bb1efcb154dca79d" +checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" dependencies = [ - "darling", - "proc-macro2", - "quote", - "syn 2.0.87", + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", ] [[package]] name = "serial_test" -version = "3.1.1" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b4b487fe2acf240a021cf57c6b2b4903b1e78ca0ecd862a71b71d2a51fed77d" +checksum = "1b258109f244e1d6891bf1053a55d63a5cd4f8f4c30cf9a1280989f80e7a1fa9" dependencies = [ "futures", "log", @@ -2428,13 +4771,13 @@ dependencies = [ [[package]] name = "serial_test_derive" -version = "3.1.1" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82fe9db325bcef1fbcde82e078a5cc4efdf787e96b3b9cf45b50b529f2083d67" +checksum = "5d69265a08751de7844521fd15003ae0a888e035773ba05695c5c759a6f89eef" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.100", ] [[package]] @@ -2445,26 +4788,46 @@ checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" dependencies = [ "cfg-if", "cpufeatures", - "digest", + "digest 0.10.7", ] [[package]] -name = "sharded-slab" -version = "0.1.7" +name = "sha3" +version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" dependencies = [ - "lazy_static", + "digest 0.10.7", + "keccak", ] [[package]] -name = "shlex" -version = "1.3.0" +name = "sha3-asm" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" - -[[package]] -name = "signal-hook" +checksum = "c28efc5e327c837aa837c59eae585fc250715ef939ac32881bcc11677cd02d46" +dependencies = [ + "cc", + "cfg-if", +] + +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signal-hook" version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801" @@ -2499,7 +4862,7 @@ version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" dependencies = [ - "digest", + "digest 0.10.7", "rand_core", ] @@ -2520,124 +4883,478 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.2" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +checksum = "7fcf8323ef1faaee30a44a340193b1ac6814fd9b7b4e88e9d4519a3e4abe1cfd" +dependencies = [ + "serde", +] [[package]] -name = "sphinx-core" -version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx.git?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" +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 = "socket2" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "sp1-build" +version = "4.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02fecdd110076b783d6e2954069862cc2446d21fb1b9ad4f6f52f438cbe5abc3" dependencies = [ "anyhow", - "arrayref", + "cargo_metadata", + "chrono", + "clap", + "dirs", +] + +[[package]] +name = "sp1-core-executor" +version = "4.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "557ebd420e4aa4184e2d06f0c817fa1a0113b38e46c87b9763e6443265ae1a39" +dependencies = [ "bincode", - "blake3", - "bls12_381", "bytemuck", - "cfg-if", - "curve25519-dalek", + "clap", "elf", + "enum-map", + "eyre", + "hashbrown 0.14.5", + "hex", + "itertools 0.13.0", + "log", + "nohash-hasher", + "num", + "p3-baby-bear", + "p3-field", + "p3-maybe-rayon", + "p3-util", + "rand", + "range-set-blaze", + "rrs-succinct", + "serde", + "serde_json", + "sp1-curves", + "sp1-primitives", + "sp1-stark", + "strum", + "strum_macros", + "subenum", + "thiserror 1.0.69", + "tiny-keccak", + "tracing", + "typenum", + "vec_map", +] + +[[package]] +name = "sp1-core-machine" +version = "4.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e68b4d09a145af0c67a434c5d5725ee001f5d63bfce834398f6e69b013a5aa4" +dependencies = [ + "bincode", + "cbindgen", + "cc", + "cfg-if", "elliptic-curve", + "generic-array 1.1.0", + "glob", "hashbrown 0.14.5", "hex", - "hybrid-array", - "itertools 0.12.1", + "itertools 0.13.0", "k256", - "lazy_static", "log", - "nohash-hasher", "num", - "num-bigint", "num_cpus", + "p256", "p3-air", "p3-baby-bear", - "p3-blake3", "p3-challenger", - "p3-commit", - "p3-dft", "p3-field", - "p3-fri", - "p3-keccak", "p3-keccak-air", "p3-matrix", "p3-maybe-rayon", - "p3-merkle-tree", "p3-poseidon2", "p3-symmetric", "p3-uni-stark", "p3-util", + "pathdiff", "rand", + "rayon", "rayon-scan", - "rrs-lib", "serde", - "serde_with", - "serial_test", + "serde_json", "size", - "sphinx-derive", - "sphinx-primitives", + "snowbridge-amcl", + "sp1-core-executor", + "sp1-curves", + "sp1-derive", + "sp1-primitives", + "sp1-stark", + "static_assertions", "strum", "strum_macros", "tempfile", - "thiserror", + "thiserror 1.0.69", "tracing", "tracing-forest", "tracing-subscriber", + "typenum", "web-time", ] [[package]] -name = "sphinx-derive" -version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx.git?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" +name = "sp1-cuda" +version = "4.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46542d13f8d80e672bef30003f81d531b470b71f87e993c5d83a50706b91f762" +dependencies = [ + "bincode", + "ctrlc", + "prost", + "serde", + "sp1-core-machine", + "sp1-prover", + "tokio", + "tracing", + "twirp-rs", +] + +[[package]] +name = "sp1-curves" +version = "4.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1a98d6ce8373c195746d81d9f1322c48810dbe36e590b13c9b4244ee16f83ef" +dependencies = [ + "cfg-if", + "dashu", + "elliptic-curve", + "generic-array 1.1.0", + "itertools 0.13.0", + "k256", + "num", + "p256", + "p3-field", + "serde", + "snowbridge-amcl", + "sp1-primitives", + "sp1-stark", + "typenum", +] + +[[package]] +name = "sp1-derive" +version = "4.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6904621bc0e99732b4a656c2fbeae873ce426aedb947cd0022aaa0359cd944af" dependencies = [ - "proc-macro2", "quote", "syn 1.0.109", ] [[package]] -name = "sphinx-lib" -version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx.git?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" +name = "sp1-primitives" +version = "4.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f33a3021e4775b92020f82502b3a4f8dbecd2be375fae2c9a831df120fe4e10a" +dependencies = [ + "bincode", + "hex", + "lazy_static", + "num-bigint 0.4.6", + "p3-baby-bear", + "p3-field", + "p3-poseidon2", + "p3-symmetric", + "serde", + "sha2", +] + +[[package]] +name = "sp1-prover" +version = "4.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1529c1c1e880691c565c7504940d46714ec2594320b8ee00dbc119c85bf1df26" +dependencies = [ + "anyhow", + "bincode", + "clap", + "dirs", + "downloader", + "enum-map", + "eyre", + "hashbrown 0.14.5", + "hex", + "itertools 0.13.0", + "lru", + "num-bigint 0.4.6", + "p3-baby-bear", + "p3-bn254-fr", + "p3-challenger", + "p3-commit", + "p3-field", + "p3-matrix", + "p3-symmetric", + "p3-util", + "rayon", + "serde", + "serde_json", + "serial_test", + "sha2", + "sp1-core-executor", + "sp1-core-machine", + "sp1-primitives", + "sp1-recursion-circuit", + "sp1-recursion-compiler", + "sp1-recursion-core", + "sp1-recursion-gnark-ffi", + "sp1-stark", + "thiserror 1.0.69", + "tracing", + "tracing-appender", + "tracing-subscriber", +] + +[[package]] +name = "sp1-recursion-circuit" +version = "4.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4340eb48860043cbcc50b1fcb9dd7e3d26c17a20a61665714b14e8f25d8c648" +dependencies = [ + "hashbrown 0.14.5", + "itertools 0.13.0", + "num-traits", + "p3-air", + "p3-baby-bear", + "p3-bn254-fr", + "p3-challenger", + "p3-commit", + "p3-dft", + "p3-field", + "p3-fri", + "p3-matrix", + "p3-symmetric", + "p3-uni-stark", + "p3-util", + "rand", + "rayon", + "serde", + "sp1-core-executor", + "sp1-core-machine", + "sp1-derive", + "sp1-primitives", + "sp1-recursion-compiler", + "sp1-recursion-core", + "sp1-recursion-gnark-ffi", + "sp1-stark", + "tracing", +] + +[[package]] +name = "sp1-recursion-compiler" +version = "4.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e12c085bae44f2c7b75b6dd8e9f977e51aef22d154458f31dd1fb386dc49b5fa" +dependencies = [ + "backtrace", + "itertools 0.13.0", + "p3-baby-bear", + "p3-bn254-fr", + "p3-field", + "p3-symmetric", + "serde", + "sp1-core-machine", + "sp1-primitives", + "sp1-recursion-core", + "sp1-recursion-derive", + "sp1-stark", + "tracing", + "vec_map", +] + +[[package]] +name = "sp1-recursion-core" +version = "4.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "646f121f759631b8d33edb19536d5e71a911aed0550b91f19570d79000c6cfb4" +dependencies = [ + "backtrace", + "cbindgen", + "cc", + "cfg-if", + "ff 0.13.1", + "glob", + "hashbrown 0.14.5", + "itertools 0.13.0", + "num_cpus", + "p3-air", + "p3-baby-bear", + "p3-bn254-fr", + "p3-challenger", + "p3-commit", + "p3-dft", + "p3-field", + "p3-fri", + "p3-matrix", + "p3-maybe-rayon", + "p3-merkle-tree", + "p3-poseidon2", + "p3-symmetric", + "p3-util", + "pathdiff", + "rand", + "serde", + "sp1-core-machine", + "sp1-derive", + "sp1-primitives", + "sp1-stark", + "static_assertions", + "thiserror 1.0.69", + "tracing", + "vec_map", + "zkhash", +] + +[[package]] +name = "sp1-recursion-derive" +version = "4.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c03f60e1f443c82cf7b08d01159e959a865fbe3553b7b0ebc336288e4b049b8d" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "sp1-recursion-gnark-ffi" +version = "4.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fd492b95d1272cad30331bb9188bfc906051d097452d81fc72a4e504d968fb1" dependencies = [ "anyhow", "bincode", + "bindgen", + "cc", "cfg-if", - "getrandom", - "hybrid-array", + "hex", + "log", + "num-bigint 0.4.6", + "p3-baby-bear", + "p3-field", + "p3-symmetric", "serde", + "serde_json", + "sha2", + "sp1-core-machine", + "sp1-recursion-compiler", + "sp1-stark", + "tempfile", ] [[package]] -name = "sphinx-primitives" -version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx.git?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" +name = "sp1-sdk" +version = "4.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf2f3e84ecae9a154487f2b2298dde3b9d53f06c27d650ead6c78dc365473ede" dependencies = [ - "itertools 0.12.1", - "lazy_static", + "alloy-primitives", + "alloy-signer", + "alloy-signer-local", + "alloy-sol-types", + "anyhow", + "async-trait", + "backoff", + "bincode", + "cfg-if", + "dirs", + "futures", + "hashbrown 0.14.5", + "hex", + "indicatif", + "itertools 0.13.0", + "log", + "p3-baby-bear", + "p3-field", + "p3-fri", + "prost", + "reqwest", + "reqwest-middleware", + "serde", + "serde_json", + "sp1-build", + "sp1-core-executor", + "sp1-core-machine", + "sp1-cuda", + "sp1-primitives", + "sp1-prover", + "sp1-stark", + "strum", + "strum_macros", + "tempfile", + "thiserror 1.0.69", + "tokio", + "tonic", + "tracing", + "twirp-rs", +] + +[[package]] +name = "sp1-stark" +version = "4.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a56b5481d9a39ee7b6c88ddd3d3c0f2c5c0d1babbfdfdb171d774b47b71101b" +dependencies = [ + "arrayref", + "hashbrown 0.14.5", + "itertools 0.13.0", + "num-bigint 0.4.6", + "num-traits", + "p3-air", "p3-baby-bear", + "p3-challenger", + "p3-commit", + "p3-dft", "p3-field", + "p3-fri", + "p3-matrix", + "p3-maybe-rayon", + "p3-merkle-tree", "p3-poseidon2", "p3-symmetric", + "p3-uni-stark", + "p3-util", + "rayon-scan", + "serde", + "sp1-derive", + "sp1-primitives", + "strum", + "strum_macros", + "sysinfo", + "tracing", ] [[package]] -name = "sphinx-zkvm" -version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx.git?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" -dependencies = [ - "bincode", - "cfg-if", - "getrandom", - "lazy_static", - "libm", - "once_cell", - "rand", - "serde", - "sha2", - "sphinx-lib", -] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" [[package]] name = "spki" @@ -2649,6 +5366,12 @@ dependencies = [ "der", ] +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + [[package]] name = "static_assertions" version = "1.1.0" @@ -2676,11 +5399,23 @@ version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" dependencies = [ - "heck", + "heck 0.5.0", "proc-macro2", "quote", "rustversion", - "syn 2.0.87", + "syn 2.0.100", +] + +[[package]] +name = "subenum" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f5d5dfb8556dd04017db5e318bbeac8ab2b0c67b76bf197bfb79e9b29f18ecf" +dependencies = [ + "heck 0.4.1", + "proc-macro2", + "quote", + "syn 1.0.109", ] [[package]] @@ -2702,15 +5437,62 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.87" +version = "2.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d" +checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] +[[package]] +name = "syn-solidity" +version = "0.8.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d975606bae72d8aad5b07d9342465e123a2cccf53a5a735aedf81ca92a709ecb" +dependencies = [ + "paste", + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] + +[[package]] +name = "synstructure" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "sysinfo" +version = "0.30.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a5b4ddaee55fb2bea2bf0e5000747e5f5c0de765e5a5ff87f4cd106439f4bb3" +dependencies = [ + "cfg-if", + "core-foundation-sys", + "libc", + "ntapi", + "once_cell", + "rayon", + "windows", +] + [[package]] name = "tap" version = "1.0.1" @@ -2719,35 +5501,56 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.13.0" +version = "3.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b" +checksum = "2c317e0a526ee6120d8dabad239c8dadca62b24b6f168914bbbc8e2fb1f0e567" dependencies = [ "cfg-if", "fastrand", + "getrandom 0.3.1", "once_cell", - "rustix", + "rustix 1.0.2", "windows-sys 0.59.0", ] [[package]] name = "thiserror" -version = "1.0.68" +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.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02dd99dc800bbb97186339685293e1cc5d9df1f8fae2d0aecd9ff1c77efea892" +checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" dependencies = [ - "thiserror-impl", + "thiserror-impl 2.0.12", ] [[package]] name = "thiserror-impl" -version = "1.0.68" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7c61ec9a6f64d2793d8a45faba21efbe3ced62a886d44c36a009b2b519b4c7e" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.100", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", ] [[package]] @@ -2760,11 +5563,20 @@ dependencies = [ "once_cell", ] +[[package]] +name = "threadpool" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa" +dependencies = [ + "num_cpus", +] + [[package]] name = "time" -version = "0.3.36" +version = "0.3.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" +checksum = "dad298b01a40a23aac4580b67e3dbedb7cc8402f3592d7f49469de2ea4aecdd8" dependencies = [ "deranged", "itoa", @@ -2779,15 +5591,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" +checksum = "765c97a5b985b7c11d7bc27fa927dc4fe6af3a6dfb021d28deb60d3bf51e76ef" [[package]] name = "time-macros" -version = "0.2.18" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" +checksum = "e8093bc3e81c3bc5f7879de09619d06c9a5a5e45ca44dfeeb7225bae38005c5c" dependencies = [ "num-conv", "time-core", @@ -2802,6 +5614,16 @@ dependencies = [ "crunchy", ] +[[package]] +name = "tinystr" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +dependencies = [ + "displaydoc", + "zerovec", +] + [[package]] name = "tinytemplate" version = "1.2.1" @@ -2812,11 +5634,104 @@ dependencies = [ "serde_json", ] +[[package]] +name = "tinyvec" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71" +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 = "tokio" +version = "1.44.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f382da615b842244d4b8738c82ed1275e6c5dd90c459a30941cd07080b06c91a" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys 0.52.0", +] + +[[package]] +name = "tokio-macros" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "tokio-rustls" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b" +dependencies = [ + "rustls", + "tokio", +] + +[[package]] +name = "tokio-stream" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b9590b93e6fcc1739458317cccd391ad3955e2bde8913edf6f95f9e65a8f034" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml" +version = "0.8.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd87a5cdd6ffab733b2f74bc4fd7ee5fff6634124999ac278c35fc78c6120148" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit 0.22.24", +] + [[package]] name = "toml_datetime" version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" +dependencies = [ + "serde", +] [[package]] name = "toml_edit" @@ -2824,38 +5739,145 @@ version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap 2.6.0", + "indexmap 2.8.0", + "toml_datetime", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.22.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17b4795ff5edd201c7cd6dca065ae59972ce77d1b80fa0a84d94950ece7d1474" +dependencies = [ + "indexmap 2.8.0", + "serde", + "serde_spanned", "toml_datetime", - "winnow", + "winnow 0.7.4", +] + +[[package]] +name = "tonic" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877c5b330756d856ffcc4553ab34a5684481ade925ecc54bcd1bf02b1d0d4d52" +dependencies = [ + "async-stream", + "async-trait", + "axum", + "base64", + "bytes", + "h2", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-timeout", + "hyper-util", + "percent-encoding", + "pin-project", + "prost", + "rustls-native-certs", + "rustls-pemfile", + "socket2", + "tokio", + "tokio-rustls", + "tokio-stream", + "tower 0.4.13", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +dependencies = [ + "futures-core", + "futures-util", + "indexmap 1.9.3", + "pin-project", + "pin-project-lite", + "rand", + "slab", + "tokio", + "tokio-util", + "tower-layer", + "tower-service", + "tracing", ] +[[package]] +name = "tower" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper", + "tokio", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + [[package]] name = "tracing" -version = "0.1.40" +version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" dependencies = [ + "log", "pin-project-lite", "tracing-attributes", "tracing-core", ] +[[package]] +name = "tracing-appender" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3566e8ce28cc0a3fe42519fc80e6b4c943cc4c8cef275620eb8dac2d3d4e06cf" +dependencies = [ + "crossbeam-channel", + "thiserror 1.0.69", + "time", + "tracing-subscriber", +] + [[package]] name = "tracing-attributes" -version = "0.1.27" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.100", ] [[package]] name = "tracing-core" -version = "0.1.32" +version = "0.1.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" dependencies = [ "once_cell", "valuable", @@ -2869,7 +5891,7 @@ checksum = "ee40835db14ddd1e3ba414292272eddde9dad04d3d4b65509656414d1c42592f" dependencies = [ "ansi_term", "smallvec", - "thiserror", + "thiserror 1.0.69", "tracing", "tracing-subscriber", ] @@ -2887,9 +5909,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.18" +version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" dependencies = [ "matchers", "nu-ansi-term", @@ -2903,11 +5925,57 @@ dependencies = [ "tracing-log", ] +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "twirp-rs" +version = "0.13.0-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27dfcc06b8d9262bc2d4b8d1847c56af9971a52dd8a0076876de9db763227d0d" +dependencies = [ + "async-trait", + "axum", + "futures", + "http", + "http-body-util", + "hyper", + "prost", + "reqwest", + "serde", + "serde_json", + "thiserror 1.0.69", + "tokio", + "tower 0.5.2", + "url", +] + [[package]] name = "typenum" -version = "1.17.0" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" + +[[package]] +name = "ucd-trie" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +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" @@ -2917,9 +5985,9 @@ checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" [[package]] name = "unicode-ident" -version = "1.0.13" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" [[package]] name = "unicode-segmentation" @@ -2935,7 +6003,7 @@ checksum = "b3644627a5af5fa321c95b9b235a72fd24cd29c648c2c379431e6628655627bf" dependencies = [ "itertools 0.13.0", "unicode-segmentation", - "unicode-width", + "unicode-width 0.1.14", ] [[package]] @@ -2944,6 +6012,47 @@ version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" +[[package]] +name = "unicode-width" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd" + +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "url" +version = "2.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", +] + +[[package]] +name = "utf16_iter" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" + +[[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" @@ -2952,9 +6061,18 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "valuable" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" + +[[package]] +name = "vec_map" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" +dependencies = [ + "serde", +] [[package]] name = "vergen" @@ -2976,9 +6094,9 @@ checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "wait-timeout" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" +checksum = "09ac3b126d3914f9849036f826e054cbabdc8519970b8998ddaf3b5bd3c65f11" dependencies = [ "libc", ] @@ -2993,43 +6111,74 @@ dependencies = [ "winapi-util", ] +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + [[package]] name = "wasi" version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "wasi" +version = "0.13.3+wasi-0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26816d2e1a4a36a2940b96c5296ce403917633dff8f3440e9b236ed6f6bacad2" +dependencies = [ + "wit-bindgen-rt", +] + [[package]] name = "wasm-bindgen" -version = "0.2.95" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" dependencies = [ "cfg-if", "once_cell", + "rustversion", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.95" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" dependencies = [ "bumpalo", "log", - "once_cell", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.100", "wasm-bindgen-shared", ] +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" +dependencies = [ + "cfg-if", + "js-sys", + "once_cell", + "wasm-bindgen", + "web-sys", +] + [[package]] name = "wasm-bindgen-macro" -version = "0.2.95" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3037,28 +6186,44 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.95" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.100", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.95" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "wasm-streams" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" +checksum = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65" +dependencies = [ + "futures-util", + "js-sys", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] [[package]] name = "web-sys" -version = "0.3.72" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6488b90108c040df0fe62fa815cbdee25124641df01814dd7282749234c6112" +checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" dependencies = [ "js-sys", "wasm-bindgen", @@ -3074,6 +6239,15 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "webpki-roots" +version = "0.26.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2210b291f7ea53617fbafcc4939f10914214ec15aace5ba62293a668f322c5c9" +dependencies = [ + "rustls-pki-types", +] + [[package]] name = "winapi" version = "0.3.9" @@ -3105,13 +6279,67 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "windows" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" +dependencies = [ + "windows-core", + "windows-targets 0.52.6", +] + [[package]] name = "windows-core" version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-link" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dccfd733ce2b1753b03b6d3c65edf020262ea35e20ccdf3e288043e6dd620e3" + +[[package]] +name = "windows-registry" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4286ad90ddb45071efd1a66dfa43eb02dd0dfbae1545ad6cc3c51cf34d7e8ba3" +dependencies = [ + "windows-result", + "windows-strings", + "windows-targets 0.53.0", +] + +[[package]] +name = "windows-result" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06374efe858fab7e4f881500e6e86ec8bc28f9462c47e5a9941a0142ad86b189" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-strings" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87fa48cc5d406560701792be122a10132491cff9d0aeb23583cc2dcafc847319" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", ] [[package]] @@ -3120,7 +6348,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets", + "windows-targets 0.52.6", ] [[package]] @@ -3129,7 +6357,22 @@ version = "0.59.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" dependencies = [ - "windows-targets", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", ] [[package]] @@ -3138,64 +6381,170 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_gnullvm", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm 0.52.6", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1e4c7e8ceaaf9cb7d7507c974735728ab453b67ef8f18febdd7c11fe59dca8b" +dependencies = [ + "windows_aarch64_gnullvm 0.53.0", + "windows_aarch64_msvc 0.53.0", + "windows_i686_gnu 0.53.0", + "windows_i686_gnullvm 0.53.0", + "windows_i686_msvc 0.53.0", + "windows_x86_64_gnu 0.53.0", + "windows_x86_64_gnullvm 0.53.0", + "windows_x86_64_msvc 0.53.0", ] +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + [[package]] name = "windows_aarch64_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + [[package]] name = "windows_aarch64_msvc" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + [[package]] name = "windows_i686_gnu" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" +[[package]] +name = "windows_i686_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" + [[package]] name = "windows_i686_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + [[package]] name = "windows_i686_msvc" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" +[[package]] +name = "windows_i686_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + [[package]] name = "windows_x86_64_gnu" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + [[package]] name = "windows_x86_64_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + [[package]] name = "windows_x86_64_msvc" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" + [[package]] name = "winnow" version = "0.5.40" @@ -3205,6 +6554,36 @@ dependencies = [ "memchr", ] +[[package]] +name = "winnow" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e97b544156e9bebe1a0ffbc03484fc1ffe3100cbce3ffb17eac35f7cdd7ab36" +dependencies = [ + "memchr", +] + +[[package]] +name = "wit-bindgen-rt" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c" +dependencies = [ + "bitflags", +] + +[[package]] +name = "write16" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" + +[[package]] +name = "writeable" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" + [[package]] name = "wyz" version = "0.5.1" @@ -3214,14 +6593,46 @@ dependencies = [ "tap", ] +[[package]] +name = "yoke" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", + "synstructure", +] + [[package]] name = "zerocopy" version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ - "byteorder", - "zerocopy-derive", + "zerocopy-derive 0.7.35", +] + +[[package]] +name = "zerocopy" +version = "0.8.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd97444d05a4328b90e75e503a34bad781f14e28a823ad3557f0750df1ebcbc6" +dependencies = [ + "zerocopy-derive 0.8.23", ] [[package]] @@ -3232,7 +6643,39 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.100", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6352c01d0edd5db859a63e2605f4ea3183ddbd15e2c4a9e7d32184df75e4f154" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", + "synstructure", ] [[package]] @@ -3240,3 +6683,66 @@ name = "zeroize" version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "zerovec" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "zkhash" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4352d1081da6922701401cdd4cbf29a2723feb4cfabb5771f6fee8e9276da1c7" +dependencies = [ + "ark-ff 0.4.2", + "ark-std 0.4.0", + "bitvec", + "blake2", + "bls12_381", + "byteorder", + "cfg-if", + "group 0.12.1", + "group 0.13.0", + "halo2", + "hex", + "jubjub", + "lazy_static", + "pasta_curves 0.5.1", + "rand", + "serde", + "sha2", + "sha3", + "subtle", +] diff --git a/Cargo.toml b/Cargo.toml index fb053b6a..6df18764 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -20,20 +20,23 @@ license = "MIT" [workspace.dependencies] rayon = "1.10.0" itertools = "0.13.0" -p3-air = { git = "https://github.com/argumentcomputer/Plonky3.git", branch = "sp1" } -p3-baby-bear = { git = "https://github.com/argumentcomputer/Plonky3.git", branch = "sp1" } -p3-field = { git = "https://github.com/argumentcomputer/Plonky3.git", branch = "sp1" } -p3-matrix = { git = "https://github.com/argumentcomputer/Plonky3.git", branch = "sp1" } -p3-mds = { git = "https://github.com/argumentcomputer/Plonky3.git", branch = "sp1" } -p3-commit = { git = "https://github.com/argumentcomputer/Plonky3.git", branch = "sp1" } -p3-challenger = { git = "https://github.com/argumentcomputer/Plonky3.git", branch = "sp1" } -p3-maybe-rayon = { git = "https://github.com/argumentcomputer/Plonky3.git", branch = "sp1" } -p3-poseidon2 = { git = "https://github.com/argumentcomputer/Plonky3.git", branch = "sp1" } -p3-symmetric = { git = "https://github.com/argumentcomputer/Plonky3.git", branch = "sp1" } -p3-uni-stark = { git = "https://github.com/argumentcomputer/Plonky3.git", branch = "sp1" } -p3-util = { git = "https://github.com/argumentcomputer/Plonky3.git", branch = "sp1" } -sphinx-core = { git = "https://github.com/argumentcomputer/sphinx.git", branch = "dev"} -sphinx-derive = { git = "https://github.com/argumentcomputer/sphinx.git", branch = "dev" } +p3-air = "0.2.0-succinct" +p3-field = "0.2.0-succinct" +p3-commit = "0.2.0-succinct" +p3-matrix = "0.2.0-succinct" +p3-baby-bear = { version = "0.2.0-succinct", features = ["nightly-features"] } +p3-util = "0.2.0-succinct" +p3-challenger = "0.2.0-succinct" +p3-mds = "0.2.0-succinct" +p3-poseidon2 = "0.2.0-succinct" +p3-symmetric = "0.2.0-succinct" +p3-uni-stark = "0.2.0-succinct" +p3-maybe-rayon = "0.2.0-succinct" +sp1-core-machine = "4.1.3" +sp1-core-executor = "4.1.3" +sp1-derive = "4.1.3" +sp1-stark = "4.1.3" +sp1-sdk = "4.1.3" anyhow = "1.0.72" ascent = { git = "https://github.com/argumentcomputer/ascent.git" } arc-swap = "1.7.1" @@ -124,8 +127,11 @@ p3-maybe-rayon = { workspace = true } p3-poseidon2 = { workspace = true } p3-symmetric = { workspace = true } p3-util = { workspace = true } -sphinx-core = { workspace = true } -sphinx-derive = { workspace = true } +sp1-core-machine = { workspace = true } +sp1-core-executor = { workspace = true } +sp1-derive = { workspace = true } +sp1-stark = { workspace = true } +sp1-sdk = { workspace = true } hashbrown = { workspace = true } loam-macros = { workspace = true } @@ -173,3 +179,6 @@ loam=[] # Ascent will be compiled with -Copt-level=3 . This includes build dependencies. [profile.dev.package."ascent"] opt-level = 3 + +[patch.crates-io] +p3-poseidon2 = { git = "https://github.com/lurk-lab/p3.git", branch = "sp1-v4" } diff --git a/benches/fib.rs b/benches/fib.rs index 672e0959..d6524e9f 100644 --- a/benches/fib.rs +++ b/benches/fib.rs @@ -2,12 +2,11 @@ use criterion::{criterion_group, criterion_main, BatchSize, Criterion}; use p3_baby_bear::BabyBear; use p3_field::AbstractField; use rayon::iter::{IntoParallelRefIterator, ParallelIterator}; -use sphinx_core::{ - air::MachineAir, - stark::{LocalProver, StarkGenericConfig, StarkMachine}, - utils::{BabyBearPoseidon2, SphinxCoreOpts}, +use sp1_stark::{ + air::MachineAir, baby_bear_poseidon2::BabyBearPoseidon2, CpuProver, MachineProver, SP1CoreOpts, + StarkGenericConfig, StarkMachine, }; -use std::time::Duration; +use std::{sync::Arc, time::Duration}; use lurk::{ core::{ @@ -45,10 +44,10 @@ fn build_lurk_expr(arg: usize) -> String { fn setup>( arg: usize, - toplevel: &Toplevel, + toplevel: &Arc>, ) -> ( List, - FuncChip<'_, BabyBear, C, NoChip>, + FuncChip, QueryRecord, ) { let code = build_lurk_expr(arg); @@ -93,11 +92,14 @@ fn trace_generation(c: &mut Criterion) { toplevel .execute(lurk_main.func(), &args, &mut record, None) .unwrap(); + let record = Arc::new(record); let lair_chips = build_lair_chip_vector(&lurk_main); b.iter(|| { lair_chips.par_iter().for_each(|func_chip| { - let shard = Shard::new(&record); - func_chip.generate_trace(&shard, &mut Default::default()); + let shards = Shard::new_arc(&record); + assert_eq!(shards.len(), 1); + let shard = &shards[0]; + func_chip.generate_trace(shard, &mut Default::default()); }) }) }); @@ -111,21 +113,31 @@ fn verification(c: &mut Criterion) { toplevel .execute(lurk_main.func(), &args, &mut record, None) .unwrap(); - let config = BabyBearPoseidon2::new(); let machine = StarkMachine::new( - config, + BabyBearPoseidon2::new(), build_chip_vector(&lurk_main), record.expect_public_values().len(), + true, ); let (pk, vk) = machine.setup(&LairMachineProgram); let mut challenger_p = machine.config().challenger(); - let opts = SphinxCoreOpts::default(); - let shard = Shard::new(&record); - let proof = machine.prove::>(&pk, shard, &mut challenger_p, opts); + let opts = SP1CoreOpts::default(); + let record = Arc::new(record); + let shards = Shard::new_arc(&record); + let prover = CpuProver::new(machine); + let proof = prover.prove(&pk, shards, &mut challenger_p, opts).unwrap(); b.iter_batched( - || machine.config().challenger(), - |mut challenger| { + || { + StarkMachine::new( + BabyBearPoseidon2::new(), + build_chip_vector(&lurk_main), + record.expect_public_values().len(), + true, + ) + }, + |machine| { + let mut challenger = machine.config().challenger(); machine.verify(&vk, &proof, &mut challenger).unwrap(); }, BatchSize::SmallInput, @@ -150,12 +162,14 @@ fn e2e(c: &mut Criterion) { config, build_chip_vector(&lurk_main), record.expect_public_values().len(), + true, ); let (pk, _) = machine.setup(&LairMachineProgram); let mut challenger_p = machine.config().challenger(); - let opts = SphinxCoreOpts::default(); - let shard = Shard::new(&record); - machine.prove::>(&pk, shard, &mut challenger_p, opts); + let opts = SP1CoreOpts::default(); + let shards = Shard::new(record); + let prover = CpuProver::new(machine); + prover.prove(&pk, shards, &mut challenger_p, opts).unwrap(); }, BatchSize::SmallInput, ) diff --git a/benches/lcs.rs b/benches/lcs.rs index f932aee9..e9ddd82a 100644 --- a/benches/lcs.rs +++ b/benches/lcs.rs @@ -2,12 +2,11 @@ use criterion::{criterion_group, criterion_main, BatchSize, Criterion}; use p3_baby_bear::BabyBear; use p3_field::AbstractField; use rayon::iter::{IntoParallelRefIterator, ParallelIterator}; -use sphinx_core::{ - air::MachineAir, - stark::{LocalProver, StarkGenericConfig, StarkMachine}, - utils::{BabyBearPoseidon2, SphinxCoreOpts}, +use sp1_stark::{ + air::MachineAir, baby_bear_poseidon2::BabyBearPoseidon2, CpuProver, MachineProver, SP1CoreOpts, + StarkGenericConfig, StarkMachine, }; -use std::time::Duration; +use std::{sync::Arc, time::Duration}; use lurk::{ core::{ @@ -49,10 +48,10 @@ fn build_lurk_expr(a: &str, b: &str) -> String { fn setup<'a, C: Chipset>( a: &'a str, b: &'a str, - toplevel: &'a Toplevel, + toplevel: &'a Arc>, ) -> ( List, - FuncChip<'a, BabyBear, C, NoChip>, + FuncChip, QueryRecord, ) { let code = build_lurk_expr(a, b); @@ -97,11 +96,14 @@ fn trace_generation(c: &mut Criterion) { toplevel .execute(lurk_main.func(), &args, &mut record, None) .unwrap(); + let record = Arc::new(record); let lair_chips = build_lair_chip_vector(&lurk_main); b.iter(|| { lair_chips.par_iter().for_each(|func_chip| { - let shard = Shard::new(&record); - func_chip.generate_trace(&shard, &mut Default::default()); + let shards = Shard::new_arc(&record); + assert_eq!(shards.len(), 1); + let shard = &shards[0]; + func_chip.generate_trace(shard, &mut Default::default()); }) }) }); @@ -116,21 +118,31 @@ fn verification(c: &mut Criterion) { toplevel .execute(lurk_main.func(), &args, &mut record, None) .unwrap(); - let config = BabyBearPoseidon2::new(); let machine = StarkMachine::new( - config, + BabyBearPoseidon2::new(), build_chip_vector(&lurk_main), record.expect_public_values().len(), + true, ); let (pk, vk) = machine.setup(&LairMachineProgram); let mut challenger_p = machine.config().challenger(); - let opts = SphinxCoreOpts::default(); - let shard = Shard::new(&record); - let proof = machine.prove::>(&pk, shard, &mut challenger_p, opts); + let opts = SP1CoreOpts::default(); + let record = Arc::new(record); + let shards = Shard::new_arc(&record); + let prover = CpuProver::new(machine); + let proof = prover.prove(&pk, shards, &mut challenger_p, opts).unwrap(); b.iter_batched( - || machine.config().challenger(), - |mut challenger| { + || { + StarkMachine::new( + BabyBearPoseidon2::new(), + build_chip_vector(&lurk_main), + record.expect_public_values().len(), + true, + ) + }, + |machine| { + let mut challenger = machine.config().challenger(); machine.verify(&vk, &proof, &mut challenger).unwrap(); }, BatchSize::SmallInput, @@ -155,12 +167,14 @@ fn e2e(c: &mut Criterion) { config, build_chip_vector(&lurk_main), record.expect_public_values().len(), + true, ); let (pk, _) = machine.setup(&LairMachineProgram); let mut challenger_p = machine.config().challenger(); - let opts = SphinxCoreOpts::default(); - let shard = Shard::new(&record); - machine.prove::>(&pk, shard, &mut challenger_p, opts); + let opts = SP1CoreOpts::default(); + let shards = Shard::new(record); + let prover = CpuProver::new(machine); + prover.prove(&pk, shards, &mut challenger_p, opts).unwrap(); }, BatchSize::SmallInput, ) diff --git a/benches/sum.rs b/benches/sum.rs index c80c559b..0c63f29b 100644 --- a/benches/sum.rs +++ b/benches/sum.rs @@ -2,12 +2,11 @@ use criterion::{criterion_group, criterion_main, BatchSize, Criterion}; use p3_baby_bear::BabyBear; use p3_field::AbstractField; use rayon::iter::{IntoParallelRefIterator, ParallelIterator}; -use sphinx_core::{ - air::MachineAir, - stark::{LocalProver, StarkGenericConfig, StarkMachine}, - utils::{BabyBearPoseidon2, SphinxCoreOpts}, +use sp1_stark::{ + air::MachineAir, baby_bear_poseidon2::BabyBearPoseidon2, CpuProver, MachineProver, SP1CoreOpts, + StarkGenericConfig, StarkMachine, }; -use std::time::Duration; +use std::{sync::Arc, time::Duration}; use lurk::{ core::{ @@ -49,10 +48,10 @@ fn build_lurk_expr(n: usize) -> String { fn setup>( n: usize, - toplevel: &Toplevel, + toplevel: &Arc>, ) -> ( List, - FuncChip<'_, BabyBear, C, NoChip>, + FuncChip, QueryRecord, ) { let code = build_lurk_expr(n); @@ -98,11 +97,14 @@ fn trace_generation(c: &mut Criterion) { toplevel .execute(lurk_main.func(), &args, &mut record, None) .unwrap(); + let record = Arc::new(record); let lair_chips = build_lair_chip_vector(&lurk_main); b.iter(|| { lair_chips.par_iter().for_each(|func_chip| { - let shard = Shard::new(&record); - func_chip.generate_trace(&shard, &mut Default::default()); + let shards = Shard::new_arc(&record); + assert_eq!(shards.len(), 1); + let shard = &shards[0]; + func_chip.generate_trace(shard, &mut Default::default()); }) }) }); @@ -117,21 +119,31 @@ fn verification(c: &mut Criterion) { toplevel .execute(lurk_main.func(), &args, &mut record, None) .unwrap(); - let config = BabyBearPoseidon2::new(); let machine = StarkMachine::new( - config, + BabyBearPoseidon2::new(), build_chip_vector(&lurk_main), record.expect_public_values().len(), + true, ); let (pk, vk) = machine.setup(&LairMachineProgram); let mut challenger_p = machine.config().challenger(); - let opts = SphinxCoreOpts::default(); - let shard = Shard::new(&record); - let proof = machine.prove::>(&pk, shard, &mut challenger_p, opts); + let opts = SP1CoreOpts::default(); + let record = Arc::new(record); + let shards = Shard::new_arc(&record); + let prover = CpuProver::new(machine); + let proof = prover.prove(&pk, shards, &mut challenger_p, opts).unwrap(); b.iter_batched( - || machine.config().challenger(), - |mut challenger| { + || { + StarkMachine::new( + BabyBearPoseidon2::new(), + build_chip_vector(&lurk_main), + record.expect_public_values().len(), + true, + ) + }, + |machine| { + let mut challenger = machine.config().challenger(); machine.verify(&vk, &proof, &mut challenger).unwrap(); }, BatchSize::SmallInput, @@ -156,12 +168,14 @@ fn e2e(c: &mut Criterion) { config, build_chip_vector(&lurk_main), record.expect_public_values().len(), + true, ); let (pk, _) = machine.setup(&LairMachineProgram); let mut challenger_p = machine.config().challenger(); - let opts = SphinxCoreOpts::default(); - let shard = Shard::new(&record); - machine.prove::>(&pk, shard, &mut challenger_p, opts); + let opts = SP1CoreOpts::default(); + let shards = Shard::new(record); + let prover = CpuProver::new(machine); + prover.prove(&pk, shards, &mut challenger_p, opts).unwrap(); }, BatchSize::SmallInput, ) diff --git a/examples/byte_lookup/Cargo.toml b/examples/byte_lookup/Cargo.toml index eda49793..b5389629 100644 --- a/examples/byte_lookup/Cargo.toml +++ b/examples/byte_lookup/Cargo.toml @@ -12,7 +12,8 @@ p3-baby-bear = { workspace = true } p3-field = { workspace = true } p3-matrix = { workspace = true } p3-maybe-rayon = { workspace = true } -sphinx-core = { workspace = true } -sphinx-derive = { workspace = true } +sp1-core-machine = { workspace = true } +sp1-core-executor = { workspace = true } +sp1-derive = { workspace = true } rand = { workspace = true } rand_chacha = { workspace = true } diff --git a/examples/byte_lookup/src/main.rs b/examples/byte_lookup/src/main.rs index c099c0e6..31574a8c 100644 --- a/examples/byte_lookup/src/main.rs +++ b/examples/byte_lookup/src/main.rs @@ -9,7 +9,7 @@ use p3_baby_bear::BabyBear; use p3_field::{AbstractField, Field, PrimeField32}; use p3_matrix::{dense::RowMajorMatrix, Matrix}; use p3_maybe_rayon::prelude::*; -use sphinx_derive::AlignedBorrow; +use sp1_derive::AlignedBorrow; use std::borrow::{Borrow, BorrowMut}; use std::collections::BTreeMap; diff --git a/examples/byte_lookup/src/memoset.rs b/examples/byte_lookup/src/memoset.rs index 007a5526..3c65ebf4 100644 --- a/examples/byte_lookup/src/memoset.rs +++ b/examples/byte_lookup/src/memoset.rs @@ -6,7 +6,7 @@ use p3_matrix::Matrix; use p3_maybe_rayon::prelude::*; use rand::distributions::{Distribution, Standard, Uniform}; use rand::{Rng, SeedableRng}; -use sphinx_derive::AlignedBorrow; +use sp1_derive::AlignedBorrow; use std::borrow::{Borrow, BorrowMut}; const QUERY_WIDTH: usize = 8; diff --git a/rust-toolchain.toml b/rust-toolchain.toml index 2c5adb73..0ada6050 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -2,3 +2,4 @@ # The default profile includes rustc, rust-std, cargo, rust-docs, rustfmt and clippy. profile = "default" channel = "nightly-2024-11-13" +components = ["rust-analyzer", "clippy"] diff --git a/src/air/builder.rs b/src/air/builder.rs index 41e92af0..0df661cc 100644 --- a/src/air/builder.rs +++ b/src/air/builder.rs @@ -1,9 +1,9 @@ use itertools::chain; use p3_air::{AirBuilder, AirBuilderWithPublicValues}; use p3_field::{AbstractField, PrimeField}; -use sphinx_core::air::{AirInteraction, MessageBuilder}; -use sphinx_core::lookup::InteractionKind; -use sphinx_derive::AlignedBorrow; +use sp1_derive::AlignedBorrow; +use sp1_stark::air::{AirInteraction, InteractionScope, MessageBuilder}; +use sp1_stark::InteractionKind; /// Tagged tuple describing an element of a relation /// @@ -117,7 +117,8 @@ impl>> LookupBuilder fo multiplicity: is_real_bool.into(), kind: InteractionKind::Memory, }, - ) + InteractionScope::Local, + ); } fn send(&mut self, relation: impl Relation, is_real_bool: impl Into) { @@ -128,7 +129,8 @@ impl>> LookupBuilder fo multiplicity: is_real_bool.into(), kind: InteractionKind::Memory, }, - ) + InteractionScope::Local, + ); } } diff --git a/src/air/debug.rs b/src/air/debug.rs index ddf8d233..37aa8740 100644 --- a/src/air/debug.rs +++ b/src/air/debug.rs @@ -1,6 +1,6 @@ use crate::air::builder::{LairBuilder, LookupBuilder, ProvideRecord, Relation, RequireRecord}; use crate::lair::chipset::Chipset; -use crate::lair::execute::{QueryRecord, Shard, ShardingConfig}; +use crate::lair::execute::{QueryRecord, Shard}; use crate::lair::lair_chip::{LairChip, LairMachineProgram}; use hashbrown::HashMap; use p3_air::{Air, AirBuilder, AirBuilderWithPublicValues, PairBuilder}; @@ -8,9 +8,10 @@ use p3_field::PrimeField32; use p3_matrix::dense::{RowMajorMatrix, RowMajorMatrixView}; use p3_matrix::stack::VerticalPair; use p3_matrix::Matrix; -use sphinx_core::air::MachineAir; -use sphinx_core::stark::MachineRecord; +use sp1_stark::air::MachineAir; +use sp1_stark::SP1CoreOpts; use std::collections::BTreeMap; +use std::sync::Arc; type LocalRowView<'a, F> = VerticalPair, RowMajorMatrixView<'a, F>>; @@ -121,15 +122,14 @@ pub fn debug_chip_constraints_and_queries_with_sharding< C1: Chipset, C2: Chipset, >( - record: &QueryRecord, - chips: &[LairChip<'_, F, C1, C2>], - config: Option, + record: &Arc>, + chips: &[LairChip], + config: Option, ) { - let full_shard = Shard::new(record); let shards = if let Some(config) = config { - full_shard.shard(&config) + Shard::shard_with_arc(record, &config) } else { - vec![full_shard] + Shard::new_arc(record) }; let lookup_queries: Vec<_> = shards @@ -137,7 +137,8 @@ pub fn debug_chip_constraints_and_queries_with_sharding< .flat_map(|shard| { // For each shard, get the queries produced by all the chips in that shard. chips.iter().filter_map(move |chip| { - if chip.included(&shard) { + // FIXME: we're ignoring the dummy chip here due to duplicate memoset queries because of the dummy require/provide + if chip.included(&shard) && chip.name() != "Dummy" { let trace = chip.generate_trace(&shard, &mut Shard::default()); let preprocessed_trace = chip.generate_preprocessed_trace(&LairMachineProgram); let queries = debug_constraints_collecting_queries( diff --git a/src/core/big_num.rs b/src/core/big_num.rs index d53c4a24..4c8a459c 100644 --- a/src/core/big_num.rs +++ b/src/core/big_num.rs @@ -109,9 +109,12 @@ pub fn field_elts_to_biguint(elts: &[F]) -> BigUint { #[cfg(test)] mod test { + use std::sync::Arc; + use p3_baby_bear::BabyBear as F; use p3_field::AbstractField; - use sphinx_core::{stark::StarkMachine, utils::BabyBearPoseidon2}; + use sp1_stark::StarkMachine; + use sp1_stark::{baby_bear_poseidon2::BabyBearPoseidon2, StarkGenericConfig}; use crate::{ air::debug::debug_chip_constraints_and_queries_with_sharding, @@ -127,7 +130,7 @@ mod test { #[test] fn big_num_lessthan_test() { - sphinx_core::utils::setup_logger(); + sp1_core_machine::utils::setup_logger(); let lessthan_func = func!( fn lessthan(a: [8], b: [8]): [1] { @@ -166,6 +169,7 @@ mod test { assert_eq!(out.as_ref(), &[f(1)]); let lair_chips = build_lair_chip_vector(&lessthan_chip); + let queries = Arc::new(queries); debug_chip_constraints_and_queries_with_sharding(&queries, &lair_chips, None); let config = BabyBearPoseidon2::new(); @@ -173,10 +177,12 @@ mod test { config, build_chip_vector(&lessthan_chip), queries.expect_public_values().len(), + true, ); let (pk, _vk) = machine.setup(&LairMachineProgram); - let shard = Shard::new(&queries); - machine.debug_constraints(&pk, shard.clone()); + let mut challenger_d = machine.config().challenger(); + let shard = Shard::new_arc(&queries); + machine.debug_constraints(&pk, shard.clone(), &mut challenger_d); } } diff --git a/src/core/chipset.rs b/src/core/chipset.rs index 847ccc4e..8df0908c 100644 --- a/src/core/chipset.rs +++ b/src/core/chipset.rs @@ -145,27 +145,30 @@ impl Chipset for LurkChip { } } - fn eval + LookupBuilder>( + fn eval( &self, builder: &mut AB, is_real: AB::Expr, - preimg: Vec, + input: Vec, witness: &[AB::Var], nonce: AB::Expr, requires: &[RequireRecord], - ) -> Vec { + ) -> Vec + where + AB: AirBuilder + LookupBuilder, + { match self { LurkChip::Hasher3(hasher) => { - hasher.eval(builder, is_real, preimg, witness, nonce, requires) + hasher.eval(builder, is_real, input, witness, nonce, requires) } LurkChip::Hasher4(hasher) => { - hasher.eval(builder, is_real, preimg, witness, nonce, requires) + hasher.eval(builder, is_real, input, witness, nonce, requires) } LurkChip::Hasher5(hasher) => { - hasher.eval(builder, is_real, preimg, witness, nonce, requires) + hasher.eval(builder, is_real, input, witness, nonce, requires) } - LurkChip::U64(op) => op.eval(builder, is_real, preimg, witness, nonce, requires), - LurkChip::BigNum(op) => op.eval(builder, is_real, preimg, witness, nonce, requires), + LurkChip::U64(op) => op.eval(builder, is_real, input, witness, nonce, requires), + LurkChip::BigNum(op) => op.eval(builder, is_real, input, witness, nonce, requires), } } } diff --git a/src/core/cli/comm_data.rs b/src/core/cli/comm_data.rs index c8b03753..bc8b9699 100644 --- a/src/core/cli/comm_data.rs +++ b/src/core/cli/comm_data.rs @@ -29,7 +29,7 @@ impl CommData { } } -impl CommData { +impl CommData { #[inline] pub(crate) fn new>( secret: [F; DIGEST_SIZE], diff --git a/src/core/cli/meta.rs b/src/core/cli/meta.rs index 6f1fd1a4..a2460de4 100644 --- a/src/core/cli/meta.rs +++ b/src/core/cli/meta.rs @@ -4,7 +4,7 @@ use itertools::Itertools; use p3_baby_bear::BabyBear; use p3_field::{AbstractField, PrimeField32}; use rustc_hash::FxHashMap; -use sphinx_core::stark::StarkGenericConfig; +use sp1_stark::StarkGenericConfig; use std::net::TcpStream; use crate::{ diff --git a/src/core/cli/microchain.rs b/src/core/cli/microchain.rs index 70bc6731..bdf78522 100644 --- a/src/core/cli/microchain.rs +++ b/src/core/cli/microchain.rs @@ -3,7 +3,7 @@ use clap::Args; use p3_baby_bear::BabyBear; use rustc_hash::FxHashMap; use serde::{Deserialize, Serialize}; -use sphinx_core::stark::StarkGenericConfig; +use sp1_stark::StarkGenericConfig; use std::{ hash::Hash, io::{Read, Write}, diff --git a/src/core/cli/proofs.rs b/src/core/cli/proofs.rs index 7f00131a..af4a6e83 100644 --- a/src/core/cli/proofs.rs +++ b/src/core/cli/proofs.rs @@ -2,11 +2,9 @@ use hashbrown::HashMap; use p3_baby_bear::BabyBear; use p3_field::{AbstractField, PrimeField32}; use serde::{Deserialize, Serialize}; -use sphinx_core::{ - stark::{ - Challenge, Com, MachineProof, OpeningProof, ShardCommitment, ShardOpenedValues, ShardProof, - }, - utils::BabyBearPoseidon2, +use sp1_stark::baby_bear_poseidon2::BabyBearPoseidon2; +use sp1_stark::{ + Challenge, Com, MachineProof, OpeningProof, ShardCommitment, ShardOpenedValues, ShardProof, Val, }; use crate::{ @@ -19,10 +17,11 @@ use crate::{ use super::{lurk_data::LurkData, microchain::CallableData, zdag::ZDag}; +// TODO: replace this with SP1's ShardProof type directly? #[derive(Serialize, Deserialize)] struct CryptoShardProof { commitment: ShardCommitment>, - opened_values: ShardOpenedValues>, + opened_values: ShardOpenedValues, Challenge>, opening_proof: OpeningProof, chip_ordering: HashMap, } diff --git a/src/core/cli/repl.rs b/src/core/cli/repl.rs index 7a329081..bd943438 100644 --- a/src/core/cli/repl.rs +++ b/src/core/cli/repl.rs @@ -12,10 +12,8 @@ use rustyline::{ validate::{ValidationContext, ValidationResult, Validator}, Completer, Editor, Helper, Highlighter, Hinter, }; -use sphinx_core::{ - stark::{LocalProver, StarkGenericConfig}, - utils::SphinxCoreOpts, -}; +use sp1_stark::{CpuProver, StarkGenericConfig}; +use sp1_stark::{MachineProver, SP1CoreOpts}; use std::{fmt::Debug, fs, io, io::Write, marker::PhantomData, process::Command, sync::Arc}; use crate::{ @@ -150,7 +148,7 @@ impl FuncIndices { pub(crate) struct Repl, C2: Chipset> { pub(crate) zstore: ZStore, pub(crate) queries: QueryRecord, - pub(crate) toplevel: Toplevel, + pub(crate) toplevel: Arc>, func_indices: FuncIndices, pub(crate) env: ZPtr, pub(crate) state: StateRcCell, @@ -190,6 +188,7 @@ impl, C2: Chipset> Repl { /// Generates a STARK proof for the latest Lurk reduction, persists it and /// returns the corresponding proof key pub(crate) fn prove_last_reduction(&mut self) -> Result { + sp1_core_machine::utils::setup_logger(); // make env DAG available so `IOProof` can carry it self.memoize_env_dag(); let Some(public_values) = self.queries.public_values.as_ref() else { @@ -219,10 +218,13 @@ impl, C2: Chipset> Repl { }; if must_prove { let challenger_v = &mut challenger_p.clone(); - let shard = Shard::new(&self.queries); - let opts = SphinxCoreOpts::default(); - let machine_proof = machine.prove::>(&pk, shard, challenger_p, opts); - machine + // FIXME: factoring this out soon + let opts = SP1CoreOpts::default(); + let shards = Shard::shard_with(self.queries.clone(), &opts); + let prover = CpuProver::new(machine); + let machine_proof = prover.prove(&pk, shards, challenger_p, opts)?; + let verifier_machine = new_machine(&self.toplevel); + verifier_machine .verify(&vk, &machine_proof, challenger_v) .expect("Proof verification failed"); let crypto_proof: CryptoProof = machine_proof.into(); diff --git a/src/core/compile.rs b/src/core/compile.rs index ca526bac..d0987b7e 100644 --- a/src/core/compile.rs +++ b/src/core/compile.rs @@ -1,3 +1,5 @@ +use std::sync::Arc; + use num_derive::FromPrimitive; use num_traits::FromPrimitive; use p3_baby_bear::BabyBear; @@ -1101,7 +1103,7 @@ pub fn compile_funcs(digests: &SymbolsDigests) -> Vec Toplevel { +pub fn build_compile_toplevel_native() -> Arc> { use super::zstore::lurk_zstore; let mut zstore = lurk_zstore(); diff --git a/src/core/eval_compiled.rs b/src/core/eval_compiled.rs index 258441b0..6ca7e613 100644 --- a/src/core/eval_compiled.rs +++ b/src/core/eval_compiled.rs @@ -1,3 +1,5 @@ +use std::sync::Arc; + use p3_baby_bear::BabyBear; use p3_field::{AbstractField, PrimeField32}; use rustc_hash::FxHashSet; @@ -87,10 +89,11 @@ fn native_lurk_funcs( /// Creates a `Toplevel` with the functions used for Lurk evaluation, also returning /// a `ZStore` with the Lurk builtins already interned. #[inline] +#[allow(clippy::type_complexity)] pub fn build_lurk_toplevel>( lang: Lang, ) -> ( - Toplevel, + Arc>, ZStore, FxHashSet, ) { @@ -118,8 +121,9 @@ pub fn build_lurk_toplevel>( } #[inline] +#[allow(clippy::type_complexity)] pub fn build_lurk_toplevel_native() -> ( - Toplevel, + Arc>, ZStore, FxHashSet, ) { diff --git a/src/core/eval_direct.rs b/src/core/eval_direct.rs index 0425a840..6327053f 100644 --- a/src/core/eval_direct.rs +++ b/src/core/eval_direct.rs @@ -1,3 +1,5 @@ +use std::sync::Arc; + use p3_baby_bear::BabyBear; use p3_field::{AbstractField, PrimeField32}; use rustc_hash::FxHashSet; @@ -78,10 +80,11 @@ fn native_lurk_funcs( /// along with it: /// * A `ZStore` with the Lurk (and `Lang`) symbols already interned /// * All the `Lang` symbols in a `FxHashSet` +#[allow(clippy::type_complexity)] pub fn build_lurk_toplevel>( lang: Lang, ) -> ( - Toplevel, + Arc>, ZStore, FxHashSet, ) { @@ -109,8 +112,9 @@ pub fn build_lurk_toplevel>( } #[inline] +#[allow(clippy::type_complexity)] pub fn build_lurk_toplevel_native() -> ( - Toplevel, + Arc>, ZStore, FxHashSet, ) { @@ -2140,7 +2144,10 @@ mod test { "ingress -> egress doesn't roundtrip" ); - let hash4_trace = hash4_chip.generate_trace(&Shard::new(&queries)); + let shards = Shard::new(queries.clone()); + assert_eq!(shards.len(), 1); + let shard = &shards[0]; + let hash4_trace = hash4_chip.generate_trace(shard); debug_constraints_collecting_queries(&hash4_chip, &[], None, &hash4_trace); }; diff --git a/src/core/stark_machine.rs b/src/core/stark_machine.rs index d77a08a2..669fcc52 100644 --- a/src/core/stark_machine.rs +++ b/src/core/stark_machine.rs @@ -1,8 +1,7 @@ +use std::sync::Arc; + use p3_baby_bear::BabyBear; -use sphinx_core::{ - stark::StarkMachine, - utils::{BabyBearPoseidon2, DIGEST_SIZE}, -}; +use sp1_stark::{baby_bear_poseidon2::BabyBearPoseidon2, StarkMachine, DIGEST_SIZE}; use crate::lair::{ chipset::Chipset, @@ -18,13 +17,14 @@ pub(crate) const NUM_PUBLIC_VALUES: usize = INPUT_SIZE + ZPTR_SIZE; /// Returns a `StarkMachine` for the Lurk toplevel, with `lurk_main` as entrypoint pub(crate) fn new_machine, C2: Chipset>( - lurk_toplevel: &Toplevel, -) -> StarkMachine> { + lurk_toplevel: &Arc>, +) -> StarkMachine> { let lurk_main_idx = lurk_toplevel.func_by_name("lurk_main").index; let lurk_main_chip = FuncChip::from_index(lurk_main_idx, lurk_toplevel); StarkMachine::new( BabyBearPoseidon2::new(), build_chip_vector(&lurk_main_chip), NUM_PUBLIC_VALUES, + true, ) } diff --git a/src/core/tests/eval_compiled.rs b/src/core/tests/eval_compiled.rs index bea1367e..ac89892d 100644 --- a/src/core/tests/eval_compiled.rs +++ b/src/core/tests/eval_compiled.rs @@ -1,9 +1,11 @@ //! Correctness tests for the Lurk evaluation model +use std::sync::Arc; + use once_cell::sync::OnceCell; use p3_baby_bear::BabyBear as F; use p3_field::AbstractField; -use sphinx_core::utils::BabyBearPoseidon2; +use sp1_stark::baby_bear_poseidon2::BabyBearPoseidon2; use crate::{ core::{ @@ -22,13 +24,14 @@ use super::run_tests; #[allow(clippy::type_complexity)] static TEST_SETUP_DATA: OnceCell<( - Toplevel, + Arc>, ZStore, BabyBearPoseidon2, )> = OnceCell::new(); +#[allow(clippy::type_complexity)] fn test_setup_data() -> &'static ( - Toplevel, + Arc>, ZStore, BabyBearPoseidon2, ) { diff --git a/src/core/tests/eval_direct.rs b/src/core/tests/eval_direct.rs index 6d9953d1..a25e11a7 100644 --- a/src/core/tests/eval_direct.rs +++ b/src/core/tests/eval_direct.rs @@ -1,9 +1,11 @@ //! Correctness tests for the Lurk evaluation model +use std::sync::Arc; + use once_cell::sync::OnceCell; use p3_baby_bear::BabyBear as F; use p3_field::AbstractField; -use sphinx_core::utils::BabyBearPoseidon2; +use sp1_stark::baby_bear_poseidon2::BabyBearPoseidon2; use crate::{ core::{ @@ -22,13 +24,14 @@ use super::run_tests; #[allow(clippy::type_complexity)] static TEST_SETUP_DATA: OnceCell<( - Toplevel, + Arc>, ZStore, BabyBearPoseidon2, )> = OnceCell::new(); +#[allow(clippy::type_complexity)] fn test_setup_data() -> &'static ( - Toplevel, + Arc>, ZStore, BabyBearPoseidon2, ) { diff --git a/src/core/tests/eval_ocaml.rs b/src/core/tests/eval_ocaml.rs index 9c6bdf2e..87b89791 100644 --- a/src/core/tests/eval_ocaml.rs +++ b/src/core/tests/eval_ocaml.rs @@ -1,6 +1,8 @@ +use std::sync::Arc; + use nom::Parser; use once_cell::sync::OnceCell; -use sphinx_core::utils::BabyBearPoseidon2; +use sp1_stark::baby_bear_poseidon2::BabyBearPoseidon2; use crate::{ core::{ @@ -24,13 +26,14 @@ use super::run_tests; #[allow(clippy::type_complexity)] static TEST_SETUP_DATA: OnceCell<( - Toplevel, + Arc>, ZStore, BabyBearPoseidon2, )> = OnceCell::new(); +#[allow(clippy::type_complexity)] fn test_setup_data() -> &'static ( - Toplevel, + Arc>, ZStore, BabyBearPoseidon2, ) { diff --git a/src/core/tests/lang_compiled.rs b/src/core/tests/lang_compiled.rs index 39c40b32..9eda1c4e 100644 --- a/src/core/tests/lang_compiled.rs +++ b/src/core/tests/lang_compiled.rs @@ -6,7 +6,7 @@ // use p3_baby_bear::BabyBear; // use p3_field::AbstractField; // use rustc_hash::FxHashSet; -// use sphinx_core::utils::BabyBearPoseidon2; +// use sp1_stark::baby_bear_poseidon2::BabyBearPoseidon2; // use crate::{ // func, diff --git a/src/core/tests/lang_direct.rs b/src/core/tests/lang_direct.rs index ffcb64c9..9fe0dce7 100644 --- a/src/core/tests/lang_direct.rs +++ b/src/core/tests/lang_direct.rs @@ -1,11 +1,13 @@ //! Tests for the correct coupling of custom coroutines and gadgets +use std::sync::Arc; + use once_cell::sync::OnceCell; use p3_air::AirBuilder; use p3_baby_bear::BabyBear; use p3_field::AbstractField; use rustc_hash::FxHashSet; -use sphinx_core::utils::BabyBearPoseidon2; +use sp1_stark::baby_bear_poseidon2::BabyBearPoseidon2; use crate::{ core::{ @@ -24,6 +26,7 @@ use crate::{ use super::run_tests; +#[derive(Clone)] struct SquareGadget; impl Chipset for SquareGadget { @@ -125,7 +128,7 @@ type F = BabyBear; #[allow(clippy::type_complexity)] static TEST_SETUP_DATA: OnceCell<( FxHashSet, - Toplevel, + Arc>, ZStore, BabyBearPoseidon2, )> = OnceCell::new(); @@ -133,7 +136,7 @@ static TEST_SETUP_DATA: OnceCell<( #[allow(clippy::type_complexity)] fn test_setup_data() -> &'static ( FxHashSet, - Toplevel, + Arc>, ZStore, BabyBearPoseidon2, ) { diff --git a/src/core/tests/mod.rs b/src/core/tests/mod.rs index 6b6ead71..c901a8c1 100644 --- a/src/core/tests/mod.rs +++ b/src/core/tests/mod.rs @@ -4,19 +4,22 @@ mod eval_ocaml; mod lang_compiled; mod lang_direct; +use std::sync::Arc; + use p3_baby_bear::BabyBear as F; use p3_field::AbstractField; -use sphinx_core::{stark::StarkMachine, utils::BabyBearPoseidon2}; +use sp1_stark::baby_bear_poseidon2::BabyBearPoseidon2; +use sp1_stark::{StarkGenericConfig, StarkMachine}; +use crate::air::debug::debug_chip_constraints_and_queries_with_sharding; use crate::{ - air::debug::debug_chip_constraints_and_queries_with_sharding, core::{ chipset::LurkChip, zstore::{ZPtr, ZStore}, }, lair::{ chipset::Chipset, - execute::{QueryRecord, Shard, ShardingConfig}, + execute::{QueryRecord, Shard}, func_chip::FuncChip, lair_chip::{ build_chip_vector_from_lair_chips, build_lair_chip_vector, LairMachineProgram, @@ -28,11 +31,13 @@ use crate::{ fn run_tests>( zptr: &ZPtr, env: &ZPtr, - toplevel: &Toplevel, + toplevel: &Arc>, zstore: &mut ZStore, expected_cloj: fn(&mut ZStore) -> ZPtr, config: BabyBearPoseidon2, ) { + sp1_core_machine::utils::setup_logger(); + let mut record = QueryRecord::new(toplevel); let hashes3 = std::mem::take(&mut zstore.hashes3_diff); let hashes4 = std::mem::take(&mut zstore.hashes4_diff); @@ -47,28 +52,35 @@ fn run_tests>( let lurk_main = FuncChip::from_name("lurk_main", toplevel); let result = toplevel - .execute(lurk_main.func, &input, &mut record, None) + .execute(&lurk_main.func, &input, &mut record, None) .unwrap(); assert_eq!(result.as_ref(), &expected_cloj(zstore).flatten()); let lair_chips = build_lair_chip_vector(&lurk_main); - // debug constraints and verify lookup queries with and without sharding + // debug constraints and verify lookup queries with default sharding and with very aggressive sharding + // TODO(#437): This needs to be updated when sharding is revisited + let record = Arc::new(record); debug_chip_constraints_and_queries_with_sharding(&record, &lair_chips, None); - debug_chip_constraints_and_queries_with_sharding( - &record, - &lair_chips, - Some(ShardingConfig { max_shard_size: 4 }), - ); + // debug_chip_constraints_and_queries_with_sharding( + // &record, + // &lair_chips, + // Some(SP1CoreOpts { + // shard_size: 16, + // ..Default::default() + // }), + // ); - // debug constraints with Sphinx - let full_shard = Shard::new(&record); + // debug constraints with SP1 + let full_shard = Shard::new_arc(&record); let machine = StarkMachine::new( config, build_chip_vector_from_lair_chips(lair_chips), record.expect_public_values().len(), + true, ); let (pk, _) = machine.setup(&LairMachineProgram); - machine.debug_constraints(&pk, full_shard); + let mut challenger_d = machine.config().challenger(); + machine.debug_constraints(&pk, full_shard, &mut challenger_d); } diff --git a/src/core/u64.rs b/src/core/u64.rs index 234b5b4b..99985fd4 100644 --- a/src/core/u64.rs +++ b/src/core/u64.rs @@ -223,9 +223,11 @@ impl Chipset for U64 { #[cfg(test)] mod test { + use std::sync::Arc; + use p3_baby_bear::BabyBear as F; use p3_field::AbstractField; - use sphinx_core::{stark::StarkMachine, utils::BabyBearPoseidon2}; + use sp1_stark::{baby_bear_poseidon2::BabyBearPoseidon2, StarkGenericConfig, StarkMachine}; use crate::{ air::debug::debug_chip_constraints_and_queries_with_sharding, @@ -241,7 +243,7 @@ mod test { #[test] fn u64_add_test() { - sphinx_core::utils::setup_logger(); + sp1_core_machine::utils::setup_logger(); let add_func = func!( fn add(a: [8], b: [8]): [8] { @@ -283,6 +285,7 @@ mod test { ); let lair_chips = build_lair_chip_vector(&add_chip); + let queries = Arc::new(queries); debug_chip_constraints_and_queries_with_sharding(&queries, &lair_chips, None); let config = BabyBearPoseidon2::new(); @@ -290,16 +293,18 @@ mod test { config, build_chip_vector(&add_chip), queries.expect_public_values().len(), + true, ); let (pk, _vk) = machine.setup(&LairMachineProgram); - let shard = Shard::new(&queries); - machine.debug_constraints(&pk, shard.clone()); + let shard = Shard::new_arc(&queries); + let mut challenger = machine.config().challenger(); + machine.debug_constraints(&pk, shard, &mut challenger); } #[test] fn u64_sub_test() { - sphinx_core::utils::setup_logger(); + sp1_core_machine::utils::setup_logger(); let sub_func = func!( fn sub(a: [8], b: [8]): [8] { @@ -341,6 +346,7 @@ mod test { ); let lair_chips = build_lair_chip_vector(&sub_chip); + let queries = Arc::new(queries); debug_chip_constraints_and_queries_with_sharding(&queries, &lair_chips, None); let config = BabyBearPoseidon2::new(); @@ -348,16 +354,18 @@ mod test { config, build_chip_vector(&sub_chip), queries.expect_public_values().len(), + true, ); let (pk, _vk) = machine.setup(&LairMachineProgram); - let shard = Shard::new(&queries); - machine.debug_constraints(&pk, shard.clone()); + let shard = Shard::new_arc(&queries); + let mut challenger = machine.config().challenger(); + machine.debug_constraints(&pk, shard, &mut challenger); } #[test] fn u64_mul_test() { - sphinx_core::utils::setup_logger(); + sp1_core_machine::utils::setup_logger(); let mul_func = func!( fn mul(a: [8], b: [8]): [8] { @@ -403,6 +411,7 @@ mod test { ); let lair_chips = build_lair_chip_vector(&mul_chip); + let queries = Arc::new(queries); debug_chip_constraints_and_queries_with_sharding(&queries, &lair_chips, None); let config = BabyBearPoseidon2::new(); @@ -410,16 +419,18 @@ mod test { config, build_chip_vector(&mul_chip), queries.expect_public_values().len(), + true, ); let (pk, _vk) = machine.setup(&LairMachineProgram); - let shard = Shard::new(&queries); - machine.debug_constraints(&pk, shard.clone()); + let shard = Shard::new_arc(&queries); + let mut challenger = machine.config().challenger(); + machine.debug_constraints(&pk, shard, &mut challenger); } #[test] fn u64_divrem_test() { - sphinx_core::utils::setup_logger(); + sp1_core_machine::utils::setup_logger(); let divrem_func = func!( fn divrem(a: [8], b: [8]): [16] { @@ -479,6 +490,7 @@ mod test { ); let lair_chips = build_lair_chip_vector(&divrem_chip); + let queries = Arc::new(queries); debug_chip_constraints_and_queries_with_sharding(&queries, &lair_chips, None); let config = BabyBearPoseidon2::new(); @@ -486,16 +498,18 @@ mod test { config, build_chip_vector(&divrem_chip), queries.expect_public_values().len(), + true, ); let (pk, _vk) = machine.setup(&LairMachineProgram); - let shard = Shard::new(&queries); - machine.debug_constraints(&pk, shard.clone()); + let shard = Shard::new_arc(&queries); + let mut challenger = machine.config().challenger(); + machine.debug_constraints(&pk, shard, &mut challenger); } #[test] fn u64_lessthan_test() { - sphinx_core::utils::setup_logger(); + sp1_core_machine::utils::setup_logger(); let lessthan_func = func!( fn lessthan(a: [8], b: [8]): [1] { @@ -534,6 +548,7 @@ mod test { assert_eq!(out.as_ref(), &[f(1)]); let lair_chips = build_lair_chip_vector(&lessthan_chip); + let queries = Arc::new(queries); debug_chip_constraints_and_queries_with_sharding(&queries, &lair_chips, None); let config = BabyBearPoseidon2::new(); @@ -541,16 +556,18 @@ mod test { config, build_chip_vector(&lessthan_chip), queries.expect_public_values().len(), + true, ); let (pk, _vk) = machine.setup(&LairMachineProgram); - let shard = Shard::new(&queries); - machine.debug_constraints(&pk, shard.clone()); + let shard = Shard::new_arc(&queries); + let mut challenger = machine.config().challenger(); + machine.debug_constraints(&pk, shard, &mut challenger); } #[test] fn u64_iszero_test() { - sphinx_core::utils::setup_logger(); + sp1_core_machine::utils::setup_logger(); let iszero_func = func!( fn iszero(a: [8]): [1] { @@ -571,6 +588,7 @@ mod test { assert_eq!(out.as_ref(), &[f(1)]); let lair_chips = build_lair_chip_vector(&iszero_chip); + let queries = Arc::new(queries); debug_chip_constraints_and_queries_with_sharding(&queries, &lair_chips, None); let config = BabyBearPoseidon2::new(); @@ -578,11 +596,13 @@ mod test { config, build_chip_vector(&iszero_chip), queries.expect_public_values().len(), + true, ); let (pk, _vk) = machine.setup(&LairMachineProgram); - let shard = Shard::new(&queries); - machine.debug_constraints(&pk, shard.clone()); + let shard = Shard::new_arc(&queries); + let mut challenger = machine.config().challenger(); + machine.debug_constraints(&pk, shard, &mut challenger); let mut queries = QueryRecord::new(&toplevel); let args = &[f(0), f(0), f(0), f(123), f(0), f(0), f(0), f(0)]; @@ -592,6 +612,7 @@ mod test { assert_eq!(out.as_ref(), &[f(0)]); let lair_chips = build_lair_chip_vector(&iszero_chip); + let queries = Arc::new(queries); debug_chip_constraints_and_queries_with_sharding(&queries, &lair_chips, None); let config = BabyBearPoseidon2::new(); @@ -599,10 +620,12 @@ mod test { config, build_chip_vector(&iszero_chip), queries.expect_public_values().len(), + true, ); let (pk, _vk) = machine.setup(&LairMachineProgram); - let shard = Shard::new(&queries); - machine.debug_constraints(&pk, shard.clone()); + let shard = Shard::new_arc(&queries); + let mut challenger = machine.config().challenger(); + machine.debug_constraints(&pk, shard, &mut challenger); } } diff --git a/src/gadgets/big_num/cmp.rs b/src/gadgets/big_num/cmp.rs index 738c9fa8..ea6b9946 100644 --- a/src/gadgets/big_num/cmp.rs +++ b/src/gadgets/big_num/cmp.rs @@ -5,7 +5,7 @@ use crate::gadgets::unsigned::field::FieldToWord32; use crate::gadgets::unsigned::WORD32_SIZE; use p3_air::AirBuilder; use p3_field::{AbstractField, PrimeField32}; -use sphinx_derive::AlignedBorrow; +use sp1_derive::AlignedBorrow; use std::array; use std::cmp::Ordering; use std::iter::zip; diff --git a/src/gadgets/bytes/builder.rs b/src/gadgets/bytes/builder.rs index 1d77296f..ba446534 100644 --- a/src/gadgets/bytes/builder.rs +++ b/src/gadgets/bytes/builder.rs @@ -10,7 +10,7 @@ use p3_field::{AbstractField, PrimeField32}; /// When evaluating the Air constraints, we simply log all the requested byte relations /// in this struct. /// -/// Note that in the context of Sphinx, this structure will only be used when initializing the +/// Note that in the context of SP1, this structure will only be used when initializing the /// prover, since the constraints will first be evaluated by the `SymbolicAirBuilder` to gather /// all the lookup interactions. During proving and specifically quotient evaluation, /// the Air constraints should run using `ByteAirRecord` where all operations are no-ops. diff --git a/src/gadgets/bytes/trace.rs b/src/gadgets/bytes/trace.rs index 7216d906..b40b09a9 100644 --- a/src/gadgets/bytes/trace.rs +++ b/src/gadgets/bytes/trace.rs @@ -8,7 +8,7 @@ use p3_field::{AbstractField, Field, PrimeField32}; use p3_matrix::dense::RowMajorMatrix; use p3_matrix::Matrix; use p3_maybe_rayon::prelude::*; -use sphinx_derive::AlignedBorrow; +use sp1_derive::AlignedBorrow; use std::borrow::{Borrow, BorrowMut}; use std::marker::PhantomData; use std::mem::size_of; diff --git a/src/gadgets/unsigned/add.rs b/src/gadgets/unsigned/add.rs index bdc36e9e..87d7b41e 100644 --- a/src/gadgets/unsigned/add.rs +++ b/src/gadgets/unsigned/add.rs @@ -5,7 +5,7 @@ use num_traits::ops::overflowing::{OverflowingAdd, OverflowingSub}; use num_traits::{ToBytes, Unsigned}; use p3_air::AirBuilder; use p3_field::{AbstractField, Field}; -use sphinx_derive::AlignedBorrow; +use sp1_derive::AlignedBorrow; use std::array; use std::marker::PhantomData; diff --git a/src/gadgets/unsigned/cmp.rs b/src/gadgets/unsigned/cmp.rs index 4d612e5b..6062609e 100644 --- a/src/gadgets/unsigned/cmp.rs +++ b/src/gadgets/unsigned/cmp.rs @@ -3,7 +3,7 @@ use crate::gadgets::unsigned::Word; use num_traits::{ToBytes, Unsigned}; use p3_air::AirBuilder; use p3_field::{AbstractField, PrimeField}; -use sphinx_derive::AlignedBorrow; +use sp1_derive::AlignedBorrow; use std::array; use std::cmp::Ordering; use std::iter::zip; diff --git a/src/gadgets/unsigned/div_rem.rs b/src/gadgets/unsigned/div_rem.rs index ada54580..18f4b490 100644 --- a/src/gadgets/unsigned/div_rem.rs +++ b/src/gadgets/unsigned/div_rem.rs @@ -9,7 +9,7 @@ use num_traits::ops::overflowing::OverflowingSub; use num_traits::{FromBytes, ToBytes, Unsigned}; use p3_air::AirBuilder; use p3_field::PrimeField; -use sphinx_derive::AlignedBorrow; +use sp1_derive::AlignedBorrow; use std::cmp::Ordering; use std::ops::Div; diff --git a/src/gadgets/unsigned/field.rs b/src/gadgets/unsigned/field.rs index 728ca507..3532d85e 100644 --- a/src/gadgets/unsigned/field.rs +++ b/src/gadgets/unsigned/field.rs @@ -2,7 +2,7 @@ use crate::gadgets::bytes::{ByteAirRecord, ByteRecord}; use num_traits::ToBytes; use p3_air::AirBuilder; use p3_field::{AbstractField, PrimeField32}; -use sphinx_derive::AlignedBorrow; +use sp1_derive::AlignedBorrow; use super::{UncheckedWord, Word32, WORD32_SIZE}; diff --git a/src/gadgets/unsigned/is_zero.rs b/src/gadgets/unsigned/is_zero.rs index 4ee14e2e..798fa202 100644 --- a/src/gadgets/unsigned/is_zero.rs +++ b/src/gadgets/unsigned/is_zero.rs @@ -3,7 +3,7 @@ use itertools::enumerate; use num_traits::{ToBytes, Zero}; use p3_air::AirBuilder; use p3_field::{AbstractField, Field}; -use sphinx_derive::AlignedBorrow; +use sp1_derive::AlignedBorrow; use std::array; use std::iter::zip; diff --git a/src/gadgets/unsigned/less_than.rs b/src/gadgets/unsigned/less_than.rs index fc75d1f5..06656df4 100644 --- a/src/gadgets/unsigned/less_than.rs +++ b/src/gadgets/unsigned/less_than.rs @@ -3,7 +3,7 @@ use crate::gadgets::unsigned::Word; use num_traits::{ToBytes, Unsigned}; use p3_air::AirBuilder; use p3_field::{AbstractField, PrimeField}; -use sphinx_derive::AlignedBorrow; +use sp1_derive::AlignedBorrow; use std::array; use std::iter::zip; diff --git a/src/gadgets/unsigned/mod.rs b/src/gadgets/unsigned/mod.rs index 91abb56b..ec05db79 100644 --- a/src/gadgets/unsigned/mod.rs +++ b/src/gadgets/unsigned/mod.rs @@ -2,7 +2,7 @@ use crate::gadgets::bytes::{ByteAirRecord, ByteRecord}; use core::slice; use num_traits::{ToBytes, Unsigned}; use p3_field::AbstractField; -use sphinx_derive::AlignedBorrow; +use sp1_derive::AlignedBorrow; use std::array; use std::fmt::Debug; use std::iter::zip; diff --git a/src/gadgets/unsigned/mul.rs b/src/gadgets/unsigned/mul.rs index 6f15c2a1..b5226493 100644 --- a/src/gadgets/unsigned/mul.rs +++ b/src/gadgets/unsigned/mul.rs @@ -4,7 +4,7 @@ use itertools::{enumerate, izip}; use num_traits::{FromBytes, ToBytes, Unsigned}; use p3_air::AirBuilder; use p3_field::AbstractField; -use sphinx_derive::AlignedBorrow; +use sp1_derive::AlignedBorrow; use std::array; /// Witness variables for proving the correctness of a multiplication. diff --git a/src/lair/air.rs b/src/lair/air.rs index 044ebdf8..c30a913c 100644 --- a/src/lair/air.rs +++ b/src/lair/air.rs @@ -1,7 +1,7 @@ use p3_air::{Air, AirBuilder}; use p3_field::Field; use p3_matrix::Matrix; -use std::{borrow::Borrow, fmt::Debug}; +use std::{borrow::Borrow, fmt::Debug, sync::Arc}; use crate::{ air::builder::{LookupBuilder, ProvideRecord, RequireRecord}, @@ -130,13 +130,14 @@ fn eval_depth( out.extend(dep_depth.iter().cloned()); } -impl, C2: Chipset> Air for FuncChip<'_, AB::F, C1, C2> +impl, C2: Chipset> Air for FuncChip where AB: AirBuilder + LookupBuilder, ::Var: Debug, + AB::F: Field, { fn eval(&self, builder: &mut AB) { - self.func.eval(builder, self.toplevel, self.layout_sizes) + self.func.eval(builder, &self.toplevel, self.layout_sizes) } } @@ -513,7 +514,7 @@ impl Ctrl { let map_len = map.len(); let init_state = index.save(); - let mut process = |block: &Block| { + let mut process = |block: &Arc>| { let sel = block.return_sel::(local); block.eval(builder, local, &sel, index, map, toplevel, depth); map.truncate(map_len); @@ -596,7 +597,10 @@ mod tests { None, ) .unwrap(); - let factorial_trace = factorial_chip.generate_trace(&Shard::new(&queries)); + let shards = Shard::new(queries); + assert_eq!(shards.len(), 1); + let shard = &shards[0]; + let factorial_trace = factorial_chip.generate_trace(shard); let _ = debug_constraints_collecting_queries(&factorial_chip, &[], None, &factorial_trace); let fib_chip = FuncChip::from_name("fib", &toplevel); @@ -604,7 +608,10 @@ mod tests { toplevel .execute_by_name("fib", &[F::from_canonical_usize(7)], &mut queries, None) .unwrap(); - let fib_trace = fib_chip.generate_trace(&Shard::new(&queries)); + let shards = Shard::new(queries); + assert_eq!(shards.len(), 1); + let shard = &shards[0]; + let fib_trace = fib_chip.generate_trace(shard); let _ = debug_constraints_collecting_queries(&fib_chip, &[], None, &fib_trace); } @@ -617,7 +624,10 @@ mod tests { toplevel .execute_by_name("fib", args, &mut queries, None) .unwrap(); - let fib_trace = fib_chip.generate_trace(&Shard::new(&queries)); + let shards = Shard::new(queries); + assert_eq!(shards.len(), 1); + let shard = &shards[0]; + let fib_trace = fib_chip.generate_trace(shard); let _ = debug_constraints_collecting_queries(&fib_chip, &[], None, &fib_trace); } @@ -655,7 +665,10 @@ mod tests { toplevel .execute_by_name("not", args, &mut queries, None) .unwrap(); - let not_trace = not_chip.generate_trace(&Shard::new(&queries)); + let shards = Shard::new(queries.clone()); + assert_eq!(shards.len(), 1); + let shard = &shards[0]; + let not_trace = not_chip.generate_trace(shard); let not_width = not_chip.width(); #[rustfmt::skip] @@ -665,6 +678,19 @@ mod tests { 1, 8, 0, 0, 1, 1761607681, 0, 1, 2, 0, 1, 0, 1, 0, 1, 1, 3, 1, 0, 0, 1, 1, 0, 1, + // dummy + 4, 0, 0, 0, 0, 0, 0, 0, + 5, 0, 0, 0, 0, 0, 0, 0, + 6, 0, 0, 0, 0, 0, 0, 0, + 7, 0, 0, 0, 0, 0, 0, 0, + 8, 0, 0, 0, 0, 0, 0, 0, + 9, 0, 0, 0, 0, 0, 0, 0, + 10, 0, 0, 0, 0, 0, 0, 0, + 11, 0, 0, 0, 0, 0, 0, 0, + 12, 0, 0, 0, 0, 0, 0, 0, + 13, 0, 0, 0, 0, 0, 0, 0, + 14, 0, 0, 0, 0, 0, 0, 0, + 15, 0, 0, 0, 0, 0, 0, 0, ] .into_iter() .map(F::from_canonical_u32) @@ -690,7 +716,10 @@ mod tests { toplevel .execute_by_name("eq", args, &mut queries, None) .unwrap(); - let eq_trace = eq_chip.generate_trace(&Shard::new(&queries)); + let shards = Shard::new(queries.clone()); + assert_eq!(shards.len(), 1); + let shard = &shards[0]; + let eq_trace = eq_chip.generate_trace(shard); let eq_width = eq_chip.width(); #[rustfmt::skip] @@ -700,6 +729,19 @@ mod tests { 1, 4, 4, 1, 0, 1, 0, 1, 1, 2, 0, 3, 0, 0, 1, 671088640, 0, 1, 3, 0, 0, 1, 0, 1, 0, 1, 1, + // dummy + 4, 0, 0, 0, 0, 0, 0, 0, 0, + 5, 0, 0, 0, 0, 0, 0, 0, 0, + 6, 0, 0, 0, 0, 0, 0, 0, 0, + 7, 0, 0, 0, 0, 0, 0, 0, 0, + 8, 0, 0, 0, 0, 0, 0, 0, 0, + 9, 0, 0, 0, 0, 0, 0, 0, 0, + 10, 0, 0, 0, 0, 0, 0, 0, 0, + 11, 0, 0, 0, 0, 0, 0, 0, 0, + 12, 0, 0, 0, 0, 0, 0, 0, 0, + 13, 0, 0, 0, 0, 0, 0, 0, 0, + 14, 0, 0, 0, 0, 0, 0, 0, 0, + 15, 0, 0, 0, 0, 0, 0, 0, 0, ] .into_iter() .map(F::from_canonical_u32) @@ -745,7 +787,10 @@ mod tests { .execute_by_name("if_many", args, &mut queries, None) .unwrap(); - let if_many_trace = if_many_chip.generate_trace(&Shard::new(&queries)); + let shards = Shard::new(queries.clone()); + assert_eq!(shards.len(), 1); + let shard = &shards[0]; + let if_many_trace = if_many_chip.generate_trace(shard); let if_many_width = if_many_chip.width(); #[rustfmt::skip] @@ -756,6 +801,19 @@ mod tests { 1, 1, 3, 8, 2, 1, 0, 1, 1, 0, 0, 0, 0, 1, 2, 0, 0, 4, 1, 1, 0, 1, 0, 0, 1509949441, 0, 0, 1, 3, 0, 0, 0, 9, 1, 0, 1, 0, 0, 0, 447392427, 0, 1, + // dummy + 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ] .into_iter() .map(F::from_canonical_u32) @@ -818,7 +876,10 @@ mod tests { .execute_by_name("match_many", args, &mut queries, None) .unwrap(); - let match_many_trace = match_many_chip.generate_trace(&Shard::new(&queries)); + let shards = Shard::new(queries.clone()); + assert_eq!(shards.len(), 1); + let shard = &shards[0]; + let match_many_trace = match_many_chip.generate_trace(shard); let match_many_width = match_many_chip.width(); #[rustfmt::skip] @@ -834,6 +895,14 @@ mod tests { // dummies 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ] .into_iter() .map(F::from_canonical_u32) @@ -867,13 +936,32 @@ mod tests { .execute_by_name("assert", args, &mut queries, None) .unwrap(); let chip = FuncChip::from_name("assert", &toplevel); - let trace = chip.generate_trace(&Shard::new(&queries)); + let shards = Shard::new(queries.clone()); + assert_eq!(shards.len(), 1); + let shard = &shards[0]; + let trace = chip.generate_trace(shard); #[rustfmt::skip] let expected_trace = RowMajorMatrix::new( [ // nonce, 4 inputs, 4 output, last nonce, last count, 6 multiplications for the two `contains!`, 4 coefficients for `assert_ne!`, selector 0, 2, 4, 6, 8, 2, 4, 6, 8, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, + // dummy + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ] .into_iter() .map(F::from_canonical_u32) @@ -916,7 +1004,10 @@ mod tests { .execute_by_name("test", args, &mut queries, None) .unwrap(); let chip = FuncChip::from_name("test", &toplevel); - let trace = chip.generate_trace(&Shard::new(&queries)); + let shards = Shard::new(queries.clone()); + assert_eq!(shards.len(), 1); + let shard = &shards[0]; + let trace = chip.generate_trace(shard); #[rustfmt::skip] let expected_trace = RowMajorMatrix::new( @@ -929,6 +1020,19 @@ mod tests { 1, 2, 1, 0, 1, 0, 0, 0, 1, 0, 2, 3, 1, 0, 1, 0, 0, 0, 1, 0, 3, 4, 1, 0, 1, 2, 0, 0, 1, 0, + // dummy + 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, ] .into_iter() .map(F::from_canonical_u32) @@ -955,10 +1059,29 @@ mod tests { toplevel .execute_by_name("range_test", args, &mut queries, None) .unwrap(); - let trace = range_chip.generate_trace(&Shard::new(&queries)); + let shards = Shard::new(queries.clone()); + assert_eq!(shards.len(), 1); + let shard = &shards[0]; + let trace = range_chip.generate_trace(shard); #[rustfmt::skip] let expected_trace = [ 0, 100, 12, 64, 0, 1, 0, 0, 1, 0, 0, 1, 1, + // dummy + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ] .into_iter() .map(field_from_u32) diff --git a/src/lair/bytecode.rs b/src/lair/bytecode.rs index c9afcdc4..87f7e5cf 100644 --- a/src/lair/bytecode.rs +++ b/src/lair/bytecode.rs @@ -4,6 +4,8 @@ //! References are index-based, thought of as positions in a stack from a stack //! machine. +use std::sync::Arc; + use super::{map::Map, List, Name}; /// The type for Lair operations @@ -72,7 +74,7 @@ pub struct Block { pub enum Ctrl { /// `Choose(x, cases)` non-deterministically chooses which case to execute based on a value `x` /// The third item is the list of unique branches, needed for `eval` - Choose(usize, Cases, List>), // TODO use Arc or indices so that blocks are not duplicated + Choose(usize, Cases, List>>), /// `ChooseMany(x, cases)` non-deterministically chooses which case to execute based on an array `x` ChooseMany(List, Cases, F>), /// Contains the variables whose bindings will construct the output of the @@ -86,24 +88,24 @@ pub enum Ctrl { /// is encoded as its own block #[derive(Clone, Debug, Eq, PartialEq)] pub struct Cases { - pub(crate) branches: Map>, - pub(crate) default: Option>>, + pub(crate) branches: Map>>, + pub(crate) default: Option>>, } impl Cases { /// Returns the block mapped from key `f` #[inline] - pub fn match_case(&self, k: &K) -> Option<&Block> { - self.branches.get(k).or(self.default.as_deref()) + pub fn match_case(&self, k: &K) -> Option<&Arc>> { + self.branches.get(k).or(self.default.as_ref()) } /// Returns the block at a given index #[inline] - pub fn get_index(&self, idx: usize) -> Option<&Block> { + pub fn get_index(&self, idx: usize) -> Option<&Arc>> { self.branches .get_index(idx) .map(|(_, b)| b) - .or(self.default.as_deref()) + .or(self.default.as_ref()) } /// Returns the block index given its respective matching key. If there's no diff --git a/src/lair/chipset.rs b/src/lair/chipset.rs index 435e1125..d9fb8adc 100644 --- a/src/lair/chipset.rs +++ b/src/lair/chipset.rs @@ -6,7 +6,7 @@ use crate::air::builder::{LookupBuilder, Record, RequireRecord}; use super::execute::QueryRecord; -pub trait Chipset: Sync { +pub trait Chipset: Clone + 'static + Send + Sync { fn input_size(&self) -> usize; fn output_size(&self) -> usize; @@ -35,7 +35,7 @@ pub trait Chipset: Sync { fn populate_witness(&self, _input: &[F], _witness: &mut [F]) -> Vec; #[allow(clippy::too_many_arguments)] - fn eval + LookupBuilder>( + fn eval( &self, builder: &mut AB, is_real: AB::Expr, @@ -43,10 +43,12 @@ pub trait Chipset: Sync { witness: &[AB::Var], nonce: AB::Expr, requires: &[RequireRecord], - ) -> Vec; + ) -> Vec + where + AB: AirBuilder + LookupBuilder; } -impl, C2: Chipset> Chipset for &Either { +impl, C2: Chipset> Chipset for Either { fn input_size(&self) -> usize { match self { Either::Left(c) => c.input_size(), @@ -105,7 +107,7 @@ impl, C2: Chipset> Chipset for &Either { } } - fn eval + LookupBuilder>( + fn eval( &self, builder: &mut AB, is_real: AB::Expr, @@ -113,7 +115,10 @@ impl, C2: Chipset> Chipset for &Either { witness: &[AB::Var], nonce: AB::Expr, requires: &[RequireRecord], - ) -> Vec { + ) -> Vec + where + AB: AirBuilder + LookupBuilder, + { match self { Either::Left(c) => c.eval(builder, is_real, input, witness, nonce, requires), Either::Right(c) => c.eval(builder, is_real, input, witness, nonce, requires), @@ -121,7 +126,7 @@ impl, C2: Chipset> Chipset for &Either { } } -#[derive(Default)] +#[derive(Clone, Default)] pub struct NoChip; impl Chipset for NoChip { diff --git a/src/lair/execute.rs b/src/lair/execute.rs index 6674f003..5cc2a9f9 100644 --- a/src/lair/execute.rs +++ b/src/lair/execute.rs @@ -3,8 +3,8 @@ use hashbrown::HashMap; use itertools::Itertools; use p3_field::{AbstractField, PrimeField32}; use rustc_hash::FxHashMap; -use sphinx_core::stark::{Indexed, MachineRecord}; -use std::ops::Range; +use sp1_stark::{MachineRecord, SP1CoreOpts}; +use std::{ops::Range, sync::Arc}; use crate::{ air::builder::Record, @@ -63,7 +63,7 @@ pub struct DebugData { pub(crate) breakpoints: Vec, } -#[derive(Debug, Clone, Eq, PartialEq)] +#[derive(Default, Debug, Clone, Eq, PartialEq)] pub struct QueryRecord { pub(crate) public_values: Option>, pub(crate) func_queries: Vec>, @@ -75,45 +75,86 @@ pub struct QueryRecord { } #[derive(Default, Clone, Debug, Eq, PartialEq)] -pub struct Shard<'a, F: PrimeField32> { +pub struct Shard { pub(crate) index: u32, - // TODO: remove this `Option` once Sphinx no longer requires `Default` - pub(crate) queries: Option<&'a QueryRecord>, - pub(crate) shard_config: ShardingConfig, + pub(crate) queries: Arc>, + pub(crate) opts: SP1CoreOpts, } -impl<'a, F: PrimeField32> Shard<'a, F> { - /// Creates a new initial shard from the given `QueryRecord`. - /// - /// # Note +impl Shard { + /// Creates a set of shards from the given `QueryRecord`, using default sharding parameters. /// - /// Make sure to call `.shard()` on a `Shard` created by `new` when generating - /// the traces, otherwise you will only get the first shard's trace. + /// Use `shard_with` if you need a non-default `SP1CoreOpts` config. + #[inline] + pub fn new(queries: QueryRecord) -> Vec { + Self::shard_with(queries, &SP1CoreOpts::default()) + } + #[inline] - pub fn new(queries: &'a QueryRecord) -> Self { - Shard { - index: 0, - queries: queries.into(), - shard_config: ShardingConfig::default(), + pub fn new_arc(queries: &Arc>) -> Vec { + Self::shard_with_arc(queries, &SP1CoreOpts::default()) + } + + /// Explicitly shard queries according to the given `SP1CoreOpts` config. + pub fn shard_with(queries: QueryRecord, config: &SP1CoreOpts) -> Vec { + let queries = Arc::new(queries); + Self::shard_with_arc(&queries, config) + } + + pub fn shard_with_arc(queries: &Arc>, config: &SP1CoreOpts) -> Vec { + let shard_size = config.shard_size; + let max_num_func_rows: usize = queries + .func_queries + .iter() + .map(|q| q.len()) + .max() + .unwrap_or_default(); + // TODO: This snippet or equivalent is needed for memory sharding + // let max_num_mem_rows: usize = queries + // .mem_queries + // .iter() + // .map(|q| q.len()) + // .max() + // .unwrap_or_default(); + // let max_num_rows = max_num_func_rows.max(max_num_mem_rows); + let max_num_rows = max_num_func_rows; + + let remainder = max_num_rows % shard_size; + let num_shards = max_num_rows / shard_size + if remainder > 0 { 1 } else { 0 }; + + // TODO(#437): Proofs with >1 shard need a workaround + assert!( + num_shards == 1, + "Proofs of long computations are temporarily broken" + ); + + let mut shards = Vec::with_capacity(num_shards); + for shard_index in 0..num_shards { + shards.push(Shard { + index: shard_index as u32, + queries: queries.clone(), + opts: *config, + }); } + shards } #[inline] pub fn queries(&self) -> &QueryRecord { - self.queries.expect("Missing query record reference") + &self.queries } pub fn get_func_range(&self, func_index: usize) -> Range { let num_func_queries = self.queries().func_queries[func_index].len(); let shard_idx = self.index as usize; - let max_shard_size = self.shard_config.max_shard_size as usize; + let max_shard_size = self.opts.shard_size; shard_idx * max_shard_size..((shard_idx + 1) * max_shard_size).min(num_func_queries) } pub fn get_mem_range(&self, mem_chip_idx: usize) -> Range { let num_mem_queries = self.queries().mem_queries[mem_chip_idx].len(); let shard_idx = self.index as usize; - let max_shard_size = self.shard_config.max_shard_size as usize; + let max_shard_size = self.opts.shard_size; shard_idx * max_shard_size..((shard_idx + 1) * max_shard_size).min(num_mem_queries) } @@ -121,20 +162,14 @@ impl<'a, F: PrimeField32> Shard<'a, F> { pub(crate) fn expect_public_values(&self) -> &[F] { self.queries().expect_public_values() } -} -impl Indexed for Shard<'_, F> { - fn index(&self) -> u32 { + pub fn index(&self) -> u32 { self.index } } -impl MachineRecord for Shard<'_, F> { - type Config = ShardingConfig; - - fn set_index(&mut self, index: u32) { - self.index = index - } +impl MachineRecord for Shard { + type Config = SP1CoreOpts; // FIXME fn stats(&self) -> HashMap { // TODO: use `IndexMap` instead so the original insertion order is kept @@ -183,38 +218,6 @@ impl MachineRecord for Shard<'_, F> { // just a no-op because `generate_dependencies` is a no-op } - fn shard(self, config: &Self::Config) -> Vec { - let queries = self.queries(); - let shard_size = config.max_shard_size as usize; - let max_num_func_rows: usize = queries - .func_queries - .iter() - .map(|q| q.len()) - .max() - .unwrap_or_default(); - // TODO: This snippet or equivalent is needed for memory sharding - // let max_num_mem_rows: usize = queries - // .mem_queries - // .iter() - // .map(|q| q.len()) - // .max() - // .unwrap_or_default(); - // let max_num_rows = max_num_func_rows.max(max_num_mem_rows); - let max_num_rows = max_num_func_rows; - - let remainder = max_num_rows % shard_size; - let num_shards = max_num_rows / shard_size + if remainder > 0 { 1 } else { 0 }; - let mut shards = Vec::with_capacity(num_shards); - for shard_index in 0..num_shards { - shards.push(Shard { - index: shard_index as u32, - queries: self.queries, - shard_config: *config, - }); - } - shards - } - fn public_values(&self) -> Vec { self.expect_public_values() .iter() @@ -223,23 +226,6 @@ impl MachineRecord for Shard<'_, F> { } } -#[derive(Clone, Copy, Debug, Eq, PartialEq)] -pub struct ShardingConfig { - pub(crate) max_shard_size: u32, -} - -impl Default for ShardingConfig { - fn default() -> Self { - const DEFAULT_SHARD_SIZE: u32 = 1 << 22; - Self { - max_shard_size: std::env::var("SHARD_SIZE").map_or_else( - |_| DEFAULT_SHARD_SIZE, - |s| s.parse::().unwrap_or(DEFAULT_SHARD_SIZE), - ), - } - } -} - const NUM_MEM_TABLES: usize = 6; pub(crate) const MEM_TABLE_SIZES: [usize; NUM_MEM_TABLES] = [2, 3, 4, 5, 6, 8]; @@ -973,29 +959,35 @@ mod tests { let args = &[f(2)]; let res1 = toplevel.execute(half, args, &mut queries, None).unwrap(); - let shard = Shard::new(&queries); + let shards = Shard::new(queries.clone()); + assert_eq!(shards.len(), 1); + let shard = &shards[0]; let traces1 = ( - half_chip.generate_trace(&shard), - double_chip.generate_trace(&shard), + half_chip.generate_trace(shard), + double_chip.generate_trace(shard), ); // even after `clean`, the preimg of `double(1)` can still be recovered queries.clean(); let res2 = toplevel.execute(half, args, &mut queries, None).unwrap(); - let shard = Shard::new(&queries); + let shards = Shard::new(queries.clone()); + assert_eq!(shards.len(), 1); + let shard = &shards[0]; let traces2 = ( - half_chip.generate_trace(&shard), - double_chip.generate_trace(&shard), + half_chip.generate_trace(shard), + double_chip.generate_trace(shard), ); assert_eq!(res1, res2); assert_eq!(traces1, traces2); queries.clean(); let res3 = toplevel.execute(half, args, &mut queries, None).unwrap(); - let shard = Shard::new(&queries); + let shards = Shard::new(queries.clone()); + assert_eq!(shards.len(), 1); + let shard = &shards[0]; let traces3 = ( - half_chip.generate_trace(&shard), - double_chip.generate_trace(&shard), + half_chip.generate_trace(shard), + double_chip.generate_trace(shard), ); assert_eq!(res2, res3); assert_eq!(traces2, traces3); diff --git a/src/lair/func_chip.rs b/src/lair/func_chip.rs index 29aabe9a..0fc7c2fd 100644 --- a/src/lair/func_chip.rs +++ b/src/lair/func_chip.rs @@ -1,3 +1,5 @@ +use std::sync::Arc; + use p3_air::BaseAir; use super::{ @@ -25,37 +27,37 @@ impl LayoutSizes { } } -pub struct FuncChip<'a, F, C1: Chipset, C2: Chipset> { - pub(crate) func: &'a Func, - pub(crate) toplevel: &'a Toplevel, +pub struct FuncChip, C2: Chipset> { + pub(crate) func: Arc>, + pub(crate) toplevel: Arc>, pub(crate) layout_sizes: LayoutSizes, } -impl<'a, F, C1: Chipset, C2: Chipset> FuncChip<'a, F, C1, C2> { +impl, C2: Chipset> FuncChip { #[inline] - pub fn from_name(name: &'static str, toplevel: &'a Toplevel) -> Self { + pub fn from_name(name: &'static str, toplevel: &Arc>) -> Self { let func = toplevel.func_by_name(name); Self::from_func(func, toplevel) } #[inline] - pub fn from_index(idx: usize, toplevel: &'a Toplevel) -> Self { + pub fn from_index(idx: usize, toplevel: &Arc>) -> Self { let func = toplevel.func_by_index(idx); Self::from_func(func, toplevel) } #[inline] - pub fn from_func(func: &'a Func, toplevel: &'a Toplevel) -> Self { + pub fn from_func(func: &Arc>, toplevel: &Arc>) -> Self { let layout_sizes = func.compute_layout_sizes(toplevel); Self { - func, - toplevel, + func: func.clone(), + toplevel: toplevel.clone(), layout_sizes, } } #[inline] - pub fn from_toplevel(toplevel: &'a Toplevel) -> Vec { + pub fn from_toplevel(toplevel: &Arc>) -> Vec { toplevel .func_map .values() @@ -70,18 +72,18 @@ impl<'a, F, C1: Chipset, C2: Chipset> FuncChip<'a, F, C1, C2> { #[inline] pub fn func(&self) -> &Func { - self.func + &self.func } #[inline] pub fn toplevel(&self) -> &Toplevel { - self.toplevel + &self.toplevel } } -impl, C2: Chipset> BaseAir for FuncChip<'_, F, C1, C2> { +impl, C2: Chipset> BaseAir for FuncChip { fn width(&self) -> usize { - self.width() + self.layout_sizes.total() } } @@ -146,7 +148,7 @@ impl Ctrl { Ctrl::Choose(_, cases, branches) => { let degrees_len = degrees.len(); let mut max_aux = *aux; - let mut process = |block: &Block<_>| { + let mut process = |block: &Arc>| { let block_aux = &mut aux.clone(); block.compute_layout_sizes(degrees, toplevel, block_aux, sel); degrees.truncate(degrees_len); diff --git a/src/lair/lair_chip.rs b/src/lair/lair_chip.rs index 24e768b2..abc38f2e 100644 --- a/src/lair/lair_chip.rs +++ b/src/lair/lair_chip.rs @@ -1,9 +1,10 @@ use p3_air::{Air, AirBuilder, AirBuilderWithPublicValues, BaseAir, PairBuilder}; use p3_field::{AbstractField, Field, PrimeField32}; use p3_matrix::{dense::RowMajorMatrix, Matrix}; -use sphinx_core::{ - air::{EventLens, MachineAir, MachineProgram, WithEvents}, - stark::Chip, +use sp1_stark::{ + air::{InteractionScope, MachineAir, MachineProgram}, + septic_digest::SepticDigest, + Chip, }; use crate::air::builder::{LookupBuilder, RequireRecord}; @@ -19,8 +20,8 @@ use super::{ relations::OuterCallRelation, }; -pub enum LairChip<'a, F, C1: Chipset, C2: Chipset> { - Func(FuncChip<'a, F, C1, C2>), +pub enum LairChip, C2: Chipset> { + Func(FuncChip), Mem(MemChip), Bytes(BytesChip), Entrypoint { @@ -29,7 +30,7 @@ pub enum LairChip<'a, F, C1: Chipset, C2: Chipset> { }, } -impl, C2: Chipset> LairChip<'_, F, C1, C2> { +impl, C2: Chipset> LairChip { #[inline] pub fn entrypoint(func: &Func) -> Self { let partial = if func.partial { DEPTH_W } else { 0 }; @@ -41,21 +42,7 @@ impl, C2: Chipset> LairChip<'_, F, C1, C2> { } } -impl<'a, F: PrimeField32, C1: Chipset, C2: Chipset> WithEvents<'a> - for LairChip<'_, F, C1, C2> -{ - type Events = &'a Shard<'a, F>; -} - -impl<'a, F: PrimeField32, C1: Chipset, C2: Chipset> EventLens> - for Shard<'a, F> -{ - fn events(&self) -> as WithEvents<'_>>::Events { - self - } -} - -impl, C2: Chipset> BaseAir for LairChip<'_, F, C1, C2> { +impl, C2: Chipset> BaseAir for LairChip { fn width(&self) -> usize { match self { Self::Func(func_chip) => func_chip.width(), @@ -63,7 +50,7 @@ impl, C2: Chipset> BaseAir for LairChip<'_ Self::Bytes(bytes_chip) => bytes_chip.width(), Self::Entrypoint { num_public_values, .. - } => *num_public_values, + } => num_public_values + 1, } } } @@ -74,12 +61,14 @@ impl MachineProgram for LairMachineProgram { fn pc_start(&self) -> F { F::zero() } + + fn initial_global_cumulative_sum(&self) -> SepticDigest { + SepticDigest::zero() + } } -impl<'a, F: PrimeField32, C1: Chipset, C2: Chipset> MachineAir - for LairChip<'a, F, C1, C2> -{ - type Record = Shard<'a, F>; +impl, C2: Chipset> MachineAir for LairChip { + type Record = Shard; type Program = LairMachineProgram; fn name(&self) -> String { @@ -87,24 +76,18 @@ impl<'a, F: PrimeField32, C1: Chipset, C2: Chipset> MachineAir Self::Func(func_chip) => format!("Func[{}]", func_chip.func.name), Self::Mem(mem_chip) => format!("Mem[{}-wide]", mem_chip.len), Self::Entrypoint { func_idx, .. } => format!("Entrypoint[{func_idx}]"), - // the following is required by sphinx - // TODO: engineer our way out of such upstream check - Self::Bytes(_bytes_chip) => "CPU".to_string(), + Self::Bytes(_bytes_chip) => "Bytes".to_string(), } } - fn generate_trace>( - &self, - shard: &EL, - _: &mut Self::Record, - ) -> RowMajorMatrix { + fn generate_trace(&self, shard: &Self::Record, _: &mut Self::Record) -> RowMajorMatrix { match self { - Self::Func(func_chip) => func_chip.generate_trace(shard.events()), - Self::Mem(mem_chip) => mem_chip.generate_trace(shard.events()), + Self::Func(func_chip) => func_chip.generate_trace(shard), + Self::Mem(mem_chip) => mem_chip.generate_trace(shard), Self::Bytes(bytes_chip) => { // TODO: Shard the byte events differently? if shard.index() == 0 { - bytes_chip.generate_trace(&shard.events().queries().bytes) + bytes_chip.generate_trace(&shard.queries().bytes) } else { bytes_chip.generate_trace(&Default::default()) } @@ -112,14 +95,20 @@ impl<'a, F: PrimeField32, C1: Chipset, C2: Chipset> MachineAir Self::Entrypoint { num_public_values, .. } => { - let public_values = shard.events().expect_public_values(); + let mut public_values = shard.expect_public_values().to_vec(); assert_eq!(*num_public_values, public_values.len()); - RowMajorMatrix::new(public_values.to_vec(), *num_public_values) + public_values.push(F::one()); + let height = public_values + .len() + .next_power_of_two() + .max(16 * self.width()); + public_values.resize(height, F::zero()); + RowMajorMatrix::new(public_values, self.width()) } } } - fn generate_dependencies>(&self, _: &EL, _: &mut Self::Record) {} + fn generate_dependencies(&self, _: &Self::Record, _: &mut Self::Record) {} fn included(&self, shard: &Self::Record) -> bool { match self { @@ -151,9 +140,13 @@ impl<'a, F: PrimeField32, C1: Chipset, C2: Chipset> MachineAir _ => None, } } + + fn commit_scope(&self) -> InteractionScope { + InteractionScope::Local + } } -impl, C2: Chipset> Air for LairChip<'_, AB::F, C1, C2> +impl, C2: Chipset> Air for LairChip where AB: AirBuilderWithPublicValues + LookupBuilder + PairBuilder, ::Var: std::fmt::Debug, @@ -168,14 +161,17 @@ where num_public_values, } => { let func_idx = AB::F::from_canonical_usize(*func_idx); - let public_values = builder.main().first_row().collect::>(); + let main = builder.main(); + let mut public_values = main.row(0).collect::>(); + // let mut public_values = builder.main().first_row().collect::>(); + let is_real = public_values.pop().expect("Missing is_real"); assert_eq!(public_values.len(), *num_public_values); // these values aren't correct for all builders! let public_values_from_builder = builder.public_values().to_vec(); for (&a, b) in public_values.iter().zip(public_values_from_builder) { // this is only accounted for by the builder used to collect constraints - builder.assert_eq(a, b); + builder.when(is_real).assert_eq(a, b); } builder.require( @@ -186,16 +182,16 @@ where prev_count: AB::F::zero(), count_inv: AB::F::one(), }, - AB::F::one(), + is_real, ); } } } } -pub fn build_lair_chip_vector<'a, F: PrimeField32, C1: Chipset, C2: Chipset>( - entry_func_chip: &FuncChip<'a, F, C1, C2>, -) -> Vec> { +pub fn build_lair_chip_vector, C2: Chipset>( + entry_func_chip: &FuncChip, +) -> Vec> { let toplevel = &entry_func_chip.toplevel; let func = &entry_func_chip.func; let mut chip_vector = Vec::with_capacity(2 + toplevel.num_funcs() + MEM_TABLE_SIZES.len()); @@ -212,21 +208,20 @@ pub fn build_lair_chip_vector<'a, F: PrimeField32, C1: Chipset, C2: Chipset, C2: Chipset, - I: IntoIterator>, + I: IntoIterator>, >( lair_chips: I, -) -> Vec>> { +) -> Vec>> { lair_chips.into_iter().map(Chip::new).collect() } #[inline] -pub fn build_chip_vector<'a, F: PrimeField32, C1: Chipset, C2: Chipset>( - entry_func_chip: &FuncChip<'a, F, C1, C2>, -) -> Vec>> { +pub fn build_chip_vector, C2: Chipset>( + entry_func_chip: &FuncChip, +) -> Vec>> { build_chip_vector_from_lair_chips(build_lair_chip_vector(entry_func_chip)) } @@ -237,15 +232,12 @@ mod tests { use super::*; use p3_baby_bear::BabyBear; - use sphinx_core::utils::BabyBearPoseidon2; - use sphinx_core::{ - stark::{LocalProver, StarkGenericConfig, StarkMachine}, - utils::SphinxCoreOpts, - }; + use sp1_stark::baby_bear_poseidon2::BabyBearPoseidon2; + use sp1_stark::{CpuProver, MachineProver, SP1CoreOpts, StarkGenericConfig, StarkMachine}; #[test] fn test_prove_and_verify() { - sphinx_core::utils::setup_logger(); + sp1_core_machine::utils::setup_logger(); type F = BabyBear; let toplevel = demo_toplevel::(); let chip = FuncChip::from_name("factorial", &toplevel); @@ -260,17 +252,29 @@ mod tests { config, build_chip_vector(&chip), queries.expect_public_values().len(), + true, ); let (pk, vk) = machine.setup(&LairMachineProgram); let mut challenger_p = machine.config().challenger(); let mut challenger_v = machine.config().challenger(); - let shard = Shard::new(&queries); + let mut challenger_d = machine.config().challenger(); + let shard = Shard::new(queries.clone()); - machine.debug_constraints(&pk, shard.clone()); - let opts = SphinxCoreOpts::default(); - let proof = machine.prove::>(&pk, shard, &mut challenger_p, opts); - machine + machine.debug_constraints(&pk, shard.clone(), &mut challenger_d); + let opts = SP1CoreOpts::default(); + let prover = CpuProver::new(machine); + let proof = prover + .prove(&pk, shard, &mut challenger_p, opts) + .expect("proof generates"); + let config = BabyBearPoseidon2::new(); + let verifier_machine = StarkMachine::new( + config, + build_chip_vector(&chip), + queries.expect_public_values().len(), + true, + ); + verifier_machine .verify(&vk, &proof, &mut challenger_v) .expect("proof verifies"); } diff --git a/src/lair/memory.rs b/src/lair/memory.rs index 2100205f..4757e31a 100644 --- a/src/lair/memory.rs +++ b/src/lair/memory.rs @@ -27,18 +27,18 @@ impl MemChip { } } - pub fn generate_trace(&self, shard: &Shard<'_, F>) -> RowMajorMatrix { + pub fn generate_trace(&self, shard: &Shard) -> RowMajorMatrix { let record = &shard.queries().mem_queries; let mem_idx = mem_index_from_len(self.len); let mem = &record[mem_idx]; let width = self.width(); - let height = mem.len().next_power_of_two().max(4); // TODO: Remove? loam#118 + let height = mem.len().next_power_of_two().max(16); // TODO: Remove? loam#118 // TODO: This snippet or equivalent is needed for memory sharding // let range = shard.get_mem_range(mem_index_from_len(self.len)); // let non_dummy_height = range.len(); - // let height = non_dummy_height.next_power_of_two().max(4); + // let height = non_dummy_height.next_power_of_two().max(16); let mut trace = RowMajorMatrix::new(vec![F::zero(); height * width], width); @@ -145,11 +145,30 @@ mod tests { toplevel .execute_by_name("test", &[], &mut queries, None) .unwrap(); - let func_trace = test_chip.generate_trace(&Shard::new(&queries)); + let shards = Shard::new(queries.clone()); + assert_eq!(shards.len(), 1); + let shard = &shards[0]; + let func_trace = test_chip.generate_trace(shard); #[rustfmt::skip] let expected_trace = [ 0, 2, 2, 0, 1, 1, 0, 0, 1, 2, 0, 0, 1, 1, 2, 3, 0, 1, 1006632961, 1, + // dummy + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ] .into_iter() .map(F::from_canonical_u32) @@ -158,8 +177,10 @@ mod tests { let mem_len = 3; let mem_chip = MemChip::new(mem_len); - let shard = Shard::new(&queries); - let mem_trace = mem_chip.generate_trace(&shard); + let shards = Shard::new(queries); + assert_eq!(shards.len(), 1); + let shard = &shards[0]; + let mem_trace = mem_chip.generate_trace(shard); #[rustfmt::skip] let expected_trace = [ @@ -167,6 +188,18 @@ mod tests { 1, 2, 0, 1, 1, 1, 1, 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, 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, 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, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, ] .into_iter() .map(F::from_canonical_u32) diff --git a/src/lair/mod.rs b/src/lair/mod.rs index cf34dc31..514c21ab 100644 --- a/src/lair/mod.rs +++ b/src/lair/mod.rs @@ -1,5 +1,7 @@ +use std::sync::Arc; + use indexmap::IndexMap; -use p3_field::Field; +use p3_field::{AbstractField, Field}; use rustc_hash::FxBuildHasher; use crate::func; @@ -31,7 +33,7 @@ impl std::fmt::Display for Name { } #[inline] -pub(crate) fn field_from_i32(i: i32) -> F { +pub(crate) fn field_from_i32(i: i32) -> F { if i < 0 { -F::from_canonical_u32((-i).try_into().unwrap()) } else { @@ -41,7 +43,7 @@ pub(crate) fn field_from_i32(i: i32) -> F { #[inline] #[allow(dead_code)] -pub(crate) fn field_from_u32(i: u32) -> F { +pub(crate) fn field_from_u32(i: u32) -> F { F::from_canonical_u32(i) } @@ -50,7 +52,7 @@ pub type List = Box<[T]>; pub type FxIndexMap = IndexMap; #[allow(dead_code)] -pub(crate) fn demo_toplevel() -> Toplevel { +pub(crate) fn demo_toplevel() -> Arc> { let factorial_e = func!( fn factorial(n): [1] { let one = 1; diff --git a/src/lair/toplevel.rs b/src/lair/toplevel.rs index c826d5f1..1bd6bdbf 100644 --- a/src/lair/toplevel.rs +++ b/src/lair/toplevel.rs @@ -1,6 +1,8 @@ //! The toplevel is the collection of all compiled Lair functions and external chips //! of a Lair program. It is the core structure behind Lair. +use std::sync::Arc; + use either::Either; use p3_field::Field; use rustc_hash::FxHashMap; @@ -10,7 +12,7 @@ use super::{bytecode::*, chipset::Chipset, expr::*, map::Map, FxIndexMap, List, #[derive(Clone, Debug, Eq, PartialEq)] pub struct Toplevel, C2: Chipset> { /// Lair functions reachable by the `Call` operator - pub(crate) func_map: FxIndexMap>, + pub(crate) func_map: FxIndexMap>>, /// Extern chips reachable by the `ExternCall` operator. The two different /// chipset types can be used to encode native and custom chips. pub(crate) chip_map: FxIndexMap>, @@ -25,7 +27,7 @@ pub(crate) struct FuncInfo { impl, C2: Chipset> Toplevel { /// Given a list of Lair functions and a chip map, create a new toplevel by checking and /// compiling all functions and collecting them in a name->definition map - pub fn new(funcs_exprs: &[FuncE], chip_map: FxIndexMap>) -> Self { + pub fn new(funcs_exprs: &[FuncE], chip_map: FxIndexMap>) -> Arc { let info_map = funcs_exprs .iter() .map(|func| { @@ -43,21 +45,21 @@ impl, C2: Chipset> Toplevel { .map(|(i, func)| { func.check(&info_map, &chip_map); let cfunc = func.expand().compile(i, &info_map, &chip_map); - (func.name, cfunc) + (func.name, Arc::new(cfunc)) }) .collect(); - Toplevel { func_map, chip_map } + Arc::new(Toplevel { func_map, chip_map }) } #[inline] - pub fn new_pure(funcs_exprs: &[FuncE]) -> Self { + pub fn new_pure(funcs_exprs: &[FuncE]) -> Arc { Toplevel::new(funcs_exprs, FxIndexMap::default()) } } impl, C2: Chipset> Toplevel { #[inline] - pub fn func_by_index(&self, i: usize) -> &Func { + pub fn func_by_index(&self, i: usize) -> &Arc> { self.func_map .get_index(i) .unwrap_or_else(|| panic!("Func index {i} out of bounds")) @@ -65,7 +67,7 @@ impl, C2: Chipset> Toplevel { } #[inline] - pub fn func_by_name(&self, name: &'static str) -> &Func { + pub fn func_by_name(&self, name: &'static str) -> &Arc> { self.func_map .get(&Name(name)) .unwrap_or_else(|| panic!("Func {name} not found")) @@ -544,7 +546,7 @@ impl CtrlE { let mut unique_branches = Vec::new(); for (fs, block) in cases.branches.iter() { let state = ctx.save_state(); - let block = block.compile(ctx); + let block = Arc::new(block.compile(ctx)); ctx.restore_state(state); fs.iter().for_each(|f| vec.push((*f, block.clone()))); unique_branches.push(block); @@ -559,7 +561,7 @@ impl CtrlE { let mut vec = Vec::with_capacity(cases.branches.len()); for (fs, block) in cases.branches.iter() { let state = ctx.save_state(); - let block = block.compile(ctx); + let block = Arc::new(block.compile(ctx)); ctx.restore_state(state); vec.push((fs.clone(), block)) } diff --git a/src/lair/trace.rs b/src/lair/trace.rs index cd16f80e..2dc60a3c 100644 --- a/src/lair/trace.rs +++ b/src/lair/trace.rs @@ -69,14 +69,14 @@ impl<'a, T> ColumnMutSlice<'a, T> { } } -impl, C2: Chipset> FuncChip<'_, F, C1, C2> { +impl, C2: Chipset> FuncChip { /// Per-row parallel trace generation - pub fn generate_trace(&self, shard: &Shard<'_, F>) -> RowMajorMatrix { + pub fn generate_trace(&self, shard: &Shard) -> RowMajorMatrix { let func_queries = &shard.queries().func_queries()[self.func.index]; let range = shard.get_func_range(self.func.index); let width = self.width(); let non_dummy_height = range.len(); - let height = non_dummy_height.next_power_of_two(); + let height = non_dummy_height.next_power_of_two().max(16); let mut rows = vec![F::zero(); height * width]; // initializing nonces rows.chunks_mut(width) @@ -125,7 +125,7 @@ impl, C2: Chipset> FuncChip<'_, F, C1, C2> { slice, queries, requires, - self.toplevel, + &self.toplevel, result.depth, depth_requires, ); @@ -419,13 +419,15 @@ impl Op { #[cfg(test)] mod tests { + use std::sync::Arc; + use crate::{ air::debug::debug_chip_constraints_and_queries_with_sharding, func, lair::{ chipset::NoChip, demo_toplevel, - execute::{QueryRecord, Shard, ShardingConfig}, + execute::{QueryRecord, Shard}, field_from_u32, lair_chip::{build_chip_vector, build_lair_chip_vector, LairMachineProgram}, toplevel::Toplevel, @@ -435,9 +437,9 @@ mod tests { use p3_baby_bear::BabyBear as F; use p3_field::AbstractField; - use sphinx_core::{ - stark::{LocalProver, MachineRecord, StarkGenericConfig, StarkMachine}, - utils::{BabyBearPoseidon2, SphinxCoreOpts}, + use sp1_stark::{ + baby_bear_poseidon2::BabyBearPoseidon2, CpuProver, MachineProver, SP1CoreOpts, + StarkGenericConfig, StarkMachine, }; use super::FuncChip; @@ -469,7 +471,10 @@ mod tests { toplevel .execute_by_name("factorial", args, &mut queries, None) .unwrap(); - let trace = factorial_chip.generate_trace(&Shard::new(&queries)); + let shards = Shard::new(queries); + assert_eq!(shards.len(), 1); + let shard = &shards[0]; + let trace = factorial_chip.generate_trace(shard); #[rustfmt::skip] let expected_trace = [ // in order: nonce, n, 1/n, fact(n-1), prev_nonce, prev_count, count_inv, n*fact(n-1), last_nonce, last_count and selectors @@ -482,6 +487,14 @@ mod tests { // dummy 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ] .into_iter() .map(field_from_u32) @@ -493,7 +506,10 @@ mod tests { toplevel .execute_by_name("fib", args, &mut queries, None) .unwrap(); - let trace = fib_chip.generate_trace(&Shard::new(&queries)); + let shards = Shard::new(queries); + assert_eq!(shards.len(), 1); + let shard = &shards[0]; + let trace = fib_chip.generate_trace(shard); #[rustfmt::skip] let expected_trace = [ @@ -506,6 +522,14 @@ mod tests { 5, 2, 1, 3, 2, 1006632961, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 6, 1, 1, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, + 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ] .into_iter() .map(field_from_u32) @@ -556,7 +580,10 @@ mod tests { toplevel .execute_by_name("test", args, &mut queries, None) .unwrap(); - let trace = test_chip.generate_trace(&Shard::new(&queries)); + let shards = Shard::new(queries); + assert_eq!(shards.len(), 1); + let shard = &shards[0]; + let trace = test_chip.generate_trace(shard); #[rustfmt::skip] let expected_trace = [ // The big numbers in the trace are the inverted elements, the witnesses of @@ -568,6 +595,18 @@ mod tests { 2, 3, 2, 16, 1, 1, 4, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, // dummy 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ] .into_iter() .map(field_from_u32) @@ -636,7 +675,10 @@ mod tests { toplevel .execute(test_func, three, &mut queries, None) .unwrap(); - let trace = test_chip.generate_trace(&Shard::new(&queries)); + let shards = Shard::new(queries); + assert_eq!(shards.len(), 1); + let shard = &shards[0]; + let trace = test_chip.generate_trace(shard); let expected_trace = [ // nonce, two inputs, output, last_nonce, last_count, selectors @@ -644,6 +686,19 @@ mod tests { 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, // 2, 1, 0, 2, 0, 1, 0, 0, 1, 0, // 3, 1, 1, 3, 0, 1, 0, 0, 0, 1, // + // dummy + 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, // + 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, // + 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, // + 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, // + 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, // + 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, // + 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, // + 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, // + 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, // + 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, // + 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, // + 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, // ] .into_iter() .map(field_from_u32) @@ -651,10 +706,11 @@ mod tests { assert_eq!(trace.values, expected_trace); } - #[ignore] + // #[ignore] #[test] + #[should_panic(expected = "Proofs of long computations are temporarily broken")] // See issue #437 fn lair_shard_test() { - sphinx_core::utils::setup_logger(); + sp1_core_machine::utils::setup_logger(); type C = NoChip; let func_ack = func!( fn ackermann(m, n): [1] { @@ -693,8 +749,8 @@ mod tests { let lair_chips = build_lair_chip_vector(&ack_chip); - let shard = Shard::new(&queries); - let shards = shard.clone().shard(&ShardingConfig::default()); + let queries = Arc::new(queries); + let shards = Shard::new_arc(&queries); assert!( shards.len() > 1, "lair_shard_test must have more than one shard" @@ -703,7 +759,7 @@ mod tests { debug_chip_constraints_and_queries_with_sharding( &queries, &lair_chips, - Some(ShardingConfig::default()), + Some(SP1CoreOpts::default()), ); let config = BabyBearPoseidon2::new(); @@ -711,17 +767,29 @@ mod tests { config, build_chip_vector(&ack_chip), queries.expect_public_values().len(), + true, ); let (pk, vk) = machine.setup(&LairMachineProgram); let mut challenger_p = machine.config().challenger(); let mut challenger_v = machine.config().challenger(); - let shard = Shard::new(&queries); - - machine.debug_constraints(&pk, shard.clone()); - let opts = SphinxCoreOpts::default(); - let proof = machine.prove::>(&pk, shard, &mut challenger_p, opts); - machine + let mut challenger_d = machine.config().challenger(); + let shards = Shard::new_arc(&queries); + + machine.debug_constraints(&pk, shards.clone(), &mut challenger_d); + let opts = SP1CoreOpts::default(); + let prover = CpuProver::new(machine); + let proof = prover + .prove(&pk, shards, &mut challenger_p, opts) + .expect("proof generates"); + let config = BabyBearPoseidon2::new(); + let verifier_machine = StarkMachine::new( + config, + build_chip_vector(&ack_chip), + queries.expect_public_values().len(), + true, + ); + verifier_machine .verify(&vk, &proof, &mut challenger_v) .expect("proof verifies"); } diff --git a/src/poseidon/air.rs b/src/poseidon/air.rs index c3d93bc9..048ca935 100644 --- a/src/poseidon/air.rs +++ b/src/poseidon/air.rs @@ -7,6 +7,7 @@ use std::iter::zip; use itertools::izip; use p3_air::{Air, AirBuilder, BaseAir}; +use p3_field::{AbstractField, PrimeField}; use p3_matrix::Matrix; use p3_symmetric::Permutation; @@ -20,6 +21,9 @@ impl, const WIDTH: usize> BaseAir for Poseidon2Ch impl, const WIDTH: usize> Air for Poseidon2Chip +where + AB::F: PrimeField, + <::Expr as AbstractField>::F: PrimeField, { #[allow(non_snake_case)] fn eval(&self, builder: &mut AB) { diff --git a/src/poseidon/columns.rs b/src/poseidon/columns.rs index ce6f1e9a..3f42dd7c 100644 --- a/src/poseidon/columns.rs +++ b/src/poseidon/columns.rs @@ -8,7 +8,7 @@ use super::config::PoseidonConfig; use hybrid_array::Array; use p3_field::AbstractField; use p3_symmetric::Permutation; -use sphinx_derive::AlignedBorrow; +use sp1_derive::AlignedBorrow; /// The column layout for the chip. #[derive(Clone, Debug, AlignedBorrow)] diff --git a/src/poseidon/config.rs b/src/poseidon/config.rs index 79bb1387..b662e011 100644 --- a/src/poseidon/config.rs +++ b/src/poseidon/config.rs @@ -17,7 +17,9 @@ trait ConstantsProvided {} /// The Poseidon configuration trait storing the data needed for #[allow(non_camel_case_types, private_bounds)] -pub trait PoseidonConfig: Clone + Copy + Sync + ConstantsProvided { +pub trait PoseidonConfig: + 'static + Clone + Copy + Send + Sync + ConstantsProvided +{ type F: PrimeField; type R_P: ArraySize + Sub; type R_F: ArraySize; diff --git a/src/poseidon/wide/columns.rs b/src/poseidon/wide/columns.rs index 97817c37..4545ea3e 100644 --- a/src/poseidon/wide/columns.rs +++ b/src/poseidon/wide/columns.rs @@ -3,7 +3,7 @@ use std::mem::size_of; use crate::poseidon::config::PoseidonConfig; use hybrid_array::{typenum::*, Array, ArraySize}; -use sphinx_derive::AlignedBorrow; +use sp1_derive::AlignedBorrow; /// Columns for the "narrow" Poseidon2 chip. /// diff --git a/src/poseidon/wide/mod.rs b/src/poseidon/wide/mod.rs index 0a7956bd..4a23599a 100644 --- a/src/poseidon/wide/mod.rs +++ b/src/poseidon/wide/mod.rs @@ -19,7 +19,7 @@ mod test { use p3_matrix::dense::RowMajorMatrix; use p3_matrix::Matrix; use p3_symmetric::Permutation; - use sphinx_derive::AlignedBorrow; + use sp1_derive::AlignedBorrow; struct Chip, const WIDTH: usize> { _marker: PhantomData, diff --git a/tests/fib.rs b/tests/fib.rs index 710d6e6c..5de65068 100644 --- a/tests/fib.rs +++ b/tests/fib.rs @@ -5,10 +5,9 @@ // If `LOAM_FIB_ARG` is unset, the tests will run with `DEFAULT_FIB_ARG=500` use p3_baby_bear::BabyBear; use p3_field::AbstractField; -use sphinx_core::{ - stark::{LocalProver, StarkGenericConfig, StarkMachine}, - utils::{BabyBearPoseidon2, SphinxCoreOpts}, -}; +use sp1_stark::baby_bear_poseidon2::BabyBearPoseidon2; +use sp1_stark::{CpuProver, MachineProver, SP1CoreOpts, StarkGenericConfig, StarkMachine}; +use std::sync::Arc; use std::time::Instant; use lurk::{ @@ -47,10 +46,10 @@ fn build_lurk_expr(arg: usize) -> String { fn setup>( arg: usize, - toplevel: &Toplevel, + toplevel: &Arc>, ) -> ( List, - FuncChip<'_, BabyBear, C, NoChip>, + FuncChip, QueryRecord, ) { let code = build_lurk_expr(arg); @@ -86,12 +85,16 @@ fn fib_e2e() { config, build_chip_vector(&lurk_main), record.expect_public_values().len(), + true, ); let (pk, _) = machine.setup(&LairMachineProgram); let mut challenger_p = machine.config().challenger(); - let opts = SphinxCoreOpts::default(); - let shard = Shard::new(&record); - machine.prove::>(&pk, shard, &mut challenger_p, opts); + let opts = SP1CoreOpts::default(); + let shard = Shard::new(record); + let prover = CpuProver::new(machine); + let _machine_proof = prover + .prove(&pk, shard, &mut challenger_p, opts) + .expect("Failure while proving"); let elapsed_time = start_time.elapsed().as_secs_f32(); println!("Total time for e2e-{arg} = {:.2} s", elapsed_time);