diff --git a/.cargo/config.toml b/.cargo/config.toml new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/bench.yml b/.github/workflows/bench.yml deleted file mode 100644 index 6220db2a6..000000000 --- a/.github/workflows/bench.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Benchmark - -on: - push: - branches: [main] - pull_request: - workflow_dispatch: - -env: - CARGO_TERM_COLOR: always - -concurrency: - group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} - cancel-in-progress: true - -jobs: - codspeed: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - with: - submodules: true - - uses: dtolnay/rust-toolchain@stable - - uses: Swatinem/rust-cache@v2 - with: - cache-on-failure: true - - name: Install cargo-codspeed - uses: taiki-e/install-action@v2 - with: - tool: cargo-codspeed - - name: Build the benchmark target(s) - run: cargo codspeed build --profile profiling --workspace - - name: Run the benchmarks - uses: CodSpeedHQ/action@v3 - with: - run: cargo codspeed run --workspace - token: ${{ secrets.CODSPEED_TOKEN }} diff --git a/.github/workflows/book.yml b/.github/workflows/book.yml deleted file mode 100644 index 8733a73ab..000000000 --- a/.github/workflows/book.yml +++ /dev/null @@ -1,138 +0,0 @@ -name: book - -concurrency: - cancel-in-progress: true - group: ${{github.workflow}}-${{github.ref}} - -on: - push: - branches: [main] - pull_request: - branches: [main] - merge_group: - -jobs: - test: - runs-on: ubuntu-latest - name: test - - steps: - - uses: actions/checkout@v4 - - - name: Install mdbook - run: | - mkdir mdbook - curl -sSL https://github.com/rust-lang/mdBook/releases/download/v0.4.14/mdbook-v0.4.14-x86_64-unknown-linux-gnu.tar.gz | tar -xz --directory=./mdbook - echo `pwd`/mdbook >> $GITHUB_PATH - - - name: Install mdbook-template - run: | - mkdir mdbook-template - curl -sSL https://github.com/sgoudham/mdbook-template/releases/latest/download/mdbook-template-x86_64-unknown-linux-gnu.tar.gz | tar -xz --directory=./mdbook-template - echo `pwd`/mdbook-template >> $GITHUB_PATH - - - name: Run tests - run: | - cp README.md book/src/README.md - sed -i -e 's|../../README.md|./README.md|g' book/src/SUMMARY.md - mdbook test - - lint: - runs-on: ubuntu-latest - name: lint - - steps: - - uses: actions/checkout@v4 - - - name: Install mdbook-linkcheck - run: | - mkdir mdbook-linkcheck - curl -sSL -o mdbook-linkcheck.zip https://github.com/Michael-F-Bryan/mdbook-linkcheck/releases/latest/download/mdbook-linkcheck.x86_64-unknown-linux-gnu.zip - unzip mdbook-linkcheck.zip -d ./mdbook-linkcheck - chmod +x `pwd`/mdbook-linkcheck/mdbook-linkcheck - echo `pwd`/mdbook-linkcheck >> $GITHUB_PATH - - - name: Run linkcheck - run: mdbook-linkcheck --standalone - - build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - name: Install toolchain - uses: dtolnay/rust-toolchain@nightly - - uses: Swatinem/rust-cache@v2 - with: - cache-on-failure: true - - - name: Install mdbook - run: | - mkdir mdbook - curl -sSL https://github.com/rust-lang/mdBook/releases/download/v0.4.14/mdbook-v0.4.14-x86_64-unknown-linux-gnu.tar.gz | tar -xz --directory=./mdbook - echo `pwd`/mdbook >> $GITHUB_PATH - - - name: Install mdbook-template - run: | - mkdir mdbook-template - curl -sSL https://github.com/sgoudham/mdbook-template/releases/latest/download/mdbook-template-x86_64-unknown-linux-gnu.tar.gz | tar -xz --directory=./mdbook-template - echo `pwd`/mdbook-template >> $GITHUB_PATH - - - name: Build book - run: | - cp README.md book/src/README.md - sed -i -e 's|../../README.md|./README.md|g' book/src/SUMMARY.md - mdbook build book - - - name: Build docs - run: RUSTDOCFLAGS="--enable-index-page -Zunstable-options" cargo doc --all --no-deps - - - name: Move docs to book folder - run: | - mkdir -p target/book/docs - mv target/doc book/book/docs - - - name: Archive artifact - shell: sh - run: | - chmod -c -R +rX "book/book" | - while read line; do - echo "::warning title=Invalid file permissions automatically fixed::$line" - done - tar \ - --dereference --hard-dereference \ - --directory "book/book" \ - -cvf "$RUNNER_TEMP/artifact.tar" \ - --exclude=.git \ - --exclude=.github \ - . - - - name: Upload artifact - uses: actions/upload-artifact@v4 - with: - name: github-pages - path: ${{ runner.temp }}/artifact.tar - retention-days: 1 - if-no-files-found: error - - deploy: - # Only deploy if a push to main - if: github.ref_name == 'main' && github.event_name == 'push' - runs-on: ubuntu-latest - needs: [test, lint, build] - - # Grant GITHUB_TOKEN the permissions required to make a Pages deployment - permissions: - pages: write - id-token: write - - environment: - name: github-pages - url: ${{ steps.deployment.outputs.page_url }} - - steps: - - name: Deploy to GitHub Pages - id: deployment - uses: actions/deploy-pages@v4 \ No newline at end of file diff --git a/.github/workflows/openvm-tests.yml b/.github/workflows/openvm-tests.yml new file mode 100644 index 000000000..287f277e1 --- /dev/null +++ b/.github/workflows/openvm-tests.yml @@ -0,0 +1,36 @@ +name: OpenVM Tests + +on: + push: + branches: ["v69-openvm"] + pull_request: + branches: ["**"] + +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }} + cancel-in-progress: true + +env: + OPENVM_FAST_TEST: 1 + +jobs: + tests: + name: OpenVM Tests + runs-on: + - runs-on=${{ github.run_id }} + - runner=64cpu-linux-x64 + - extras=s3-cache + steps: + - uses: runs-on/action@v1 + - uses: actions/checkout@v4 + - uses: dtolnay/rust-toolchain@stable + - uses: Swatinem/rust-cache@v2 + with: + cache-on-failure: true + - uses: taiki-e/install-action@nextest + - name: Rust toolchain + run: rustup component add rust-src --toolchain nightly-2025-02-14 + + - name: Run tests + working-directory: tests/openvm + run: RUST_BACKTRACE=1 cargo nextest run diff --git a/.github/workflows/release-plz.yml b/.github/workflows/release-plz.yml deleted file mode 100644 index 0411e1f7c..000000000 --- a/.github/workflows/release-plz.yml +++ /dev/null @@ -1,42 +0,0 @@ -# Documentation: https://release-plz.ieni.dev/docs -name: Release-plz - -permissions: - pull-requests: write - contents: write - -on: - push: - branches: - - main - -jobs: - release-plz: - name: Release-plz - runs-on: ubuntu-latest - steps: - - name: Checkout repository - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - name: Install Rust toolchain - uses: dtolnay/rust-toolchain@stable - # Commits the cargo lock (generally a good practice for upstream libraries) - - name: Commit Cargo.lock - run: | - git config --local user.email "action@github.com" - git config --local user.name "GitHub Action" - git add Cargo.lock - git commit -m "Update Cargo.lock" || echo "No changes to commit" - # This will run the release-plz action - # The action dectect API breaking changes detection with cargo-semver-checks. - # Semver is auto incremneted based on this - # A PR with the semver bump is created with a new release tag and changelog - # if you configure the cargo registry token, the action will also publish the new version to crates.io - - name: Run release-plz - uses: MarcoIeni/release-plz-action@v0.5 - with: - command: release-pr - env: - # The admin of the repository with need to configure the following secrets: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/.gitignore b/.gitignore index 10e3bcae4..dfa50536f 100644 --- a/.gitignore +++ b/.gitignore @@ -26,3 +26,5 @@ rustc-ice-* # Fixtures /test-fixtures + +**/Cargo.lock diff --git a/Cargo.lock b/Cargo.lock index dc77dfd08..5e00c9dd9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,6 +2,16 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "Inflector" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" +dependencies = [ + "lazy_static", + "regex", +] + [[package]] name = "addchain" version = "0.2.0" @@ -28,6 +38,17 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" +[[package]] +name = "aes" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", +] + [[package]] name = "ahash" version = "0.8.11" @@ -61,9 +82,9 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7734aecfc58a597dde036e4c5cace2ae43e2f8bf3d406b022a1ef34da178dd49" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.0.0", "num_enum", - "strum", + "strum 0.27.1", ] [[package]] @@ -73,7 +94,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2179ba839ac532f50279f5da2a6c5047f791f03f6f808b4dfab11327b97902f" dependencies = [ "alloy-eips", - "alloy-primitives", + "alloy-primitives 1.0.0", "alloy-rlp", "alloy-serde", "alloy-trie", @@ -86,7 +107,7 @@ dependencies = [ "rand 0.8.5", "serde", "serde_with", - "thiserror", + "thiserror 2.0.12", ] [[package]] @@ -97,7 +118,7 @@ checksum = "aec6f67bdc62aa277e0ec13c1b1fb396c8a62b65c8e9bd8c1d3583cc6d1a8dd3" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives", + "alloy-primitives 1.0.0", "alloy-rlp", "alloy-serde", "serde", @@ -109,11 +130,11 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "741bdd7499908b3aa0b159bba11e71c8cddd009a2c2eb7a06e825f1ec87900a5" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.0.0", "alloy-rlp", "crc", "serde", - "thiserror", + "thiserror 2.0.12", ] [[package]] @@ -122,7 +143,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dbe3e16484669964c26ac48390245d84c410b1a5f968976076c17184725ef235" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.0.0", "alloy-rlp", "serde", ] @@ -133,11 +154,11 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "804cefe429015b4244966c006d25bda5545fa9db5990e9c9079faf255052f50a" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.0.0", "alloy-rlp", "k256", "serde", - "thiserror", + "thiserror 2.0.12", ] [[package]] @@ -149,7 +170,7 @@ dependencies = [ "alloy-eip2124", "alloy-eip2930", "alloy-eip7702", - "alloy-primitives", + "alloy-primitives 1.0.0", "alloy-rlp", "alloy-serde", "auto_impl", @@ -160,14 +181,26 @@ dependencies = [ "sha2 0.10.8", ] +[[package]] +name = "alloy-json-abi" +version = "0.8.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe6beff64ad0aa6ad1019a3db26fef565aefeb011736150ab73ed3366c3cfd1b" +dependencies = [ + "alloy-primitives 0.8.25", + "alloy-sol-type-parser 0.8.25", + "serde", + "serde_json", +] + [[package]] name = "alloy-json-abi" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5189fa9a8797e92396bc4b4454c5f2073a4945f7c2b366af9af60f9536558f7a" dependencies = [ - "alloy-primitives", - "alloy-sol-type-parser", + "alloy-primitives 1.0.0", + "alloy-sol-type-parser 1.0.0", "serde", "serde_json", ] @@ -178,11 +211,11 @@ version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3994ab6ff6bdeb5aebe65381a8f6a47534789817570111555e8ac413e242ce06" dependencies = [ - "alloy-primitives", - "alloy-sol-types", + "alloy-primitives 1.0.0", + "alloy-sol-types 1.0.0", "serde", "serde_json", - "thiserror", + "thiserror 2.0.12", "tracing", ] @@ -197,19 +230,19 @@ dependencies = [ "alloy-eips", "alloy-json-rpc", "alloy-network-primitives", - "alloy-primitives", + "alloy-primitives 1.0.0", "alloy-rpc-types-any", "alloy-rpc-types-eth", "alloy-serde", "alloy-signer", - "alloy-sol-types", + "alloy-sol-types 1.0.0", "async-trait", "auto_impl", "derive_more 2.0.1", "futures-utils-wasm", "serde", "serde_json", - "thiserror", + "thiserror 2.0.12", ] [[package]] @@ -220,11 +253,71 @@ checksum = "498f2ee2eef38a6db0fc810c7bf7daebdf5f2fa8d04adb8bd53e54e91ddbdea3" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives", + "alloy-primitives 1.0.0", "alloy-serde", "serde", ] +[[package]] +name = "alloy-primitives" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e416903084d3392ebd32d94735c395d6709415b76c7728e594d3f996f2b03e65" +dependencies = [ + "bytes", + "cfg-if", + "const-hex", + "derive_more 0.99.20", + "hex-literal 0.4.1", + "itoa", + "ruint", + "tiny-keccak", +] + +[[package]] +name = "alloy-primitives" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0628ec0ba5b98b3370bb6be17b12f23bfce8ee4ad83823325a20546d9b03b78" +dependencies = [ + "alloy-rlp", + "bytes", + "cfg-if", + "const-hex", + "derive_more 0.99.20", + "hex-literal 0.4.1", + "itoa", + "ruint", + "tiny-keccak", +] + +[[package]] +name = "alloy-primitives" +version = "0.8.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c77490fe91a0ce933a1f219029521f20fc28c2c0ca95d53fa4da9c00b8d9d4e" +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 0.8.5", + "ruint", + "rustc-hash 2.1.1", + "serde", + "sha3", + "tiny-keccak", +] + [[package]] name = "alloy-primitives" version = "1.0.0" @@ -250,7 +343,7 @@ dependencies = [ "proptest-derive", "rand 0.9.0", "ruint", - "rustc-hash", + "rustc-hash 2.1.1", "serde", "sha3", "tiny-keccak", @@ -268,11 +361,11 @@ dependencies = [ "alloy-json-rpc", "alloy-network", "alloy-network-primitives", - "alloy-primitives", + "alloy-primitives 1.0.0", "alloy-rpc-client", "alloy-rpc-types-eth", "alloy-signer", - "alloy-sol-types", + "alloy-sol-types 1.0.0", "alloy-transport", "alloy-transport-http", "async-stream", @@ -285,10 +378,10 @@ dependencies = [ "lru", "parking_lot", "pin-project", - "reqwest", + "reqwest 0.12.15", "serde", "serde_json", - "thiserror", + "thiserror 2.0.12", "tokio", "tracing", "url", @@ -324,13 +417,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d6a6985b48a536b47aa0aece56e6a0f49240ce5d33a7f0c94f1b312eda79aa1" dependencies = [ "alloy-json-rpc", - "alloy-primitives", + "alloy-primitives 1.0.0", "alloy-transport", "alloy-transport-http", "async-stream", "futures", "pin-project", - "reqwest", + "reqwest 0.12.15", "serde", "serde_json", "tokio", @@ -363,14 +456,14 @@ dependencies = [ "alloy-consensus-any", "alloy-eips", "alloy-network-primitives", - "alloy-primitives", + "alloy-primitives 1.0.0", "alloy-rlp", "alloy-serde", - "alloy-sol-types", + "alloy-sol-types 1.0.0", "itertools 0.14.0", "serde", "serde_json", - "thiserror", + "thiserror 2.0.12", ] [[package]] @@ -379,7 +472,7 @@ version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d4dba6ff08916bc0a9cbba121ce21f67c0b554c39cf174bc7b9df6c651bd3c3b" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.0.0", "serde", "serde_json", ] @@ -390,13 +483,13 @@ version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c580da7f00f3999e44e327223044d6732358627f93043e22d92c583f6583556" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.0.0", "async-trait", "auto_impl", "either", "elliptic-curve", "k256", - "thiserror", + "thiserror 2.0.12", ] [[package]] @@ -407,12 +500,26 @@ checksum = "a00f0f07862bd8f6bc66c953660693c5903062c2c9d308485b2a6eee411089e7" dependencies = [ "alloy-consensus", "alloy-network", - "alloy-primitives", + "alloy-primitives 1.0.0", "alloy-signer", "async-trait", "k256", "rand 0.8.5", - "thiserror", + "thiserror 2.0.12", +] + +[[package]] +name = "alloy-sol-macro" +version = "0.8.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e10ae8e9a91d328ae954c22542415303919aabe976fe7a92eb06db1b68fd59f2" +dependencies = [ + "alloy-sol-macro-expander 0.8.25", + "alloy-sol-macro-input 0.8.25", + "proc-macro-error2", + "proc-macro2", + "quote", + "syn 2.0.100", ] [[package]] @@ -421,12 +528,31 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "60fcfa26956bcb22f66ab13407115197f26ef23abca5b48d39a1946897382d74" dependencies = [ - "alloy-sol-macro-expander", - "alloy-sol-macro-input", + "alloy-sol-macro-expander 1.0.0", + "alloy-sol-macro-input 1.0.0", + "proc-macro-error2", + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "alloy-sol-macro-expander" +version = "0.8.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83ad5da86c127751bc607c174d6c9fe9b85ef0889a9ca0c641735d77d4f98f26" +dependencies = [ + "alloy-json-abi 0.8.25", + "alloy-sol-macro-input 0.8.25", + "const-hex", + "heck", + "indexmap 2.8.0", "proc-macro-error2", "proc-macro2", "quote", "syn 2.0.100", + "syn-solidity 0.8.25", + "tiny-keccak", ] [[package]] @@ -435,7 +561,7 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72a9b402f0013f1ff8c24066eeafc2207a8e52810a2b18b77776ce7fead5af41" dependencies = [ - "alloy-sol-macro-input", + "alloy-sol-macro-input 1.0.0", "const-hex", "heck", "indexmap 2.8.0", @@ -443,10 +569,28 @@ dependencies = [ "proc-macro2", "quote", "syn 2.0.100", - "syn-solidity", + "syn-solidity 1.0.0", "tiny-keccak", ] +[[package]] +name = "alloy-sol-macro-input" +version = "0.8.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3d30f0d3f9ba3b7686f3ff1de9ee312647aac705604417a2f40c604f409a9e" +dependencies = [ + "alloy-json-abi 0.8.25", + "const-hex", + "dunce", + "heck", + "macro-string", + "proc-macro2", + "quote", + "serde_json", + "syn 2.0.100", + "syn-solidity 0.8.25", +] + [[package]] name = "alloy-sol-macro-input" version = "1.0.0" @@ -460,7 +604,17 @@ dependencies = [ "proc-macro2", "quote", "syn 2.0.100", - "syn-solidity", + "syn-solidity 1.0.0", +] + +[[package]] +name = "alloy-sol-type-parser" +version = "0.8.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d162f8524adfdfb0e4bd0505c734c985f3e2474eb022af32eef0d52a4f3935c" +dependencies = [ + "serde", + "winnow 0.7.4", ] [[package]] @@ -470,7 +624,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2b5f5f9f561c29f78ea521ebe2e5ac1633f1b1442dae582f68ecd57c6350042" dependencies = [ "serde", - "winnow", + "winnow 0.7.4", +] + +[[package]] +name = "alloy-sol-types" +version = "0.8.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d43d5e60466a440230c07761aa67671d4719d46f43be8ea6e7ed334d8db4a9ab" +dependencies = [ + "alloy-json-abi 0.8.25", + "alloy-primitives 0.8.25", + "alloy-sol-macro 0.8.25", + "const-hex", + "serde", ] [[package]] @@ -479,9 +646,9 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c02635bce18205ff8149fb752c753b0a91ea3f3c8ee04c58846448be4811a640" dependencies = [ - "alloy-json-abi", - "alloy-primitives", - "alloy-sol-macro", + "alloy-json-abi 1.0.0", + "alloy-primitives 1.0.0", + "alloy-sol-macro 1.0.0", "const-hex", "serde", ] @@ -493,14 +660,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e1f1a55f9ff9a48aa0b4a8c616803754620010fbb266edae2f4548f4304373b" dependencies = [ "alloy-json-rpc", - "base64", + "base64 0.22.1", "derive_more 2.0.1", "futures", "futures-utils-wasm", "parking_lot", "serde", "serde_json", - "thiserror", + "thiserror 2.0.12", "tokio", "tower", "tracing", @@ -516,7 +683,7 @@ checksum = "171b3d8824b6697d6c8325373ec410d230b6c59ce552edfbfabe4e7b8a26aac3" dependencies = [ "alloy-json-rpc", "alloy-transport", - "reqwest", + "reqwest 0.12.15", "serde_json", "tower", "tracing", @@ -529,7 +696,7 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f9382b4e38b126358f276b863673bc47840d3b3508dd1c9efe22f81b4e83649" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.0.0", "alloy-rlp", "arrayvec", "derive_more 1.0.0", @@ -560,6 +727,15 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" +[[package]] +name = "ansi_term" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" +dependencies = [ + "winapi", +] + [[package]] name = "anstream" version = "0.6.18" @@ -625,6 +801,16 @@ dependencies = [ "derive_arbitrary", ] +[[package]] +name = "ariadne" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "367fd0ad87307588d087544707bc5fbf4805ded96c7db922b70d368fa1cb5702" +dependencies = [ + "unicode-width 0.1.14", + "yansi 0.5.1", +] + [[package]] name = "ark-bls12-381" version = "0.5.0" @@ -837,7 +1023,7 @@ dependencies = [ "ark-ff 0.5.0", "ark-std 0.5.0", "tracing", - "tracing-subscriber", + "tracing-subscriber 0.2.25", ] [[package]] @@ -930,6 +1116,15 @@ dependencies = [ "serde", ] +[[package]] +name = "ascii-canvas" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8824ecca2e851cec16968d54a01dd372ef8f95b244fb84b84e70128be347c3c6" +dependencies = [ + "term", +] + [[package]] name = "async-stream" version = "0.3.6" @@ -963,6 +1158,15 @@ dependencies = [ "syn 2.0.100", ] +[[package]] +name = "atomic" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d818003e740b63afc82337e3160717f4f63078720a810b7b903e70a5d1d2994" +dependencies = [ + "bytemuck", +] + [[package]] name = "aurora-engine-modexp" version = "1.2.0" @@ -1002,6 +1206,7 @@ dependencies = [ "miniz_oxide", "object", "rustc-demangle", + "serde", "windows-targets 0.52.6", ] @@ -1011,6 +1216,12 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" +[[package]] +name = "base64" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + [[package]] name = "base64" version = "0.22.1" @@ -1032,21 +1243,60 @@ dependencies = [ "serde", ] +[[package]] +name = "bit-set" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" +dependencies = [ + "bit-vec 0.6.3", +] + [[package]] name = "bit-set" version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" dependencies = [ - "bit-vec", + "bit-vec 0.8.0", ] +[[package]] +name = "bit-vec" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" + [[package]] name = "bit-vec" version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" +[[package]] +name = "bitcode" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf300f4aa6e66f3bdff11f1236a88c622fe47ea814524792240b4d554d9858ee" +dependencies = [ + "arrayvec", + "bitcode_derive", + "bytemuck", + "glam", + "serde", +] + +[[package]] +name = "bitcode_derive" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42b6b4cb608b8282dc3b53d0f4c9ab404655d562674c682db7e6c0458cc83c23" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + [[package]] name = "bitcoin-io" version = "0.1.3" @@ -1063,6 +1313,12 @@ dependencies = [ "hex-conservative", ] +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + [[package]] name = "bitflags" version = "2.9.0" @@ -1085,6 +1341,39 @@ dependencies = [ "wyz", ] +[[package]] +name = "blake2" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "blake2b_simd" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06e903a20b159e944f91ec8499fe1e55651480c541ea0a584f5d967c49ad9d99" +dependencies = [ + "arrayref", + "arrayvec", + "constant_time_eq 0.3.1", +] + +[[package]] +name = "blake3" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3888aaa89e4b2a40fca9848e400f6a658a5a3978de7be858e209cafa8be9a4a0" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq 0.3.1", +] + [[package]] name = "block-buffer" version = "0.9.0" @@ -1103,6 +1392,32 @@ dependencies = [ "generic-array", ] +[[package]] +name = "bls12_381" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3c196a77437e7cc2fb515ce413a6401291578b5afc8ecb29a3c7ab957f05941" +dependencies = [ + "ff 0.12.1", + "group 0.12.1", + "pairing 0.22.0", + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "bls12_381" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7bc6d6292be3a19e6379786dac800f551e5865a5bb51ebbe3064ab80433f403" +dependencies = [ + "ff 0.13.1", + "group 0.13.0", + "pairing 0.23.0", + "rand_core 0.6.4", + "subtle", +] + [[package]] name = "blst" version = "0.3.14" @@ -1115,6 +1430,47 @@ dependencies = [ "zeroize", ] +[[package]] +name = "bon" +version = "3.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced38439e7a86a4761f7f7d5ded5ff009135939ecb464a24452eaa4c1696af7d" +dependencies = [ + "bon-macros", + "rustversion", +] + +[[package]] +name = "bon-macros" +version = "3.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce61d2d3844c6b8d31b2353d9f66cf5e632b3e9549583fe3cac2f4f6136725e" +dependencies = [ + "darling", + "ident_case", + "prettyplease", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.100", +] + +[[package]] +name = "bstr" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "234113d19d0d7d613b40e86fb654acf958910802bcceab913a4f9e7cda03b1a4" +dependencies = [ + "memchr", + "serde", +] + +[[package]] +name = "build_const" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4ae4235e6dac0694637c763029ecea1a2ec9e4e06ec2729bd21ba4d9c863eb7" + [[package]] name = "bumpalo" version = "3.17.0" @@ -1127,6 +1483,12 @@ version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7575182f7272186991736b70173b0ea045398f984bf5ebbb3804736ce1330c9d" +[[package]] +name = "bytemuck" +version = "1.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9134a6ef01ce4b366b50689c94f82c14bc72bc5d0386829828a2e2752ef7958c" + [[package]] name = "byteorder" version = "1.5.0" @@ -1143,7 +1505,27 @@ dependencies = [ ] [[package]] -name = "c-kzg" +name = "bzip2" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" +dependencies = [ + "bzip2-sys", + "libc", +] + +[[package]] +name = "bzip2-sys" +version = "0.1.13+1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225bff33b2141874fe80d71e07d6eec4f85c5c216453dd96388240f96e1acc14" +dependencies = [ + "cc", + "pkg-config", +] + +[[package]] +name = "c-kzg" version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4e7e3c397401eb76228c89561cf22f85f41c95aa799ee9d860de3ea1cbc728fc" @@ -1158,6 +1540,38 @@ dependencies = [ "serde", ] +[[package]] +name = "camino" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo-platform" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo_metadata" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" +dependencies = [ + "camino", + "cargo-platform", + "semver 1.0.26", + "serde", + "serde_json", + "thiserror 1.0.69", +] + [[package]] name = "cast" version = "0.3.0" @@ -1170,6 +1584,8 @@ version = "1.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be714c154be609ec7f5dad223a33bf1482fff90472de28f7362806e6d4832b8c" dependencies = [ + "jobserver", + "libc", "shlex", ] @@ -1219,6 +1635,16 @@ dependencies = [ "half", ] +[[package]] +name = "cipher" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +dependencies = [ + "crypto-common", + "inout", +] + [[package]] name = "clap" version = "4.5.32" @@ -1335,7 +1761,7 @@ dependencies = [ "encode_unicode", "libc", "once_cell", - "unicode-width", + "unicode-width 0.2.0", "windows-sys 0.59.0", ] @@ -1378,6 +1804,24 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "constant_time_eq" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" + +[[package]] +name = "constant_time_eq" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" + +[[package]] +name = "convert_case" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" + [[package]] name = "core-foundation" version = "0.9.4" @@ -1418,6 +1862,15 @@ version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" +[[package]] +name = "crc32fast" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +dependencies = [ + "cfg-if", +] + [[package]] name = "criterion-plot" version = "0.5.0" @@ -1428,6 +1881,28 @@ dependencies = [ "itertools 0.10.5", ] +[[package]] +name = "crossbeam" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1137cd7e7fc0fb5d3c5a8678be38ec56e819125d8d7907411fe24ccb943faca8" +dependencies = [ + "crossbeam-channel", + "crossbeam-deque", + "crossbeam-epoch", + "crossbeam-queue", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" +dependencies = [ + "crossbeam-utils", +] + [[package]] name = "crossbeam-deque" version = "0.8.6" @@ -1447,6 +1922,15 @@ dependencies = [ "crossbeam-utils", ] +[[package]] +name = "crossbeam-queue" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f58bbc28f91df819d0aa2a2c00cd19754769c2fad90579b3592b1c9ba7a3115" +dependencies = [ + "crossbeam-utils", +] + [[package]] name = "crossbeam-utils" version = "0.8.21" @@ -1561,6 +2045,28 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "derive-new" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d150dea618e920167e5973d70ae6ece4385b7164e0d799fe7c122dd0a5d912ad" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "derive-new" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2cdc8d50f426189eef89dac62fabfa0abb27d5cc008f25bf4156a0203325becc" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + [[package]] name = "derive-where" version = "1.2.7" @@ -1583,6 +2089,19 @@ dependencies = [ "syn 2.0.100", ] +[[package]] +name = "derive_more" +version = "0.99.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6edb4b64a43d977b8e99788fe3a04d483834fba1215a7e02caa415b626497f7f" +dependencies = [ + "convert_case", + "proc-macro2", + "quote", + "rustc_version 0.4.1", + "syn 2.0.100", +] + [[package]] name = "derive_more" version = "1.0.0" @@ -1610,6 +2129,7 @@ dependencies = [ "proc-macro2", "quote", "syn 2.0.100", + "unicode-xid", ] [[package]] @@ -1645,6 +2165,48 @@ 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-next" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" +dependencies = [ + "cfg-if", + "dirs-sys-next", +] + +[[package]] +name = "dirs-sys" +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 = "dirs-sys-next" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" +dependencies = [ + "libc", + "redox_users", + "winapi", +] + [[package]] name = "displaydoc" version = "0.2.5" @@ -1656,6 +2218,12 @@ dependencies = [ "syn 2.0.100", ] +[[package]] +name = "downcast-rs" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" + [[package]] name = "dunce" version = "1.0.5" @@ -1698,6 +2266,12 @@ dependencies = [ "serde", ] +[[package]] +name = "elf" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4445909572dbd556c457c849c4ca58623d84b27c8fff1e74b0b4227d8b90d17b" + [[package]] name = "elliptic-curve" version = "0.13.8" @@ -1707,9 +2281,9 @@ dependencies = [ "base16ct", "crypto-bigint", "digest 0.10.7", - "ff", + "ff 0.13.1", "generic-array", - "group", + "group 0.13.0", "pkcs8", "rand_core 0.6.4", "sec1", @@ -1718,12 +2292,36 @@ dependencies = [ "zeroize", ] +[[package]] +name = "ena" +version = "0.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d248bdd43ce613d87415282f69b9bb99d947d290b10962dd6c56233312c2ad5" +dependencies = [ + "log", +] + [[package]] name = "encode_unicode" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" +[[package]] +name = "encoding_rs" +version = "0.8.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "endian-type" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d" + [[package]] name = "enum-ordinalize" version = "4.3.0" @@ -1744,6 +2342,18 @@ dependencies = [ "syn 2.0.100", ] +[[package]] +name = "enum_dispatch" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa18ce2bc66555b3218614519ac839ddb759a7d6720732f979ef8d13be147ecd" +dependencies = [ + "once_cell", + "proc-macro2", + "quote", + "syn 2.0.100", +] + [[package]] name = "enumn" version = "0.1.14" @@ -1771,6 +2381,132 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "ethabi" +version = "18.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7413c5f74cc903ea37386a8965a936cbeb334bd270862fdece542c1b2dcbc898" +dependencies = [ + "ethereum-types", + "hex", + "once_cell", + "regex", + "serde", + "serde_json", + "sha3", + "thiserror 1.0.69", + "uint", +] + +[[package]] +name = "ethbloom" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c22d4b5885b6aa2fe5e8b9329fb8d232bf739e434e6b87347c63bdd00c120f60" +dependencies = [ + "crunchy", + "fixed-hash", + "impl-codec", + "impl-rlp", + "impl-serde", + "scale-info", + "tiny-keccak", +] + +[[package]] +name = "ethereum-types" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02d215cbf040552efcbe99a38372fe80ab9d00268e20012b79fcd0f073edd8ee" +dependencies = [ + "ethbloom", + "fixed-hash", + "impl-codec", + "impl-rlp", + "impl-serde", + "primitive-types", + "scale-info", + "uint", +] + +[[package]] +name = "ethers-core" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82d80cc6ad30b14a48ab786523af33b37f28a8623fc06afd55324816ef18fb1f" +dependencies = [ + "arrayvec", + "bytes", + "chrono", + "const-hex", + "elliptic-curve", + "ethabi", + "generic-array", + "k256", + "num_enum", + "open-fastrlp", + "rand 0.8.5", + "rlp", + "serde", + "serde_json", + "strum 0.26.3", + "tempfile", + "thiserror 1.0.69", + "tiny-keccak", + "unicode-xid", +] + +[[package]] +name = "ethers-etherscan" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e79e5973c26d4baf0ce55520bd732314328cabe53193286671b47144145b9649" +dependencies = [ + "chrono", + "ethers-core", + "reqwest 0.11.27", + "semver 1.0.26", + "serde", + "serde_json", + "thiserror 1.0.69", + "tracing", +] + +[[package]] +name = "ethers-solc" +version = "2.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de34e484e7ae3cab99fbfd013d6c5dc7f9013676a4e0e414d8b12e1213e8b3ba" +dependencies = [ + "cfg-if", + "const-hex", + "dirs", + "dunce", + "ethers-core", + "futures-util", + "glob", + "home", + "md-5", + "num_cpus", + "once_cell", + "path-slash", + "rayon", + "regex", + "semver 1.0.26", + "serde", + "serde_json", + "sha2 0.10.8", + "solang-parser", + "svm-rs", + "svm-rs-builds", + "thiserror 1.0.69", + "tiny-keccak", + "tokio", + "tracing", + "walkdir", + "yansi 0.5.1", +] + [[package]] name = "example-block-traces" version = "0.0.0" @@ -1780,7 +2516,7 @@ dependencies = [ "alloy-provider", "anyhow", "indicatif", - "revm", + "revm 22.0.0", "tokio", ] @@ -1789,7 +2525,7 @@ name = "example-cheatcode-inspector" version = "0.0.0" dependencies = [ "anyhow", - "revm", + "revm 22.0.0", ] [[package]] @@ -1797,14 +2533,14 @@ name = "example-contract-deployment" version = "0.0.0" dependencies = [ "anyhow", - "revm", + "revm 22.0.0", ] [[package]] name = "example-custom-opcodes" version = "0.0.0" dependencies = [ - "revm", + "revm 22.0.0", ] [[package]] @@ -1812,8 +2548,8 @@ name = "example-database-components" version = "0.0.0" dependencies = [ "auto_impl", - "revm", - "thiserror", + "revm 22.0.0", + "thiserror 2.0.12", ] [[package]] @@ -1821,9 +2557,9 @@ name = "example-erc20-gas" version = "0.0.0" dependencies = [ "alloy-provider", - "alloy-sol-types", + "alloy-sol-types 1.0.0", "anyhow", - "revm", + "revm 22.0.0", "tokio", ] @@ -1831,7 +2567,7 @@ dependencies = [ name = "example-my-evm" version = "0.0.0" dependencies = [ - "revm", + "revm 22.0.0", ] [[package]] @@ -1840,9 +2576,9 @@ version = "0.0.0" dependencies = [ "alloy-eips", "alloy-provider", - "alloy-sol-types", + "alloy-sol-types 1.0.0", "anyhow", - "revm", + "revm 22.0.0", "tokio", ] @@ -1852,15 +2588,25 @@ version = "0.0.0" dependencies = [ "alloy-eips", "alloy-provider", - "alloy-sol-types", + "alloy-sol-types 1.0.0", "anyhow", - "revm", + "revm 22.0.0", "tokio", ] [[package]] -name = "fastrand" -version = "2.3.0" +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.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" @@ -1886,12 +2632,24 @@ dependencies = [ "bytes", ] +[[package]] +name = "ff" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d013fc25338cc558c5c2cfbad646908fb23591e2404481826742b651c9af7160" +dependencies = [ + "bitvec", + "rand_core 0.6.4", + "subtle", +] + [[package]] name = "ff" version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" dependencies = [ + "bitvec", "byteorder", "ff_derive", "rand_core 0.6.4", @@ -1913,6 +2671,20 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "figment" +version = "0.10.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cb01cd46b0cf372153850f4c6c272d9cbea2da513e07538405148f95bd789f3" +dependencies = [ + "atomic", + "pear", + "serde", + "toml 0.8.20", + "uncased", + "version_check", +] + [[package]] name = "fixed-hash" version = "0.8.0" @@ -1925,6 +2697,22 @@ dependencies = [ "static_assertions", ] +[[package]] +name = "fixedbitset" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" + +[[package]] +name = "flate2" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ced92e76e966ca2fd84c8f7aa01a4aea65b0eb6648d72f7c8f3e2764a67fece" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + [[package]] name = "fnv" version = "1.0.7" @@ -1952,6 +2740,21 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" +[[package]] +name = "forge-fmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac0b82597ff80bc12b3b001dfb968769c345e353650dd32d337f2c64d2167c88" +dependencies = [ + "alloy-primitives 0.3.3", + "ariadne", + "foundry-config", + "itertools 0.11.0", + "solang-parser", + "thiserror 1.0.69", + "tracing", +] + [[package]] name = "form_urlencoded" version = "1.2.1" @@ -1961,6 +2764,48 @@ dependencies = [ "percent-encoding", ] +[[package]] +name = "foundry-config" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a64a9bdad47eb4d950523b8ff14e675db8f2226a2aef79063d9344449b3abd5" +dependencies = [ + "Inflector", + "dirs-next", + "ethers-core", + "ethers-etherscan", + "ethers-solc", + "eyre", + "figment", + "globset", + "number_prefix", + "once_cell", + "open-fastrlp", + "path-slash", + "regex", + "reqwest 0.11.27", + "revm-primitives 1.3.0", + "semver 1.0.26", + "serde", + "serde_json", + "serde_regex", + "thiserror 1.0.69", + "toml 0.7.8", + "toml_edit 0.19.15", + "tracing", + "walkdir", +] + +[[package]] +name = "fs2" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213" +dependencies = [ + "libc", + "winapi", +] + [[package]] name = "funty" version = "2.0.0" @@ -2108,29 +2953,91 @@ dependencies = [ "wasi 0.14.2+wasi-0.2.4", ] +[[package]] +name = "getset" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3586f256131df87204eb733da72e3d3eb4f343c639f4b7be279ac7c48baeafe" +dependencies = [ + "proc-macro-error2", + "proc-macro2", + "quote", + "syn 2.0.100", +] + [[package]] name = "gimli" version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" +[[package]] +name = "glam" +version = "0.30.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b46b9ca4690308844c644e7c634d68792467260e051c8543e0c7871662b3ba7" + [[package]] name = "glob" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" +[[package]] +name = "globset" +version = "0.4.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54a1028dfc5f5df5da8a56a73e6c153c9a9708ec57232470703592a3f18e49f5" +dependencies = [ + "aho-corasick", + "bstr", + "log", + "regex-automata 0.4.9", + "regex-syntax 0.8.5", +] + +[[package]] +name = "group" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dfbfb3a6cfbd390d5c9564ab283a0349b9b9fcd46a706c1eb10e0db70bfbac7" +dependencies = [ + "ff 0.12.1", + "memuse", + "rand_core 0.6.4", + "subtle", +] + [[package]] name = "group" version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" dependencies = [ - "ff", + "ff 0.13.1", "rand_core 0.6.4", "subtle", ] +[[package]] +name = "h2" +version = "0.3.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http 0.2.12", + "indexmap 2.8.0", + "slab", + "tokio", + "tokio-util", + "tracing", +] + [[package]] name = "half" version = "2.5.0" @@ -2141,6 +3048,163 @@ 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-axiom" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62f0ca78d12ac5c893f286d7cdfe3869290305ab8cac376e2592cdc8396da102" +dependencies = [ + "blake2b_simd", + "crossbeam", + "ff 0.13.1", + "group 0.13.0", + "halo2curves-axiom", + "itertools 0.11.0", + "maybe-rayon", + "pairing 0.23.0", + "rand 0.8.5", + "rand_core 0.6.4", + "rayon", + "rustc-hash 1.1.0", + "sha3", + "tracing", +] + +[[package]] +name = "halo2-base" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "678cf3adc0a39d7b4d9b82315a655201aa24a430dd1902b162c508047f56ac69" +dependencies = [ + "getset", + "halo2-axiom", + "itertools 0.11.0", + "log", + "num-bigint 0.4.6", + "num-integer", + "num-traits", + "poseidon-primitives", + "rand_chacha 0.3.1", + "rayon", + "rustc-hash 1.1.0", + "serde", + "serde_json", +] + +[[package]] +name = "halo2-ecc" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "645c00681fdd1febaf552d8814e9f5a6a142d81a1514102190da07039588b366" +dependencies = [ + "halo2-base", + "itertools 0.11.0", + "num-bigint 0.4.6", + "num-integer", + "num-traits", + "rand 0.8.5", + "rand_chacha 0.3.1", + "rand_core 0.6.4", + "rayon", + "serde", + "serde_json", + "test-case", +] + +[[package]] +name = "halo2_proofs" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e925780549adee8364c7f2b685c753f6f3df23bde520c67416e93bf615933760" +dependencies = [ + "blake2b_simd", + "ff 0.12.1", + "group 0.12.1", + "pasta_curves 0.4.1", + "rand_core 0.6.4", + "rayon", +] + +[[package]] +name = "halo2curves" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b756596082144af6e57105a20403b7b80fe9dccd085700b74fae3af523b74dba" +dependencies = [ + "blake2", + "digest 0.10.7", + "ff 0.13.1", + "group 0.13.0", + "halo2derive", + "hex", + "lazy_static", + "num-bigint 0.4.6", + "num-integer", + "num-traits", + "pairing 0.23.0", + "paste", + "rand 0.8.5", + "rand_core 0.6.4", + "rayon", + "serde", + "serde_arrays", + "sha2 0.10.8", + "static_assertions", + "subtle", + "unroll", +] + +[[package]] +name = "halo2curves-axiom" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd8309e4638b4f1bcf6613d72265a84074d26034c35edc5d605b5688e580b8b8" +dependencies = [ + "blake2b_simd", + "digest 0.10.7", + "ff 0.13.1", + "group 0.13.0", + "hex", + "lazy_static", + "num-bigint 0.4.6", + "num-traits", + "pairing 0.23.0", + "pasta_curves 0.5.1", + "paste", + "rand 0.8.5", + "rand_core 0.6.4", + "rayon", + "serde", + "serde_arrays", + "sha2 0.10.8", + "static_assertions", + "subtle", + "unroll", +] + +[[package]] +name = "halo2derive" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdb99e7492b4f5ff469d238db464131b86c2eaac814a78715acba369f64d2c76" +dependencies = [ + "num-bigint 0.4.6", + "num-integer", + "num-traits", + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "hash-db" version = "0.15.2" @@ -2158,6 +3222,10 @@ name = "hashbrown" version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +dependencies = [ + "ahash", + "allocator-api2", +] [[package]] name = "hashbrown" @@ -2207,6 +3275,18 @@ dependencies = [ "arrayvec", ] +[[package]] +name = "hex-literal" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" + +[[package]] +name = "hex-literal" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcaaec4551594c969335c98c903c1397853d4198408ea609190f420500f6be71" + [[package]] name = "hmac" version = "0.12.1" @@ -2216,6 +3296,26 @@ dependencies = [ "digest 0.10.7", ] +[[package]] +name = "home" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "http" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + [[package]] name = "http" version = "1.3.1" @@ -2227,6 +3327,17 @@ dependencies = [ "itoa", ] +[[package]] +name = "http-body" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" +dependencies = [ + "bytes", + "http 0.2.12", + "pin-project-lite", +] + [[package]] name = "http-body" version = "1.0.1" @@ -2234,7 +3345,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", - "http", + "http 1.3.1", ] [[package]] @@ -2245,8 +3356,8 @@ checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" dependencies = [ "bytes", "futures-core", - "http", - "http-body", + "http 1.3.1", + "http-body 1.0.1", "pin-project-lite", ] @@ -2256,17 +3367,47 @@ version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + [[package]] name = "hyper" -version = "1.6.0" +version = "0.14.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" +checksum = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7" dependencies = [ "bytes", "futures-channel", + "futures-core", "futures-util", - "http", - "http-body", + "h2", + "http 0.2.12", + "http-body 0.4.6", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "hyper" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "http 1.3.1", + "http-body 1.0.1", "httparse", "itoa", "pin-project-lite", @@ -2275,6 +3416,20 @@ dependencies = [ "want", ] +[[package]] +name = "hyper-rustls" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" +dependencies = [ + "futures-util", + "http 0.2.12", + "hyper 0.14.32", + "rustls", + "tokio", + "tokio-rustls", +] + [[package]] name = "hyper-tls" version = "0.6.0" @@ -2283,7 +3438,7 @@ checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" dependencies = [ "bytes", "http-body-util", - "hyper", + "hyper 1.6.0", "hyper-util", "native-tls", "tokio", @@ -2300,9 +3455,9 @@ dependencies = [ "bytes", "futures-channel", "futures-util", - "http", - "http-body", - "hyper", + "http 1.3.1", + "http-body 1.0.1", + "hyper 1.6.0", "pin-project-lite", "socket2", "tokio", @@ -2487,6 +3642,24 @@ dependencies = [ "parity-scale-codec", ] +[[package]] +name = "impl-rlp" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f28220f89297a075ddc7245cd538076ee98b01f2a9c23a53a4f1105d5a322808" +dependencies = [ + "rlp", +] + +[[package]] +name = "impl-serde" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc88fc67028ae3db0c853baa36269d398d5f45b6982f95549ff5def78c935cd" +dependencies = [ + "serde", +] + [[package]] name = "impl-trait-for-tuples" version = "0.2.3" @@ -2498,6 +3671,12 @@ dependencies = [ "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" @@ -2530,10 +3709,25 @@ dependencies = [ "console", "number_prefix", "portable-atomic", - "unicode-width", + "unicode-width 0.2.0", "web-time", ] +[[package]] +name = "inlinable_string" +version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8fae54786f62fb2918dcfae3d568594e50eb9b5c25bf04371af6fe7516452fb" + +[[package]] +name = "inout" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" +dependencies = [ + "generic-array", +] + [[package]] name = "ipnet" version = "2.11.0" @@ -2566,6 +3760,15 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" +dependencies = [ + "either", +] + [[package]] name = "itertools" version = "0.12.1" @@ -2599,6 +3802,16 @@ version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" +[[package]] +name = "jobserver" +version = "0.1.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38f262f097c174adebe41eb73d66ae9c06b2844fb0da69969647bbddd9b0538a" +dependencies = [ + "getrandom 0.3.2", + "libc", +] + [[package]] name = "js-sys" version = "0.3.77" @@ -2609,6 +3822,20 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "jubjub" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a575df5f985fe1cd5b2b05664ff6accfc46559032b954529fd225a2168d27b0f" +dependencies = [ + "bitvec", + "bls12_381 0.7.1", + "ff 0.12.1", + "group 0.12.1", + "rand_core 0.6.4", + "subtle", +] + [[package]] name = "k256" version = "0.13.4" @@ -2648,11 +3875,41 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6efe7b9aea4a6b9454dc95a67f2de13505f6b4fbea885bc7a5c09bda48a85b18" dependencies = [ - "ff", + "ff 0.13.1", "hex", "sha2 0.10.8", "sp1_bls12_381", - "spin", + "spin 0.9.8", +] + +[[package]] +name = "lalrpop" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55cb077ad656299f160924eb2912aa147d7339ea7d69e1b5517326fdcec3c1ca" +dependencies = [ + "ascii-canvas", + "bit-set 0.5.3", + "ena", + "itertools 0.11.0", + "lalrpop-util", + "petgraph", + "regex", + "regex-syntax 0.8.5", + "string_cache", + "term", + "tiny-keccak", + "unicode-xid", + "walkdir", +] + +[[package]] +name = "lalrpop-util" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "507460a910eb7b32ee961886ff48539633b788a36b65692b95f225b844c82553" +dependencies = [ + "regex-automata 0.4.9", ] [[package]] @@ -2661,7 +3918,7 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" dependencies = [ - "spin", + "spin 0.9.8", ] [[package]] @@ -2676,6 +3933,16 @@ 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 2.9.0", + "libc", +] + [[package]] name = "libsecp256k1" version = "0.7.2" @@ -2683,7 +3950,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e79019718125edc905a079a70cfa5f3820bc76139fc91d6f9abc27ea2a887139" dependencies = [ "arrayref", - "base64", + "base64 0.22.1", "digest 0.9.0", "libsecp256k1-core", "libsecp256k1-gen-ecmult", @@ -2744,6 +4011,12 @@ dependencies = [ "scopeguard", ] +[[package]] +name = "lockfree-object-pool" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9374ef4228402d4b7e403e5838cb880d9ee663314b0a900d5a6aabf0c213552e" + [[package]] name = "log" version = "0.4.26" @@ -2770,12 +4043,93 @@ dependencies = [ "syn 2.0.100", ] +[[package]] +name = "matchers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata 0.1.10", +] + +[[package]] +name = "maybe-rayon" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ea1f30cedd69f0a2954655f7188c6a834246d2bcf1e315e2ac40c4b24dc9519" +dependencies = [ + "cfg-if", + "rayon", +] + +[[package]] +name = "md-5" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" +dependencies = [ + "cfg-if", + "digest 0.10.7", +] + [[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 = "metrics" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3045b4193fbdc5b5681f32f11070da9be3609f189a79f3390706d42587f46bb5" +dependencies = [ + "ahash", + "portable-atomic", +] + +[[package]] +name = "metrics-tracing-context" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62a6a1f7141f1d9bc7a886b87536bbfc97752e08b369e1e0453a9acfab5f5da4" +dependencies = [ + "indexmap 2.8.0", + "itoa", + "lockfree-object-pool", + "metrics", + "metrics-util", + "once_cell", + "tracing", + "tracing-core", + "tracing-subscriber 0.3.19", +] + +[[package]] +name = "metrics-util" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4259040465c955f9f2f1a4a8a16dc46726169bca0f88e8fb2dbeced487c3e828" +dependencies = [ + "aho-corasick", + "crossbeam-epoch", + "crossbeam-utils", + "hashbrown 0.14.5", + "indexmap 2.8.0", + "metrics", + "num_cpus", + "ordered-float", + "quanta", + "radix_trie", + "sketches-ddsketch", +] + [[package]] name = "microbench" version = "0.5.0" @@ -2825,6 +4179,31 @@ dependencies = [ "tempfile", ] +[[package]] +name = "new_debug_unreachable" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" + +[[package]] +name = "nibble_vec" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a5d83df9f36fe23f0c3648c6bbb8b0298bb5f1939c8f2704431371f4b84d43" +dependencies = [ + "smallvec", +] + +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + [[package]] name = "num" version = "0.4.3" @@ -2858,6 +4237,8 @@ checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" dependencies = [ "num-integer", "num-traits", + "rand 0.8.5", + "serde", ] [[package]] @@ -2941,6 +4322,7 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" dependencies = [ + "proc-macro-crate", "proc-macro2", "quote", "syn 2.0.100", @@ -2952,6 +4334,18 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" +[[package]] +name = "nums" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf3c74f925fb8cfc49a8022f2afce48a0683b70f9e439885594e84c5edbf5b01" +dependencies = [ + "num-bigint 0.4.6", + "num-integer", + "num-traits", + "rand 0.8.5", +] + [[package]] name = "nybbles" version = "0.3.4" @@ -2990,11 +4384,11 @@ checksum = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e" name = "op-revm" version = "3.0.1" dependencies = [ - "alloy-sol-types", + "alloy-sol-types 1.0.0", "anyhow", "auto_impl", "once_cell", - "revm", + "revm 22.0.0", "rstest", "serde", "serde_json", @@ -3007,13 +4401,38 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" +[[package]] +name = "open-fastrlp" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "786393f80485445794f6043fd3138854dd109cc6c4bd1a6383db304c9ce9b9ce" +dependencies = [ + "arrayvec", + "auto_impl", + "bytes", + "ethereum-types", + "open-fastrlp-derive", +] + +[[package]] +name = "open-fastrlp-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "003b2be5c6c53c1cfeb0a238b8a1c3915cd410feb684457a36c10038f764bb1c" +dependencies = [ + "bytes", + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "openssl" version = "0.10.71" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e14130c6a98cd258fdcb0fb6d744152343ff729cbfcb28c656a9d12b999fbcd" dependencies = [ - "bitflags", + "bitflags 2.9.0", "cfg-if", "foreign-types", "libc", @@ -3052,80 +4471,1241 @@ dependencies = [ ] [[package]] -name = "p256" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" +name = "openvm" +version = "1.1.2" +source = "git+https://github.com/openvm-org/openvm.git?rev=f0477ab8ee276bf102afb508cbb53a63efed9711#f0477ab8ee276bf102afb508cbb53a63efed9711" dependencies = [ - "ecdsa", - "elliptic-curve", - "primeorder", - "sha2 0.10.8", + "bytemuck", + "num-bigint 0.4.6", + "openvm-custom-insn", + "openvm-platform", + "openvm-rv32im-guest", + "serde", ] [[package]] -name = "p3-baby-bear" -version = "0.2.0-succinct" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "080896e9d09e9761982febafe3b3da5cbf320e32f0c89b6e2e01e875129f4c2d" +name = "openvm-algebra-circuit" +version = "1.1.2" +source = "git+https://github.com/openvm-org/openvm.git?rev=f0477ab8ee276bf102afb508cbb53a63efed9711#f0477ab8ee276bf102afb508cbb53a63efed9711" dependencies = [ + "derive-new 0.6.0", + "derive_more 1.0.0", + "itertools 0.14.0", "num-bigint 0.4.6", - "p3-field", - "p3-mds", - "p3-poseidon2", - "p3-symmetric", + "num-traits", + "openvm-algebra-transpiler", + "openvm-circuit", + "openvm-circuit-derive", + "openvm-circuit-primitives", + "openvm-circuit-primitives-derive", + "openvm-instructions", + "openvm-mod-circuit-builder", + "openvm-rv32-adapters", + "openvm-rv32im-circuit", + "openvm-stark-backend", + "openvm-stark-sdk", "rand 0.8.5", "serde", + "serde-big-array", + "serde_with", + "strum 0.26.3", ] [[package]] -name = "p3-dft" -version = "0.2.0-succinct" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "292e97d02d4c38d8b306c2b8c0428bf15f4d32a11a40bcf80018f675bf33267e" +name = "openvm-algebra-complex-macros" +version = "0.1.0" +source = "git+https://github.com/openvm-org/openvm.git?rev=f0477ab8ee276bf102afb508cbb53a63efed9711#f0477ab8ee276bf102afb508cbb53a63efed9711" dependencies = [ - "p3-field", - "p3-matrix", - "p3-maybe-rayon", - "p3-util", - "tracing", + "openvm-macros-common", + "quote", + "syn 2.0.100", ] [[package]] -name = "p3-field" -version = "0.2.0-succinct" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f91d8e5f9ede1171adafdb0b6a0df1827fbd4eb6a6217bfa36374e5d86248757" +name = "openvm-algebra-guest" +version = "1.1.2" +source = "git+https://github.com/openvm-org/openvm.git?rev=f0477ab8ee276bf102afb508cbb53a63efed9711#f0477ab8ee276bf102afb508cbb53a63efed9711" dependencies = [ - "itertools 0.12.1", + "halo2curves-axiom", "num-bigint 0.4.6", - "num-traits", - "p3-util", - "rand 0.8.5", - "serde", + "openvm-algebra-complex-macros", + "openvm-algebra-moduli-macros", + "serde-big-array", + "strum_macros 0.26.4", ] [[package]] -name = "p3-matrix" -version = "0.2.0-succinct" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98bf2c7680b8e906a5e147fe4ceb05a11cc9fa35678aa724333bcb35c72483c1" +name = "openvm-algebra-moduli-macros" +version = "1.1.2" +source = "git+https://github.com/openvm-org/openvm.git?rev=f0477ab8ee276bf102afb508cbb53a63efed9711#f0477ab8ee276bf102afb508cbb53a63efed9711" dependencies = [ - "itertools 0.12.1", - "p3-field", - "p3-maybe-rayon", - "p3-util", - "rand 0.8.5", - "serde", - "tracing", + "openvm-macros-common", + "quote", + "syn 2.0.100", ] [[package]] -name = "p3-maybe-rayon" -version = "0.2.0" +name = "openvm-algebra-transpiler" +version = "1.1.2" +source = "git+https://github.com/openvm-org/openvm.git?rev=f0477ab8ee276bf102afb508cbb53a63efed9711#f0477ab8ee276bf102afb508cbb53a63efed9711" +dependencies = [ + "openvm-algebra-guest", + "openvm-instructions", + "openvm-instructions-derive", + "openvm-stark-backend", + "openvm-transpiler", + "rrs-lib", + "strum 0.26.3", +] + +[[package]] +name = "openvm-bigint-circuit" +version = "1.1.2" +source = "git+https://github.com/openvm-org/openvm.git?rev=f0477ab8ee276bf102afb508cbb53a63efed9711#f0477ab8ee276bf102afb508cbb53a63efed9711" +dependencies = [ + "derive-new 0.6.0", + "derive_more 1.0.0", + "openvm-bigint-transpiler", + "openvm-circuit", + "openvm-circuit-derive", + "openvm-circuit-primitives", + "openvm-circuit-primitives-derive", + "openvm-instructions", + "openvm-rv32-adapters", + "openvm-rv32im-circuit", + "openvm-rv32im-transpiler", + "openvm-stark-backend", + "openvm-stark-sdk", + "rand 0.8.5", + "serde", +] + +[[package]] +name = "openvm-bigint-guest" +version = "1.1.2" +source = "git+https://github.com/openvm-org/openvm.git?rev=f0477ab8ee276bf102afb508cbb53a63efed9711#f0477ab8ee276bf102afb508cbb53a63efed9711" +dependencies = [ + "num-bigint 0.4.6", + "num-traits", + "openvm", + "openvm-platform", + "serde", + "serde-big-array", + "strum_macros 0.26.4", +] + +[[package]] +name = "openvm-bigint-transpiler" +version = "1.1.2" +source = "git+https://github.com/openvm-org/openvm.git?rev=f0477ab8ee276bf102afb508cbb53a63efed9711#f0477ab8ee276bf102afb508cbb53a63efed9711" +dependencies = [ + "openvm-bigint-guest", + "openvm-instructions", + "openvm-instructions-derive", + "openvm-rv32im-transpiler", + "openvm-stark-backend", + "openvm-transpiler", + "rrs-lib", + "strum 0.26.3", +] + +[[package]] +name = "openvm-build" +version = "1.1.2" +source = "git+https://github.com/openvm-org/openvm.git?rev=f0477ab8ee276bf102afb508cbb53a63efed9711#f0477ab8ee276bf102afb508cbb53a63efed9711" +dependencies = [ + "cargo_metadata", + "eyre", + "openvm-platform", + "serde", + "serde_json", +] + +[[package]] +name = "openvm-circuit" +version = "1.1.2" +source = "git+https://github.com/openvm-org/openvm.git?rev=f0477ab8ee276bf102afb508cbb53a63efed9711#f0477ab8ee276bf102afb508cbb53a63efed9711" +dependencies = [ + "backtrace", + "cfg-if", + "derivative", + "derive-new 0.6.0", + "derive_more 1.0.0", + "enum_dispatch", + "eyre", + "getset", + "itertools 0.14.0", + "openvm-circuit-derive", + "openvm-circuit-primitives", + "openvm-circuit-primitives-derive", + "openvm-instructions", + "openvm-poseidon2-air", + "openvm-stark-backend", + "openvm-stark-sdk", + "p3-baby-bear 0.1.0", + "rand 0.8.5", + "rustc-hash 2.1.1", + "serde", + "serde-big-array", + "static_assertions", + "thiserror 1.0.69", + "tracing", +] + +[[package]] +name = "openvm-circuit-derive" +version = "1.1.2" +source = "git+https://github.com/openvm-org/openvm.git?rev=f0477ab8ee276bf102afb508cbb53a63efed9711#f0477ab8ee276bf102afb508cbb53a63efed9711" +dependencies = [ + "itertools 0.14.0", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "openvm-circuit-primitives" +version = "1.1.2" +source = "git+https://github.com/openvm-org/openvm.git?rev=f0477ab8ee276bf102afb508cbb53a63efed9711#f0477ab8ee276bf102afb508cbb53a63efed9711" +dependencies = [ + "derive-new 0.6.0", + "itertools 0.14.0", + "num-bigint 0.4.6", + "num-traits", + "openvm-circuit-primitives-derive", + "openvm-stark-backend", + "rand 0.8.5", + "tracing", +] + +[[package]] +name = "openvm-circuit-primitives-derive" +version = "1.1.2" +source = "git+https://github.com/openvm-org/openvm.git?rev=f0477ab8ee276bf102afb508cbb53a63efed9711#f0477ab8ee276bf102afb508cbb53a63efed9711" +dependencies = [ + "itertools 0.14.0", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "openvm-continuations" +version = "1.1.2" +source = "git+https://github.com/openvm-org/openvm.git?rev=f0477ab8ee276bf102afb508cbb53a63efed9711#f0477ab8ee276bf102afb508cbb53a63efed9711" +dependencies = [ + "derivative", + "openvm-circuit", + "openvm-native-compiler", + "openvm-native-recursion", + "openvm-stark-backend", + "openvm-stark-sdk", + "serde", + "static_assertions", +] + +[[package]] +name = "openvm-custom-insn" +version = "0.1.0" +source = "git+https://github.com/openvm-org/openvm.git?rev=f0477ab8ee276bf102afb508cbb53a63efed9711#f0477ab8ee276bf102afb508cbb53a63efed9711" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "openvm-ecc-circuit" +version = "1.1.2" +source = "git+https://github.com/openvm-org/openvm.git?rev=f0477ab8ee276bf102afb508cbb53a63efed9711#f0477ab8ee276bf102afb508cbb53a63efed9711" +dependencies = [ + "derive-new 0.6.0", + "derive_more 1.0.0", + "eyre", + "num-bigint 0.4.6", + "num-integer", + "num-traits", + "once_cell", + "openvm-algebra-circuit", + "openvm-algebra-guest", + "openvm-circuit", + "openvm-circuit-derive", + "openvm-circuit-primitives", + "openvm-circuit-primitives-derive", + "openvm-ecc-guest", + "openvm-ecc-transpiler", + "openvm-instructions", + "openvm-mod-circuit-builder", + "openvm-rv32-adapters", + "openvm-rv32im-circuit", + "openvm-stark-backend", + "rand 0.8.5", + "serde", + "serde_with", + "strum 0.26.3", +] + +[[package]] +name = "openvm-ecc-guest" +version = "1.1.2" +source = "git+https://github.com/openvm-org/openvm.git?rev=f0477ab8ee276bf102afb508cbb53a63efed9711#f0477ab8ee276bf102afb508cbb53a63efed9711" +dependencies = [ + "ecdsa", + "elliptic-curve", + "group 0.13.0", + "halo2curves-axiom", + "hex-literal 0.4.1", + "k256", + "lazy_static", + "num-bigint 0.4.6", + "once_cell", + "openvm", + "openvm-algebra-guest", + "openvm-algebra-moduli-macros", + "openvm-custom-insn", + "openvm-ecc-sw-macros", + "openvm-rv32im-guest", + "p256", + "serde", + "strum_macros 0.26.4", +] + +[[package]] +name = "openvm-ecc-sw-macros" +version = "1.1.2" +source = "git+https://github.com/openvm-org/openvm.git?rev=f0477ab8ee276bf102afb508cbb53a63efed9711#f0477ab8ee276bf102afb508cbb53a63efed9711" +dependencies = [ + "openvm-macros-common", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "openvm-ecc-transpiler" +version = "1.1.2" +source = "git+https://github.com/openvm-org/openvm.git?rev=f0477ab8ee276bf102afb508cbb53a63efed9711#f0477ab8ee276bf102afb508cbb53a63efed9711" +dependencies = [ + "openvm-ecc-guest", + "openvm-instructions", + "openvm-instructions-derive", + "openvm-stark-backend", + "openvm-transpiler", + "rrs-lib", + "strum 0.26.3", +] + +[[package]] +name = "openvm-instructions" +version = "1.1.2" +source = "git+https://github.com/openvm-org/openvm.git?rev=f0477ab8ee276bf102afb508cbb53a63efed9711#f0477ab8ee276bf102afb508cbb53a63efed9711" +dependencies = [ + "backtrace", + "derive-new 0.6.0", + "itertools 0.14.0", + "num-bigint 0.4.6", + "num-traits", + "openvm-instructions-derive", + "openvm-stark-backend", + "serde", + "strum 0.26.3", + "strum_macros 0.26.4", +] + +[[package]] +name = "openvm-instructions-derive" +version = "1.1.2" +source = "git+https://github.com/openvm-org/openvm.git?rev=f0477ab8ee276bf102afb508cbb53a63efed9711#f0477ab8ee276bf102afb508cbb53a63efed9711" +dependencies = [ + "quote", + "syn 2.0.100", +] + +[[package]] +name = "openvm-keccak256-circuit" +version = "1.1.2" +source = "git+https://github.com/openvm-org/openvm.git?rev=f0477ab8ee276bf102afb508cbb53a63efed9711#f0477ab8ee276bf102afb508cbb53a63efed9711" +dependencies = [ + "derive-new 0.6.0", + "derive_more 1.0.0", + "itertools 0.14.0", + "openvm-circuit", + "openvm-circuit-derive", + "openvm-circuit-primitives", + "openvm-circuit-primitives-derive", + "openvm-instructions", + "openvm-keccak256-transpiler", + "openvm-rv32im-circuit", + "openvm-stark-backend", + "openvm-stark-sdk", + "p3-keccak-air", + "rand 0.8.5", + "serde", + "serde-big-array", + "strum 0.26.3", + "tiny-keccak", + "tracing", +] + +[[package]] +name = "openvm-keccak256-guest" +version = "1.1.2" +source = "git+https://github.com/openvm-org/openvm.git?rev=f0477ab8ee276bf102afb508cbb53a63efed9711#f0477ab8ee276bf102afb508cbb53a63efed9711" +dependencies = [ + "openvm-platform", + "tiny-keccak", +] + +[[package]] +name = "openvm-keccak256-transpiler" +version = "1.1.2" +source = "git+https://github.com/openvm-org/openvm.git?rev=f0477ab8ee276bf102afb508cbb53a63efed9711#f0477ab8ee276bf102afb508cbb53a63efed9711" +dependencies = [ + "openvm-instructions", + "openvm-instructions-derive", + "openvm-keccak256-guest", + "openvm-stark-backend", + "openvm-transpiler", + "rrs-lib", + "strum 0.26.3", +] + +[[package]] +name = "openvm-kzg" +version = "0.1.0-alpha" +source = "git+https://github.com/axiom-crypto/openvm-kzg.git?rev=8b5fe9ce7142220967c6b774c8acbd85faa8c4b5#8b5fe9ce7142220967c6b774c8acbd85faa8c4b5" +dependencies = [ + "bls12_381 0.8.0", + "ff 0.13.1", + "hex", + "hex-literal 1.0.0", + "num-bigint 0.4.6", + "num-traits", + "openvm-algebra-guest", + "openvm-circuit", + "openvm-ecc-guest", + "openvm-pairing-guest", + "openvm-transpiler", + "serde", + "serde-big-array", + "sha2 0.10.8", + "spin 0.10.0", +] + +[[package]] +name = "openvm-macros-common" +version = "1.1.2" +source = "git+https://github.com/openvm-org/openvm.git?rev=f0477ab8ee276bf102afb508cbb53a63efed9711#f0477ab8ee276bf102afb508cbb53a63efed9711" +dependencies = [ + "syn 2.0.100", +] + +[[package]] +name = "openvm-mod-circuit-builder" +version = "1.1.2" +source = "git+https://github.com/openvm-org/openvm.git?rev=f0477ab8ee276bf102afb508cbb53a63efed9711#f0477ab8ee276bf102afb508cbb53a63efed9711" +dependencies = [ + "itertools 0.14.0", + "num-bigint 0.4.6", + "num-traits", + "openvm-circuit", + "openvm-circuit-primitives", + "openvm-instructions", + "openvm-stark-backend", + "openvm-stark-sdk", + "rand 0.8.5", + "serde", + "serde_with", + "tracing", +] + +[[package]] +name = "openvm-native-circuit" +version = "1.1.2" +source = "git+https://github.com/openvm-org/openvm.git?rev=f0477ab8ee276bf102afb508cbb53a63efed9711#f0477ab8ee276bf102afb508cbb53a63efed9711" +dependencies = [ + "derive-new 0.6.0", + "derive_more 1.0.0", + "eyre", + "itertools 0.14.0", + "openvm-circuit", + "openvm-circuit-derive", + "openvm-circuit-primitives", + "openvm-circuit-primitives-derive", + "openvm-instructions", + "openvm-native-compiler", + "openvm-poseidon2-air", + "openvm-rv32im-circuit", + "openvm-stark-backend", + "openvm-stark-sdk", + "rand 0.8.5", + "serde", + "serde-big-array", + "static_assertions", + "strum 0.26.3", + "tracing", +] + +[[package]] +name = "openvm-native-compiler" +version = "1.1.2" +source = "git+https://github.com/openvm-org/openvm.git?rev=f0477ab8ee276bf102afb508cbb53a63efed9711#f0477ab8ee276bf102afb508cbb53a63efed9711" +dependencies = [ + "backtrace", + "itertools 0.14.0", + "num-bigint 0.4.6", + "num-integer", + "openvm-circuit", + "openvm-instructions", + "openvm-instructions-derive", + "openvm-native-compiler-derive", + "openvm-rv32im-transpiler", + "openvm-stark-backend", + "openvm-stark-sdk", + "serde", + "snark-verifier-sdk", + "strum 0.26.3", + "strum_macros 0.26.4", + "zkhash", +] + +[[package]] +name = "openvm-native-compiler-derive" +version = "1.1.2" +source = "git+https://github.com/openvm-org/openvm.git?rev=f0477ab8ee276bf102afb508cbb53a63efed9711#f0477ab8ee276bf102afb508cbb53a63efed9711" +dependencies = [ + "quote", + "syn 2.0.100", +] + +[[package]] +name = "openvm-native-recursion" +version = "1.1.2" +source = "git+https://github.com/openvm-org/openvm.git?rev=f0477ab8ee276bf102afb508cbb53a63efed9711#f0477ab8ee276bf102afb508cbb53a63efed9711" +dependencies = [ + "cfg-if", + "itertools 0.14.0", + "lazy_static", + "once_cell", + "openvm-circuit", + "openvm-native-circuit", + "openvm-native-compiler", + "openvm-native-compiler-derive", + "openvm-stark-backend", + "openvm-stark-sdk", + "p3-dft 0.1.0", + "p3-fri", + "p3-merkle-tree", + "p3-symmetric 0.1.0", + "rand 0.8.5", + "serde", + "serde_json", + "serde_with", + "snark-verifier-sdk", + "tracing", +] + +[[package]] +name = "openvm-pairing-circuit" +version = "1.1.2" +source = "git+https://github.com/openvm-org/openvm.git?rev=f0477ab8ee276bf102afb508cbb53a63efed9711#f0477ab8ee276bf102afb508cbb53a63efed9711" +dependencies = [ + "derive-new 0.6.0", + "derive_more 1.0.0", + "eyre", + "itertools 0.14.0", + "num-bigint 0.4.6", + "num-traits", + "openvm-algebra-circuit", + "openvm-circuit", + "openvm-circuit-derive", + "openvm-circuit-primitives", + "openvm-circuit-primitives-derive", + "openvm-ecc-circuit", + "openvm-ecc-guest", + "openvm-instructions", + "openvm-mod-circuit-builder", + "openvm-pairing-guest", + "openvm-pairing-transpiler", + "openvm-rv32-adapters", + "openvm-rv32im-circuit", + "openvm-stark-backend", + "rand 0.8.5", + "serde", + "strum 0.26.3", +] + +[[package]] +name = "openvm-pairing-guest" +version = "1.1.2" +source = "git+https://github.com/openvm-org/openvm.git?rev=f0477ab8ee276bf102afb508cbb53a63efed9711#f0477ab8ee276bf102afb508cbb53a63efed9711" +dependencies = [ + "group 0.13.0", + "halo2curves-axiom", + "hex-literal 0.4.1", + "itertools 0.14.0", + "lazy_static", + "num-bigint 0.4.6", + "num-traits", + "openvm", + "openvm-algebra-complex-macros", + "openvm-algebra-guest", + "openvm-algebra-moduli-macros", + "openvm-custom-insn", + "openvm-ecc-guest", + "openvm-ecc-sw-macros", + "openvm-platform", + "openvm-rv32im-guest", + "rand 0.8.5", + "serde", + "strum_macros 0.26.4", +] + +[[package]] +name = "openvm-pairing-transpiler" +version = "1.1.2" +source = "git+https://github.com/openvm-org/openvm.git?rev=f0477ab8ee276bf102afb508cbb53a63efed9711#f0477ab8ee276bf102afb508cbb53a63efed9711" +dependencies = [ + "openvm-instructions", + "openvm-instructions-derive", + "openvm-pairing-guest", + "openvm-stark-backend", + "openvm-transpiler", + "rrs-lib", + "strum 0.26.3", +] + +[[package]] +name = "openvm-platform" +version = "1.1.2" +source = "git+https://github.com/openvm-org/openvm.git?rev=f0477ab8ee276bf102afb508cbb53a63efed9711#f0477ab8ee276bf102afb508cbb53a63efed9711" +dependencies = [ + "getrandom 0.2.15", + "libm", + "openvm-custom-insn", + "openvm-rv32im-guest", +] + +[[package]] +name = "openvm-poseidon2-air" +version = "1.1.2" +source = "git+https://github.com/openvm-org/openvm.git?rev=f0477ab8ee276bf102afb508cbb53a63efed9711#f0477ab8ee276bf102afb508cbb53a63efed9711" +dependencies = [ + "derivative", + "lazy_static", + "openvm-stark-backend", + "openvm-stark-sdk", + "p3-monty-31", + "p3-poseidon2 0.1.0", + "p3-poseidon2-air", + "p3-symmetric 0.1.0", + "rand 0.8.5", + "zkhash", +] + +[[package]] +name = "openvm-rv32-adapters" +version = "1.1.2" +source = "git+https://github.com/openvm-org/openvm.git?rev=f0477ab8ee276bf102afb508cbb53a63efed9711#f0477ab8ee276bf102afb508cbb53a63efed9711" +dependencies = [ + "derive-new 0.6.0", + "itertools 0.14.0", + "openvm-circuit", + "openvm-circuit-primitives", + "openvm-circuit-primitives-derive", + "openvm-instructions", + "openvm-rv32im-circuit", + "openvm-stark-backend", + "openvm-stark-sdk", + "rand 0.8.5", + "serde", + "serde-big-array", + "serde_with", +] + +[[package]] +name = "openvm-rv32im-circuit" +version = "1.1.2" +source = "git+https://github.com/openvm-org/openvm.git?rev=f0477ab8ee276bf102afb508cbb53a63efed9711#f0477ab8ee276bf102afb508cbb53a63efed9711" +dependencies = [ + "derive-new 0.6.0", + "derive_more 1.0.0", + "eyre", + "num-bigint 0.4.6", + "num-integer", + "openvm-circuit", + "openvm-circuit-derive", + "openvm-circuit-primitives", + "openvm-circuit-primitives-derive", + "openvm-instructions", + "openvm-rv32im-transpiler", + "openvm-stark-backend", + "rand 0.8.5", + "serde", + "serde-big-array", + "strum 0.26.3", +] + +[[package]] +name = "openvm-rv32im-guest" +version = "1.1.2" +source = "git+https://github.com/openvm-org/openvm.git?rev=f0477ab8ee276bf102afb508cbb53a63efed9711#f0477ab8ee276bf102afb508cbb53a63efed9711" +dependencies = [ + "openvm-custom-insn", + "strum_macros 0.26.4", +] + +[[package]] +name = "openvm-rv32im-transpiler" +version = "1.1.2" +source = "git+https://github.com/openvm-org/openvm.git?rev=f0477ab8ee276bf102afb508cbb53a63efed9711#f0477ab8ee276bf102afb508cbb53a63efed9711" +dependencies = [ + "openvm-instructions", + "openvm-instructions-derive", + "openvm-rv32im-guest", + "openvm-stark-backend", + "openvm-transpiler", + "rrs-lib", + "serde", + "strum 0.26.3", + "tracing", +] + +[[package]] +name = "openvm-sdk" +version = "1.1.2" +source = "git+https://github.com/openvm-org/openvm.git?rev=f0477ab8ee276bf102afb508cbb53a63efed9711#f0477ab8ee276bf102afb508cbb53a63efed9711" +dependencies = [ + "alloy-sol-types 0.8.25", + "async-trait", + "bitcode", + "bon", + "clap", + "derivative", + "derive_more 1.0.0", + "eyre", + "forge-fmt", + "getset", + "hex", + "itertools 0.14.0", + "metrics", + "openvm", + "openvm-algebra-circuit", + "openvm-algebra-transpiler", + "openvm-bigint-circuit", + "openvm-bigint-transpiler", + "openvm-build", + "openvm-circuit", + "openvm-continuations", + "openvm-ecc-circuit", + "openvm-ecc-transpiler", + "openvm-keccak256-circuit", + "openvm-keccak256-transpiler", + "openvm-native-circuit", + "openvm-native-compiler", + "openvm-native-recursion", + "openvm-pairing-circuit", + "openvm-pairing-transpiler", + "openvm-rv32im-circuit", + "openvm-rv32im-transpiler", + "openvm-sha256-circuit", + "openvm-sha256-transpiler", + "openvm-stark-backend", + "openvm-stark-sdk", + "openvm-transpiler", + "p3-fri", + "serde", + "serde_json", + "serde_with", + "snark-verifier", + "snark-verifier-sdk", + "tempfile", + "thiserror 1.0.69", + "tracing", +] + +[[package]] +name = "openvm-sha256-air" +version = "1.1.2" +source = "git+https://github.com/openvm-org/openvm.git?rev=f0477ab8ee276bf102afb508cbb53a63efed9711#f0477ab8ee276bf102afb508cbb53a63efed9711" +dependencies = [ + "openvm-circuit-primitives", + "openvm-stark-backend", + "rand 0.8.5", + "sha2 0.10.8", +] + +[[package]] +name = "openvm-sha256-circuit" +version = "1.1.2" +source = "git+https://github.com/openvm-org/openvm.git?rev=f0477ab8ee276bf102afb508cbb53a63efed9711#f0477ab8ee276bf102afb508cbb53a63efed9711" +dependencies = [ + "derive-new 0.6.0", + "derive_more 1.0.0", + "openvm-circuit", + "openvm-circuit-derive", + "openvm-circuit-primitives", + "openvm-circuit-primitives-derive", + "openvm-instructions", + "openvm-rv32im-circuit", + "openvm-sha256-air", + "openvm-sha256-transpiler", + "openvm-stark-backend", + "openvm-stark-sdk", + "rand 0.8.5", + "serde", + "sha2 0.10.8", + "strum 0.26.3", +] + +[[package]] +name = "openvm-sha256-guest" +version = "1.1.2" +source = "git+https://github.com/openvm-org/openvm.git?rev=f0477ab8ee276bf102afb508cbb53a63efed9711#f0477ab8ee276bf102afb508cbb53a63efed9711" +dependencies = [ + "openvm-platform", + "sha2 0.10.8", +] + +[[package]] +name = "openvm-sha256-transpiler" +version = "1.1.2" +source = "git+https://github.com/openvm-org/openvm.git?rev=f0477ab8ee276bf102afb508cbb53a63efed9711#f0477ab8ee276bf102afb508cbb53a63efed9711" +dependencies = [ + "openvm-instructions", + "openvm-instructions-derive", + "openvm-sha256-guest", + "openvm-stark-backend", + "openvm-transpiler", + "rrs-lib", + "strum 0.26.3", +] + +[[package]] +name = "openvm-stark-backend" +version = "1.0.0" +source = "git+https://github.com/openvm-org/stark-backend.git?tag=v1.0.1#e540dbdd09ef20db7207ad7f2674bece75a2b803" +dependencies = [ + "bitcode", + "cfg-if", + "derivative", + "derive-new 0.7.0", + "itertools 0.14.0", + "p3-air", + "p3-challenger", + "p3-commit", + "p3-field 0.1.0", + "p3-matrix 0.1.0", + "p3-maybe-rayon 0.1.0", + "p3-uni-stark", + "p3-util 0.1.0", + "rayon", + "rustc-hash 2.1.1", + "serde", + "thiserror 1.0.69", + "tikv-jemallocator", + "tracing", +] + +[[package]] +name = "openvm-stark-sdk" +version = "1.0.0" +source = "git+https://github.com/openvm-org/stark-backend.git?tag=v1.0.1#e540dbdd09ef20db7207ad7f2674bece75a2b803" +dependencies = [ + "derivative", + "derive_more 0.99.20", + "ff 0.13.1", + "itertools 0.14.0", + "metrics", + "metrics-tracing-context", + "metrics-util", + "openvm-stark-backend", + "p3-baby-bear 0.1.0", + "p3-blake3", + "p3-bn254-fr", + "p3-dft 0.1.0", + "p3-fri", + "p3-goldilocks", + "p3-keccak", + "p3-koala-bear", + "p3-merkle-tree", + "p3-poseidon", + "p3-poseidon2 0.1.0", + "p3-symmetric 0.1.0", + "rand 0.8.5", + "serde", + "serde_json", + "static_assertions", + "toml 0.8.20", + "tracing", + "tracing-forest", + "tracing-subscriber 0.3.19", + "zkhash", +] + +[[package]] +name = "openvm-tests" +version = "0.1.0" +dependencies = [ + "num-bigint 0.4.6", + "num-traits", + "openvm", + "openvm-algebra-circuit", + "openvm-algebra-transpiler", + "openvm-build", + "openvm-circuit", + "openvm-ecc-circuit", + "openvm-ecc-guest", + "openvm-ecc-transpiler", + "openvm-keccak256-guest", + "openvm-pairing-circuit", + "openvm-pairing-guest", + "openvm-pairing-transpiler", + "openvm-rv32im-transpiler", + "openvm-sdk", + "openvm-stark-sdk", + "openvm-transpiler", + "rand 0.8.5", + "revm-primitives 18.0.0", + "secp256k1", + "sha2 0.10.8", +] + +[[package]] +name = "openvm-transpiler" +version = "1.1.2" +source = "git+https://github.com/openvm-org/openvm.git?rev=f0477ab8ee276bf102afb508cbb53a63efed9711#f0477ab8ee276bf102afb508cbb53a63efed9711" +dependencies = [ + "elf", + "eyre", + "openvm-instructions", + "openvm-platform", + "openvm-stark-backend", + "rrs-lib", + "thiserror 1.0.69", +] + +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + +[[package]] +name = "ordered-float" +version = "4.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bb71e1b3fa6ca1c61f383464aaf2bb0e2f8e772a1f01d486832464de363b951" +dependencies = [ + "num-traits", +] + +[[package]] +name = "overload" +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 0.10.8", +] + +[[package]] +name = "p3-air" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=1ba4e5c#1ba4e5c40417f4f7aae86bcca56b6484b4b2490b" +dependencies = [ + "p3-field 0.1.0", + "p3-matrix 0.1.0", +] + +[[package]] +name = "p3-baby-bear" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=1ba4e5c#1ba4e5c40417f4f7aae86bcca56b6484b4b2490b" +dependencies = [ + "p3-field 0.1.0", + "p3-mds 0.1.0", + "p3-monty-31", + "p3-poseidon2 0.1.0", + "p3-symmetric 0.1.0", + "rand 0.8.5", + "serde", +] + +[[package]] +name = "p3-baby-bear" +version = "0.2.0-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "080896e9d09e9761982febafe3b3da5cbf320e32f0c89b6e2e01e875129f4c2d" +dependencies = [ + "num-bigint 0.4.6", + "p3-field 0.2.0-succinct", + "p3-mds 0.2.0-succinct", + "p3-poseidon2 0.2.0-succinct", + "p3-symmetric 0.2.0-succinct", + "rand 0.8.5", + "serde", +] + +[[package]] +name = "p3-blake3" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=1ba4e5c#1ba4e5c40417f4f7aae86bcca56b6484b4b2490b" +dependencies = [ + "blake3", + "p3-symmetric 0.1.0", + "p3-util 0.1.0", +] + +[[package]] +name = "p3-bn254-fr" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=1ba4e5c#1ba4e5c40417f4f7aae86bcca56b6484b4b2490b" +dependencies = [ + "ff 0.13.1", + "halo2curves", + "num-bigint 0.4.6", + "p3-field 0.1.0", + "p3-poseidon2 0.1.0", + "p3-symmetric 0.1.0", + "rand 0.8.5", + "serde", +] + +[[package]] +name = "p3-challenger" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=1ba4e5c#1ba4e5c40417f4f7aae86bcca56b6484b4b2490b" +dependencies = [ + "p3-field 0.1.0", + "p3-maybe-rayon 0.1.0", + "p3-symmetric 0.1.0", + "p3-util 0.1.0", + "tracing", +] + +[[package]] +name = "p3-commit" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=1ba4e5c#1ba4e5c40417f4f7aae86bcca56b6484b4b2490b" +dependencies = [ + "itertools 0.14.0", + "p3-challenger", + "p3-dft 0.1.0", + "p3-field 0.1.0", + "p3-matrix 0.1.0", + "p3-util 0.1.0", + "serde", +] + +[[package]] +name = "p3-dft" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=1ba4e5c#1ba4e5c40417f4f7aae86bcca56b6484b4b2490b" +dependencies = [ + "itertools 0.14.0", + "p3-field 0.1.0", + "p3-matrix 0.1.0", + "p3-maybe-rayon 0.1.0", + "p3-util 0.1.0", + "tracing", +] + +[[package]] +name = "p3-dft" +version = "0.2.0-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "292e97d02d4c38d8b306c2b8c0428bf15f4d32a11a40bcf80018f675bf33267e" +dependencies = [ + "p3-field 0.2.0-succinct", + "p3-matrix 0.2.0-succinct", + "p3-maybe-rayon 0.2.0", + "p3-util 0.2.0", + "tracing", +] + +[[package]] +name = "p3-field" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=1ba4e5c#1ba4e5c40417f4f7aae86bcca56b6484b4b2490b" +dependencies = [ + "itertools 0.14.0", + "num-bigint 0.4.6", + "num-integer", + "num-traits", + "nums", + "p3-maybe-rayon 0.1.0", + "p3-util 0.1.0", + "rand 0.8.5", + "serde", + "tracing", +] + +[[package]] +name = "p3-field" +version = "0.2.0-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f91d8e5f9ede1171adafdb0b6a0df1827fbd4eb6a6217bfa36374e5d86248757" +dependencies = [ + "itertools 0.12.1", + "num-bigint 0.4.6", + "num-traits", + "p3-util 0.2.0", + "rand 0.8.5", + "serde", +] + +[[package]] +name = "p3-fri" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=1ba4e5c#1ba4e5c40417f4f7aae86bcca56b6484b4b2490b" +dependencies = [ + "itertools 0.14.0", + "p3-challenger", + "p3-commit", + "p3-dft 0.1.0", + "p3-field 0.1.0", + "p3-interpolation", + "p3-matrix 0.1.0", + "p3-maybe-rayon 0.1.0", + "p3-util 0.1.0", + "rand 0.8.5", + "serde", + "tracing", +] + +[[package]] +name = "p3-goldilocks" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=1ba4e5c#1ba4e5c40417f4f7aae86bcca56b6484b4b2490b" +dependencies = [ + "num-bigint 0.4.6", + "p3-dft 0.1.0", + "p3-field 0.1.0", + "p3-mds 0.1.0", + "p3-poseidon", + "p3-poseidon2 0.1.0", + "p3-symmetric 0.1.0", + "p3-util 0.1.0", + "rand 0.8.5", + "serde", +] + +[[package]] +name = "p3-interpolation" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=1ba4e5c#1ba4e5c40417f4f7aae86bcca56b6484b4b2490b" +dependencies = [ + "p3-field 0.1.0", + "p3-matrix 0.1.0", + "p3-maybe-rayon 0.1.0", + "p3-util 0.1.0", +] + +[[package]] +name = "p3-keccak" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=1ba4e5c#1ba4e5c40417f4f7aae86bcca56b6484b4b2490b" +dependencies = [ + "itertools 0.14.0", + "p3-field 0.1.0", + "p3-symmetric 0.1.0", + "p3-util 0.1.0", + "tiny-keccak", +] + +[[package]] +name = "p3-keccak-air" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=1ba4e5c#1ba4e5c40417f4f7aae86bcca56b6484b4b2490b" +dependencies = [ + "p3-air", + "p3-field 0.1.0", + "p3-matrix 0.1.0", + "p3-maybe-rayon 0.1.0", + "p3-util 0.1.0", + "rand 0.8.5", + "tracing", +] + +[[package]] +name = "p3-koala-bear" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=1ba4e5c#1ba4e5c40417f4f7aae86bcca56b6484b4b2490b" +dependencies = [ + "p3-field 0.1.0", + "p3-mds 0.1.0", + "p3-monty-31", + "p3-poseidon2 0.1.0", + "p3-symmetric 0.1.0", + "rand 0.8.5", + "serde", +] + +[[package]] +name = "p3-matrix" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=1ba4e5c#1ba4e5c40417f4f7aae86bcca56b6484b4b2490b" +dependencies = [ + "itertools 0.14.0", + "p3-field 0.1.0", + "p3-maybe-rayon 0.1.0", + "p3-util 0.1.0", + "rand 0.8.5", + "serde", + "tracing", + "transpose", +] + +[[package]] +name = "p3-matrix" +version = "0.2.0-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98bf2c7680b8e906a5e147fe4ceb05a11cc9fa35678aa724333bcb35c72483c1" +dependencies = [ + "itertools 0.12.1", + "p3-field 0.2.0-succinct", + "p3-maybe-rayon 0.2.0", + "p3-util 0.2.0", + "rand 0.8.5", + "serde", + "tracing", +] + +[[package]] +name = "p3-maybe-rayon" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=1ba4e5c#1ba4e5c40417f4f7aae86bcca56b6484b4b2490b" +dependencies = [ + "rayon", +] + +[[package]] +name = "p3-maybe-rayon" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3925562a4c03183eafc92fd07b19f65ac6cb4b48d68c3920ce58d9bee6efe362" +[[package]] +name = "p3-mds" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=1ba4e5c#1ba4e5c40417f4f7aae86bcca56b6484b4b2490b" +dependencies = [ + "itertools 0.14.0", + "p3-dft 0.1.0", + "p3-field 0.1.0", + "p3-matrix 0.1.0", + "p3-symmetric 0.1.0", + "p3-util 0.1.0", + "rand 0.8.5", +] + [[package]] name = "p3-mds" version = "0.2.0-succinct" @@ -3133,11 +5713,72 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "706cea48976f54702dc68dffa512684c1304d1a3606cadea423cfe0b1ee25134" dependencies = [ "itertools 0.12.1", - "p3-dft", - "p3-field", - "p3-matrix", - "p3-symmetric", - "p3-util", + "p3-dft 0.2.0-succinct", + "p3-field 0.2.0-succinct", + "p3-matrix 0.2.0-succinct", + "p3-symmetric 0.2.0-succinct", + "p3-util 0.2.0", + "rand 0.8.5", +] + +[[package]] +name = "p3-merkle-tree" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=1ba4e5c#1ba4e5c40417f4f7aae86bcca56b6484b4b2490b" +dependencies = [ + "itertools 0.14.0", + "p3-commit", + "p3-field 0.1.0", + "p3-matrix 0.1.0", + "p3-maybe-rayon 0.1.0", + "p3-symmetric 0.1.0", + "p3-util 0.1.0", + "rand 0.8.5", + "serde", + "tracing", +] + +[[package]] +name = "p3-monty-31" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=1ba4e5c#1ba4e5c40417f4f7aae86bcca56b6484b4b2490b" +dependencies = [ + "itertools 0.14.0", + "num-bigint 0.4.6", + "p3-dft 0.1.0", + "p3-field 0.1.0", + "p3-matrix 0.1.0", + "p3-maybe-rayon 0.1.0", + "p3-mds 0.1.0", + "p3-poseidon2 0.1.0", + "p3-symmetric 0.1.0", + "p3-util 0.1.0", + "rand 0.8.5", + "serde", + "tracing", + "transpose", +] + +[[package]] +name = "p3-poseidon" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=1ba4e5c#1ba4e5c40417f4f7aae86bcca56b6484b4b2490b" +dependencies = [ + "p3-field 0.1.0", + "p3-mds 0.1.0", + "p3-symmetric 0.1.0", + "rand 0.8.5", +] + +[[package]] +name = "p3-poseidon2" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=1ba4e5c#1ba4e5c40417f4f7aae86bcca56b6484b4b2490b" +dependencies = [ + "gcd", + "p3-field 0.1.0", + "p3-mds 0.1.0", + "p3-symmetric 0.1.0", "rand 0.8.5", ] @@ -3148,10 +5789,36 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2ce5f5ec7f1ba3a233a671621029def7bd416e7c51218c9d1167d21602cf312" dependencies = [ "gcd", - "p3-field", - "p3-mds", - "p3-symmetric", + "p3-field 0.2.0-succinct", + "p3-mds 0.2.0-succinct", + "p3-symmetric 0.2.0-succinct", + "rand 0.8.5", + "serde", +] + +[[package]] +name = "p3-poseidon2-air" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=1ba4e5c#1ba4e5c40417f4f7aae86bcca56b6484b4b2490b" +dependencies = [ + "p3-air", + "p3-field 0.1.0", + "p3-matrix 0.1.0", + "p3-maybe-rayon 0.1.0", + "p3-poseidon2 0.1.0", + "p3-util 0.1.0", "rand 0.8.5", + "tikv-jemallocator", + "tracing", +] + +[[package]] +name = "p3-symmetric" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=1ba4e5c#1ba4e5c40417f4f7aae86bcca56b6484b4b2490b" +dependencies = [ + "itertools 0.14.0", + "p3-field 0.1.0", "serde", ] @@ -3162,7 +5829,33 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2f29dc5bb6c99d3de75869d5c086874b64890280eeb7d3e068955f939e219253" dependencies = [ "itertools 0.12.1", - "p3-field", + "p3-field 0.2.0-succinct", + "serde", +] + +[[package]] +name = "p3-uni-stark" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=1ba4e5c#1ba4e5c40417f4f7aae86bcca56b6484b4b2490b" +dependencies = [ + "itertools 0.14.0", + "p3-air", + "p3-challenger", + "p3-commit", + "p3-dft 0.1.0", + "p3-field 0.1.0", + "p3-matrix 0.1.0", + "p3-maybe-rayon 0.1.0", + "p3-util 0.1.0", + "serde", + "tracing", +] + +[[package]] +name = "p3-util" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=1ba4e5c#1ba4e5c40417f4f7aae86bcca56b6484b4b2490b" +dependencies = [ "serde", ] @@ -3175,13 +5868,22 @@ dependencies = [ "serde", ] +[[package]] +name = "pairing" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "135590d8bdba2b31346f9cd1fb2a912329f5135e832a4f422942eb6ead8b6b3b" +dependencies = [ + "group 0.12.1", +] + [[package]] name = "pairing" version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "81fec4625e73cf41ef4bb6846cafa6d44736525f442ba45e407c4a000a13996f" dependencies = [ - "group", + "group 0.13.0", ] [[package]] @@ -3235,12 +5937,94 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "password-hash" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700" +dependencies = [ + "base64ct", + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "pasta_curves" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cc65faf8e7313b4b1fbaa9f7ca917a0eed499a9663be71477f87993604341d8" +dependencies = [ + "blake2b_simd", + "ff 0.12.1", + "group 0.12.1", + "lazy_static", + "rand 0.8.5", + "static_assertions", + "subtle", +] + +[[package]] +name = "pasta_curves" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e57598f73cc7e1b2ac63c79c517b31a0877cd7c402cdcaa311b5208de7a095" +dependencies = [ + "blake2b_simd", + "ff 0.13.1", + "group 0.13.0", + "lazy_static", + "rand 0.8.5", + "static_assertions", + "subtle", +] + [[package]] name = "paste" version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" +[[package]] +name = "path-slash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e91099d4268b0e11973f036e885d652fb0b21fedcf69738c627f94db6a44f42" + +[[package]] +name = "pbkdf2" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" +dependencies = [ + "digest 0.10.7", + "hmac", + "password-hash", + "sha2 0.10.8", +] + +[[package]] +name = "pear" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdeeaa00ce488657faba8ebf44ab9361f9365a97bd39ffb8a60663f57ff4b467" +dependencies = [ + "inlinable_string", + "pear_codegen", + "yansi 1.0.1", +] + +[[package]] +name = "pear_codegen" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bab5b985dc082b345f812b7df84e1bef27e7207b39e448439ba8bd69c93f147" +dependencies = [ + "proc-macro2", + "proc-macro2-diagnostics", + "quote", + "syn 2.0.100", +] + [[package]] name = "percent-encoding" version = "2.3.1" @@ -3254,10 +6038,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b7cafe60d6cf8e62e1b9b2ea516a089c008945bb5a275416789e7db0bc199dc" dependencies = [ "memchr", - "thiserror", + "thiserror 2.0.12", "ucd-trie", ] +[[package]] +name = "petgraph" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" +dependencies = [ + "fixedbitset", + "indexmap 2.8.0", +] + [[package]] name = "phf" version = "0.11.3" @@ -3392,6 +6186,21 @@ version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "350e9b48cbc6b0e028b0473b114454c6316e57336ee184ceab6e53f72c178b3e" +[[package]] +name = "poseidon-primitives" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e4aaeda7a092e21165cc5f0cbc738e72a46f31c03c3cbd87b71ceae9d2d93bc" +dependencies = [ + "bitvec", + "ff 0.13.1", + "lazy_static", + "log", + "rand 0.8.5", + "rand_xorshift", + "thiserror 1.0.69", +] + [[package]] name = "powerfmt" version = "0.2.0" @@ -3407,6 +6216,22 @@ dependencies = [ "zerocopy 0.8.23", ] +[[package]] +name = "precomputed-hash" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" + +[[package]] +name = "prettyplease" +version = "0.2.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "664ec5419c51e34154eec046ebcba56312d5a2fc3b09a06da188e1ad21afadf6" +dependencies = [ + "proc-macro2", + "syn 2.0.100", +] + [[package]] name = "primeorder" version = "0.13.6" @@ -3424,6 +6249,9 @@ checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" dependencies = [ "fixed-hash", "impl-codec", + "impl-rlp", + "impl-serde", + "scale-info", "uint", ] @@ -3433,7 +6261,7 @@ version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" dependencies = [ - "toml_edit", + "toml_edit 0.22.24", ] [[package]] @@ -3459,12 +6287,25 @@ dependencies = [ ] [[package]] -name = "proc-macro2" -version = "1.0.94" +name = "proc-macro2" +version = "1.0.94" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a31971752e70b8b2686d7e46ec17fb38dad4051d94024c88df49b667caea9c84" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "proc-macro2-diagnostics" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a31971752e70b8b2686d7e46ec17fb38dad4051d94024c88df49b667caea9c84" +checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" dependencies = [ - "unicode-ident", + "proc-macro2", + "quote", + "syn 2.0.100", + "version_check", + "yansi 1.0.1", ] [[package]] @@ -3473,15 +6314,15 @@ version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "14cae93065090804185d3b75f0bf93b8eeda30c7a9b4a33d3bdb3988d6229e50" dependencies = [ - "bit-set", - "bit-vec", - "bitflags", + "bit-set 0.8.0", + "bit-vec 0.8.0", + "bitflags 2.9.0", "lazy_static", "num-traits", "rand 0.8.5", "rand_chacha 0.3.1", "rand_xorshift", - "regex-syntax", + "regex-syntax 0.8.5", "rusty-fork", "tempfile", "unarray", @@ -3498,6 +6339,21 @@ dependencies = [ "syn 2.0.100", ] +[[package]] +name = "quanta" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3bd1fe6824cea6538803de3ff1bc0cf3949024db3d43c9643024bfb33a807c0e" +dependencies = [ + "crossbeam-utils", + "libc", + "once_cell", + "raw-cpuid", + "wasi 0.11.0+wasi-snapshot-preview1", + "web-sys", + "winapi", +] + [[package]] name = "quick-error" version = "1.2.3" @@ -3525,6 +6381,16 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" +[[package]] +name = "radix_trie" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c069c179fcdc6a2fe24d8d18305cf085fdbd4f922c041943e203685d6a1c58fd" +dependencies = [ + "endian-type", + "nibble_vec", +] + [[package]] name = "rand" version = "0.8.5" @@ -3597,6 +6463,15 @@ dependencies = [ "rand_core 0.6.4", ] +[[package]] +name = "raw-cpuid" +version = "11.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6df7ab838ed27997ba19a4664507e6f82b41fe6e20be42929332156e5e85146" +dependencies = [ + "bitflags 2.9.0", +] + [[package]] name = "rayon" version = "1.10.0" @@ -3623,7 +6498,18 @@ version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b8c0c260b63a8219631167be35e6a988e9554dbd323f8bd08439c8ed1302bd1" dependencies = [ - "bitflags", + "bitflags 2.9.0", +] + +[[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]] @@ -3634,8 +6520,17 @@ checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", - "regex-automata", - "regex-syntax", + "regex-automata 0.4.9", + "regex-syntax 0.8.5", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax 0.6.29", ] [[package]] @@ -3646,9 +6541,15 @@ checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" dependencies = [ "aho-corasick", "memchr", - "regex-syntax", + "regex-syntax 0.8.5", ] +[[package]] +name = "regex-syntax" +version = "0.6.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + [[package]] name = "regex-syntax" version = "0.8.5" @@ -3661,20 +6562,61 @@ version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba39f3699c378cd8970968dcbff9c43159ea4cfbd88d43c00b22f2ef10a435d2" +[[package]] +name = "reqwest" +version = "0.11.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" +dependencies = [ + "base64 0.21.7", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2", + "http 0.2.12", + "http-body 0.4.6", + "hyper 0.14.32", + "hyper-rustls", + "ipnet", + "js-sys", + "log", + "mime", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls", + "rustls-pemfile 1.0.4", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper 0.1.2", + "system-configuration", + "tokio", + "tokio-rustls", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "webpki-roots", + "winreg", +] + [[package]] name = "reqwest" version = "0.12.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d19c46a6fdd48bc4dab94b6103fccc55d34c67cc0ad04653aad4ea2a07cd7bbb" dependencies = [ - "base64", + "base64 0.22.1", "bytes", "futures-core", "futures-util", - "http", - "http-body", + "http 1.3.1", + "http-body 1.0.1", "http-body-util", - "hyper", + "hyper 1.6.0", "hyper-tls", "hyper-util", "ipnet", @@ -3685,11 +6627,11 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project-lite", - "rustls-pemfile", + "rustls-pemfile 2.2.0", "serde", "serde_json", "serde_urlencoded", - "sync_wrapper", + "sync_wrapper 1.0.2", "tokio", "tokio-native-tls", "tower", @@ -3705,17 +6647,36 @@ dependencies = [ name = "revm" version = "22.0.0" dependencies = [ - "revm-bytecode", - "revm-context", - "revm-context-interface", - "revm-database", - "revm-database-interface", - "revm-handler", - "revm-inspector", - "revm-interpreter", - "revm-precompile", - "revm-primitives", - "revm-state", + "revm-bytecode 3.0.0", + "revm-context 3.0.0", + "revm-context-interface 3.0.0", + "revm-database 3.0.0", + "revm-database-interface 3.0.0", + "revm-handler 3.0.0", + "revm-inspector 3.0.0", + "revm-interpreter 18.0.0", + "revm-precompile 19.0.0", + "revm-primitives 18.0.0", + "revm-state 3.0.0", +] + +[[package]] +name = "revm" +version = "22.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5378e95ffe5c8377002dafeb6f7d370a55517cef7d6d6c16fc552253af3b123" +dependencies = [ + "revm-bytecode 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "revm-context 3.0.1", + "revm-context-interface 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "revm-database 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "revm-database-interface 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "revm-handler 3.0.1", + "revm-inspector 3.0.1", + "revm-interpreter 18.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "revm-precompile 19.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "revm-primitives 18.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "revm-state 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3725,7 +6686,19 @@ dependencies = [ "bitvec", "paste", "phf", - "revm-primitives", + "revm-primitives 18.0.0", + "serde", +] + +[[package]] +name = "revm-bytecode" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e63e138d520c5c5bc25ecc82506e9e4e6e85a811809fc5251c594378dccabfc6" +dependencies = [ + "bitvec", + "phf", + "revm-primitives 18.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde", ] @@ -3735,25 +6708,56 @@ version = "3.0.0" dependencies = [ "cfg-if", "derive-where", - "revm-bytecode", - "revm-context-interface", - "revm-database", - "revm-database-interface", - "revm-primitives", - "revm-state", + "revm-bytecode 3.0.0", + "revm-context-interface 3.0.0", + "revm-database 3.0.0", + "revm-database-interface 3.0.0", + "revm-primitives 18.0.0", + "revm-state 3.0.0", + "serde", +] + +[[package]] +name = "revm-context" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9765628dfea4f3686aa8f2a72471c52801e6b38b601939ac16965f49bac66580" +dependencies = [ + "cfg-if", + "derive-where", + "revm-bytecode 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "revm-context-interface 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "revm-database-interface 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "revm-primitives 18.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "revm-state 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde", +] + +[[package]] +name = "revm-context-interface" +version = "3.0.0" +dependencies = [ + "alloy-eip2930", + "alloy-eip7702", + "auto_impl", + "revm-database-interface 3.0.0", + "revm-primitives 18.0.0", + "revm-state 3.0.0", "serde", ] [[package]] name = "revm-context-interface" version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82d74335aa1f14222cc4d3be1f62a029cc7dc03819cc8d080ff17b7e1d76375f" dependencies = [ "alloy-eip2930", "alloy-eip7702", "auto_impl", - "revm-database-interface", - "revm-primitives", - "revm-state", + "revm-database-interface 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "revm-primitives 18.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "revm-state 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde", ] @@ -3763,33 +6767,59 @@ version = "3.0.0" dependencies = [ "alloy-eips", "alloy-provider", - "alloy-sol-types", + "alloy-sol-types 1.0.0", "alloy-transport", "anyhow", - "revm-bytecode", - "revm-database-interface", - "revm-primitives", - "revm-state", + "revm-bytecode 3.0.0", + "revm-database-interface 3.0.0", + "revm-primitives 18.0.0", + "revm-state 3.0.0", "rstest", "serde", "serde_json", "tokio", ] +[[package]] +name = "revm-database" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e5c80c5a2fd605f2119ee32a63fb3be941fb6a81ced8cdb3397abca28317224" +dependencies = [ + "alloy-eips", + "revm-bytecode 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "revm-database-interface 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "revm-primitives 18.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "revm-state 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde", +] + [[package]] name = "revm-database-interface" version = "3.0.0" dependencies = [ - "alloy-sol-types", + "alloy-sol-types 1.0.0", "anyhow", "auto_impl", - "revm-primitives", - "revm-state", + "revm-primitives 18.0.0", + "revm-state 3.0.0", "rstest", "serde", "tokio", ] +[[package]] +name = "revm-database-interface" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0e4dfbc734b1ea67b5e8f8b3c7dc4283e2210d978cdaf6c7a45e97be5ea53b3" +dependencies = [ + "auto_impl", + "revm-primitives 18.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "revm-state 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde", +] + [[package]] name = "revm-handler" version = "3.0.0" @@ -3799,15 +6829,33 @@ dependencies = [ "alloy-signer", "alloy-signer-local", "auto_impl", - "revm-bytecode", - "revm-context", - "revm-context-interface", - "revm-database", - "revm-database-interface", - "revm-interpreter", - "revm-precompile", - "revm-primitives", - "revm-state", + "revm-bytecode 3.0.0", + "revm-context 3.0.0", + "revm-context-interface 3.0.0", + "revm-database 3.0.0", + "revm-database-interface 3.0.0", + "revm-interpreter 18.0.0", + "revm-precompile 19.0.0", + "revm-primitives 18.0.0", + "revm-state 3.0.0", + "serde", +] + +[[package]] +name = "revm-handler" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8676379521c7bf179c31b685c5126ce7800eab5844122aef3231b97026d41a10" +dependencies = [ + "auto_impl", + "revm-bytecode 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "revm-context 3.0.1", + "revm-context-interface 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "revm-database-interface 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "revm-interpreter 18.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "revm-precompile 19.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "revm-primitives 18.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "revm-state 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde", ] @@ -3816,13 +6864,30 @@ name = "revm-inspector" version = "3.0.0" dependencies = [ "auto_impl", - "revm-context", - "revm-database", - "revm-database-interface", - "revm-handler", - "revm-interpreter", - "revm-primitives", - "revm-state", + "revm-context 3.0.0", + "revm-database 3.0.0", + "revm-database-interface 3.0.0", + "revm-handler 3.0.0", + "revm-interpreter 18.0.0", + "revm-primitives 18.0.0", + "revm-state 3.0.0", + "serde", + "serde_json", +] + +[[package]] +name = "revm-inspector" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfed4ecf999a3f6ae776ae2d160478c5dca986a8c2d02168e04066b1e34c789e" +dependencies = [ + "auto_impl", + "revm-context 3.0.1", + "revm-database-interface 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "revm-handler 3.0.1", + "revm-interpreter 18.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "revm-primitives 18.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "revm-state 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde", "serde_json", ] @@ -3832,14 +6897,26 @@ name = "revm-interpreter" version = "18.0.0" dependencies = [ "bincode", - "revm-bytecode", - "revm-context-interface", - "revm-database-interface", - "revm-primitives", + "revm-bytecode 3.0.0", + "revm-context-interface 3.0.0", + "revm-database-interface 3.0.0", + "revm-primitives 18.0.0", "serde", "walkdir", ] +[[package]] +name = "revm-interpreter" +version = "18.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "feb20260342003cfb791536e678ef5bbea1bfd1f8178b170e8885ff821985473" +dependencies = [ + "revm-bytecode 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "revm-context-interface 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "revm-primitives 18.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde", +] + [[package]] name = "revm-precompile" version = "19.0.0" @@ -3858,9 +6935,15 @@ dependencies = [ "kzg-rs", "libsecp256k1", "once_cell", + "openvm", + "openvm-ecc-guest", + "openvm-keccak256-guest", + "openvm-kzg", + "openvm-pairing-guest", + "openvm-sha256-guest", "p256", "rand 0.8.5", - "revm-primitives", + "revm-primitives 18.0.0", "ripemd", "rstest", "secp256k1", @@ -3868,11 +6951,63 @@ dependencies = [ "substrate-bn", ] +[[package]] +name = "revm-precompile" +version = "19.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "418e95eba68c9806c74f3e36cd5d2259170b61e90ac608b17ff8c435038ddace" +dependencies = [ + "ark-bls12-381", + "ark-bn254", + "ark-ec", + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "aurora-engine-modexp", + "blst", + "c-kzg", + "cfg-if", + "k256", + "libsecp256k1", + "once_cell", + "p256", + "revm-primitives 18.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ripemd", + "secp256k1", + "sha2 0.10.8", +] + +[[package]] +name = "revm-primitives" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51187b852d9e458816a2e19c81f1dd6c924077e1a8fccd16e4f044f865f299d7" +dependencies = [ + "alloy-primitives 0.4.2", + "alloy-rlp", + "auto_impl", + "bitflags 2.9.0", + "bitvec", + "enumn", + "hashbrown 0.14.5", + "hex", +] + +[[package]] +name = "revm-primitives" +version = "18.0.0" +dependencies = [ + "alloy-primitives 1.0.0", + "enumn", + "serde", +] + [[package]] name = "revm-primitives" version = "18.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fc2283ff87358ec7501956c5dd8724a6c2be959c619c4861395ae5e0054575f" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.0.0", "enumn", "serde", ] @@ -3881,9 +7016,21 @@ dependencies = [ name = "revm-state" version = "3.0.0" dependencies = [ - "bitflags", - "revm-bytecode", - "revm-primitives", + "bitflags 2.9.0", + "revm-bytecode 3.0.0", + "revm-primitives 18.0.0", + "serde", +] + +[[package]] +name = "revm-state" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09dd121f6e66d75ab111fb51b4712f129511569bc3e41e6067ae760861418bd8" +dependencies = [ + "bitflags 2.9.0", + "revm-bytecode 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "revm-primitives 18.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde", ] @@ -3891,7 +7038,7 @@ dependencies = [ name = "revm-statetest-types" version = "3.0.0" dependencies = [ - "revm", + "revm 22.0.0", "serde", "serde_json", ] @@ -3901,7 +7048,7 @@ name = "revme" version = "4.0.1" dependencies = [ "alloy-rlp", - "alloy-sol-types", + "alloy-sol-types 1.0.0", "clap", "codspeed-criterion-compat", "hash-db", @@ -3909,19 +7056,19 @@ dependencies = [ "k256", "microbench", "plain_hasher", - "revm", - "revm-bytecode", - "revm-context", - "revm-context-interface", - "revm-database", - "revm-database-interface", - "revm-inspector", - "revm-primitives", - "revm-state", + "revm 22.0.0", + "revm-bytecode 3.0.0", + "revm-context 3.0.0", + "revm-context-interface 3.0.0", + "revm-database 3.0.0", + "revm-database-interface 3.0.0", + "revm-inspector 3.0.0", + "revm-primitives 18.0.0", + "revm-state 3.0.0", "revm-statetest-types", "serde", "serde_json", - "thiserror", + "thiserror 2.0.12", "triehash", "walkdir", ] @@ -3936,6 +7083,20 @@ dependencies = [ "subtle", ] +[[package]] +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 = "ripemd" version = "0.1.3" @@ -3952,9 +7113,31 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" dependencies = [ "bytes", + "rlp-derive", "rustc-hex", ] +[[package]] +name = "rlp-derive" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e33d7b2abe0c340d8797fe2907d3f20d3b5ea5908683618bfe80df7f621f672a" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "rrs-lib" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4382d3af3a4ebdae7f64ba6edd9114fff92c89808004c4943b393377a25d001" +dependencies = [ + "downcast-rs", + "paste", +] + [[package]] name = "rstest" version = "0.24.0" @@ -4025,6 +7208,12 @@ version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + [[package]] name = "rustc-hash" version = "2.1.1" @@ -4059,16 +7248,37 @@ dependencies = [ ] [[package]] -name = "rustix" -version = "1.0.3" +name = "rustix" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e56a18552996ac8d29ecc3b190b4fdbb2d91ca4ec396de7bbffaf43f3d637e96" +dependencies = [ + "bitflags 2.9.0", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustls" +version = "0.21.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" +dependencies = [ + "log", + "ring", + "rustls-webpki", + "sct", +] + +[[package]] +name = "rustls-pemfile" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e56a18552996ac8d29ecc3b190b4fdbb2d91ca4ec396de7bbffaf43f3d637e96" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" dependencies = [ - "bitflags", - "errno", - "libc", - "linux-raw-sys", - "windows-sys 0.59.0", + "base64 0.21.7", ] [[package]] @@ -4086,6 +7296,16 @@ version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "917ce264624a4b4db1c364dcc35bfca9ded014d0a958cd47ad3e960e988ea51c" +[[package]] +name = "rustls-webpki" +version = "0.101.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" +dependencies = [ + "ring", + "untrusted", +] + [[package]] name = "rustversion" version = "1.0.20" @@ -4119,6 +7339,30 @@ 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", + "proc-macro2", + "quote", + "syn 2.0.100", +] + [[package]] name = "schannel" version = "0.1.27" @@ -4134,6 +7378,16 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" +[[package]] +name = "sct" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" +dependencies = [ + "ring", + "untrusted", +] + [[package]] name = "sec1" version = "0.7.3" @@ -4175,7 +7429,7 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags", + "bitflags 2.9.0", "core-foundation", "core-foundation-sys", "libc", @@ -4206,6 +7460,9 @@ name = "semver" version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" +dependencies = [ + "serde", +] [[package]] name = "semver-parser" @@ -4225,6 +7482,24 @@ dependencies = [ "serde_derive", ] +[[package]] +name = "serde-big-array" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11fc7cc2c76d73e0f27ee52abbd64eec84d46f370c88371120433196934e4b7f" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_arrays" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38636132857f68ec3d5f3eb121166d2af33cb55174c4d5ff645db6165cbef0fd" +dependencies = [ + "serde", +] + [[package]] name = "serde_derive" version = "1.0.219" @@ -4249,6 +7524,25 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_regex" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8136f1a4ea815d7eac4101cfd0b16dc0cb5e1fe1b8609dfd728058656b7badf" +dependencies = [ + "regex", + "serde", +] + +[[package]] +name = "serde_spanned" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" +dependencies = [ + "serde", +] + [[package]] name = "serde_urlencoded" version = "0.7.1" @@ -4267,7 +7561,7 @@ version = "3.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6b6f7f2fcb69f747921f79f3926bd1e203fce4fef62c268dd3abfb6d86029aa" dependencies = [ - "base64", + "base64 0.22.1", "chrono", "hex", "indexmap 1.9.3", @@ -4301,6 +7595,17 @@ dependencies = [ "serde", ] +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + [[package]] name = "sha2" version = "0.9.9" @@ -4345,12 +7650,30 @@ dependencies = [ "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-registry" +version = "1.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9203b8055f63a2a00e2f593bb0510367fe707d7ff1e5c872de2f537b339e5410" +dependencies = [ + "libc", +] + [[package]] name = "signature" version = "2.2.0" @@ -4367,6 +7690,12 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" +[[package]] +name = "sketches-ddsketch" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85636c14b73d81f541e525f585c0a2109e6744e1565b5c1668e31c70c10ed65c" + [[package]] name = "slab" version = "0.4.9" @@ -4385,6 +7714,51 @@ dependencies = [ "serde", ] +[[package]] +name = "snark-verifier" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d798d8ce8e29b8820ecc1028ac44cc4fc0f0296728af6fe6a0c4db05782c0a4" +dependencies = [ + "halo2-base", + "halo2-ecc", + "hex", + "itertools 0.11.0", + "lazy_static", + "num-bigint 0.4.6", + "num-integer", + "num-traits", + "pairing 0.23.0", + "rand 0.8.5", + "revm 22.0.1", + "ruint", + "serde", + "sha3", +] + +[[package]] +name = "snark-verifier-sdk" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a338d065044702bf751e87cf353daac63e2fc4c53a3e323cbcd98c603ee6e66c" +dependencies = [ + "bincode", + "ethereum-types", + "getset", + "halo2-base", + "hex", + "itertools 0.11.0", + "lazy_static", + "num-bigint 0.4.6", + "num-integer", + "num-traits", + "rand 0.8.5", + "rand_chacha 0.3.1", + "serde", + "serde_json", + "snark-verifier", +] + [[package]] name = "socket2" version = "0.5.8" @@ -4395,6 +7769,20 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "solang-parser" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cb9fa2fa2fa6837be8a2495486ff92e3ffe68a99b6eeba288e139efdd842457" +dependencies = [ + "itertools 0.11.0", + "lalrpop", + "lalrpop-util", + "phf", + "thiserror 1.0.69", + "unicode-xid", +] + [[package]] name = "sp1-lib" version = "4.1.3" @@ -4416,10 +7804,10 @@ dependencies = [ "hex", "lazy_static", "num-bigint 0.4.6", - "p3-baby-bear", - "p3-field", - "p3-poseidon2", - "p3-symmetric", + "p3-baby-bear 0.2.0-succinct", + "p3-field 0.2.0-succinct", + "p3-poseidon2 0.2.0-succinct", + "p3-symmetric 0.2.0-succinct", "serde", "sha2 0.10.8", ] @@ -4431,9 +7819,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e0800e0491c38cc686233518fce535d01ba0a0707781766fec38aee9c1b33890" dependencies = [ "cfg-if", - "ff", - "group", - "pairing", + "ff 0.13.1", + "group 0.13.0", + "pairing 0.23.0", "rand_core 0.6.4", "sp1-lib", "subtle", @@ -4445,6 +7833,12 @@ version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +[[package]] +name = "spin" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5fe4ccb98d9c292d56fec89a5e07da7fc4cf0dc11e156b41793132775d3e591" + [[package]] name = "spki" version = "0.7.3" @@ -4467,19 +7861,59 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" +[[package]] +name = "strength_reduce" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe895eb47f22e2ddd4dabc02bce419d2e643c8e3b585c78158b349195bc24d82" + +[[package]] +name = "string_cache" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f" +dependencies = [ + "new_debug_unreachable", + "parking_lot", + "phf_shared", + "precomputed-hash", +] + [[package]] name = "strsim" version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" +[[package]] +name = "strum" +version = "0.26.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" +dependencies = [ + "strum_macros 0.26.4", +] + [[package]] name = "strum" version = "0.27.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f64def088c51c9510a8579e3c5d67c65349dcf755e5479ad3d010aa6454e2c32" dependencies = [ - "strum_macros", + "strum_macros 0.27.1", +] + +[[package]] +name = "strum_macros" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.100", ] [[package]] @@ -4514,6 +7948,39 @@ version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" +[[package]] +name = "svm-rs" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11297baafe5fa0c99d5722458eac6a5e25c01eb1b8e5cd137f54079093daa7a4" +dependencies = [ + "dirs", + "fs2", + "hex", + "once_cell", + "reqwest 0.11.27", + "semver 1.0.26", + "serde", + "serde_json", + "sha2 0.10.8", + "thiserror 1.0.69", + "url", + "zip", +] + +[[package]] +name = "svm-rs-builds" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa64b5e8eecd3a8af7cfc311e29db31a268a62d5953233d3e8243ec77a71c4e3" +dependencies = [ + "build_const", + "hex", + "semver 1.0.26", + "serde_json", + "svm-rs", +] + [[package]] name = "syn" version = "1.0.109" @@ -4536,6 +8003,18 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "syn-solidity" +version = "0.8.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4560533fbd6914b94a8fb5cc803ed6801c3455668db3b810702c57612bac9412" +dependencies = [ + "paste", + "proc-macro2", + "quote", + "syn 2.0.100", +] + [[package]] name = "syn-solidity" version = "1.0.0" @@ -4548,6 +8027,12 @@ dependencies = [ "syn 2.0.100", ] +[[package]] +name = "sync_wrapper" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" + [[package]] name = "sync_wrapper" version = "1.0.2" @@ -4568,6 +8053,27 @@ dependencies = [ "syn 2.0.100", ] +[[package]] +name = "system-configuration" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "tap" version = "1.0.1" @@ -4575,16 +8081,69 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] -name = "tempfile" -version = "3.19.0" +name = "tempfile" +version = "3.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "488960f40a3fd53d72c2a29a58722561dee8afdd175bd88e3db4677d7b2ba600" +dependencies = [ + "fastrand", + "getrandom 0.3.2", + "once_cell", + "rustix", + "windows-sys 0.59.0", +] + +[[package]] +name = "term" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c59df8ac95d96ff9bede18eb7300b0fda5e5d8d90960e76f8e14ae765eedbf1f" +dependencies = [ + "dirs-next", + "rustversion", + "winapi", +] + +[[package]] +name = "test-case" +version = "3.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb2550dd13afcd286853192af8601920d959b14c401fcece38071d53bf0768a8" +dependencies = [ + "test-case-macros", +] + +[[package]] +name = "test-case-core" +version = "3.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adcb7fd841cd518e279be3d5a3eb0636409487998a4aff22f3de87b81e88384f" +dependencies = [ + "cfg-if", + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "test-case-macros" +version = "3.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c89e72a01ed4c579669add59014b9a524d609c0c88c6a585ce37485879f6ffb" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", + "test-case-core", +] + +[[package]] +name = "thiserror" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "488960f40a3fd53d72c2a29a58722561dee8afdd175bd88e3db4677d7b2ba600" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" dependencies = [ - "fastrand", - "getrandom 0.3.2", - "once_cell", - "rustix", - "windows-sys 0.59.0", + "thiserror-impl 1.0.69", ] [[package]] @@ -4593,7 +8152,18 @@ version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" dependencies = [ - "thiserror-impl", + "thiserror-impl 2.0.12", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", ] [[package]] @@ -4607,6 +8177,16 @@ dependencies = [ "syn 2.0.100", ] +[[package]] +name = "thread_local" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +dependencies = [ + "cfg-if", + "once_cell", +] + [[package]] name = "threadpool" version = "1.8.1" @@ -4616,6 +8196,26 @@ dependencies = [ "num_cpus", ] +[[package]] +name = "tikv-jemalloc-sys" +version = "0.6.0+5.3.0-1-ge13ca993e8ccb9ba9847cc330696e02839f328f7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd3c60906412afa9c2b5b5a48ca6a5abe5736aec9eb48ad05037a677e52e4e2d" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "tikv-jemallocator" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cec5ff18518d81584f477e9bfdf957f5bb0979b0bac3af4ca30b5b3ae2d2865" +dependencies = [ + "libc", + "tikv-jemalloc-sys", +] + [[package]] name = "time" version = "0.3.40" @@ -4687,6 +8287,7 @@ dependencies = [ "libc", "mio", "pin-project-lite", + "signal-hook-registry", "socket2", "tokio-macros", "windows-sys 0.52.0", @@ -4713,6 +8314,16 @@ dependencies = [ "tokio", ] +[[package]] +name = "tokio-rustls" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" +dependencies = [ + "rustls", + "tokio", +] + [[package]] name = "tokio-stream" version = "0.1.17" @@ -4738,11 +8349,52 @@ dependencies = [ "tokio", ] +[[package]] +name = "toml" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd79e69d3b627db300ff956027cc6c3798cef26d22526befdfcd12feeb6d2257" +dependencies = [ + "indexmap 2.8.0", + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit 0.19.15", +] + +[[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" +version = "0.19.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +dependencies = [ + "indexmap 2.8.0", + "serde", + "serde_spanned", + "toml_datetime", + "winnow 0.5.40", +] [[package]] name = "toml_edit" @@ -4751,8 +8403,10 @@ 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]] @@ -4764,7 +8418,7 @@ dependencies = [ "futures-core", "futures-util", "pin-project-lite", - "sync_wrapper", + "sync_wrapper 1.0.2", "tokio", "tower-layer", "tower-service", @@ -4814,6 +8468,19 @@ dependencies = [ "valuable", ] +[[package]] +name = "tracing-forest" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee40835db14ddd1e3ba414292272eddde9dad04d3d4b65509656414d1c42592f" +dependencies = [ + "ansi_term", + "smallvec", + "thiserror 1.0.69", + "tracing", + "tracing-subscriber 0.3.19", +] + [[package]] name = "tracing-futures" version = "0.2.5" @@ -4826,6 +8493,17 @@ dependencies = [ "tracing", ] +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + [[package]] name = "tracing-subscriber" version = "0.2.25" @@ -4835,6 +8513,34 @@ dependencies = [ "tracing-core", ] +[[package]] +name = "tracing-subscriber" +version = "0.3.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", +] + +[[package]] +name = "transpose" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ad61aed86bc3faea4300c7aee358b4c6d0c8d6ccc36524c96e4c92ccf26e77e" +dependencies = [ + "num-integer", + "strength_reduce", +] + [[package]] name = "triehash" version = "0.8.4" @@ -4881,12 +8587,27 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" +[[package]] +name = "uncased" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1b88fcfe09e89d3866a5c11019378088af2d24c3fbd4f0543f96b479ec90697" +dependencies = [ + "version_check", +] + [[package]] name = "unicode-ident" version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" +[[package]] +name = "unicode-width" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" + [[package]] name = "unicode-width" version = "0.2.0" @@ -4899,6 +8620,22 @@ version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" +[[package]] +name = "unroll" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ad948c1cb799b1a70f836077721a92a35ac177d4daddf4c20a633786d4cf618" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + [[package]] name = "url" version = "2.5.4" @@ -5103,6 +8840,28 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "webpki-roots" +version = "0.25.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + [[package]] name = "winapi-util" version = "0.1.9" @@ -5112,6 +8871,12 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + [[package]] name = "windows-core" version = "0.52.0" @@ -5156,6 +8921,15 @@ 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]] name = "windows-sys" version = "0.52.0" @@ -5174,6 +8948,21 @@ dependencies = [ "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]] name = "windows-targets" version = "0.52.6" @@ -5206,6 +8995,12 @@ dependencies = [ "windows_x86_64_msvc 0.53.0", ] +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + [[package]] name = "windows_aarch64_gnullvm" version = "0.52.6" @@ -5218,6 +9013,12 @@ 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" @@ -5230,6 +9031,12 @@ 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" @@ -5254,6 +9061,12 @@ 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" @@ -5266,6 +9079,12 @@ 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" @@ -5278,6 +9097,12 @@ 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" @@ -5290,6 +9115,12 @@ 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" @@ -5302,6 +9133,15 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" +[[package]] +name = "winnow" +version = "0.5.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +dependencies = [ + "memchr", +] + [[package]] name = "winnow" version = "0.7.4" @@ -5311,13 +9151,23 @@ dependencies = [ "memchr", ] +[[package]] +name = "winreg" +version = "0.50.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" +dependencies = [ + "cfg-if", + "windows-sys 0.48.0", +] + [[package]] name = "wit-bindgen-rt" version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" dependencies = [ - "bitflags", + "bitflags 2.9.0", ] [[package]] @@ -5341,6 +9191,18 @@ dependencies = [ "tap", ] +[[package]] +name = "yansi" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" + +[[package]] +name = "yansi" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" + [[package]] name = "yoke" version = "0.7.5" @@ -5467,3 +9329,78 @@ dependencies = [ "quote", "syn 2.0.100", ] + +[[package]] +name = "zip" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" +dependencies = [ + "aes", + "byteorder", + "bzip2", + "constant_time_eq 0.1.5", + "crc32fast", + "crossbeam-utils", + "flate2", + "hmac", + "pbkdf2", + "sha1", + "time", + "zstd", +] + +[[package]] +name = "zkhash" +version = "0.2.0" +source = "git+https://github.com/HorizenLabs/poseidon2.git?rev=bb476b9#bb476b9ca38198cf5092487283c8b8c5d4317c4e" +dependencies = [ + "ark-ff 0.4.2", + "ark-std 0.4.0", + "bitvec", + "blake2", + "bls12_381 0.7.1", + "byteorder", + "cfg-if", + "group 0.12.1", + "group 0.13.0", + "halo2", + "hex", + "jubjub", + "lazy_static", + "pasta_curves 0.5.1", + "rand 0.8.5", + "serde", + "sha2 0.10.8", + "sha3", + "subtle", +] + +[[package]] +name = "zstd" +version = "0.11.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "5.0.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db" +dependencies = [ + "libc", + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.15+zstd.1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb81183ddd97d0c74cedf1d50d85c8d08c1b8b68ee863bdee9e706eedba1a237" +dependencies = [ + "cc", + "pkg-config", +] diff --git a/Cargo.toml b/Cargo.toml index ff6ff0509..d7e79a5b9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [workspace] members = [ - # binary + # binary "bins/revme", # libraries @@ -33,6 +33,8 @@ members = [ "examples/erc20_gas", "examples/my_evm", "examples/custom_opcodes", + + "tests/openvm", ] resolver = "2" default-members = ["crates/revm"] @@ -53,7 +55,7 @@ context = { path = "crates/context", package = "revm-context", version = "3.0.0" context-interface = { path = "crates/context/interface", package = "revm-context-interface", version = "3.0.0", default-features = false } handler = { path = "crates/handler", package = "revm-handler", version = "3.0.0", default-features = false } -# alloy +# alloy alloy-eip2930 = { version = "0.2.0", default-features = false } alloy-eip7702 = { version = "0.6.0", default-features = false } alloy-primitives = { version = "1.0", default-features = false } @@ -109,6 +111,29 @@ once_cell = { version = "1.19", default-features = false } rand = "0.8" tokio = "1.44" +# openvm stark-backend +openvm-stark-sdk = { git = "https://github.com/openvm-org/stark-backend.git", tag = "v1.0.1" } +# openvm +openvm = { git = "https://github.com/openvm-org/openvm.git", rev = "f0477ab8ee276bf102afb508cbb53a63efed9711" } +openvm-circuit = { git = "https://github.com/openvm-org/openvm.git", rev = "f0477ab8ee276bf102afb508cbb53a63efed9711" } +openvm-transpiler = { git = "https://github.com/openvm-org/openvm.git", rev = "f0477ab8ee276bf102afb508cbb53a63efed9711" } +openvm-build = { git = "https://github.com/openvm-org/openvm.git", rev = "f0477ab8ee276bf102afb508cbb53a63efed9711" } +openvm-sdk = { git = "https://github.com/openvm-org/openvm.git", rev = "f0477ab8ee276bf102afb508cbb53a63efed9711" } +# openvm extensions +openvm-ecc-guest = { git = "https://github.com/openvm-org/openvm.git", rev = "f0477ab8ee276bf102afb508cbb53a63efed9711" } +openvm-pairing-guest = { git = "https://github.com/openvm-org/openvm.git", rev = "f0477ab8ee276bf102afb508cbb53a63efed9711" } +openvm-keccak256-guest = { git = "https://github.com/openvm-org/openvm.git", rev = "f0477ab8ee276bf102afb508cbb53a63efed9711" } +openvm-sha256-guest = { git = "https://github.com/openvm-org/openvm.git", rev = "f0477ab8ee276bf102afb508cbb53a63efed9711" } +openvm-pairing-transpiler = { git = "https://github.com/openvm-org/openvm.git", rev = "f0477ab8ee276bf102afb508cbb53a63efed9711" } +openvm-rv32im-transpiler = { git = "https://github.com/openvm-org/openvm.git", rev = "f0477ab8ee276bf102afb508cbb53a63efed9711" } +openvm-algebra-circuit = { git = "https://github.com/openvm-org/openvm.git", rev = "f0477ab8ee276bf102afb508cbb53a63efed9711" } +openvm-algebra-transpiler = { git = "https://github.com/openvm-org/openvm.git", rev = "f0477ab8ee276bf102afb508cbb53a63efed9711" } +openvm-ecc-circuit = { git = "https://github.com/openvm-org/openvm.git", rev = "f0477ab8ee276bf102afb508cbb53a63efed9711" } +openvm-ecc-transpiler = { git = "https://github.com/openvm-org/openvm.git", rev = "f0477ab8ee276bf102afb508cbb53a63efed9711" } +openvm-pairing-circuit = { git = "https://github.com/openvm-org/openvm.git", rev = "f0477ab8ee276bf102afb508cbb53a63efed9711" } +# openvm external lib +openvm-kzg = { git = "https://github.com/axiom-crypto/openvm-kzg.git", rev = "8b5fe9ce7142220967c6b774c8acbd85faa8c4b5", default-features = false } + # dev-dependencies anyhow = "1.0.89" bincode = "1.3" @@ -159,3 +184,6 @@ inherits = "profiling" [profile.ethtests] inherits = "test" opt-level = 3 + +[profile.dev] +opt-level = 1 diff --git a/crates/interpreter/Cargo.toml b/crates/interpreter/Cargo.toml index 09bfa1f4f..f64955c03 100644 --- a/crates/interpreter/Cargo.toml +++ b/crates/interpreter/Cargo.toml @@ -38,19 +38,19 @@ bincode.workspace = true [features] default = ["std"] std = [ - "serde?/std", - "primitives/std", - "context-interface/std", - "bytecode/std", - "database-interface/std" + "serde?/std", + "primitives/std", + "context-interface/std", + "bytecode/std", + "database-interface/std", ] hashbrown = ["primitives/hashbrown"] serde = [ - "dep:serde", - "primitives/serde", - "bytecode/serde", - "context-interface/serde", - "database-interface/serde" + "dep:serde", + "primitives/serde", + "bytecode/serde", + "context-interface/serde", + "database-interface/serde", ] arbitrary = ["std", "primitives/arbitrary"] # TODO : Should be set from Context or from crate that consumes this PR. diff --git a/crates/precompile/Cargo.toml b/crates/precompile/Cargo.toml index 7da026b3a..fd72ddb81 100644 --- a/crates/precompile/Cargo.toml +++ b/crates/precompile/Cargo.toml @@ -31,13 +31,13 @@ once_cell = { workspace = true, features = ["alloc"] } # ecRecover k256 = { workspace = true, features = ["ecdsa"] } secp256k1 = { workspace = true, features = [ - "alloc", - "recovery", - "rand", - "global-context", + "alloc", + "recovery", + "rand", + "global-context", ], optional = true } libsecp256k1 = { workspace = true, features = [ - "static-context", + "static-context", ], optional = true } # SHA2-256 and RIPEMD-160 @@ -58,7 +58,7 @@ ark-serialize = { workspace = true } # KZG point evaluation precompile c-kzg = { workspace = true, optional = true, features = [ - "ethereum_kzg_settings", + "ethereum_kzg_settings", ] } # Optionally use `kzg-rs` for a pure Rust implementation of KZG point evaluation. @@ -76,29 +76,37 @@ p256 = { workspace = true, optional = true, features = ["ecdsa"] } # utils cfg-if.workspace = true +# Optionally use openvm intrinsics +openvm = { workspace = true, optional = true } +openvm-ecc-guest = { workspace = true, optional = true } +openvm-keccak256-guest = { workspace = true, optional = true } +openvm-sha256-guest = { workspace = true, optional = true } +openvm-pairing-guest = { workspace = true, optional = true } +openvm-kzg = { workspace = true, optional = true } + [dev-dependencies] criterion.workspace = true rand = { workspace = true, features = ["std"] } rstest.workspace = true [features] -default = ["std", "c-kzg", "secp256k1", "portable", "blst"] +default = ["openvm"] std = [ - "primitives/std", - "k256/std", - "once_cell/std", - "ripemd/std", - "sha2/std", - "c-kzg?/std", - "secp256k1?/std", - "libsecp256k1?/std", - "aurora-engine-modexp/std", - "p256?/std", - "ark-bn254/std", - "ark-bls12-381/std", - "ark-ec/std", - "ark-ff/std", - "ark-serialize/std", + "primitives/std", + "k256/std", + "once_cell/std", + "ripemd/std", + "sha2/std", + "c-kzg?/std", + "secp256k1?/std", + "libsecp256k1?/std", + "aurora-engine-modexp/std", + "p256?/std", + "ark-bn254/std", + "ark-bls12-381/std", + "ark-ec/std", + "ark-ff/std", + "ark-serialize/std", ] hashbrown = ["primitives/hashbrown"] asm-keccak = ["primitives/asm-keccak"] @@ -112,6 +120,10 @@ secp256r1 = ["dep:p256"] c-kzg = ["dep:c-kzg"] # `kzg-rs` is not audited but useful for `no_std` environment, use it with causing and default to `c-kzg` if possible. kzg-rs = ["dep:kzg-rs"] +# `openvm-kzg` can be used in place of kzg-rs for acceleration on OpenVM guest +openvm-kzg = ["dep:openvm-kzg"] +# TODO: always use intrinsics +openvm-kzg-intrinsics = ["openvm-kzg/use-intrinsics"] # Compile in portable mode, without ISA extensions. # Binary can be executed on all systems. @@ -128,6 +140,12 @@ blst = ["dep:blst"] # Enables the substrate implementation of eip1962 bn = ["dep:bn"] +# Enable openvm accelerated implementation +openvm-bn = ["dep:openvm", "openvm-ecc-guest", "openvm-pairing-guest/bn254"] + +openvm = ["dep:openvm", "openvm-k256", "openvm-bn", "openvm-sha2", "openvm-kzg"] +openvm-k256 = ["dep:openvm", "openvm-ecc-guest/k256", "openvm-keccak256-guest"] +openvm-sha2 = ["dep:openvm-sha256-guest"] [[bench]] name = "bench" diff --git a/crates/precompile/src/bn128.rs b/crates/precompile/src/bn128.rs index f849a0689..fc26311d3 100644 --- a/crates/precompile/src/bn128.rs +++ b/crates/precompile/src/bn128.rs @@ -11,6 +11,12 @@ cfg_if::cfg_if! { encode_g1_point, g1_point_add, g1_point_mul, pairing_check, read_g1_point, read_g2_point, read_scalar, }; + } else if #[cfg(feature = "openvm-bn")] { + mod openvm; + use openvm::{ + encode_g1_point, g1_point_add, g1_point_mul, pairing_check, read_g1_point, read_g2_point, + read_scalar, + }; } else { mod arkworks; use arkworks::{ diff --git a/crates/precompile/src/bn128/openvm.rs b/crates/precompile/src/bn128/openvm.rs new file mode 100644 index 000000000..69b3e4796 --- /dev/null +++ b/crates/precompile/src/bn128/openvm.rs @@ -0,0 +1,160 @@ +use std::vec::Vec; + +use { + openvm_ecc_guest::{ + weierstrass::{IntrinsicCurve, WeierstrassPoint}, + AffinePoint, + }, + openvm_pairing_guest::{ + algebra::IntMod, + bn254::{Bn254, Fp, Fp2, G1Affine, G2Affine, Scalar}, + pairing::PairingCheck, + }, +}; + +use super::{FQ2_LEN, FQ_LEN, G1_LEN, SCALAR_LEN}; +use crate::PrecompileError; + +#[inline] +fn read_fq(input: &[u8]) -> Result { + if input.len() < FQ_LEN { + Err(PrecompileError::Bn128FieldPointNotAMember) + } else { + let fp = Fp::from_be_bytes(&input[..32]); + if fp.is_reduced() { + Ok(fp) + } else { + Err(PrecompileError::Bn128FieldPointNotAMember) + } + } +} + +/// Reads a Fq2 (quadratic extension field element) from the input slice. +/// +/// Parses two consecutive Fq field elements as the real and imaginary parts +/// of an Fq2 element. +/// The second component is parsed before the first, ie if a we represent an +/// element in Fq2 as (x,y) -- `y` is parsed before `x` +/// +/// # Panics +/// +/// Panics if the input is not at least 64 bytes long. +#[inline] +fn read_fq2(input: &[u8]) -> Result { + let y = read_fq(&input[..FQ_LEN])?; + let x = read_fq(&input[FQ_LEN..2 * FQ_LEN])?; + Ok(Fp2::new(x, y)) +} + +#[inline] +fn new_g1_affine_point(px: Fp, py: Fp) -> Result { + G1Affine::from_xy(px, py).ok_or(PrecompileError::Bn128AffineGFailedToCreate) +} + +/// Reads a G1 point from the input slice. +/// +/// Parses a G1 point from a byte slice by reading two consecutive field elements +/// representing the x and y coordinates. +/// +/// # Panics +/// +/// Panics if the input is not at least 64 bytes long. +#[inline] +pub(super) fn read_g1_point(input: &[u8]) -> Result { + let px = read_fq(&input[0..FQ_LEN])?; + let py = read_fq(&input[FQ_LEN..2 * FQ_LEN])?; + new_g1_affine_point(px, py) +} + +/// Encodes a G1 point into a byte array. +/// +/// Converts a G1 point in Jacobian coordinates to affine coordinates and +/// serializes the x and y coordinates as big-endian byte arrays. +/// +/// Note: If the point is the point at infinity, this function returns +/// all zeroes. +#[inline] +pub(super) fn encode_g1_point(point: G1Affine) -> [u8; G1_LEN] { + let mut output = [0u8; G1_LEN]; + + // manually reverse to avoid allocation + let x_bytes: &[u8] = point.x().as_le_bytes(); + let y_bytes: &[u8] = point.y().as_le_bytes(); + for i in 0..FQ_LEN { + output[i] = x_bytes[FQ_LEN - 1 - i]; + output[i + FQ_LEN] = y_bytes[FQ_LEN - 1 - i]; + } + output +} + +/// Reads a G2 point from the input slice. +/// +/// Parses a G2 point from a byte slice by reading four consecutive Fq field elements +/// representing the two Fq2 coordinates (x and y) of the G2 point. +/// +/// # Panics +/// +/// Panics if the input is not at least 128 bytes long. +#[inline] +pub(super) fn read_g2_point(input: &[u8]) -> Result { + let ba = read_fq2(&input[0..FQ2_LEN])?; + let bb = read_fq2(&input[FQ2_LEN..2 * FQ2_LEN])?; + + G2Affine::from_xy(ba, bb).ok_or(PrecompileError::Bn128AffineGFailedToCreate) +} + +/// Reads a scalar from the input slice +/// +/// Note: The scalar does not need to be canonical. +/// +/// # Panics +/// +/// If `input.len()` is not equal to [`SCALAR_LEN`]. +#[inline] +pub(super) fn read_scalar(input: &[u8]) -> Scalar { + assert_eq!( + input.len(), + SCALAR_LEN, + "unexpected scalar length. got {}, expected {SCALAR_LEN}", + input.len() + ); + Scalar::from_be_bytes(input) +} + +/// Performs point addition on two G1 points. +#[inline] +pub(super) fn g1_point_add(p1: G1Affine, p2: G1Affine) -> G1Affine { + p1 + p2 +} + +/// Performs a G1 scalar multiplication. +#[inline] +pub(super) fn g1_point_mul(p: G1Affine, fr: Scalar) -> G1Affine { + Bn254::msm(&[fr], &[p]) +} + +/// pairing_check performs a pairing check on a list of G1 and G2 point pairs and +/// returns true if the result is equal to the identity element. +/// +/// Note: If the input is empty, this function returns true. +/// This is different to EIP2537 which disallows the empty input. +#[inline] +pub(super) fn pairing_check(pairs: &[(G1Affine, G2Affine)]) -> bool { + if pairs.is_empty() { + return true; + } + let (g1_points, g2_points): (Vec<_>, Vec<_>) = pairs + .iter() + .cloned() + .map(|(g1, g2)| { + let (g1_x, g1_y) = g1.into_coords(); + let g1 = AffinePoint::new(g1_x, g1_y); + + let (g2_x, g2_y) = g2.into_coords(); + let g2 = AffinePoint::new(g2_x, g2_y); + (g1, g2) + }) + .unzip(); + + Bn254::pairing_check(&g1_points, &g2_points).is_ok() +} diff --git a/crates/precompile/src/hash.rs b/crates/precompile/src/hash.rs index 43256e5a5..2d4037235 100644 --- a/crates/precompile/src/hash.rs +++ b/crates/precompile/src/hash.rs @@ -20,7 +20,10 @@ pub fn sha256_run(input: &Bytes, gas_limit: u64) -> PrecompileResult { if cost > gas_limit { Err(PrecompileError::OutOfGas) } else { + #[cfg(not(feature = "openvm-sha2"))] let output = sha2::Sha256::digest(input); + #[cfg(feature = "openvm-sha2")] + let output = openvm_sha256_guest::sha256(input); Ok(PrecompileOutput::new(cost, output.to_vec().into())) } } diff --git a/crates/precompile/src/kzg_point_evaluation.rs b/crates/precompile/src/kzg_point_evaluation.rs index 125029cbb..8970947e6 100644 --- a/crates/precompile/src/kzg_point_evaluation.rs +++ b/crates/precompile/src/kzg_point_evaluation.rs @@ -2,6 +2,8 @@ use crate::{Address, PrecompileError, PrecompileOutput, PrecompileResult, Precom cfg_if::cfg_if! { if #[cfg(feature = "c-kzg")] { use c_kzg::{Bytes32, Bytes48}; + } else if #[cfg(feature = "openvm-kzg")] { + use openvm_kzg::{Bytes32, Bytes48, KzgProof}; } else if #[cfg(feature = "kzg-rs")] { use kzg_rs::{Bytes32, Bytes48, KzgProof}; } @@ -73,6 +75,10 @@ pub fn verify_kzg_proof(commitment: &Bytes48, z: &Bytes32, y: &Bytes32, proof: & if #[cfg(feature = "c-kzg")] { let kzg_settings = c_kzg::ethereum_kzg_settings(0); kzg_settings.verify_kzg_proof(commitment, z, y, proof).unwrap_or(false) + } else if #[cfg(feature = "openvm-kzg")] { + let env = openvm_kzg::EnvKzgSettings::default(); + let kzg_settings = env.get(); + KzgProof::verify_kzg_proof(commitment, z, y, proof, kzg_settings).unwrap_or(false) } else if #[cfg(feature = "kzg-rs")] { let env = kzg_rs::EnvKzgSettings::default(); let kzg_settings = env.get(); diff --git a/crates/precompile/src/lib.rs b/crates/precompile/src/lib.rs index b5655109f..a1462a028 100644 --- a/crates/precompile/src/lib.rs +++ b/crates/precompile/src/lib.rs @@ -16,7 +16,7 @@ pub mod bn128; pub mod hash; pub mod identity; pub mod interface; -#[cfg(any(feature = "c-kzg", feature = "kzg-rs"))] +#[cfg(any(feature = "c-kzg", feature = "kzg-rs", feature = "openvm-kzg"))] pub mod kzg_point_evaluation; pub mod modexp; pub mod secp256k1; @@ -161,7 +161,7 @@ impl Precompiles { // EIP-4844: Shard Blob Transactions cfg_if! { - if #[cfg(any(feature = "c-kzg", feature = "kzg-rs"))] { + if #[cfg(any(feature = "c-kzg", feature = "kzg-rs", feature = "openvm-kzg"))] { let precompile = kzg_point_evaluation::POINT_EVALUATION.clone(); } else { let precompile = PrecompileWithAddress(u64_to_address(0x0A), |_,_| Err(PrecompileError::Fatal("c-kzg feature is not enabled".into()))); diff --git a/crates/precompile/src/secp256k1.rs b/crates/precompile/src/secp256k1.rs index 8c8b6a68a..c5c1d44b5 100644 --- a/crates/precompile/src/secp256k1.rs +++ b/crates/precompile/src/secp256k1.rs @@ -1,6 +1,8 @@ #[cfg(feature = "secp256k1")] pub mod bitcoin_secp256k1; pub mod k256; +#[cfg(feature = "openvm-k256")] +pub mod openvm_k256; #[cfg(feature = "libsecp256k1")] pub mod parity_libsecp256k1; @@ -42,6 +44,8 @@ cfg_if::cfg_if! { pub use bitcoin_secp256k1::ecrecover; } else if #[cfg(feature = "libsecp256k1")] { pub use parity_libsecp256k1::ecrecover; + } else if #[cfg(feature = "openvm-k256")] { + pub use openvm_k256::ecrecover; } else { pub use k256::ecrecover; } diff --git a/crates/precompile/src/secp256k1/openvm_k256.rs b/crates/precompile/src/secp256k1/openvm_k256.rs new file mode 100644 index 000000000..d1d220134 --- /dev/null +++ b/crates/precompile/src/secp256k1/openvm_k256.rs @@ -0,0 +1,32 @@ +use k256::{ + ecdsa::{Error, RecoveryId, Signature}, + Secp256k1, +}; +use openvm_ecc_guest::{algebra::IntMod, ecdsa::VerifyingKey, weierstrass::WeierstrassPoint}; +use openvm_keccak256_guest::keccak256; +use primitives::{alloy_primitives::B512, B256}; + +pub fn ecrecover(sig: &B512, mut recid: u8, msg: &B256) -> Result { + let _sig = sig; + let _recid = recid; + // parse signature + let mut sig = Signature::from_slice(sig.as_slice())?; + if let Some(sig_normalized) = sig.normalize_s() { + sig = sig_normalized; + recid ^= 1; + } + let recid = RecoveryId::from_byte(recid).expect("recovery ID is valid"); + + // annoying: Signature::to_bytes copies from slice + let recovered_key = + VerifyingKey::::recover_from_prehash_noverify(&msg[..], &sig.to_bytes(), recid)?; + let public_key = recovered_key.as_affine(); + let mut encoded = [0u8; 64]; + encoded[..32].copy_from_slice(&public_key.x().to_be_bytes()); + encoded[32..].copy_from_slice(&public_key.y().to_be_bytes()); + // hash it + let mut hash = keccak256(&encoded); + // truncate to 20 bytes + hash[..12].fill(0); + Ok(B256::from(hash)) +} diff --git a/crates/primitives/Cargo.toml b/crates/primitives/Cargo.toml index 4c015d28b..8045b473f 100644 --- a/crates/primitives/Cargo.toml +++ b/crates/primitives/Cargo.toml @@ -31,13 +31,9 @@ enumn.workspace = true # Optional serde = { workspace = true, features = ["derive", "rc"], optional = true } - [features] default = ["std"] -std = [ - "alloy-primitives/std", - "serde?/std" -] +std = ["alloy-primitives/std", "serde?/std"] serde = ["dep:serde", "alloy-primitives/serde"] hashbrown = ["alloy-primitives/map-hashbrown"] diff --git a/crates/revm/Cargo.toml b/crates/revm/Cargo.toml index e3b279fbb..90593be99 100644 --- a/crates/revm/Cargo.toml +++ b/crates/revm/Cargo.toml @@ -39,30 +39,30 @@ state.workspace = true [features] default = ["std", "c-kzg", "secp256k1", "portable", "blst"] std = [ - "interpreter/std", - "precompile/std", - "handler/std", - "context/std", - "context-interface/std", - "bytecode/std", - "database/std", - "database-interface/std", - "inspector/std", - "primitives/std", - "state/std", + "interpreter/std", + "precompile/std", + "handler/std", + "context/std", + "context-interface/std", + "bytecode/std", + "database/std", + "database-interface/std", + "inspector/std", + "primitives/std", + "state/std", ] hashbrown = ["interpreter/hashbrown", "precompile/hashbrown"] serde = [ - "interpreter/serde", - "database-interface/serde", - "primitives/serde", - "handler/serde", - "context-interface/serde", - "inspector/serde", - "bytecode/serde", - "context/serde", - "database/serde", - "state/serde", + "interpreter/serde", + "database-interface/serde", + "primitives/serde", + "handler/serde", + "context-interface/serde", + "inspector/serde", + "bytecode/serde", + "context/serde", + "database/serde", + "state/serde", ] arbitrary = ["primitives/arbitrary"] asm-keccak = ["primitives/asm-keccak"] @@ -75,11 +75,11 @@ alloydb = ["database/alloydb"] serde-json = ["serde", "inspector/serde-json"] dev = [ - "memory_limit", - "optional_balance_check", - "optional_block_gas_limit", - "optional_eip3607", - "optional_no_base_fee", + "memory_limit", + "optional_balance_check", + "optional_block_gas_limit", + "optional_eip3607", + "optional_no_base_fee", ] memory_limit = ["context/memory_limit", "interpreter/memory_limit"] optional_balance_check = ["context/optional_balance_check"] @@ -88,12 +88,13 @@ optional_eip3607 = ["context/optional_eip3607"] optional_no_base_fee = ["context/optional_no_base_fee"] # Precompiles features - -secp256k1 = ["precompile/secp256k1"] # See comments in `precompile` -c-kzg = [ - "precompile/c-kzg", -] # `kzg-rs` is not audited but useful for `no_std` environment, use it with causing and default to `c-kzg` if possible. +# See comments in `precompile` +secp256k1 = ["precompile/secp256k1"] +c-kzg = ["precompile/c-kzg"] +# `kzg-rs` is not audited but useful for `no_std` environment, use it with causing and default to `c-kzg` if possible. kzg-rs = ["precompile/kzg-rs"] +# `openvm-kzg` can be used in place of kzg-rs for acceleration on OpenVM guest +openvm-kzg = ["precompile/openvm-kzg"] blst = ["precompile/blst"] secp256r1 = ["precompile/secp256r1"] bn = ["precompile/bn"] diff --git a/rust-toolchain.toml b/rust-toolchain.toml new file mode 100644 index 000000000..35e9b966e --- /dev/null +++ b/rust-toolchain.toml @@ -0,0 +1,3 @@ +[toolchain] +channel = "1.85.1" +components = ["clippy", "rustfmt"] diff --git a/tests/openvm/Cargo.toml b/tests/openvm/Cargo.toml new file mode 100644 index 000000000..d7213a4fb --- /dev/null +++ b/tests/openvm/Cargo.toml @@ -0,0 +1,33 @@ +[package] +name = "openvm-tests" +version = "0.1.0" +edition = "2021" + +[dependencies] +openvm = { workspace = true } +openvm-ecc-guest = { workspace = true } +openvm-pairing-guest = { workspace = true } +openvm-keccak256-guest = { workspace = true } +openvm-sdk = { workspace = true } +openvm-build = { workspace = true } +openvm-pairing-transpiler = { workspace = true } +openvm-rv32im-transpiler = { workspace = true } +openvm-transpiler = { workspace = true } +openvm-algebra-circuit = { workspace = true } +openvm-algebra-transpiler = { workspace = true } +openvm-ecc-circuit = { workspace = true } +openvm-ecc-transpiler = { workspace = true } +openvm-pairing-circuit = { workspace = true } +openvm-circuit = { workspace = true, features = ["test-utils", "parallel"] } +openvm-stark-sdk = { workspace = true } + +num-bigint = { version = "0.4", default-features = false } +num-traits = { version = "0.2", default-features = false } + +primitives = { workspace = true } + +sha2 = { version = "0.10", default-features = false } + +[dev-dependencies] +rand.workspace = true +secp256k1.workspace = true diff --git a/tests/openvm/programs/ec_add/Cargo.toml b/tests/openvm/programs/ec_add/Cargo.toml new file mode 100644 index 000000000..da2aec0ba --- /dev/null +++ b/tests/openvm/programs/ec_add/Cargo.toml @@ -0,0 +1,17 @@ +[workspace] +[package] +name = "ec-add-program" +version = "0.1.0" +edition = "2021" + +[dependencies] +openvm = { git = "https://github.com/openvm-org/openvm.git", rev = "f0477ab8ee276bf102afb508cbb53a63efed9711" } +openvm-algebra-moduli-macros = { git = "https://github.com/openvm-org/openvm.git", rev = "f0477ab8ee276bf102afb508cbb53a63efed9711" } +openvm-ecc-sw-macros = { git = "https://github.com/openvm-org/openvm.git", rev = "f0477ab8ee276bf102afb508cbb53a63efed9711" } +openvm-platform = { git = "https://github.com/openvm-org/openvm.git", rev = "f0477ab8ee276bf102afb508cbb53a63efed9711" } +openvm-algebra-guest = { git = "https://github.com/openvm-org/openvm.git", rev = "f0477ab8ee276bf102afb508cbb53a63efed9711" } +openvm-pairing-guest = { git = "https://github.com/openvm-org/openvm.git", rev = "f0477ab8ee276bf102afb508cbb53a63efed9711" } +openvm-ecc-guest = { git = "https://github.com/openvm-org/openvm.git", rev = "f0477ab8ee276bf102afb508cbb53a63efed9711" } +revm-precompile = { path = "../../../../crates/precompile", default-features = false, features = [ + "openvm-bn", +] } diff --git a/tests/openvm/programs/ec_add/src/main.rs b/tests/openvm/programs/ec_add/src/main.rs new file mode 100644 index 000000000..b5c6762ca --- /dev/null +++ b/tests/openvm/programs/ec_add/src/main.rs @@ -0,0 +1,28 @@ +#![no_std] +#![no_main] + +use openvm::io::read_vec; +use revm_precompile::bn128::{add::BYZANTIUM_ADD_GAS_COST, run_add}; +#[allow(unused_imports)] +use {openvm_algebra_guest::IntMod, openvm_pairing_guest::bn254::Bn254G1Affine}; + +openvm::entry!(main); + +openvm_algebra_moduli_macros::moduli_init! { + "0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47", + "0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001" +} + +openvm_ecc_sw_macros::sw_init! { + Bn254G1Affine, +} + +pub fn main() { + setup_all_moduli(); + setup_all_curves(); + let input = read_vec(); + let expected = read_vec(); + + let outcome = run_add(&input, BYZANTIUM_ADD_GAS_COST, 500).unwrap(); + assert_eq!(outcome.bytes, expected); +} diff --git a/tests/openvm/programs/ec_mul/Cargo.toml b/tests/openvm/programs/ec_mul/Cargo.toml new file mode 100644 index 000000000..ee49d1210 --- /dev/null +++ b/tests/openvm/programs/ec_mul/Cargo.toml @@ -0,0 +1,17 @@ +[workspace] +[package] +name = "ec-mul-program" +version = "0.1.0" +edition = "2021" + +[dependencies] +openvm = { git = "https://github.com/openvm-org/openvm.git", rev = "f0477ab8ee276bf102afb508cbb53a63efed9711" } +openvm-algebra-moduli-macros = { git = "https://github.com/openvm-org/openvm.git", rev = "f0477ab8ee276bf102afb508cbb53a63efed9711" } +openvm-ecc-sw-macros = { git = "https://github.com/openvm-org/openvm.git", rev = "f0477ab8ee276bf102afb508cbb53a63efed9711" } +openvm-platform = { git = "https://github.com/openvm-org/openvm.git", rev = "f0477ab8ee276bf102afb508cbb53a63efed9711" } +openvm-algebra-guest = { git = "https://github.com/openvm-org/openvm.git", rev = "f0477ab8ee276bf102afb508cbb53a63efed9711" } +openvm-pairing-guest = { git = "https://github.com/openvm-org/openvm.git", rev = "f0477ab8ee276bf102afb508cbb53a63efed9711" } +openvm-ecc-guest = { git = "https://github.com/openvm-org/openvm.git", rev = "f0477ab8ee276bf102afb508cbb53a63efed9711" } +revm-precompile = { path = "../../../../crates/precompile", default-features = false, features = [ + "openvm-bn", +] } diff --git a/tests/openvm/programs/ec_mul/src/main.rs b/tests/openvm/programs/ec_mul/src/main.rs new file mode 100644 index 000000000..d4122a522 --- /dev/null +++ b/tests/openvm/programs/ec_mul/src/main.rs @@ -0,0 +1,28 @@ +#![no_std] +#![no_main] + +use openvm::io::read_vec; +use revm_precompile::bn128::{mul::BYZANTIUM_MUL_GAS_COST, run_mul}; +#[allow(unused_imports)] +use {openvm_algebra_guest::IntMod, openvm_pairing_guest::bn254::Bn254G1Affine}; + +openvm::entry!(main); + +openvm_algebra_moduli_macros::moduli_init! { + "0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47", + "0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001" +} + +openvm_ecc_sw_macros::sw_init! { + Bn254G1Affine, +} + +pub fn main() { + setup_all_moduli(); + setup_all_curves(); + let input = read_vec(); + let expected = read_vec(); + + let outcome = run_mul(&input, BYZANTIUM_MUL_GAS_COST, 40_000).unwrap(); + assert_eq!(outcome.bytes, expected); +} diff --git a/tests/openvm/programs/ecrecover/Cargo.toml b/tests/openvm/programs/ecrecover/Cargo.toml new file mode 100644 index 000000000..2e23efe47 --- /dev/null +++ b/tests/openvm/programs/ecrecover/Cargo.toml @@ -0,0 +1,28 @@ +[workspace] +[package] +name = "ecrecover-program" +version = "0.1.0" +edition = "2021" + +[dependencies] +openvm = { git = "https://github.com/openvm-org/openvm.git", rev = "f0477ab8ee276bf102afb508cbb53a63efed9711" } +openvm-algebra-guest = { git = "https://github.com/openvm-org/openvm.git", rev = "f0477ab8ee276bf102afb508cbb53a63efed9711" } +openvm-ecc-guest = { git = "https://github.com/openvm-org/openvm.git", rev = "f0477ab8ee276bf102afb508cbb53a63efed9711", features = [ + "k256", +] } +revm-precompile = { path = "../../../../crates/precompile", default-features = false, features = [ + "openvm-k256", +] } +revm-primitives = { path = "../../../../crates/primitives", default-features = false } + +[features] +default = [] + +[profile.release] +panic = "abort" +lto = "thin" # faster compile time + +[profile.profiling] +inherits = "release" +debug = 2 +strip = false diff --git a/tests/openvm/programs/ecrecover/src/main.rs b/tests/openvm/programs/ecrecover/src/main.rs new file mode 100644 index 000000000..df3166228 --- /dev/null +++ b/tests/openvm/programs/ecrecover/src/main.rs @@ -0,0 +1,28 @@ +#![no_std] +#![no_main] + +use openvm::io::read_vec; +#[allow(unused_imports)] +use openvm_ecc_guest::k256::Secp256k1Point; +use revm_precompile::secp256k1::ec_recover_run; +use revm_primitives::Bytes; + +openvm_algebra_guest::moduli_macros::moduli_init! { + "0xFFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE FFFFFC2F", + "0xFFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE BAAEDCE6 AF48A03B BFD25E8C D0364141" +} +openvm_ecc_guest::sw_macros::sw_init! { + Secp256k1Point, +} + +openvm::entry!(main); + +pub fn main() { + setup_all_moduli(); + setup_all_curves(); + + let expected_address = read_vec(); + let input = read_vec(); + let recovered = ec_recover_run(&Bytes::from(input), 3000).unwrap(); + assert_eq!(recovered.bytes.as_ref(), expected_address); +} diff --git a/tests/openvm/programs/kzg_point_evaluation/Cargo.toml b/tests/openvm/programs/kzg_point_evaluation/Cargo.toml new file mode 100644 index 000000000..07010de7f --- /dev/null +++ b/tests/openvm/programs/kzg_point_evaluation/Cargo.toml @@ -0,0 +1,19 @@ +[workspace] +[package] +name = "kzg-point-evaluation-program" +version = "0.1.0" +edition = "2021" + +[dependencies] +openvm = { git = "https://github.com/openvm-org/openvm.git", rev = "f0477ab8ee276bf102afb508cbb53a63efed9711" } +openvm-algebra-guest = { git = "https://github.com/openvm-org/openvm.git", rev = "f0477ab8ee276bf102afb508cbb53a63efed9711" } +openvm-ecc-guest = { git = "https://github.com/openvm-org/openvm.git", rev = "f0477ab8ee276bf102afb508cbb53a63efed9711" } +openvm-pairing-guest = { git = "https://github.com/openvm-org/openvm.git", rev = "f0477ab8ee276bf102afb508cbb53a63efed9711", features = [ + "bls12_381", +] } +revm-precompile = { path = "../../../../crates/precompile", default-features = false, features = [ + "openvm-kzg", +] } + +[features] +use-intrinsics = ["revm-precompile/openvm-kzg-intrinsics"] diff --git a/tests/openvm/programs/kzg_point_evaluation/src/main.rs b/tests/openvm/programs/kzg_point_evaluation/src/main.rs new file mode 100644 index 000000000..51ecec1c3 --- /dev/null +++ b/tests/openvm/programs/kzg_point_evaluation/src/main.rs @@ -0,0 +1,41 @@ +#![no_std] +#![no_main] + +use openvm::io::read_vec; +use openvm_pairing_guest::bls12_381::Bls12_381G1Affine; +use revm_precompile::kzg_point_evaluation::{run, GAS_COST}; + +openvm::entry!(main); + +#[cfg(feature = "use-intrinsics")] +openvm_algebra_guest::moduli_macros::moduli_init! { + "0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab", + "0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001" +} + +#[cfg(feature = "use-intrinsics")] +openvm_algebra_guest::complex_macros::complex_init! { + Bls12_381Fp2 { mod_idx = 0 }, +} + +#[cfg(feature = "use-intrinsics")] +openvm_ecc_guest::sw_macros::sw_init! { + Bls12_381G1Affine +} + +pub fn main() { + #[cfg(feature = "use-intrinsics")] + { + setup_all_moduli(); + setup_all_complex_extensions(); + setup_all_curves(); + } + + let input = read_vec(); + let expected_output = read_vec(); + + let gas = GAS_COST; + let output = run(&input.into(), gas).unwrap(); + assert_eq!(output.gas_used, gas); + assert_eq!(&output.bytes[..], &expected_output); +} diff --git a/tests/openvm/programs/pairing/Cargo.toml b/tests/openvm/programs/pairing/Cargo.toml new file mode 100644 index 000000000..fbdaceaea --- /dev/null +++ b/tests/openvm/programs/pairing/Cargo.toml @@ -0,0 +1,12 @@ +[workspace] +[package] +name = "ec-pairing-program" +version = "0.1.0" +edition = "2021" + +[dependencies] +openvm = { git = "https://github.com/openvm-org/openvm.git", rev = "f0477ab8ee276bf102afb508cbb53a63efed9711" } +openvm-algebra-guest = { git = "https://github.com/openvm-org/openvm.git", rev = "f0477ab8ee276bf102afb508cbb53a63efed9711" } +revm-precompile = { path = "../../../../crates/precompile", default-features = false, features = [ + "openvm-bn", +] } diff --git a/tests/openvm/programs/pairing/src/main.rs b/tests/openvm/programs/pairing/src/main.rs new file mode 100644 index 000000000..b3cc642aa --- /dev/null +++ b/tests/openvm/programs/pairing/src/main.rs @@ -0,0 +1,36 @@ +#![no_std] +#![no_main] + +use openvm::io::read_vec; +use revm_precompile::bn128::{ + pair::{BYZANTIUM_PAIR_BASE, BYZANTIUM_PAIR_PER_POINT}, + run_pair, +}; + +openvm::entry!(main); + +openvm_algebra_guest::moduli_macros::moduli_init! { + "0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47", + "0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001" +} + +openvm_algebra_guest::complex_macros::complex_init! { + Bn254Fp2 { mod_idx = 0 }, +} + +pub fn main() { + setup_all_moduli(); + setup_all_complex_extensions(); + + let input = read_vec(); + let expected = read_vec(); + + let outcome = run_pair( + &input, + BYZANTIUM_PAIR_PER_POINT, + BYZANTIUM_PAIR_BASE, + 260_000, + ) + .unwrap(); + assert_eq!(outcome.bytes, expected); +} diff --git a/tests/openvm/programs/sha256/Cargo.toml b/tests/openvm/programs/sha256/Cargo.toml new file mode 100644 index 000000000..fe2b411f6 --- /dev/null +++ b/tests/openvm/programs/sha256/Cargo.toml @@ -0,0 +1,12 @@ +[workspace] +[package] +name = "sha256-program" +version = "0.1.0" +edition = "2021" + +[dependencies] +openvm = { git = "https://github.com/openvm-org/openvm.git", rev = "f0477ab8ee276bf102afb508cbb53a63efed9711" } +openvm-sha256-guest = { git = "https://github.com/openvm-org/openvm.git", rev = "f0477ab8ee276bf102afb508cbb53a63efed9711" } +revm-precompile = { path = "../../../../crates/precompile", default-features = false, features = [ + "openvm-sha2", +] } diff --git a/tests/openvm/programs/sha256/src/main.rs b/tests/openvm/programs/sha256/src/main.rs new file mode 100644 index 000000000..3198219c0 --- /dev/null +++ b/tests/openvm/programs/sha256/src/main.rs @@ -0,0 +1,16 @@ +#![no_std] +#![no_main] + +extern crate alloc; + +use openvm::io::read_vec; +use revm_precompile::hash::sha256_run; +openvm::entry!(main); + +pub fn main() { + let input = read_vec(); + let expected = read_vec(); + + let outcome = sha256_run(&input.into(), 260_000).unwrap(); + assert_eq!(outcome.bytes, expected); +} diff --git a/tests/openvm/src/ec_precompile.rs b/tests/openvm/src/ec_precompile.rs new file mode 100644 index 000000000..76959e2d5 --- /dev/null +++ b/tests/openvm/src/ec_precompile.rs @@ -0,0 +1,176 @@ +use std::path::PathBuf; + +use num_bigint::BigUint; +use num_traits::{FromPrimitive, Zero}; +use openvm_algebra_circuit::{Fp2Extension, ModularExtension}; +use openvm_build::GuestOptions; +use openvm_circuit::arch::SystemConfig; +use openvm_circuit::utils::air_test_with_min_segments; +use openvm_ecc_circuit::{CurveConfig, WeierstrassExtension}; +use openvm_pairing_circuit::{PairingCurve, PairingExtension}; +use openvm_pairing_guest::bn254::{BN254_MODULUS, BN254_ORDER}; +use openvm_sdk::{config::SdkVmConfig, Sdk}; +use openvm_stark_sdk::openvm_stark_backend::p3_field::FieldAlgebra; +use openvm_stark_sdk::p3_baby_bear::BabyBear; +use primitives::hex; + +type F = BabyBear; + +// These tests should be run with --profile=ethtests for more compiler optimization + +// RUST_MIN_STACK=8388608 +#[test] +fn test_ec_pairing_precompile() { + let sdk = Sdk::new(); + let guest_opts = GuestOptions::default(); + let mut pkg_dir = PathBuf::from(env!("CARGO_MANIFEST_DIR")).to_path_buf(); + pkg_dir.push("programs/pairing"); + let ec_precompile = sdk.build(guest_opts.clone(), &pkg_dir, &None).unwrap(); + + let vm_config = SdkVmConfig::builder() + .system(SystemConfig::default().with_continuations().into()) + .rv32i(Default::default()) + .rv32m(Default::default()) + .io(Default::default()) + .keccak(Default::default()) + .modular(ModularExtension::new(vec![ + BN254_MODULUS.clone(), + BN254_ORDER.clone(), + ])) + .fp2(Fp2Extension::new(vec![BN254_MODULUS.clone()])) + .ecc(WeierstrassExtension::new(vec![CurveConfig { + modulus: BN254_MODULUS.clone(), + scalar: BN254_ORDER.clone(), + a: BigUint::zero(), + b: BigUint::from_u8(3u8).unwrap(), + }])) + .pairing(PairingExtension::new(vec![PairingCurve::Bn254])) + .build(); + let exe = sdk + .transpile(ec_precompile, vm_config.transpiler()) + .unwrap(); + + let input = hex::decode( + "\ + 1c76476f4def4bb94541d57ebba1193381ffa7aa76ada664dd31c16024c43f59\ + 3034dd2920f673e204fee2811c678745fc819b55d3e9d294e45c9b03a76aef41\ + 209dd15ebff5d46c4bd888e51a93cf99a7329636c63514396b4a452003a35bf7\ + 04bf11ca01483bfa8b34b43561848d28905960114c8ac04049af4b6315a41678\ + 2bb8324af6cfc93537a2ad1a445cfd0ca2a71acd7ac41fadbf933c2a51be344d\ + 120a2a4cf30c1bf9845f20c6fe39e07ea2cce61f0c9bb048165fe5e4de877550\ + 111e129f1cf1097710d41c4ac70fcdfa5ba2023c6ff1cbeac322de49d1b6df7c\ + 2032c61a830e3c17286de9462bf242fca2883585b93870a73853face6a6bf411\ + 198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c2\ + 1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed\ + 090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b\ + 12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa", + ) + .unwrap(); + let expected = + hex::decode("0000000000000000000000000000000000000000000000000000000000000001").unwrap(); + + let io = [input, expected] + .into_iter() + .map(|w| w.into_iter().map(F::from_canonical_u8).collect::>()) + .collect::>(); + air_test_with_min_segments(vm_config, exe, io, 1); +} + +#[test] +fn test_ec_add_precompile() { + let sdk = Sdk::new(); + let guest_opts = GuestOptions::default(); + let mut pkg_dir = PathBuf::from(env!("CARGO_MANIFEST_DIR")).to_path_buf(); + pkg_dir.push("programs/ec_add"); + let ec_precompile = sdk.build(guest_opts.clone(), &pkg_dir, &None).unwrap(); + + let vm_config = SdkVmConfig::builder() + .system(SystemConfig::default().with_continuations().into()) + .rv32i(Default::default()) + .rv32m(Default::default()) + .io(Default::default()) + .modular(ModularExtension::new(vec![ + BN254_MODULUS.clone(), + BN254_ORDER.clone(), + ])) + .ecc(WeierstrassExtension::new(vec![CurveConfig { + modulus: BN254_MODULUS.clone(), + scalar: BN254_ORDER.clone(), + a: BigUint::zero(), + b: BigUint::from_u8(3u8).unwrap(), + }])) + .build(); + let exe = sdk + .transpile(ec_precompile, vm_config.transpiler()) + .unwrap(); + + let input = hex::decode( + "\ + 18b18acfb4c2c30276db5411368e7185b311dd124691610c5d3b74034e093dc9\ + 063c909c4720840cb5134cb9f59fa749755796819658d32efc0d288198f37266\ + 07c2b7f58a84bd6145f00c9c2bc0bb1a187f20ff2c92963a88019e7c6a014eed\ + 06614e20c147e940f2d70da3f74c9a17df361706a4485c742bd6788478fa17d7", + ) + .unwrap(); + let expected = hex::decode( + "\ + 2243525c5efd4b9c3d3c45ac0ca3fe4dd85e830a4ce6b65fa1eeaee202839703\ + 301d1d33be6da8e509df21cc35964723180eed7532537db9ae5e7d48f195c915", + ) + .unwrap(); + + let io = [input, expected] + .into_iter() + .map(|w| w.into_iter().map(F::from_canonical_u8).collect::>()) + .collect::>(); + air_test_with_min_segments(vm_config, exe, io, 1); +} + +#[test] +fn test_ec_mul_precompile() { + let sdk = Sdk::new(); + let guest_opts = GuestOptions::default(); + let mut pkg_dir = PathBuf::from(env!("CARGO_MANIFEST_DIR")).to_path_buf(); + pkg_dir.push("programs/ec_mul"); + let ec_precompile = sdk.build(guest_opts.clone(), &pkg_dir, &None).unwrap(); + + let vm_config = SdkVmConfig::builder() + .system(SystemConfig::default().with_continuations().into()) + .rv32i(Default::default()) + .rv32m(Default::default()) + .io(Default::default()) + .modular(ModularExtension::new(vec![ + BN254_MODULUS.clone(), + BN254_ORDER.clone(), + ])) + .ecc(WeierstrassExtension::new(vec![CurveConfig { + modulus: BN254_MODULUS.clone(), + scalar: BN254_ORDER.clone(), + a: BigUint::zero(), + b: BigUint::from_u8(3u8).unwrap(), + }])) + .build(); + let exe = sdk + .transpile(ec_precompile, vm_config.transpiler()) + .unwrap(); + + let input = hex::decode( + "\ + 2bd3e6d0f3b142924f5ca7b49ce5b9d54c4703d7ae5648e61d02268b1a0a9fb7\ + 21611ce0a6af85915e2f1d70300909ce2e49dfad4a4619c8390cae66cefdb204\ + 00000000000000000000000000000000000000000000000011138ce750fa15c2", + ) + .unwrap(); + let expected = hex::decode( + "\ + 070a8d6a982153cae4be29d434e8faef8a47b274a053f5a4ee2a6c9c13c31e5c\ + 031b8ce914eba3a9ffb989f9cdd5b0f01943074bf4f0f315690ec3cec6981afc", + ) + .unwrap(); + + let io = [input, expected] + .into_iter() + .map(|w| w.into_iter().map(F::from_canonical_u8).collect::>()) + .collect::>(); + air_test_with_min_segments(vm_config, exe, io, 1); +} diff --git a/tests/openvm/src/ecrecover.rs b/tests/openvm/src/ecrecover.rs new file mode 100644 index 000000000..70cdf800f --- /dev/null +++ b/tests/openvm/src/ecrecover.rs @@ -0,0 +1,62 @@ +use std::path::PathBuf; + +use openvm_algebra_circuit::ModularExtension; +use openvm_build::GuestOptions; +use openvm_circuit::arch::SystemConfig; +use openvm_circuit::utils::air_test_with_min_segments; +use openvm_ecc_circuit::{WeierstrassExtension, SECP256K1_CONFIG}; +use openvm_ecc_guest::k256::{SECP256K1_MODULUS, SECP256K1_ORDER}; +use openvm_sdk::StdIn; +use openvm_sdk::{config::SdkVmConfig, Sdk}; +use primitives::{hex, keccak256, Bytes, U256}; +use secp256k1::{Message, SecretKey, SECP256K1}; + +#[test] +fn test_ecrecover_precompile() { + let sdk = Sdk::new(); + let guest_opts = GuestOptions::default(); + let mut pkg_dir = PathBuf::from(env!("CARGO_MANIFEST_DIR")).to_path_buf(); + pkg_dir.push("programs/ecrecover"); + let elf = sdk.build(guest_opts.clone(), &pkg_dir, &None).unwrap(); + + let vm_config = SdkVmConfig::builder() + .system(SystemConfig::default().with_continuations().into()) + .rv32i(Default::default()) + .rv32m(Default::default()) + .io(Default::default()) + .keccak(Default::default()) + .modular(ModularExtension::new(vec![ + SECP256K1_MODULUS.clone(), + SECP256K1_ORDER.clone(), + ])) + .ecc(WeierstrassExtension::new(vec![SECP256K1_CONFIG.clone()])) + .build(); + let exe = sdk.transpile(elf, vm_config.transpiler()).unwrap(); + + // Generate secp256k1 signature + let data = hex::decode("1337133713371337").unwrap(); + let hash = keccak256(data); + let secret_key = SecretKey::new(&mut rand::thread_rng()); + + let message = Message::from_digest_slice(&hash[..]).unwrap(); + let s = SECP256K1.sign_ecdsa_recoverable(&message, &secret_key); + let (rec_id, data) = s.serialize_compact(); + let rec_id = i32::from(rec_id) as u8 + 27; + + let mut message_and_signature = [0u8; 128]; + message_and_signature[0..32].copy_from_slice(&hash[..]); + + // Fit signature into format the precompile expects + let rec_id = U256::from(rec_id as u64); + message_and_signature[32..64].copy_from_slice(&rec_id.to_be_bytes::<32>()); + message_and_signature[64..128].copy_from_slice(&data); + + let message_and_signature = Bytes::from(message_and_signature); + let public = SECP256K1.recover_ecdsa(&message, &s).unwrap(); + let mut expected = keccak256(&public.serialize_uncompressed()[1..]); + expected[..12].fill(0); + let mut stdin = StdIn::default(); + stdin.write_bytes(expected.as_slice()); + stdin.write_bytes(&message_and_signature); + air_test_with_min_segments(vm_config, exe, stdin, 1); +} diff --git a/tests/openvm/src/kzg_precompile.rs b/tests/openvm/src/kzg_precompile.rs new file mode 100644 index 000000000..f0dcbe5b8 --- /dev/null +++ b/tests/openvm/src/kzg_precompile.rs @@ -0,0 +1,101 @@ +use std::path::PathBuf; + +use num_bigint::BigUint; +use num_traits::{FromPrimitive, Zero}; +use openvm_algebra_circuit::{Fp2Extension, ModularExtension}; +use openvm_build::GuestOptions; +use openvm_circuit::utils::air_test_with_min_segments; +use openvm_ecc_circuit::{CurveConfig, WeierstrassExtension}; +use openvm_pairing_circuit::{PairingCurve, PairingExtension}; +use openvm_pairing_guest::bls12_381::{BLS12_381_MODULUS, BLS12_381_ORDER}; +use openvm_sdk::StdIn; +use openvm_sdk::{config::SdkVmConfig, Sdk}; +use primitives::eip4844::VERSIONED_HASH_VERSION_KZG; +use primitives::hex; +use sha2::{Digest, Sha256}; + +// These tests should be run with --profile=fast or --profile=ethtests for more compiler optimization + +#[test] +fn test_kzg_precompile_with_intrinsics() { + let sdk = Sdk::new(); + let guest_opts = GuestOptions::default().with_features(["use-intrinsics"]); + let mut pkg_dir = PathBuf::from(env!("CARGO_MANIFEST_DIR")).to_path_buf(); + pkg_dir.push("programs/kzg_point_evaluation"); + let elf = sdk.build(guest_opts, &pkg_dir, &None).unwrap(); + + let vm_config = SdkVmConfig::builder() + .system(Default::default()) + .rv32i(Default::default()) + .rv32m(Default::default()) + .io(Default::default()) + .keccak(Default::default()) + .modular(ModularExtension::new(vec![ + BLS12_381_MODULUS.clone(), + BLS12_381_ORDER.clone(), + ])) + .ecc(WeierstrassExtension::new(vec![CurveConfig { + modulus: BLS12_381_MODULUS.clone(), + scalar: BLS12_381_ORDER.clone(), + a: BigUint::zero(), + b: BigUint::from_u8(4).unwrap(), + }])) + .fp2(Fp2Extension::new(vec![BLS12_381_MODULUS.clone()])) + .pairing(PairingExtension::new(vec![PairingCurve::Bls12_381])) + .build(); + let exe = sdk.transpile(elf, vm_config.transpiler()).unwrap(); + + // test data from: https://github.com/ethereum/c-kzg-4844/blob/main/tests/verify_kzg_proof/kzg-mainnet/verify_kzg_proof_case_correct_proof_31ebd010e6098750/data.yaml + + let commitment = hex!("8f59a8d2a1a625a17f3fea0fe5eb8c896db3764f3185481bc22f91b4aaffcca25f26936857bc3a7c2539ea8ec3a952b7").to_vec(); + let mut versioned_hash = Sha256::digest(&commitment).to_vec(); + versioned_hash[0] = VERSIONED_HASH_VERSION_KZG; + let z = hex!("73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000000").to_vec(); + let y = hex!("1522a4a7f34e1ea350ae07c29c96c7e79655aa926122e95fe69fcbd932ca49e9").to_vec(); + let proof = hex!("a62ad71d14c5719385c0686f1871430475bf3a00f0aa3f7b8dd99a9abc2160744faf0070725e00b60ad9a026a15b1a8c").to_vec(); + + let input = [versioned_hash, z, y, commitment, proof].concat(); + + let expected_output = hex!("000000000000000000000000000000000000000000000000000000000000100073eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001"); + + let mut io = StdIn::default(); + io.write_bytes(&input); + io.write_bytes(&expected_output); + air_test_with_min_segments(vm_config, exe, io, 1); +} + +#[test] +#[ignore] +fn test_kzg_precompile_without_intrinsics() { + let sdk = Sdk::new(); + let guest_opts = GuestOptions::default(); + let mut pkg_dir = PathBuf::from(env!("CARGO_MANIFEST_DIR")).to_path_buf(); + pkg_dir.push("programs/kzg_point_evaluation"); + let elf = sdk.build(guest_opts, &pkg_dir, &None).unwrap(); + + let vm_config = SdkVmConfig::builder() + .system(Default::default()) + .rv32i(Default::default()) + .rv32m(Default::default()) + .io(Default::default()) + .keccak(Default::default()) + .build(); + let exe = sdk.transpile(elf, vm_config.transpiler()).unwrap(); + + // test data from: https://github.com/ethereum/c-kzg-4844/blob/main/tests/verify_kzg_proof/kzg-mainnet/verify_kzg_proof_case_correct_proof_31ebd010e6098750/data.yaml + let commitment = hex!("8f59a8d2a1a625a17f3fea0fe5eb8c896db3764f3185481bc22f91b4aaffcca25f26936857bc3a7c2539ea8ec3a952b7").to_vec(); + let mut versioned_hash = Sha256::digest(&commitment).to_vec(); + versioned_hash[0] = VERSIONED_HASH_VERSION_KZG; + let z = hex!("73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000000").to_vec(); + let y = hex!("1522a4a7f34e1ea350ae07c29c96c7e79655aa926122e95fe69fcbd932ca49e9").to_vec(); + let proof = hex!("a62ad71d14c5719385c0686f1871430475bf3a00f0aa3f7b8dd99a9abc2160744faf0070725e00b60ad9a026a15b1a8c").to_vec(); + + let input = [versioned_hash, z, y, commitment, proof].concat(); + + let expected_output = hex!("000000000000000000000000000000000000000000000000000000000000100073eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001"); + + let mut io = StdIn::default(); + io.write_bytes(&input); + io.write_bytes(&expected_output); + air_test_with_min_segments(vm_config, exe, io, 1); +} diff --git a/tests/openvm/src/lib.rs b/tests/openvm/src/lib.rs new file mode 100644 index 000000000..3518bcc26 --- /dev/null +++ b/tests/openvm/src/lib.rs @@ -0,0 +1,8 @@ +#[cfg(test)] +pub mod ec_precompile; +#[cfg(test)] +pub mod ecrecover; +#[cfg(test)] +pub mod kzg_precompile; +#[cfg(test)] +pub mod sha256_precompile; diff --git a/tests/openvm/src/sha256_precompile.rs b/tests/openvm/src/sha256_precompile.rs new file mode 100644 index 000000000..4fc05bfc7 --- /dev/null +++ b/tests/openvm/src/sha256_precompile.rs @@ -0,0 +1,57 @@ +use std::path::PathBuf; + +use openvm_build::GuestOptions; +use openvm_circuit::arch::SystemConfig; +use openvm_circuit::utils::air_test_with_min_segments; +use openvm_sdk::{config::SdkVmConfig, Sdk}; +use openvm_stark_sdk::openvm_stark_backend::p3_field::FieldAlgebra; +use openvm_stark_sdk::p3_baby_bear::BabyBear; +use primitives::hex; + +type F = BabyBear; + +#[test] +fn test_sha256_precompile() { + let sdk = Sdk::new(); + let guest_opts = GuestOptions::default(); + let mut pkg_dir = PathBuf::from(env!("CARGO_MANIFEST_DIR")).to_path_buf(); + pkg_dir.push("programs/sha256"); + let sha256_precompile = sdk.build(guest_opts.clone(), &pkg_dir, &None).unwrap(); + + let vm_config = SdkVmConfig::builder() + .system(SystemConfig::default().with_continuations().into()) + .rv32i(Default::default()) + .rv32m(Default::default()) + .io(Default::default()) + .keccak(Default::default()) + .sha256(Default::default()) + .build(); + let exe = sdk + .transpile(sha256_precompile, vm_config.transpiler()) + .unwrap(); + + let input = hex::decode( + "\ + 1c76476f4def4bb94541d57ebba1193381ffa7aa76ada664dd31c16024c43f59\ + 3034dd2920f673e204fee2811c678745fc819b55d3e9d294e45c9b03a76aef41\ + 209dd15ebff5d46c4bd888e51a93cf99a7329636c63514396b4a452003a35bf7\ + 04bf11ca01483bfa8b34b43561848d28905960114c8ac04049af4b6315a41678\ + 2bb8324af6cfc93537a2ad1a445cfd0ca2a71acd7ac41fadbf933c2a51be344d\ + 120a2a4cf30c1bf9845f20c6fe39e07ea2cce61f0c9bb048165fe5e4de877550\ + 111e129f1cf1097710d41c4ac70fcdfa5ba2023c6ff1cbeac322de49d1b6df7c\ + 2032c61a830e3c17286de9462bf242fca2883585b93870a73853face6a6bf411\ + 198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c2\ + 1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed\ + 090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b\ + 12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa", + ) + .unwrap(); + let expected = + hex::decode("5f4e768d9faaf07a8c7264b937d60ff0b2fd52458e60a235f79c54bea68979dc").unwrap(); + + let io = [input, expected] + .into_iter() + .map(|w| w.into_iter().map(F::from_canonical_u8).collect::>()) + .collect::>(); + air_test_with_min_segments(vm_config, exe, io, 1); +}