diff --git a/.github/workflows/ci-integration-reusable.yml b/.github/workflows/ci-integration-reusable.yml new file mode 100644 index 000000000..9ff0349e0 --- /dev/null +++ b/.github/workflows/ci-integration-reusable.yml @@ -0,0 +1,50 @@ +name: CI Integration test - Reusable + +on: + workflow_call: + inputs: + version_name: + type: string + required: true + version_toolchain: + type: string + required: true + +env: + CI: 1 + CARGO_TERM_COLOR: always + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + +jobs: + build-run-integration: + name: Build and run integration + runs-on: [taiko-runner] + timeout-minutes: 120 + + env: + TARGET: ${{ inputs.version_name }} + CI: 1 + MOCK: 1 + + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + + - uses: actions-rs/toolchain@v1 + with: + toolchain: ${{ inputs.version_toolchain }} + profile: minimal + + - name: Setup sccache + if: ${{ inputs.version_name }} == risc0 + uses: risc0/risc0/.github/actions/sccache@release-0.19 + + - name: Install ${{ inputs.version_name }} + run: make install + + - name: Build ${{ inputs.version_name }} prover + run: make build + + - name: Run integration test for ${{ inputs.version_name }} prover + run: make integration diff --git a/.github/workflows/ci-native.yml b/.github/workflows/ci-native.yml index 0c1ab7874..9c7b9b555 100644 --- a/.github/workflows/ci-native.yml +++ b/.github/workflows/ci-native.yml @@ -9,3 +9,10 @@ jobs: with: version_name: "native" version_toolchain: "nightly-2024-04-17" + + integration-test-native: + name: Run integration tests on native + uses: ./.github/workflows/ci-integration-reusable.yml + with: + version_name: "native" + version_toolchain: "nightly-2024-04-17" diff --git a/.github/workflows/ci-risc0.yml b/.github/workflows/ci-risc0.yml index 5ac10b864..3fd4cb08a 100644 --- a/.github/workflows/ci-risc0.yml +++ b/.github/workflows/ci-risc0.yml @@ -18,3 +18,10 @@ jobs: with: version_name: "risc0" version_toolchain: "stable" + + integration-test-risc0: + name: Run integration tests on risc0 + uses: ./.github/workflows/ci-integration-reusable.yml + with: + version_name: "risc0" + version_toolchain: "nightly-2024-04-17" diff --git a/.github/workflows/ci-sgx-all.yml b/.github/workflows/ci-sgx-all.yml index f3af7f9ef..a6d90df52 100644 --- a/.github/workflows/ci-sgx-all.yml +++ b/.github/workflows/ci-sgx-all.yml @@ -12,17 +12,24 @@ on: merge_group: jobs: - build-test-sgx: - name: Build and test sgx - uses: ./.github/workflows/ci-build-test-reusable.yml - with: - version_name: "sgx" - version_toolchain: "stable" + build-test-sgx: + name: Build and test sgx + uses: ./.github/workflows/ci-build-test-reusable.yml + with: + version_name: "sgx" + version_toolchain: "stable" - build-test-sgx-docker: - name: Build and test sgx with Docker - uses: ./.github/workflows/ci-sgx-docker.yml + # integration-test-sgx: + # name: Run integration tests on sgx + # uses: ./.github/workflows/ci-integration-reusable.yml + # with: + # version_name: "sgx" + # version_toolchain: "nightly-2024-04-17" - build-test-sgx-hardware: - name: Build and test sgx in hardware - uses: ./.github/workflows/ci-sgx-hardware.yml + build-test-sgx-docker: + name: Build and test sgx with Docker + uses: ./.github/workflows/ci-sgx-docker.yml + + build-test-sgx-hardware: + name: Build and test sgx in hardware + uses: ./.github/workflows/ci-sgx-hardware.yml diff --git a/.github/workflows/ci-sp1.yml b/.github/workflows/ci-sp1.yml index 63aa35f48..1e7adbf66 100644 --- a/.github/workflows/ci-sp1.yml +++ b/.github/workflows/ci-sp1.yml @@ -18,3 +18,10 @@ jobs: with: version_name: "sp1" version_toolchain: "nightly-2024-04-18" + + integration-test-sp1: + name: Run integration tests on sp1 + uses: ./.github/workflows/ci-integration-reusable.yml + with: + version_name: "sp1" + version_toolchain: "nightly-2024-04-17" diff --git a/Cargo.lock b/Cargo.lock index 9faeb2580..b9652290a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -44,12 +44,6 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" -[[package]] -name = "adler2" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" - [[package]] name = "adler32" version = "1.2.0" @@ -113,7 +107,7 @@ dependencies = [ "getrandom 0.2.15", "once_cell", "version_check", - "zerocopy", + "zerocopy 0.7.35", ] [[package]] @@ -148,12 +142,12 @@ checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" [[package]] name = "alloy-chains" -version = "0.1.27" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b515e82c8468ddb6ff8db21c78a5997442f113fd8471fd5b2261b2602dd0c67" +checksum = "1752d7d62e2665da650a36d84abbf239f812534475d51f072a49a533513b7cdd" dependencies = [ "alloy-rlp", - "num_enum 0.7.3", + "num_enum 0.7.2", "serde", "strum 0.26.3", ] @@ -205,7 +199,7 @@ dependencies = [ "itoa", "serde", "serde_json", - "winnow 0.6.18", + "winnow 0.6.15", ] [[package]] @@ -327,7 +321,7 @@ dependencies = [ "futures-utils-wasm", "lru", "pin-project", - "reqwest 0.12.7", + "reqwest 0.12.5", "serde", "serde_json", "tokio", @@ -337,9 +331,9 @@ dependencies = [ [[package]] name = "alloy-rlp" -version = "0.3.8" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26154390b1d205a4a7ac7352aa2eb4f81f391399d4e2f546fb81a2f8bb383f62" +checksum = "a43b18702501396fa9bcdeecd533bc85fac75150d308fc0f6800a01e6234a003" dependencies = [ "alloy-rlp-derive", "arrayvec", @@ -348,13 +342,13 @@ dependencies = [ [[package]] name = "alloy-rlp-derive" -version = "0.3.8" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d0f2d905ebd295e7effec65e5f6868d153936130ae718352771de3e7d03c75c" +checksum = "d83524c1f6162fcb5b0decf775498a125066c86dda6066ed609531b0e912f85a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.72", ] [[package]] @@ -368,7 +362,7 @@ dependencies = [ "alloy-transport-http", "futures", "pin-project", - "reqwest 0.12.7", + "reqwest 0.12.5", "serde", "serde_json", "tokio", @@ -541,7 +535,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.72", ] [[package]] @@ -553,11 +547,11 @@ dependencies = [ "alloy-sol-macro-input", "const-hex", "heck 0.5.0", - "indexmap 2.4.0", + "indexmap 2.2.6", "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.72", "syn-solidity", "tiny-keccak", ] @@ -573,7 +567,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.72", "syn-solidity", ] @@ -584,7 +578,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cbcba3ca07cf7975f15d871b721fb18031eec8bce51103907f6dcce00b255d98" dependencies = [ "serde", - "winnow 0.6.18", + "winnow 0.6.15", ] [[package]] @@ -626,7 +620,7 @@ checksum = "86d65871f9f1cafe1ed25cde2f1303be83e6473e995a2d56c275ae4fcce6119c" dependencies = [ "alloy-json-rpc", "alloy-transport", - "reqwest 0.12.7", + "reqwest 0.12.5", "serde_json", "tower", "tracing", @@ -675,9 +669,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.15" +version = "0.6.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" +checksum = "418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b" dependencies = [ "anstyle", "anstyle-parse", @@ -690,33 +684,33 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.8" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" +checksum = "038dfcf04a5feb68e9c60b21c9625a54c2c0616e79b72b0fd87075a056ae1d1b" [[package]] name = "anstyle-parse" -version = "0.2.5" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" +checksum = "c03a11a9034d92058ceb6ee011ce58af4a9bf61491aa7e1e59ecd24bd40d22d4" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.1" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" +checksum = "ad186efb764318d35165f1758e7dcef3b10628e26d41a44bc5550652e6804391" dependencies = [ "windows-sys 0.52.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.4" +version = "3.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" +checksum = "61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19" dependencies = [ "anstyle", "windows-sys 0.52.0", @@ -988,20 +982,19 @@ checksum = "9d151e35f61089500b617991b791fc8bfd237ae50cd5950803758a179b41e67a" [[package]] name = "arrayvec" -version = "0.7.6" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "assert_cmd" -version = "2.0.16" +version = "2.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc1835b7f27878de8525dc71410b5a31cdcc5f230aed5ba5df968e09c201b23d" +checksum = "ed72493ac66d5804837f480ab3766c72bdfab91a65e565fc54fa9e42db0073a8" dependencies = [ "anstyle", "bstr", "doc-comment", - "libc", "predicates", "predicates-core", "predicates-tree", @@ -1043,7 +1036,7 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.72", ] [[package]] @@ -1054,7 +1047,7 @@ checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.72", ] [[package]] @@ -1103,7 +1096,7 @@ checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.72", ] [[package]] @@ -1177,7 +1170,7 @@ dependencies = [ "heck 0.4.1", "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.72", ] [[package]] @@ -1190,8 +1183,8 @@ dependencies = [ "cc", "cfg-if", "libc", - "miniz_oxide 0.7.4", - "object 0.36.3", + "miniz_oxide", + "object 0.36.1", "rustc-demangle", "serde", ] @@ -1277,9 +1270,9 @@ dependencies = [ "proc-macro2", "quote", "regex", - "rustc-hash 1.1.0", + "rustc-hash", "shlex", - "syn 2.0.76", + "syn 2.0.72", "which 4.4.2", ] @@ -1363,9 +1356,9 @@ dependencies = [ [[package]] name = "blake3" -version = "1.5.4" +version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d82033247fd8e890df8f740e407ad4d038debb9eb1f40533fffb32e7d17dc6f7" +checksum = "e9ec96fe9a81b5e365f9db71fe00edc4fe4ca2cc7dcb7861f0603012a7caa210" dependencies = [ "arrayref", "arrayvec", @@ -1443,7 +1436,7 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7781292e9bcc1f54de6839dbab88b4032d2a20ab1d4fb3d8f045e9cecf5486e" dependencies = [ - "reqwest 0.12.7", + "reqwest 0.12.5", "risc0-groth16", "serde", "thiserror", @@ -1458,7 +1451,7 @@ checksum = "b1553c9f015eb3fc4ff1bf2e142fceeb2256768a3c4d94a9486784a6c656484d" dependencies = [ "duplicate", "maybe-async", - "reqwest 0.12.7", + "reqwest 0.12.5", "risc0-groth16", "serde", "thiserror", @@ -1497,9 +1490,9 @@ dependencies = [ [[package]] name = "bstr" -version = "1.10.0" +version = "1.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40723b8fb387abc38f4f4a37c09073622e41dd12327033091ef8950659e6dc0c" +checksum = "05efc5cfd9110c8416e471df0e96702d58690178e206e61b7173706673c93706" dependencies = [ "memchr", "regex-automata 0.4.7", @@ -1520,22 +1513,22 @@ checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" [[package]] name = "bytemuck" -version = "1.17.0" +version = "1.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fd4c6dcc3b0aea2f5c0b4b82c2b15fe39ddbc76041a310848f4706edf76bb31" +checksum = "773d90827bc3feecfb67fab12e24de0749aad83c74b9504ecde46237b5cd24e2" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.7.1" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cc8b54b395f2fcfbb3d90c47b01c7f444d94d05bdeb775811dec868ac3bbc26" +checksum = "1ee891b04274a59bd38b412188e24b849617b2e45a0fd8d057deb63e7403761b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.72", ] [[package]] @@ -1546,9 +1539,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.7.1" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" +checksum = "a12916984aab3fa6e39d655a33e09c0071eb36d6ab3aea5c2d78551f1df6d952" dependencies = [ "serde", ] @@ -1582,9 +1575,9 @@ dependencies = [ [[package]] name = "camino" -version = "1.1.9" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3" +checksum = "e0ec6b951b160caa93cc0c7b209e5a3bff7aae9062213451ac99493cd844c239" dependencies = [ "serde", ] @@ -1633,13 +1626,12 @@ dependencies = [ [[package]] name = "cc" -version = "1.1.14" +version = "1.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50d2eb3cd3d1bf4529e31c215ee6f93ec5a3d536d9f578f93d9d33ee19562932" +checksum = "2aba8f4e9906c7ce3c73463f62a7f0c65183ada1a2d47e397cc8810827f9694f" dependencies = [ "jobserver", "libc", - "shlex", ] [[package]] @@ -1657,12 +1649,6 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" -[[package]] -name = "cfg_aliases" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" - [[package]] name = "chrono" version = "0.4.38" @@ -1725,9 +1711,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.16" +version = "4.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed6719fffa43d0d87e5fd8caeab59be1554fb028cd30edc88fc4369b17971019" +checksum = "64acc1846d54c1fe936a78dc189c34e28d3f5afc348403f28ecf53660b9b8462" dependencies = [ "clap_builder", "clap_derive", @@ -1735,9 +1721,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.15" +version = "4.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "216aec2b177652e3846684cbfe25c9964d18ec45234f0f5da5157b207ed1aab6" +checksum = "6fb8393d67ba2e7bfaf28a23458e4e2b543cc73a99595511eb207fdb8aede942" dependencies = [ "anstream", "anstyle", @@ -1747,21 +1733,21 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.13" +version = "4.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "501d359d5f3dcaf6ecdeee48833ae73ec6e42723a1e52419c79abf9507eec0a0" +checksum = "2bac35c6dafb060fd4d275d9a4ffae97917c13a6327903a8be2153cd964f7085" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.72", ] [[package]] name = "clap_lex" -version = "0.7.2" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" +checksum = "4b82cf0babdbd58558212896d1a4272303a57bdb245c2bf1147185fb45640e70" [[package]] name = "cobs" @@ -1823,9 +1809,9 @@ dependencies = [ [[package]] name = "colorchoice" -version = "1.0.2" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" +checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422" [[package]] name = "concat-kdf" @@ -1901,9 +1887,9 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.7" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" +checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" [[package]] name = "core-graphics-types" @@ -1936,9 +1922,9 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.13" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51e852e6dc9a5bed1fae92dd2375037bf2b768725bf3be87811edee3249d09ad" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" dependencies = [ "libc", ] @@ -2078,16 +2064,6 @@ dependencies = [ "cipher 0.4.4", ] -[[package]] -name = "ctrlc" -version = "3.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90eeab0aa92f3f9b4e87f258c72b139c207d251f9cbc1080a0086b86a8870dd3" -dependencies = [ - "nix", - "windows-sys 0.59.0", -] - [[package]] name = "cuckoofilter" version = "0.5.0" @@ -2126,7 +2102,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.72", ] [[package]] @@ -2196,7 +2172,7 @@ dependencies = [ "proc-macro2", "quote", "strsim 0.11.1", - "syn 2.0.76", + "syn 2.0.72", ] [[package]] @@ -2207,7 +2183,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.76", + "syn 2.0.72", ] [[package]] @@ -2373,7 +2349,7 @@ checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.72", ] [[package]] @@ -2386,7 +2362,7 @@ dependencies = [ "proc-macro2", "quote", "rustc_version 0.4.0", - "syn 2.0.76", + "syn 2.0.72", ] [[package]] @@ -2484,7 +2460,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.72", ] [[package]] @@ -2521,9 +2497,9 @@ dependencies = [ [[package]] name = "dunce" -version = "1.0.5" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" +checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b" [[package]] name = "duplicate" @@ -2623,12 +2599,6 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" -[[package]] -name = "embedded-io" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d" - [[package]] name = "encode_unicode" version = "0.3.6" @@ -2702,20 +2672,20 @@ dependencies = [ [[package]] name = "enumn" -version = "0.1.14" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f9ed6b3789237c8a0c1c505af1c7eb2c560df6186f01b098c3a1064ea532f38" +checksum = "6fd000fd6988e73bbe993ea3db9b1aa64906ab88766d654973924340c8cddb42" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.72", ] [[package]] name = "env_filter" -version = "0.1.2" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f2c92ceda6ceec50f43169f9ee8424fe2db276791afde7b2cd8bc084cb376ab" +checksum = "a009aa4810eb158359dda09d0c87378e4bbb89b5a801f016885a4707ba24f7ea" dependencies = [ "log", "regex", @@ -2723,9 +2693,9 @@ dependencies = [ [[package]] name = "env_logger" -version = "0.11.5" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13fa619b91fb2381732789fc5de83b45675e882f66623b7d8cb4f643017018d" +checksum = "38b35839ba51819680ba087cd351788c9a3c476841207e0b8cee0b04722343b9" dependencies = [ "anstream", "anstyle", @@ -2909,7 +2879,7 @@ dependencies = [ "regex", "serde", "serde_json", - "syn 2.0.76", + "syn 2.0.72", "toml 0.7.8", "walkdir", ] @@ -2931,8 +2901,8 @@ dependencies = [ "regex", "serde", "serde_json", - "syn 2.0.76", - "toml 0.8.19", + "syn 2.0.72", + "toml 0.8.15", "walkdir", ] @@ -2948,7 +2918,7 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.76", + "syn 2.0.72", ] [[package]] @@ -2964,7 +2934,7 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.76", + "syn 2.0.72", ] [[package]] @@ -2981,7 +2951,7 @@ dependencies = [ "ethabi", "generic-array 0.14.7", "k256", - "num_enum 0.7.3", + "num_enum 0.7.2", "once_cell", "open-fastrlp", "rand 0.8.5", @@ -2989,7 +2959,7 @@ dependencies = [ "serde", "serde_json", "strum 0.25.0", - "syn 2.0.76", + "syn 2.0.72", "tempfile", "thiserror", "tiny-keccak", @@ -3011,7 +2981,7 @@ dependencies = [ "ethabi", "generic-array 0.14.7", "k256", - "num_enum 0.7.3", + "num_enum 0.7.2", "once_cell", "open-fastrlp", "rand 0.8.5", @@ -3019,7 +2989,7 @@ dependencies = [ "serde", "serde_json", "strum 0.26.3", - "syn 2.0.76", + "syn 2.0.72", "tempfile", "thiserror", "tiny-keccak", @@ -3168,9 +3138,9 @@ checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a" [[package]] name = "fastrand" -version = "2.1.1" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" +checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" [[package]] name = "fastrlp" @@ -3252,12 +3222,12 @@ dependencies = [ [[package]] name = "flate2" -version = "1.0.33" +version = "1.0.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "324a1be68054ef05ad64b861cc9eaf1d623d2d8cb25b4bf2cb9cdd902b4bf253" +checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" dependencies = [ "crc32fast", - "miniz_oxide 0.8.0", + "miniz_oxide", ] [[package]] @@ -3293,7 +3263,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.72", ] [[package]] @@ -3389,7 +3359,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.72", ] [[package]] @@ -3593,7 +3563,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.4.0", + "indexmap 2.2.6", "slab", "tokio", "tokio-util", @@ -3602,9 +3572,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.6" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524e8ac6999421f49a846c2d4411f337e53497d8ec55d67753beffa43c5d9205" +checksum = "fa82e28a107a8cc405f0839610bdc9b15f1e25ec7d696aa5cf173edbcb1486ab" dependencies = [ "atomic-waker", "bytes", @@ -3612,7 +3582,7 @@ dependencies = [ "futures-core", "futures-sink", "http 1.1.0", - "indexmap 2.4.0", + "indexmap 2.2.6", "slab", "tokio", "tokio-util", @@ -3648,7 +3618,7 @@ version = "0.1.0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.72", ] [[package]] @@ -3658,7 +3628,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.72", ] [[package]] @@ -3915,7 +3885,7 @@ dependencies = [ "bytes", "futures-channel", "futures-util", - "h2 0.4.6", + "h2 0.4.5", "http 1.1.0", "http-body 1.0.1", "httparse", @@ -3951,7 +3921,7 @@ dependencies = [ "http 1.1.0", "hyper 1.4.1", "hyper-util", - "rustls 0.23.12", + "rustls 0.23.11", "rustls-pki-types", "tokio", "tokio-rustls 0.26.0", @@ -3990,9 +3960,9 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.7" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cde7055719c54e36e95e8719f95883f22072a48ede39db7fc17a4e1d5281e9b9" +checksum = "3ab92f4f49ee4fb4f997c784b7a2e0fa70050211e0b6a287f898c3c9785ca956" dependencies = [ "bytes", "futures-channel", @@ -4104,9 +4074,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.4.0" +version = "2.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93ead53efc7ea8ed3cfb0c79fc8023fbb782a5432b52830b6518941cebe6505c" +checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" dependencies = [ "equivalent", "hashbrown 0.14.5", @@ -4169,9 +4139,9 @@ dependencies = [ [[package]] name = "is_terminal_polyfill" -version = "1.70.1" +version = "1.70.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" +checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800" [[package]] name = "itertools" @@ -4208,18 +4178,18 @@ checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "jobserver" -version = "0.1.32" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" +checksum = "d2b099aaa34a9751c5bf0878add70444e1ed2dd73f347be99003d4577277de6e" dependencies = [ "libc", ] [[package]] name = "js-sys" -version = "0.3.70" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" +checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" dependencies = [ "wasm-bindgen", ] @@ -4305,9 +4275,9 @@ dependencies = [ [[package]] name = "keccak-asm" -version = "0.1.3" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "422fbc7ff2f2f5bdffeb07718e5a5324dca72b0c9293d50df4026652385e3314" +checksum = "47a3633291834c4fbebf8673acbc1b04ec9d151418ff9b8e26dcd79129928758" dependencies = [ "digest 0.10.7", "sha3-asm", @@ -4327,9 +4297,9 @@ dependencies = [ [[package]] name = "lazy-regex" -version = "3.3.0" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d8e41c97e6bc7ecb552016274b99fbb5d035e8de288c582d9b933af6677bfda" +checksum = "5d12be4595afdf58bd19e4a9f4e24187da2a66700786ff660a418e9059937a4c" dependencies = [ "lazy-regex-proc_macros", "once_cell", @@ -4338,14 +4308,14 @@ dependencies = [ [[package]] name = "lazy-regex-proc_macros" -version = "3.3.0" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76e1d8b05d672c53cb9c7b920bbba8783845ae4f0b076e02a3db1d02c81b4163" +checksum = "44bcd58e6c97a7fcbaffcdc95728b393b8d98933bfadad49ed4097845b57ef0b" dependencies = [ "proc-macro2", "quote", "regex", - "syn 2.0.76", + "syn 2.0.72", ] [[package]] @@ -4365,9 +4335,9 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "libc" -version = "0.2.158" +version = "0.2.155" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" +checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" [[package]] name = "libflate" @@ -4444,9 +4414,9 @@ dependencies = [ [[package]] name = "libz-sys" -version = "1.1.20" +version = "1.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2d16453e800a8cf6dd2fc3eb4bc99b786a9b90c663b8559a5b1a041bf89e472" +checksum = "c15da26e5af7e25c90b37a2d75cdbf940cf4a55316de9d84c679c9b8bfabf82e" dependencies = [ "cc", "libc", @@ -4484,9 +4454,9 @@ checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "lru" -version = "0.12.4" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37ee39891760e7d94734f6f63fedc29a2e4a152f836120753a72503f09fcf904" +checksum = "d3262e75e648fce39813cb56ac41f3c3e3f65217ebf3844d818d1f9398cfb0dc" dependencies = [ "hashbrown 0.14.5", ] @@ -4529,9 +4499,9 @@ checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" [[package]] name = "matrixmultiply" -version = "0.3.9" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9380b911e3e96d10c1f415da0876389aaf1b56759054eeb0de7df940c456ba1a" +checksum = "7574c1cf36da4798ab73da5b215bbf444f50718207754cb522201d78d1cd0ff2" dependencies = [ "autocfg", "rawpointer", @@ -4545,7 +4515,7 @@ checksum = "5cf92c10c7e361d6b99666ec1c6f9805b0bea2c3bd8c78dc6fe98ac5bd78db11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.72", ] [[package]] @@ -4634,15 +4604,6 @@ dependencies = [ "adler", ] -[[package]] -name = "miniz_oxide" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" -dependencies = [ - "adler2", -] - [[package]] name = "mint" version = "0.5.9" @@ -4719,18 +4680,6 @@ dependencies = [ "rayon", ] -[[package]] -name = "nix" -version = "0.29.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" -dependencies = [ - "bitflags 2.6.0", - "cfg-if", - "cfg_aliases", - "libc", -] - [[package]] name = "nohash-hasher" version = "0.2.0" @@ -4893,11 +4842,11 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.7.3" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" +checksum = "02339744ee7253741199f897151b38e72257d13802d4ee837285cc2990a90845" dependencies = [ - "num_enum_derive 0.7.3", + "num_enum_derive 0.7.2", ] [[package]] @@ -4914,14 +4863,14 @@ dependencies = [ [[package]] name = "num_enum_derive" -version = "0.7.3" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" +checksum = "681030a937600a36906c185595136d26abfebb4aa9c65701cefcaf8578bb982b" dependencies = [ "proc-macro-crate 3.1.0", "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.72", ] [[package]] @@ -4983,9 +4932,9 @@ dependencies = [ [[package]] name = "object" -version = "0.36.3" +version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27b64972346851a39438c60b341ebc01bba47464ae329e55cf343eb93964efd9" +checksum = "081b846d1d56ddfc18fdf1a922e4f6e07a11768ea1b92dec44e42b72712ccfce" dependencies = [ "memchr", ] @@ -5056,7 +5005,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.72", ] [[package]] @@ -5590,7 +5539,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.72", ] [[package]] @@ -5641,13 +5590,12 @@ checksum = "da544ee218f0d287a911e9c99a39a8c9bc8fcad3cb8db5959940044ecfc67265" [[package]] name = "postcard" -version = "1.0.10" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f7f0a8d620d71c457dd1d47df76bb18960378da56af4527aaa10f515eee732e" +checksum = "a55c51ee6c0db07e68448e336cf8ea4131a620edefebf9893e759b2d793420f8" dependencies = [ "cobs", - "embedded-io 0.4.0", - "embedded-io 0.6.1", + "embedded-io", "serde", ] @@ -5659,18 +5607,15 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" -version = "0.2.20" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" -dependencies = [ - "zerocopy", -] +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "predicates" -version = "3.1.2" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e9086cc7640c29a356d1a29fd134380bee9d8f79a17410aa76e7ad295f42c97" +checksum = "68b87bfd4605926cdfefc1c3b5f8fe560e3feca9d5552cf68c466d3d8236c7e8" dependencies = [ "anstyle", "difflib", @@ -5679,15 +5624,15 @@ dependencies = [ [[package]] name = "predicates-core" -version = "1.0.8" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae8177bee8e75d6846599c6b9ff679ed51e882816914eec639944d7c9aa11931" +checksum = "b794032607612e7abeb4db69adb4e33590fa6cf1149e95fd7cb00e634b92f174" [[package]] name = "predicates-tree" -version = "1.0.11" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41b740d195ed3166cd147c8047ec98db0e22ec019eb8eeb76d343b795304fb13" +checksum = "368ba315fb8c5052ab692e68a0eefec6ec57b23a36959c14496f0b0df2c0cecf" dependencies = [ "predicates-core", "termtree", @@ -5695,12 +5640,12 @@ dependencies = [ [[package]] name = "prettyplease" -version = "0.2.22" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479cf940fbbb3426c32c5d5176f62ad57549a0bb84773423ba8be9d089f5faba" +checksum = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e" dependencies = [ "proc-macro2", - "syn 2.0.76", + "syn 2.0.72", ] [[package]] @@ -5849,16 +5794,7 @@ dependencies = [ "itertools 0.12.1", "proc-macro2", "quote", - "syn 2.0.76", -] - -[[package]] -name = "prost-types" -version = "0.12.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9091c90b0a32608e984ff2fa4091273cbdd755d54935c51d520887f4a1dbd5b0" -dependencies = [ - "prost", + "syn 2.0.72", ] [[package]] @@ -5884,17 +5820,16 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quinn" -version = "0.11.3" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b22d8e7369034b9a7132bc2008cac12f2013c8132b45e0554e6e20e2617f2156" +checksum = "e4ceeeeabace7857413798eb1ffa1e9c905a9946a57d81fb69b4b71c4d8eb3ad" dependencies = [ "bytes", "pin-project-lite", "quinn-proto", "quinn-udp", - "rustc-hash 2.0.0", - "rustls 0.23.12", - "socket2 0.5.7", + "rustc-hash", + "rustls 0.23.11", "thiserror", "tokio", "tracing", @@ -5902,15 +5837,15 @@ dependencies = [ [[package]] name = "quinn-proto" -version = "0.11.6" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba92fb39ec7ad06ca2582c0ca834dfeadcaf06ddfc8e635c80aa7e1c05315fdd" +checksum = "ddf517c03a109db8100448a4be38d498df8a210a99fe0e1b9eaf39e78c640efe" dependencies = [ "bytes", "rand 0.8.5", "ring 0.17.8", - "rustc-hash 2.0.0", - "rustls 0.23.12", + "rustc-hash", + "rustls 0.23.11", "slab", "thiserror", "tinyvec", @@ -5926,15 +5861,14 @@ dependencies = [ "libc", "once_cell", "socket2 0.5.7", - "tracing", "windows-sys 0.52.0", ] [[package]] name = "quote" -version = "1.0.37" +version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" dependencies = [ "proc-macro2", ] @@ -5962,12 +5896,12 @@ dependencies = [ "anyhow", "assert_cmd", "bincode", - "clap 4.5.16", + "clap 4.5.9", "ethers-core 2.0.10", "kzg", "raiko-lib", "reqwest 0.11.27", - "reqwest 0.12.7", + "reqwest 0.12.5", "reth-evm", "reth-evm-ethereum", "reth-primitives", @@ -6008,7 +5942,7 @@ dependencies = [ "bytemuck", "cap", "cfg-if", - "clap 4.5.16", + "clap 4.5.9", "dotenv", "env_logger", "ethers-core 2.0.10", @@ -6023,7 +5957,7 @@ dependencies = [ "raiko-lib", "raiko-tasks", "reqwest 0.11.27", - "reqwest 0.12.7", + "reqwest 0.12.5", "reth-evm", "reth-evm-ethereum", "reth-primitives", @@ -6130,7 +6064,7 @@ dependencies = [ "bytemuck", "cap", "cfg-if", - "clap 4.5.16", + "clap 4.5.9", "dirs", "env_logger", "ethers-core 2.0.10", @@ -6142,7 +6076,7 @@ dependencies = [ "proptest", "raiko-lib", "reqwest 0.11.27", - "reqwest 0.12.7", + "reqwest 0.12.5", "rlp", "rstest", "serde", @@ -6169,11 +6103,11 @@ dependencies = [ "async-trait", "chrono", "hex", - "num_enum 0.7.3", + "num_enum 0.7.2", "raiko-core", "raiko-lib", - "rand 0.9.0-alpha.2", - "rand_chacha 0.9.0-alpha.2", + "rand 0.9.0-alpha.1", + "rand_chacha 0.9.0-alpha.1", "rusqlite", "serde", "serde_json", @@ -6210,13 +6144,13 @@ dependencies = [ [[package]] name = "rand" -version = "0.9.0-alpha.2" +version = "0.9.0-alpha.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3e256ff62cee3e03def855c4d4260106d2bb1696fdc01af03e9935b993720a5" +checksum = "8d31e63ea85be51c423e52ba8f2e68a3efd53eed30203ee029dd09947333693e" dependencies = [ - "rand_chacha 0.9.0-alpha.2", - "rand_core 0.9.0-alpha.2", - "zerocopy", + "rand_chacha 0.9.0-alpha.1", + "rand_core 0.9.0-alpha.1", + "zerocopy 0.8.0-alpha.6", ] [[package]] @@ -6241,12 +6175,12 @@ dependencies = [ [[package]] name = "rand_chacha" -version = "0.9.0-alpha.2" +version = "0.9.0-alpha.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d299e9db34f6623b2a9e86c015d6e173d5f46d64d4b9b8cc46ae8a982a50b04c" +checksum = "78674ef918c19451dbd250f8201f8619b494f64c9aa6f3adb28fd8a0f1f6da46" dependencies = [ "ppv-lite86", - "rand_core 0.9.0-alpha.2", + "rand_core 0.9.0-alpha.1", ] [[package]] @@ -6269,12 +6203,12 @@ dependencies = [ [[package]] name = "rand_core" -version = "0.9.0-alpha.2" +version = "0.9.0-alpha.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4e93f5a5e3c528cda9acb0928c31b2ba868c551cc46e67b778075e34aab9906" +checksum = "cc89dffba8377c5ec847d12bb41492bda235dba31a25e8b695cd0fe6589eb8c9" dependencies = [ "getrandom 0.2.15", - "zerocopy", + "zerocopy 0.8.0-alpha.6", ] [[package]] @@ -6350,9 +6284,9 @@ dependencies = [ [[package]] name = "redox_users" -version = "0.4.6" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" +checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" dependencies = [ "getrandom 0.2.15", "libredox", @@ -6361,9 +6295,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.6" +version = "1.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" +checksum = "b91213439dad192326a0d7c6ee3955910425f441d7038e0d6933b0aec5c4517f" dependencies = [ "aho-corasick", "memchr", @@ -6440,7 +6374,7 @@ dependencies = [ "serde_json", "serde_urlencoded", "sync_wrapper 0.1.2", - "system-configuration 0.5.1", + "system-configuration", "tokio", "tokio-native-tls", "tokio-rustls 0.24.1", @@ -6450,14 +6384,14 @@ dependencies = [ "wasm-bindgen-futures", "web-sys", "webpki-roots 0.25.4", - "winreg", + "winreg 0.50.0", ] [[package]] name = "reqwest" -version = "0.12.7" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8f4955649ef5c38cc7f9e8aa41761d48fb9677197daea9984dc54f56aad5e63" +checksum = "c7d6d2a27d57148378eb5e111173f4276ad26340ecc5c49a4a2152167a2d6a37" dependencies = [ "base64 0.22.1", "bytes", @@ -6465,7 +6399,7 @@ dependencies = [ "futures-channel", "futures-core", "futures-util", - "h2 0.4.6", + "h2 0.4.5", "http 1.1.0", "http-body 1.0.1", "http-body-util", @@ -6482,14 +6416,14 @@ dependencies = [ "percent-encoding", "pin-project-lite", "quinn", - "rustls 0.23.12", - "rustls-pemfile 2.1.3", + "rustls 0.23.11", + "rustls-pemfile 2.1.2", "rustls-pki-types", "serde", "serde_json", "serde_urlencoded", "sync_wrapper 1.0.1", - "system-configuration 0.6.1", + "system-configuration", "tokio", "tokio-native-tls", "tokio-rustls 0.26.0", @@ -6501,19 +6435,19 @@ dependencies = [ "wasm-streams", "web-sys", "webpki-roots 0.26.3", - "windows-registry", + "winreg 0.52.0", ] [[package]] name = "reqwest-middleware" -version = "0.3.3" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "562ceb5a604d3f7c885a792d42c199fd8af239d0a51b2fa6a78aafa092452b04" +checksum = "39346a33ddfe6be00cbc17a34ce996818b97b230b87229f10114693becca1268" dependencies = [ "anyhow", "async-trait", "http 1.1.0", - "reqwest 0.12.7", + "reqwest 0.12.5", "serde", "thiserror", "tower-service", @@ -6522,7 +6456,7 @@ dependencies = [ [[package]] name = "reth-blockchain-tree-api" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "reth-consensus", "reth-execution-errors", @@ -6534,7 +6468,7 @@ dependencies = [ [[package]] name = "reth-chainspec" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "alloy-chains", "alloy-eips", @@ -6553,7 +6487,7 @@ dependencies = [ [[package]] name = "reth-codecs" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "alloy-consensus", "alloy-eips", @@ -6568,18 +6502,18 @@ dependencies = [ [[package]] name = "reth-codecs-derive" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "convert_case 0.6.0", "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.72", ] [[package]] name = "reth-consensus" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "auto_impl", "reth-primitives", @@ -6589,7 +6523,7 @@ dependencies = [ [[package]] name = "reth-consensus-common" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "reth-chainspec", "reth-consensus", @@ -6599,7 +6533,7 @@ dependencies = [ [[package]] name = "reth-db" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "bytes", "derive_more", @@ -6615,7 +6549,7 @@ dependencies = [ "reth-storage-errors", "reth-tracing", "reth-trie-common", - "rustc-hash 1.1.0", + "rustc-hash", "serde", "strum 0.26.3", "sysinfo", @@ -6625,7 +6559,7 @@ dependencies = [ [[package]] name = "reth-db-api" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "bytes", "derive_more", @@ -6644,7 +6578,7 @@ dependencies = [ [[package]] name = "reth-discv4" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -6668,7 +6602,7 @@ dependencies = [ [[package]] name = "reth-ecies" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "aes 0.8.4", "alloy-primitives", @@ -6699,7 +6633,7 @@ dependencies = [ [[package]] name = "reth-errors" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "reth-blockchain-tree-api", "reth-consensus", @@ -6712,7 +6646,7 @@ dependencies = [ [[package]] name = "reth-eth-wire" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "alloy-rlp", "bytes", @@ -6739,7 +6673,7 @@ dependencies = [ [[package]] name = "reth-eth-wire-types" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "alloy-rlp", "bytes", @@ -6754,7 +6688,7 @@ dependencies = [ [[package]] name = "reth-ethereum-consensus" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "reth-chainspec", "reth-consensus", @@ -6766,7 +6700,7 @@ dependencies = [ [[package]] name = "reth-ethereum-forks" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "alloy-chains", "alloy-primitives", @@ -6779,7 +6713,7 @@ dependencies = [ [[package]] name = "reth-evm" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "auto_impl", "futures-util", @@ -6796,7 +6730,7 @@ dependencies = [ [[package]] name = "reth-evm-ethereum" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "alloy-eips", "alloy-sol-types", @@ -6816,7 +6750,7 @@ dependencies = [ [[package]] name = "reth-execution-errors" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "alloy-eips", "alloy-primitives", @@ -6830,7 +6764,7 @@ dependencies = [ [[package]] name = "reth-execution-types" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "reth-execution-errors", "reth-primitives", @@ -6841,7 +6775,7 @@ dependencies = [ [[package]] name = "reth-fs-util" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "serde_json", "thiserror", @@ -6850,7 +6784,7 @@ dependencies = [ [[package]] name = "reth-metrics" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "metrics", "reth-metrics-derive", @@ -6859,19 +6793,19 @@ dependencies = [ [[package]] name = "reth-metrics-derive" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "once_cell", "proc-macro2", "quote", "regex", - "syn 2.0.76", + "syn 2.0.72", ] [[package]] name = "reth-net-common" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "alloy-primitives", "tokio", @@ -6880,10 +6814,10 @@ dependencies = [ [[package]] name = "reth-net-nat" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "futures-util", - "reqwest 0.12.7", + "reqwest 0.12.5", "serde_with 3.9.0", "thiserror", "tokio", @@ -6892,7 +6826,7 @@ dependencies = [ [[package]] name = "reth-network-api" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "alloy-primitives", "enr 0.12.1", @@ -6907,7 +6841,7 @@ dependencies = [ [[package]] name = "reth-network-p2p" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "auto_impl", "futures", @@ -6925,7 +6859,7 @@ dependencies = [ [[package]] name = "reth-network-peers" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -6940,7 +6874,7 @@ dependencies = [ [[package]] name = "reth-nippy-jar" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "anyhow", "bincode", @@ -6960,7 +6894,7 @@ dependencies = [ [[package]] name = "reth-primitives" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "alloy-consensus", "alloy-eips", @@ -6994,7 +6928,7 @@ dependencies = [ [[package]] name = "reth-primitives-traits" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "alloy-consensus", "alloy-eips", @@ -7013,7 +6947,7 @@ dependencies = [ [[package]] name = "reth-provider" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "alloy-rpc-types-engine", "auto_impl", @@ -7051,7 +6985,7 @@ dependencies = [ [[package]] name = "reth-prune-types" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "alloy-primitives", "bytes", @@ -7065,7 +6999,7 @@ dependencies = [ [[package]] name = "reth-revm" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "alloy-eips", "alloy-rlp", @@ -7083,7 +7017,7 @@ dependencies = [ [[package]] name = "reth-rpc-types" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "alloy-primitives", "alloy-rpc-types", @@ -7102,7 +7036,7 @@ dependencies = [ [[package]] name = "reth-stages-types" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "alloy-primitives", "bytes", @@ -7115,7 +7049,7 @@ dependencies = [ [[package]] name = "reth-static-file-types" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "alloy-primitives", "derive_more", @@ -7126,7 +7060,7 @@ dependencies = [ [[package]] name = "reth-storage-api" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "auto_impl", "reth-chainspec", @@ -7143,7 +7077,7 @@ dependencies = [ [[package]] name = "reth-storage-errors" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "reth-fs-util", "reth-primitives", @@ -7153,9 +7087,9 @@ dependencies = [ [[package]] name = "reth-tracing" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ - "clap 4.5.16", + "clap 4.5.9", "eyre", "rolling-file", "tracing", @@ -7168,7 +7102,7 @@ dependencies = [ [[package]] name = "reth-trie" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "alloy-rlp", "auto_impl", @@ -7189,7 +7123,7 @@ dependencies = [ [[package]] name = "reth-trie-common" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "alloy-consensus", "alloy-genesis", @@ -7317,9 +7251,9 @@ dependencies = [ [[package]] name = "risc0-binfmt" -version = "1.0.5" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4003dd96f2e323dfef431b21a2aaddee1c6791fc32dea8eb2bff1b438bf5caf6" +checksum = "b3432b33880fd2bb3fcff4f7f4764f782852e839a849f72f1b36ba021e6f15d0" dependencies = [ "anyhow", "elf", @@ -7331,9 +7265,9 @@ dependencies = [ [[package]] name = "risc0-build-kernel" -version = "1.0.5" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84b372eeb78564f262aaa72270a87b94646821e09aa198606ff1e5487943a62b" +checksum = "4db08993d4922b319efb484353ca2702386230c8e5648c07b390ba3ae3d4294c" dependencies = [ "cc", "directories", @@ -7342,7 +7276,7 @@ dependencies = [ "rayon", "sha2", "tempfile", - "which 6.0.3", + "which 6.0.1", ] [[package]] @@ -7354,9 +7288,9 @@ dependencies = [ [[package]] name = "risc0-circuit-recursion" -version = "1.0.5" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7c4154d2fbbde5af02a1c35c90340c2749044f5d5cd7834251b616ffa28d467" +checksum = "adde6018be5b1ba65854fbbf993e44e0dc076893bb5e6e8311d9e606503fca2a" dependencies = [ "anyhow", "bytemuck", @@ -7373,14 +7307,14 @@ dependencies = [ "risc0-zkp", "sha2", "tracing", - "zip 2.2.0", + "zip 2.1.5", ] [[package]] name = "risc0-circuit-recursion-sys" -version = "1.0.5" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23995e726c28db57626a05f34f80bf223e23e8c4b53a5aa4afb4eaabc4bba923" +checksum = "7be7caf965981f44a8d3c8a065e2b09d9eb5852d2d623933dfcd70d08792570a" dependencies = [ "glob", "risc0-build-kernel", @@ -7391,9 +7325,9 @@ dependencies = [ [[package]] name = "risc0-circuit-rv32im" -version = "1.0.5" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce836e7c553e63cbd807d15925ba5dd641a80cdee7d123619eaa60bb555ab014" +checksum = "8fce940ee68935e3fbe224033fb8dc8447d23dcc7558aaa8bb8c21bc1de73bdf" dependencies = [ "anyhow", "bytemuck", @@ -7420,9 +7354,9 @@ dependencies = [ [[package]] name = "risc0-circuit-rv32im-sys" -version = "1.0.5" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07a69a3cb11175f7eeb2f07a7189f0baddb43233a6e7ed552724b1c7c7566152" +checksum = "46e1be5f652b867b32cb1558805ff78baa0da9f28a6923023d7f808d51707172" dependencies = [ "glob", "risc0-build-kernel", @@ -7433,9 +7367,9 @@ dependencies = [ [[package]] name = "risc0-core" -version = "1.0.5" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "047cc26c68c092d664ded7488dcac0462d9e31190e1598a7820fe4246d313583" +checksum = "be98b31168c4ff7dbe4c2744a1c189fdba6db200b0c581afd1272f0cc0d79aad" dependencies = [ "bytemuck", "rand_core 0.6.4", @@ -7474,9 +7408,9 @@ dependencies = [ [[package]] name = "risc0-groth16" -version = "1.0.5" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3309c7acaf46ed3d21df3841185afd8ea4aab9fb63dbd1974694dfdae276970" +checksum = "7fa298da93c2a8ea3c92bde5b2e12cbad3c4291bc4a5a70af5f1fd64a12353a5" dependencies = [ "anyhow", "ark-bn254", @@ -7498,9 +7432,9 @@ dependencies = [ [[package]] name = "risc0-sys" -version = "1.0.5" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5d1b6905a01d72dc9e90a668879b847f4132af4778525480288c8fe90401325" +checksum = "5f580b53e5a196f12158b2d6910febad42e01741bb5fd1bdb6f02f4ffb108c5f" dependencies = [ "cc", "cust", @@ -7510,9 +7444,9 @@ dependencies = [ [[package]] name = "risc0-zkp" -version = "1.0.5" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae55272541351a2391e5051519b33bfdf41f5648216827cc2cb94a49b6937380" +checksum = "6186432695488efb2eb4794d4074cf1edf381962303ecdd1732e366662f88afe" dependencies = [ "anyhow", "blake2", @@ -7541,9 +7475,9 @@ dependencies = [ [[package]] name = "risc0-zkvm" -version = "1.0.5" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f234694d9dabc1172cf418b7a3ba65447caad15b994f450e9941d2a7cc89e045" +checksum = "6ca4ee3b38d873affc146e48c741e5a70533f5ccb1e3b186d8d671459c51d1ba" dependencies = [ "addr2line", "anyhow", @@ -7579,9 +7513,9 @@ dependencies = [ [[package]] name = "risc0-zkvm-platform" -version = "1.0.5" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16735dab52ae8bf0dc30df78fce901b674f469dfd7b5f5dfddd54caea22f14d5" +checksum = "0494a25344644aea2fe9bdb2f619a28e68eb4aff2c173c723a1331fceac56eea" dependencies = [ "bytemuck", "getrandom 0.2.15", @@ -7682,7 +7616,7 @@ dependencies = [ "regex", "relative-path", "rustc_version 0.4.0", - "syn 2.0.76", + "syn 2.0.72", "unicode-ident", ] @@ -7751,7 +7685,7 @@ dependencies = [ "proc-macro2", "quote", "rust-embed-utils", - "syn 2.0.76", + "syn 2.0.72", "walkdir", ] @@ -7794,12 +7728,6 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" -[[package]] -name = "rustc-hash" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152" - [[package]] name = "rustc-hex" version = "2.1.0" @@ -7851,9 +7779,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.12" +version = "0.23.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c58f8c84392efc0a126acce10fa59ff7b3d2ac06ab451a33f2741989b806b044" +checksum = "4828ea528154ae444e5a642dbb7d5623354030dc9822b83fd9bb79683c7399d0" dependencies = [ "once_cell", "ring 0.17.8", @@ -7874,9 +7802,9 @@ dependencies = [ [[package]] name = "rustls-pemfile" -version = "2.1.3" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "196fe16b00e106300d3e45ecfcb764fa292a535d7326a29a5875c579c7417425" +checksum = "29993a25686778eb88d4189742cd713c9bce943bc54251a33509dc63cbacf73d" dependencies = [ "base64 0.22.1", "rustls-pki-types", @@ -7884,9 +7812,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.8.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc0a2ce646f8655401bb81e7927b812614bd5d91dbc968696be50603510fcaf0" +checksum = "976295e77ce332211c0d24d92c0e83e50f5c5f046d11082cea19f3df13a3562d" [[package]] name = "rustls-webpki" @@ -7988,9 +7916,9 @@ dependencies = [ [[package]] name = "scc" -version = "2.1.16" +version = "2.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aeb7ac86243095b70a7920639507b71d51a63390d1ba26c4f60a552fbb914a37" +checksum = "a4465c22496331e20eb047ff46e7366455bc01c0c02015c4a376de0b2cd3a1af" dependencies = [ "sdd", ] @@ -8045,9 +7973,9 @@ dependencies = [ [[package]] name = "sdd" -version = "3.0.2" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0495e4577c672de8254beb68d01a9b62d0e8a13c099edecdbedccce3223cd29f" +checksum = "85f05a494052771fc5bd0619742363b5e24e5ad72ab3111ec2e27925b8edc5f3" [[package]] name = "sec1" @@ -8169,7 +8097,7 @@ checksum = "a5831b979fd7b5439637af1752d535ff49f4860c0f341d1baeb6faf0f4242170" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.72", ] [[package]] @@ -8178,7 +8106,7 @@ version = "1.0.127" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8043c06d9f82bd7271361ed64f415fe5e12a77fdb52e573e7f06a516dea329ad" dependencies = [ - "indexmap 2.4.0", + "indexmap 2.2.6", "itoa", "memchr", "ryu", @@ -8197,9 +8125,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "0.6.7" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d" +checksum = "79e674e01f999af37c49f70a6ede167a8a60b2503e56c5599532a65baa5969a0" dependencies = [ "serde", ] @@ -8242,7 +8170,7 @@ dependencies = [ "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.4.0", + "indexmap 2.2.6", "serde", "serde_derive", "serde_json", @@ -8259,7 +8187,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.72", ] [[package]] @@ -8271,7 +8199,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.72", ] [[package]] @@ -8296,7 +8224,7 @@ checksum = "82fe9db325bcef1fbcde82e078a5cc4efdf787e96b3b9cf45b50b529f2083d67" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.72", ] [[package]] @@ -8307,7 +8235,7 @@ dependencies = [ "base64 0.22.1", "base64-serde", "bincode", - "clap 4.5.16", + "clap 4.5.9", "dirs", "hex", "raiko-lib", @@ -8378,9 +8306,9 @@ dependencies = [ [[package]] name = "sha3-asm" -version = "0.1.3" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57d79b758b7cb2085612b11a235055e485605a5103faccdd633f35bd7aee69dd" +checksum = "a9b57fd861253bff08bb1919e995f90ba8f4889de2726091c8876f3a4e823b40" dependencies = [ "cc", "cfg-if", @@ -8506,13 +8434,13 @@ dependencies = [ [[package]] name = "sp1-build" -version = "1.2.0-rc1" -source = "git+https://github.com/succinctlabs/sp1?branch=dev#e8efd0019c8be52c6c4cecfea6259ab90db4148a" +version = "1.2.0-rc2" +source = "git+https://github.com/succinctlabs/sp1?branch=dev#f128f55c4051f4e21bb3cfee9660db787838aeca" dependencies = [ "anyhow", "cargo_metadata 0.18.1", "chrono", - "clap 4.5.16", + "clap 4.5.9", "dirs", ] @@ -8525,8 +8453,8 @@ dependencies = [ [[package]] name = "sp1-core-executor" -version = "1.2.0-rc1" -source = "git+https://github.com/succinctlabs/sp1?branch=dev#e8efd0019c8be52c6c4cecfea6259ab90db4148a" +version = "1.2.0-rc2" +source = "git+https://github.com/succinctlabs/sp1?branch=dev#f128f55c4051f4e21bb3cfee9660db787838aeca" dependencies = [ "bincode", "bytemuck", @@ -8560,8 +8488,8 @@ dependencies = [ [[package]] name = "sp1-core-machine" -version = "1.2.0-rc1" -source = "git+https://github.com/succinctlabs/sp1?branch=dev#e8efd0019c8be52c6c4cecfea6259ab90db4148a" +version = "1.2.0-rc2" +source = "git+https://github.com/succinctlabs/sp1?branch=dev#f128f55c4051f4e21bb3cfee9660db787838aeca" dependencies = [ "anyhow", "arrayref", @@ -8623,30 +8551,10 @@ dependencies = [ "web-time", ] -[[package]] -name = "sp1-cuda" -version = "1.2.0-rc1" -source = "git+https://github.com/succinctlabs/sp1?branch=dev#e8efd0019c8be52c6c4cecfea6259ab90db4148a" -dependencies = [ - "bincode", - "ctrlc", - "prost", - "prost-types", - "serde", - "serde_json", - "sp1-core-machine", - "sp1-prover", - "sp1-stark", - "tokio", - "tracing", - "tracing-subscriber 0.3.18", - "twirp-rs", -] - [[package]] name = "sp1-curves" -version = "1.2.0-rc1" -source = "git+https://github.com/succinctlabs/sp1?branch=dev#e8efd0019c8be52c6c4cecfea6259ab90db4148a" +version = "1.2.0-rc2" +source = "git+https://github.com/succinctlabs/sp1?branch=dev#f128f55c4051f4e21bb3cfee9660db787838aeca" dependencies = [ "curve25519-dalek", "dashu", @@ -8665,8 +8573,8 @@ dependencies = [ [[package]] name = "sp1-derive" -version = "1.2.0-rc1" -source = "git+https://github.com/succinctlabs/sp1?branch=dev#e8efd0019c8be52c6c4cecfea6259ab90db4148a" +version = "1.2.0-rc2" +source = "git+https://github.com/succinctlabs/sp1?branch=dev#f128f55c4051f4e21bb3cfee9660db787838aeca" dependencies = [ "proc-macro2", "quote", @@ -8702,16 +8610,16 @@ dependencies = [ [[package]] name = "sp1-helper" -version = "1.2.0-rc1" -source = "git+https://github.com/succinctlabs/sp1?branch=dev#e8efd0019c8be52c6c4cecfea6259ab90db4148a" +version = "1.2.0-rc2" +source = "git+https://github.com/succinctlabs/sp1?branch=dev#f128f55c4051f4e21bb3cfee9660db787838aeca" dependencies = [ "sp1-build", ] [[package]] name = "sp1-primitives" -version = "1.2.0-rc1" -source = "git+https://github.com/succinctlabs/sp1?branch=dev#e8efd0019c8be52c6c4cecfea6259ab90db4148a" +version = "1.2.0-rc2" +source = "git+https://github.com/succinctlabs/sp1?branch=dev#f128f55c4051f4e21bb3cfee9660db787838aeca" dependencies = [ "itertools 0.13.0", "lazy_static", @@ -8723,12 +8631,12 @@ dependencies = [ [[package]] name = "sp1-prover" -version = "1.2.0-rc1" -source = "git+https://github.com/succinctlabs/sp1?branch=dev#e8efd0019c8be52c6c4cecfea6259ab90db4148a" +version = "1.2.0-rc2" +source = "git+https://github.com/succinctlabs/sp1?branch=dev#f128f55c4051f4e21bb3cfee9660db787838aeca" dependencies = [ "anyhow", "bincode", - "clap 4.5.16", + "clap 4.5.9", "dirs", "hex", "itertools 0.13.0", @@ -8762,8 +8670,8 @@ dependencies = [ [[package]] name = "sp1-recursion-circuit" -version = "1.2.0-rc1" -source = "git+https://github.com/succinctlabs/sp1?branch=dev#e8efd0019c8be52c6c4cecfea6259ab90db4148a" +version = "1.2.0-rc2" +source = "git+https://github.com/succinctlabs/sp1?branch=dev#f128f55c4051f4e21bb3cfee9660db787838aeca" dependencies = [ "bincode", "itertools 0.13.0", @@ -8786,8 +8694,8 @@ dependencies = [ [[package]] name = "sp1-recursion-compiler" -version = "1.2.0-rc1" -source = "git+https://github.com/succinctlabs/sp1?branch=dev#e8efd0019c8be52c6c4cecfea6259ab90db4148a" +version = "1.2.0-rc2" +source = "git+https://github.com/succinctlabs/sp1?branch=dev#f128f55c4051f4e21bb3cfee9660db787838aeca" dependencies = [ "backtrace", "itertools 0.13.0", @@ -8815,8 +8723,8 @@ dependencies = [ [[package]] name = "sp1-recursion-core" -version = "1.2.0-rc1" -source = "git+https://github.com/succinctlabs/sp1?branch=dev#e8efd0019c8be52c6c4cecfea6259ab90db4148a" +version = "1.2.0-rc2" +source = "git+https://github.com/succinctlabs/sp1?branch=dev#f128f55c4051f4e21bb3cfee9660db787838aeca" dependencies = [ "arrayref", "backtrace", @@ -8852,8 +8760,8 @@ dependencies = [ [[package]] name = "sp1-recursion-core-v2" -version = "1.2.0-rc1" -source = "git+https://github.com/succinctlabs/sp1?branch=dev#e8efd0019c8be52c6c4cecfea6259ab90db4148a" +version = "1.2.0-rc2" +source = "git+https://github.com/succinctlabs/sp1?branch=dev#f128f55c4051f4e21bb3cfee9660db787838aeca" dependencies = [ "arrayref", "backtrace", @@ -8892,8 +8800,8 @@ dependencies = [ [[package]] name = "sp1-recursion-derive" -version = "1.2.0-rc1" -source = "git+https://github.com/succinctlabs/sp1?branch=dev#e8efd0019c8be52c6c4cecfea6259ab90db4148a" +version = "1.2.0-rc2" +source = "git+https://github.com/succinctlabs/sp1?branch=dev#f128f55c4051f4e21bb3cfee9660db787838aeca" dependencies = [ "proc-macro2", "quote", @@ -8902,8 +8810,8 @@ dependencies = [ [[package]] name = "sp1-recursion-gnark-ffi" -version = "1.2.0-rc1" -source = "git+https://github.com/succinctlabs/sp1?branch=dev#e8efd0019c8be52c6c4cecfea6259ab90db4148a" +version = "1.2.0-rc2" +source = "git+https://github.com/succinctlabs/sp1?branch=dev#f128f55c4051f4e21bb3cfee9660db787838aeca" dependencies = [ "anyhow", "bincode", @@ -8928,8 +8836,8 @@ dependencies = [ [[package]] name = "sp1-recursion-program" -version = "1.2.0-rc1" -source = "git+https://github.com/succinctlabs/sp1?branch=dev#e8efd0019c8be52c6c4cecfea6259ab90db4148a" +version = "1.2.0-rc2" +source = "git+https://github.com/succinctlabs/sp1?branch=dev#f128f55c4051f4e21bb3cfee9660db787838aeca" dependencies = [ "itertools 0.13.0", "p3-air", @@ -8959,18 +8867,18 @@ dependencies = [ [[package]] name = "sp1-sdk" -version = "1.2.0-rc1" -source = "git+https://github.com/succinctlabs/sp1?branch=dev#e8efd0019c8be52c6c4cecfea6259ab90db4148a" +version = "1.2.0-rc2" +source = "git+https://github.com/succinctlabs/sp1?branch=dev#f128f55c4051f4e21bb3cfee9660db787838aeca" dependencies = [ "alloy-sol-types", "anyhow", "async-trait", - "axum", "bincode", "cfg-if", "dirs", "ethers", "futures", + "getrandom 0.2.15", "hashbrown 0.14.5", "hex", "indicatif", @@ -8982,14 +8890,13 @@ dependencies = [ "p3-fri", "p3-matrix", "prost", - "reqwest 0.12.7", + "reqwest 0.12.5", "reqwest-middleware", "serde", "serde_json", "sha2", "sp1-core-executor", "sp1-core-machine", - "sp1-cuda", "sp1-prover", "sp1-stark", "strum 0.26.3", @@ -9005,10 +8912,11 @@ dependencies = [ [[package]] name = "sp1-stark" -version = "1.2.0-rc1" -source = "git+https://github.com/succinctlabs/sp1?branch=dev#e8efd0019c8be52c6c4cecfea6259ab90db4148a" +version = "1.2.0-rc2" +source = "git+https://github.com/succinctlabs/sp1?branch=dev#f128f55c4051f4e21bb3cfee9660db787838aeca" dependencies = [ "arrayref", + "getrandom 0.2.15", "hashbrown 0.14.5", "itertools 0.13.0", "p3-air", @@ -9056,9 +8964,9 @@ dependencies = [ [[package]] name = "sppark" -version = "0.1.8" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c55f3833d30846a26110dccb1d5366314c2c52516a9173b74238c16b24b1a9f9" +checksum = "fb266b15daead53670d477d7e136b8fc92d46e31bb9007ac46d304df23689a4b" dependencies = [ "cc", "which 4.4.2", @@ -9072,15 +8980,15 @@ checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" [[package]] name = "stacker" -version = "0.1.16" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95a5daa25ea337c85ed954c0496e3bdd2c7308cc3b24cf7b50d04876654c579f" +checksum = "c886bd4480155fd3ef527d45e9ac8dd7118a898a46530b7b94c3e21866259fce" dependencies = [ "cc", "cfg-if", "libc", "psm", - "windows-sys 0.36.1", + "winapi", ] [[package]] @@ -9153,7 +9061,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.76", + "syn 2.0.72", ] [[package]] @@ -9166,7 +9074,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.76", + "syn 2.0.72", ] [[package]] @@ -9220,9 +9128,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.76" +version = "2.0.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578e081a14e0cefc3279b0472138c513f37b41a08d5a3cca9b6e4e8ceb6cd525" +checksum = "dc4b9b9bf2add8093d3f2c0204471e951b2285580335de42f9d2534f3ae7a8af" dependencies = [ "proc-macro2", "quote", @@ -9238,7 +9146,7 @@ dependencies = [ "paste", "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.72", ] [[package]] @@ -9252,9 +9160,6 @@ name = "sync_wrapper" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" -dependencies = [ - "futures-core", -] [[package]] name = "sysinfo" @@ -9279,18 +9184,7 @@ checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" dependencies = [ "bitflags 1.3.2", "core-foundation", - "system-configuration-sys 0.5.0", -] - -[[package]] -name = "system-configuration" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" -dependencies = [ - "bitflags 2.6.0", - "core-foundation", - "system-configuration-sys 0.6.0", + "system-configuration-sys", ] [[package]] @@ -9303,16 +9197,6 @@ dependencies = [ "libc", ] -[[package]] -name = "system-configuration-sys" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" -dependencies = [ - "core-foundation-sys", - "libc", -] - [[package]] name = "tap" version = "1.0.1" @@ -9321,15 +9205,14 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.12.0" +version = "3.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64" +checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" dependencies = [ "cfg-if", "fastrand", - "once_cell", "rustix", - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] @@ -9364,7 +9247,7 @@ checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.72", ] [[package]] @@ -9465,9 +9348,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.39.3" +version = "1.40.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9babc99b9923bfa4804bd74722ff02c0381021eafa4db9949217e3be8e84fff5" +checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" dependencies = [ "backtrace", "bytes", @@ -9489,7 +9372,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.72", ] [[package]] @@ -9518,7 +9401,7 @@ version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" dependencies = [ - "rustls 0.23.12", + "rustls 0.23.11", "rustls-pki-types", "tokio", ] @@ -9578,21 +9461,21 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.19" +version = "0.8.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" +checksum = "ac2caab0bf757388c6c0ae23b3293fdb463fee59434529014f85e3263b995c28" dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.20", + "toml_edit 0.22.16", ] [[package]] name = "toml_datetime" -version = "0.6.8" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" +checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf" dependencies = [ "serde", ] @@ -9603,7 +9486,7 @@ version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap 2.4.0", + "indexmap 2.2.6", "serde", "serde_spanned", "toml_datetime", @@ -9616,22 +9499,22 @@ version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" dependencies = [ - "indexmap 2.4.0", + "indexmap 2.2.6", "toml_datetime", "winnow 0.5.40", ] [[package]] name = "toml_edit" -version = "0.22.20" +version = "0.22.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d" +checksum = "278f3d518e152219c994ce877758516bca5e118eaed6996192a774fb9fbf0788" dependencies = [ - "indexmap 2.4.0", + "indexmap 2.2.6", "serde", "serde_spanned", "toml_datetime", - "winnow 0.6.18", + "winnow 0.6.15", ] [[package]] @@ -9688,15 +9571,15 @@ dependencies = [ [[package]] name = "tower-layer" -version = "0.3.3" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" +checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" [[package]] name = "tower-service" -version = "0.3.3" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" [[package]] name = "tracing" @@ -9730,7 +9613,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.72", ] [[package]] @@ -9790,9 +9673,9 @@ dependencies = [ [[package]] name = "tracing-logfmt" -version = "0.3.5" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b1f47d22deb79c3f59fcf2a1f00f60cbdc05462bf17d1cd356c1fefa3f444bd" +checksum = "22b8e455f6caa5212a102ec530bf86b8dc5a4c536299bffd84b238fed9119be7" dependencies = [ "time", "tracing", @@ -9880,7 +9763,7 @@ dependencies = [ "http-body-util", "hyper 1.4.1", "prost", - "reqwest 0.12.7", + "reqwest 0.12.5", "serde", "serde_json", "thiserror", @@ -9901,9 +9784,9 @@ dependencies = [ [[package]] name = "typeid" -version = "1.0.2" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e13db2e0ccd5e14a544e8a246ba2312cd25223f616442d7f2cb0e3db614236e" +checksum = "059d83cc991e7a42fc37bd50941885db0888e34209f8cfd9aab07ddec03bc9cf" [[package]] name = "typenum" @@ -9913,9 +9796,9 @@ checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "typetag" -version = "0.2.18" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52ba3b6e86ffe0054b2c44f2d86407388b933b16cb0a70eea3929420db1d9bbe" +checksum = "661d18414ec032a49ece2d56eee03636e43c4e8d577047ab334c0ba892e29aaf" dependencies = [ "erased-serde", "inventory", @@ -9926,13 +9809,13 @@ dependencies = [ [[package]] name = "typetag-impl" -version = "0.2.18" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70b20a22c42c8f1cd23ce5e34f165d4d37038f5b663ad20fb6adbdf029172483" +checksum = "ac73887f47b9312552aa90ef477927ff014d63d1920ca8037c6c1951eab64bb1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.72", ] [[package]] @@ -10003,9 +9886,9 @@ checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" [[package]] name = "unicode-xid" -version = "0.2.5" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "229730647fbc343e3a80e463c1db7f78f3855d3f3739bee0dda773c9a037c90a" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" [[package]] name = "universal-hash" @@ -10058,7 +9941,7 @@ version = "4.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c5afb1a60e207dca502682537fefcfd9921e71d0b83e9576060f09abc6efab23" dependencies = [ - "indexmap 2.4.0", + "indexmap 2.2.6", "serde", "serde_json", "utoipa-gen", @@ -10074,7 +9957,7 @@ dependencies = [ "proc-macro2", "quote", "regex", - "syn 2.0.76", + "syn 2.0.72", ] [[package]] @@ -10098,7 +9981,7 @@ dependencies = [ "axum", "mime_guess", "regex", - "reqwest 0.12.7", + "reqwest 0.12.5", "rust-embed", "serde", "serde_json", @@ -10171,9 +10054,9 @@ dependencies = [ [[package]] name = "version_check" -version = "0.9.5" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "wait-timeout" @@ -10217,35 +10100,34 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.93" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" +checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" dependencies = [ "cfg-if", - "once_cell", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.93" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" +checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.72", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.43" +version = "0.4.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e9300f63a621e96ed275155c108eb6f843b6a26d053f122ab69724559dc8ed" +checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" dependencies = [ "cfg-if", "js-sys", @@ -10255,9 +10137,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.93" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" +checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -10265,22 +10147,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.93" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" +checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.72", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.93" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" +checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" [[package]] name = "wasm-streams" @@ -10297,9 +10179,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.70" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26fdeaafd9bd129f65e7c031593c24d62186301e0c72c8978fa1678be7d532c0" +checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" dependencies = [ "js-sys", "wasm-bindgen", @@ -10344,9 +10226,9 @@ dependencies = [ [[package]] name = "which" -version = "6.0.3" +version = "6.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4ee928febd44d98f2f459a4a79bd4d928591333a494a10a868418ac1b39cf1f" +checksum = "8211e4f58a2b2805adfbefbc07bab82958fc91e3836339b1ab7ae32465dce0d7" dependencies = [ "either", "home", @@ -10372,11 +10254,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.9" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] @@ -10404,49 +10286,6 @@ dependencies = [ "windows-targets 0.52.6", ] -[[package]] -name = "windows-registry" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" -dependencies = [ - "windows-result", - "windows-strings", - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-result" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" -dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-strings" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" -dependencies = [ - "windows-result", - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-sys" -version = "0.36.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2" -dependencies = [ - "windows_aarch64_msvc 0.36.1", - "windows_i686_gnu 0.36.1", - "windows_i686_msvc 0.36.1", - "windows_x86_64_gnu 0.36.1", - "windows_x86_64_msvc 0.36.1", -] - [[package]] name = "windows-sys" version = "0.48.0" @@ -10465,15 +10304,6 @@ dependencies = [ "windows-targets 0.52.6", ] -[[package]] -name = "windows-sys" -version = "0.59.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" -dependencies = [ - "windows-targets 0.52.6", -] - [[package]] name = "windows-targets" version = "0.48.5" @@ -10517,12 +10347,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" -[[package]] -name = "windows_aarch64_msvc" -version = "0.36.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47" - [[package]] name = "windows_aarch64_msvc" version = "0.48.5" @@ -10535,12 +10359,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" -[[package]] -name = "windows_i686_gnu" -version = "0.36.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6" - [[package]] name = "windows_i686_gnu" version = "0.48.5" @@ -10559,12 +10377,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" -[[package]] -name = "windows_i686_msvc" -version = "0.36.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024" - [[package]] name = "windows_i686_msvc" version = "0.48.5" @@ -10577,12 +10389,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" -[[package]] -name = "windows_x86_64_gnu" -version = "0.36.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1" - [[package]] name = "windows_x86_64_gnu" version = "0.48.5" @@ -10607,12 +10413,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" -[[package]] -name = "windows_x86_64_msvc" -version = "0.36.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680" - [[package]] name = "windows_x86_64_msvc" version = "0.48.5" @@ -10636,9 +10436,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.6.18" +version = "0.6.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f" +checksum = "557404e450152cd6795bb558bca69e43c585055f4606e3bcae5894fc6dac9ba0" dependencies = [ "memchr", ] @@ -10653,6 +10453,16 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "winreg" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5" +dependencies = [ + "cfg-if", + "windows-sys 0.48.0", +] + [[package]] name = "winsafe" version = "0.0.19" @@ -10702,8 +10512,16 @@ version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ - "byteorder", - "zerocopy-derive", + "zerocopy-derive 0.7.35", +] + +[[package]] +name = "zerocopy" +version = "0.8.0-alpha.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db678a6ee512bd06adf35c35be471cae2f9c82a5aed2b5d15e03628c98bddd57" +dependencies = [ + "zerocopy-derive 0.8.0-alpha.6", ] [[package]] @@ -10714,7 +10532,18 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.72", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.0-alpha.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "201585ea96d37ee69f2ac769925ca57160cef31acb137c16f38b02b76f4c1e62" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", ] [[package]] @@ -10734,7 +10563,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.72", ] [[package]] @@ -10748,23 +10577,23 @@ dependencies = [ "crossbeam-utils", "displaydoc", "flate2", - "indexmap 2.4.0", - "num_enum 0.7.3", + "indexmap 2.2.6", + "num_enum 0.7.2", "thiserror", ] [[package]] name = "zip" -version = "2.2.0" +version = "2.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc5e4288ea4057ae23afc69a4472434a87a2495cafce6632fd1c4ec9f5cf3494" +checksum = "b895748a3ebcb69b9d38dcfdf21760859a4b0d0b0015277640c2ef4c69640e6f" dependencies = [ "arbitrary", "crc32fast", "crossbeam-utils", "displaydoc", "flate2", - "indexmap 2.4.0", + "indexmap 2.2.6", "memchr", "thiserror", "zopfli", @@ -10822,18 +10651,18 @@ dependencies = [ [[package]] name = "zstd-safe" -version = "7.2.1" +version = "7.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54a3ab4db68cea366acc5c897c7b4d4d1b8994a9cd6e6f841f8964566a419059" +checksum = "fa556e971e7b568dc775c136fc9de8c779b1c2fc3a63defaafadffdbd3181afa" dependencies = [ "zstd-sys", ] [[package]] name = "zstd-sys" -version = "2.0.13+zstd.1.5.6" +version = "2.0.12+zstd.1.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38ff0f21cfee8f97d94cef41359e0c89aa6113028ab0291aa8ca0038995a95aa" +checksum = "0a4e40c320c3cb459d9a9ff6de98cff88f4751ee9275d140e2be94a2b74e4c13" dependencies = [ "cc", "pkg-config", diff --git a/core/src/interfaces.rs b/core/src/interfaces.rs index 28f712bd3..3099565ed 100644 --- a/core/src/interfaces.rs +++ b/core/src/interfaces.rs @@ -247,6 +247,8 @@ impl ProofType { pub struct ProofRequest { /// The block number for the block to generate a proof for. pub block_number: u64, + /// The l1 block number of the l2 block be proposed. + pub l1_inclusion_block_number: u64, /// The network to generate the proof for. pub network: String, /// The L1 network to generate the proof for. @@ -273,6 +275,11 @@ pub struct ProofRequestOpt { /// The block number for the block to generate a proof for. pub block_number: Option, #[arg(long, require_equals = true)] + /// The block number for the l2 block to be proposed. + /// in hekla, it is the anchored l1 block height - 1 + /// in ontake, it is the anchored l1 block height - (1..64) + pub l1_inclusion_block_number: Option, + #[arg(long, require_equals = true)] /// The network to generate the proof for. pub network: Option, #[arg(long, require_equals = true)] @@ -352,6 +359,7 @@ impl TryFrom for ProofRequest { block_number: value.block_number.ok_or(RaikoError::InvalidRequestConfig( "Missing block number".to_string(), ))?, + l1_inclusion_block_number: value.l1_inclusion_block_number.unwrap_or_default(), network: value.network.ok_or(RaikoError::InvalidRequestConfig( "Missing network".to_string(), ))?, diff --git a/core/src/lib.rs b/core/src/lib.rs index 289ec88b0..cd026952b 100644 --- a/core/src/lib.rs +++ b/core/src/lib.rs @@ -1,26 +1,24 @@ -use crate::{ - interfaces::{ProofRequest, RaikoError, RaikoResult}, - preflight::preflight, - provider::BlockDataProvider, -}; +use std::{collections::HashMap, hint::black_box}; + use alloy_primitives::Address; use alloy_rpc_types::EIP1186AccountProofResponse; -use raiko_lib::protocol_instance::ProtocolInstance; -use raiko_lib::prover::Proof; use raiko_lib::{ builder::{create_mem_db, RethBlockBuilder}, - prover::ProofKey, -}; -use raiko_lib::{ consts::ChainSpec, input::{GuestInput, GuestOutput, TaikoProverData}, - prover::{IdStore, IdWrite}, + protocol_instance::ProtocolInstance, + prover::{IdStore, IdWrite, Proof, ProofKey}, }; use reth_primitives::Header; use serde_json::Value; -use std::{collections::HashMap, hint::black_box}; use tracing::{debug, error, info, warn}; +use crate::{ + interfaces::{ProofRequest, RaikoError, RaikoResult}, + preflight::{preflight, PreflightData}, + provider::BlockDataProvider, +}; + pub mod interfaces; pub mod preflight; pub mod prover; @@ -47,13 +45,10 @@ impl Raiko { } } - pub async fn generate_input( - &self, - provider: BDP, - ) -> RaikoResult { - preflight( - provider, + fn get_preflight_data(&self) -> PreflightData { + PreflightData::new( self.request.block_number, + self.request.l1_inclusion_block_number, self.l1_chain_spec.to_owned(), self.taiko_chain_spec.to_owned(), TaikoProverData { @@ -62,8 +57,18 @@ impl Raiko { }, self.request.blob_proof_type.clone(), ) - .await - .map_err(Into::::into) + } + + pub async fn generate_input( + &self, + provider: BDP, + ) -> RaikoResult { + //TODO: read fork from config + let preflight_data = self.get_preflight_data(); + info!("Generating input for block {}", self.request.block_number); + preflight(provider, preflight_data) + .await + .map_err(Into::::into) } pub fn get_output(&self, input: &GuestInput) -> RaikoResult { @@ -302,6 +307,36 @@ mod tests { .expect("proof generation failed"); } + #[ignore] + #[tokio::test(flavor = "multi_thread")] + async fn test_prove_block_taiko_dev() { + let proof_type = get_proof_type_from_env(); + let l1_network = "taiko_dev_l1".to_owned(); + let network = "taiko_dev".to_owned(); + // Give the CI an simpler block to test because it doesn't have enough memory. + // Unfortunately that also means that kzg is not getting fully verified by CI. + let block_number = 20; + let chain_specs = SupportedChainSpecs::merge_from_file( + "../host/config/chain_spec_list_devnet.json".into(), + ) + .unwrap(); + let taiko_chain_spec = chain_specs.get_chain_spec(&network).unwrap(); + let l1_chain_spec = chain_specs.get_chain_spec(&l1_network).unwrap(); + + let proof_request = ProofRequest { + block_number, + l1_inclusion_block_number: 80, + network, + graffiti: B256::ZERO, + prover: Address::ZERO, + l1_network, + proof_type, + blob_proof_type: BlobProofType::ProofOfEquivalence, + prover_args: test_proof_params(), + }; + prove_block(l1_chain_spec, taiko_chain_spec, proof_request).await; + } + #[tokio::test(flavor = "multi_thread")] async fn test_prove_block_taiko_a7() { let proof_type = get_proof_type_from_env(); @@ -319,6 +354,7 @@ mod tests { let proof_request = ProofRequest { block_number, + l1_inclusion_block_number: 0, network, graffiti: B256::ZERO, prover: Address::ZERO, @@ -356,6 +392,7 @@ mod tests { ); let proof_request = ProofRequest { block_number, + l1_inclusion_block_number: 0, network, graffiti: B256::ZERO, prover: Address::ZERO, @@ -388,6 +425,7 @@ mod tests { ); let proof_request = ProofRequest { block_number, + l1_inclusion_block_number: 0, network, graffiti: B256::ZERO, prover: Address::ZERO, diff --git a/core/src/preflight.rs b/core/src/preflight.rs deleted file mode 100644 index d9aad0bfb..000000000 --- a/core/src/preflight.rs +++ /dev/null @@ -1,609 +0,0 @@ -use crate::{ - interfaces::{RaikoError, RaikoResult}, - provider::{db::ProviderDb, rpc::RpcBlockDataProvider, BlockDataProvider}, - require, -}; -pub use alloy_primitives::*; -use alloy_provider::{Provider, ReqwestProvider}; -use alloy_rpc_types::{Filter, Transaction as AlloyRpcTransaction}; -use alloy_sol_types::{SolCall, SolEvent}; -use anyhow::{anyhow, bail, ensure, Result}; -use kzg_traits::{ - eip_4844::{blob_to_kzg_commitment_rust, Blob}, - Fr, G1, -}; -use raiko_lib::{ - builder::{OptimisticDatabase, RethBlockBuilder}, - clear_line, - consts::ChainSpec, - inplace_print, - input::{ - proposeBlockCall, BlobProofType, BlockProposed, GuestInput, TaikoGuestInput, - TaikoProverData, - }, - primitives::{ - eip4844::{self, commitment_to_version_hash, KZG_SETTINGS}, - mpt::proofs_to_tries, - }, - Measurement, -}; -use reth_evm_ethereum::taiko::decode_anchor; -use reth_primitives::Block; -use serde::{Deserialize, Serialize}; -use std::collections::HashSet; -use tracing::{debug, error, info, warn}; - -pub async fn preflight( - provider: BDP, - block_number: u64, - l1_chain_spec: ChainSpec, - taiko_chain_spec: ChainSpec, - prover_data: TaikoProverData, - blob_proof_type: BlobProofType, -) -> RaikoResult { - let measurement = Measurement::start("Fetching block data...", false); - - // Get the block and the parent block - let blocks = provider - .get_blocks(&[(block_number, true), (block_number - 1, false)]) - .await?; - let mut blocks = blocks.iter(); - let Some(block) = blocks.next() else { - return Err(RaikoError::Preflight( - "No block data for the requested block".to_owned(), - )); - }; - let Some(parent_block) = blocks.next() else { - return Err(RaikoError::Preflight( - "No parent block data for the requested block".to_owned(), - )); - }; - - info!( - "Processing block {:?} with hash: {:?}", - block.header.number, - block.header.hash.unwrap(), - ); - debug!("block.parent_hash: {:?}", block.header.parent_hash); - debug!("block gas used: {:?}", block.header.gas_used); - debug!("block transactions: {:?}", block.transactions.len()); - - // Convert the alloy block to a reth block - let block = Block::try_from(block.clone()) - .map_err(|e| RaikoError::Conversion(format!("Failed converting to reth block: {e}")))?; - - let taiko_guest_input = if taiko_chain_spec.is_taiko() { - prepare_taiko_chain_input( - &l1_chain_spec, - &taiko_chain_spec, - block_number, - &block, - prover_data, - blob_proof_type, - ) - .await? - } else { - // For Ethereum blocks we just convert the block transactions in a tx_list - // so that we don't have to supports separate paths. - TaikoGuestInput::try_from(block.body.clone()).map_err(|e| RaikoError::Conversion(e.0))? - }; - measurement.stop(); - - // Create the guest input - let input = GuestInput::from(( - block.clone(), - parent_block - .header - .clone() - .try_into() - .expect("Couldn't transform alloy header to reth header"), - taiko_chain_spec.clone(), - taiko_guest_input, - )); - - // Create the block builder, run the transactions and extract the DB - let Some(parent_block_number) = parent_block.header.number else { - return Err(RaikoError::Preflight( - "No parent block number for the requested block".to_owned(), - )); - }; - let provider_db = ProviderDb::new(provider, taiko_chain_spec, parent_block_number).await?; - - // Now re-execute the transactions in the block to collect all required data - let mut builder = RethBlockBuilder::new(&input, provider_db); - - // Optimize data gathering by executing the transactions multiple times so data can be requested in batches - let max_iterations = 100; - for num_iterations in 0.. { - inplace_print(&format!("Execution iteration {num_iterations}...")); - - let Some(db) = builder.db.as_mut() else { - return Err(RaikoError::Preflight("No db in builder".to_owned())); - }; - db.optimistic = num_iterations + 1 < max_iterations; - - builder - .execute_transactions(num_iterations + 1 < max_iterations) - .map_err(|_| { - RaikoError::Preflight("Executing transactions in builder failed".to_owned()) - })?; - - let Some(db) = builder.db.as_mut() else { - return Err(RaikoError::Preflight("No db in builder".to_owned())); - }; - if db.fetch_data().await { - clear_line(); - info!("State data fetched in {num_iterations} iterations"); - break; - } - } - - let Some(db) = builder.db.as_mut() else { - return Err(RaikoError::Preflight("No db in builder".to_owned())); - }; - - // Gather inclusion proofs for the initial and final state - let measurement = Measurement::start("Fetching storage proofs...", true); - let (parent_proofs, proofs, num_storage_proofs) = db.get_proofs().await?; - measurement.stop_with_count(&format!( - "[{} Account/{num_storage_proofs} Storage]", - parent_proofs.len() + proofs.len(), - )); - - // Construct the state trie and storage from the storage proofs. - let measurement = Measurement::start("Constructing MPT...", true); - let (parent_state_trie, parent_storage) = - proofs_to_tries(input.parent_header.state_root, parent_proofs, proofs)?; - measurement.stop(); - - // Gather proofs for block history - let measurement = Measurement::start("Fetching historical block headers...", true); - let ancestor_headers = db.get_ancestor_headers().await?; - measurement.stop(); - - // Get the contracts from the initial db. - let measurement = Measurement::start("Fetching contract code...", true); - let contracts = - HashSet::::from_iter(db.initial_db.accounts.values().filter_map(|account| { - account - .info - .code - .clone() - .map(|code| Bytes(code.bytecode().0.clone())) - })) - .into_iter() - .collect::>(); - measurement.stop(); - - // Fill in remaining generated guest input data - let input = GuestInput { - parent_state_trie, - parent_storage, - contracts, - ancestor_headers, - ..input - }; - - Ok(input) -} - -/// Prepare the input for a Taiko chain -async fn prepare_taiko_chain_input( - l1_chain_spec: &ChainSpec, - taiko_chain_spec: &ChainSpec, - block_number: u64, - block: &Block, - prover_data: TaikoProverData, - blob_proof_type: BlobProofType, -) -> RaikoResult { - let provider_l1 = RpcBlockDataProvider::new(&l1_chain_spec.rpc, block_number)?; - - // Decode the anchor tx to find out which L1 blocks we need to fetch - let anchor_tx = &block.body[0].clone(); - let anchor_call = decode_anchor(anchor_tx.input())?; - // The L1 blocks we need - let l1_state_block_number = anchor_call.l1BlockId; - let l1_inclusion_block_number = l1_state_block_number + 1; - - debug!( - "anchor L1 block id: {:?}\nanchor L1 state root: {:?}", - anchor_call.l1BlockId, anchor_call.l1StateRoot - ); - - // Get the L1 block in which the L2 block was included so we can fetch the DA data. - // Also get the L1 state block header so that we can prove the L1 state root. - let l1_blocks = provider_l1 - .get_blocks(&[ - (l1_inclusion_block_number, false), - (l1_state_block_number, false), - ]) - .await?; - let (l1_inclusion_block, l1_state_block) = (&l1_blocks[0], &l1_blocks[1]); - - let l1_state_block_hash = l1_state_block.header.hash.ok_or_else(|| { - RaikoError::Preflight("No L1 state block hash for the requested block".to_owned()) - })?; - - debug!("l1_state_root_block hash: {l1_state_block_hash:?}"); - - let l1_inclusion_block_hash = l1_inclusion_block.header.hash.ok_or_else(|| { - RaikoError::Preflight("No L1 inclusion block hash for the requested block".to_owned()) - })?; - - // Get the block proposal data - let (proposal_tx, proposal_event) = get_block_proposed_event( - provider_l1.provider(), - taiko_chain_spec.clone(), - l1_inclusion_block_hash, - block_number, - ) - .await?; - - // Fetch the tx data from either calldata or blobdata - let (tx_data, blob_commitment, blob_proof) = if proposal_event.meta.blobUsed { - use eip4844::{ - calc_kzg_proof_commitment, calc_kzg_proof_with_point, commitment_to_version_hash, - proof_of_equivalence, - }; - use kzg::kzg_types::ZFr; - debug!("blob active"); - // Get the blob hashes attached to the propose tx - let blob_hashes = proposal_tx.blob_versioned_hashes.unwrap_or_default(); - require(!blob_hashes.is_empty(), "blob hashes are empty")?; - // Currently the protocol enforces the first blob hash to be used - let blob_hash = blob_hashes[0]; - // Get the blob data for this block - let slot_id = block_time_to_block_slot( - l1_inclusion_block.header.timestamp, - l1_chain_spec.genesis_time, - l1_chain_spec.seconds_per_slot, - )?; - let beacon_rpc_url: String = l1_chain_spec.beacon_rpc.clone().ok_or_else(|| { - RaikoError::Preflight("Beacon RPC URL is required for Taiko chains".to_owned()) - })?; - let blob = get_blob_data(&beacon_rpc_url, slot_id, blob_hash).await?; - let commitment = calc_kzg_proof_commitment(&blob).map_err(|e| anyhow!(e))?; - let blob_proof = match blob_proof_type { - BlobProofType::KzgVersionedHash => None, - BlobProofType::ProofOfEquivalence => { - let (x, y) = proof_of_equivalence(&blob, &commitment_to_version_hash(&commitment)) - .map_err(|e| anyhow!(e))?; - - debug!("x {:?} y {:?}", x, y); - debug!( - "calc_kzg_proof_with_point {:?}", - calc_kzg_proof_with_point(&blob, ZFr::from_bytes(&x).unwrap()).unwrap() - ); - - Some( - calc_kzg_proof_with_point(&blob, ZFr::from_bytes(&x).unwrap()) - .map(|g1| g1.to_bytes().to_vec()) - .map_err(|e| anyhow!(e))?, - ) - } - }; - - (blob, Some(commitment.to_vec()), blob_proof) - } else { - // Get the tx list data directly from the propose transaction data - let proposal_call = proposeBlockCall::abi_decode(&proposal_tx.input, false) - .map_err(|_| RaikoError::Preflight("Could not decode proposeBlockCall".to_owned()))?; - (proposal_call.txList.as_ref().to_owned(), None, None) - }; - - // Create the input struct without the block data set - Ok(TaikoGuestInput { - l1_header: l1_state_block.header.clone().try_into().unwrap(), - tx_data, - anchor_tx: Some(anchor_tx.clone()), - blob_commitment, - blob_proof, - block_proposed: proposal_event, - prover_data, - blob_proof_type, - }) -} - -// block_time_to_block_slot returns the slots of the given timestamp. -fn block_time_to_block_slot( - block_time: u64, - genesis_time: u64, - block_per_slot: u64, -) -> RaikoResult { - if genesis_time == 0 { - Err(RaikoError::Anyhow(anyhow!( - "genesis time is 0, please check chain spec" - ))) - } else if block_time < genesis_time { - Err(RaikoError::Anyhow(anyhow!( - "provided block_time precedes genesis time", - ))) - } else { - Ok((block_time - genesis_time) / block_per_slot) - } -} - -fn blob_to_bytes(blob_str: &str) -> Vec { - hex::decode(blob_str.to_lowercase().trim_start_matches("0x")).unwrap_or_default() -} - -fn calc_blob_versioned_hash(blob_str: &str) -> [u8; 32] { - let blob_bytes: Vec = hex::decode(blob_str.to_lowercase().trim_start_matches("0x")) - .expect("Could not decode blob"); - let blob = Blob::from_bytes(&blob_bytes).expect("Could not create blob"); - let commitment = blob_to_kzg_commitment_rust( - &eip4844::deserialize_blob_rust(&blob).expect("Could not deserialize blob"), - &KZG_SETTINGS.clone(), - ) - .expect("Could not create kzg commitment from blob"); - let version_hash: [u8; 32] = commitment_to_version_hash(&commitment.to_bytes()).0; - version_hash -} - -async fn get_blob_data( - beacon_rpc_url: &str, - block_id: u64, - blob_hash: FixedBytes<32>, -) -> Result> { - if beacon_rpc_url.contains("blobscan.com") { - get_blob_data_blobscan(beacon_rpc_url, block_id, blob_hash).await - } else { - get_blob_data_beacon(beacon_rpc_url, block_id, blob_hash).await - } -} - -async fn get_blob_data_beacon( - beacon_rpc_url: &str, - block_id: u64, - blob_hash: FixedBytes<32>, -) -> Result> { - // Blob data from the beacon chain - // type Sidecar struct { - // Index string `json:"index"` - // Blob string `json:"blob"` - // SignedBeaconBlockHeader *SignedBeaconBlockHeader `json:"signed_block_header"` - // KzgCommitment string `json:"kzg_commitment"` - // KzgProof string `json:"kzg_proof"` - // CommitmentInclusionProof []string - // `json:"kzg_commitment_inclusion_proof"` } - #[derive(Clone, Debug, Deserialize, Serialize)] - struct GetBlobData { - pub index: String, - pub blob: String, - // pub signed_block_header: SignedBeaconBlockHeader, // ignore for now - pub kzg_commitment: String, - pub kzg_proof: String, - //pub kzg_commitment_inclusion_proof: Vec, - } - - #[derive(Clone, Debug, Deserialize, Serialize)] - struct GetBlobsResponse { - pub data: Vec, - } - - let url = format!( - "{}/eth/v1/beacon/blob_sidecars/{block_id}", - beacon_rpc_url.trim_end_matches('/'), - ); - info!("Retrieve blob from {url}."); - let response = reqwest::get(url.clone()).await?; - if response.status().is_success() { - let blobs: GetBlobsResponse = response.json().await?; - ensure!(!blobs.data.is_empty(), "blob data not available anymore"); - // Get the blob data for the blob storing the tx list - let tx_blob = blobs - .data - .iter() - .find(|blob| { - // calculate from plain blob - blob_hash == calc_blob_versioned_hash(&blob.blob) - }) - .cloned(); - ensure!(tx_blob.is_some()); - Ok(blob_to_bytes(&tx_blob.unwrap().blob)) - } else { - warn!( - "Request {url} failed with status code: {}", - response.status() - ); - Err(anyhow::anyhow!( - "Request failed with status code: {}", - response.status() - )) - } -} - -async fn get_blob_data_blobscan( - beacon_rpc_url: &str, - _block_id: u64, - blob_hash: FixedBytes<32>, -) -> Result> { - // https://api.blobscan.com/#/ - #[derive(Clone, Debug, Deserialize, Serialize)] - struct BlobScanData { - pub commitment: String, - pub data: String, - } - - let url = format!("{}/blobs/{blob_hash}", beacon_rpc_url.trim_end_matches('/'),); - let response = reqwest::get(url.clone()).await?; - if response.status().is_success() { - let blob: BlobScanData = response.json().await?; - Ok(blob_to_bytes(&blob.data)) - } else { - error!( - "Request {url} failed with status code: {}", - response.status() - ); - Err(anyhow::anyhow!( - "Request failed with status code: {}", - response.status() - )) - } -} - -async fn get_block_proposed_event( - provider: &ReqwestProvider, - chain_spec: ChainSpec, - block_hash: B256, - l2_block_number: u64, -) -> Result<(AlloyRpcTransaction, BlockProposed)> { - // Get the address that emitted the event - let Some(l1_address) = chain_spec.l1_contract else { - bail!("No L1 contract address in the chain spec"); - }; - - // Get the event signature (value can differ between chains) - let event_signature = BlockProposed::SIGNATURE_HASH; - // Setup the filter to get the relevant events - let filter = Filter::new() - .address(l1_address) - .at_block_hash(block_hash) - .event_signature(event_signature); - // Now fetch the events - let logs = provider.get_logs(&filter).await?; - - // Run over the logs returned to find the matching event for the specified L2 block number - // (there can be multiple blocks proposed in the same block and even same tx) - for log in logs { - let Some(log_struct) = Log::new( - log.address(), - log.topics().to_vec(), - log.data().data.clone(), - ) else { - bail!("Could not create log") - }; - let event = BlockProposed::decode_log(&log_struct, false) - .map_err(|_| RaikoError::Anyhow(anyhow!("Could not decode log")))?; - if event.blockId == raiko_lib::primitives::U256::from(l2_block_number) { - let Some(log_tx_hash) = log.transaction_hash else { - bail!("No transaction hash in the log") - }; - let tx = provider - .get_transaction_by_hash(log_tx_hash) - .await - .expect("couldn't query the propose tx") - .expect("Could not find the propose tx"); - return Ok((tx, event.data)); - } - } - bail!("No BlockProposed event found for block {l2_block_number}"); -} - -#[cfg(test)] -mod test { - use ethers_core::types::Transaction; - use raiko_lib::{ - consts::{Network, SupportedChainSpecs}, - utils::decode_transactions, - }; - - use super::*; - - #[test] - fn test_new_blob_decode() { - let valid_blob_str = "\ - 01000004b0f904adb8b502f8b283028c59188459682f008459682f028286b394\ - 006700100000000000000000000000000001009980b844a9059cbb0000000000\ - 0000000000000001670010000000000000000000000000000100990000000000\ - 000000000000000000000000000000000000000000000000000001c080a0af40\ - 093afa19e4b7256a209c71a902d33985c5655e580d5fbf36815e290b623177a0\ - 19d4b4ccaa5497a47845016680c128b63e74e9d6a9756ebdeb2f78a65e0fa120\ - 0001f802f901f483028c592e8459682f008459682f02832625a0941670010000\ - 0b000000000000000000000000000280b90184fa233d0c000000000000000000\ - 0000000000000000000000000000000000000000000000200000000000000000\ - 000000000000000000000000000000000000000000007e7e0000000000000000\ - 0000000014dc79964da2c08b23698b3d3cc7ca32193d99550000000000000000\ - 0000000014dc79964da2c08b23698b3d3cc7ca32193d99550000000000000000\ - 0000000000016700100000000000000000000000000001009900000000000000\ - 0000000000000000000000000000000000000000000000000100000000000000\ - 000000000000000000000000000000000000000000002625a000000000000000\ - 0000000000000000000000000000000000000000000000000000000000000000\ - 000000000000976ea74026e726554db657fa54763abd0c3a0aa9000000000000\ - 0000000000000000000000000000000000000000000000000120000000000000\ - 220000000000000000000000000000000000000000000000001243726f6e4a6f\ - 102053656e64546f6b656e730000000000000000000000000000c080a0a99edd\ - 2b13d5436cb0fe71b2ea4e69c2292fdc682ae54fe702cc36d6634dd0ba85a057\ - 119f9297ca5ebd5402bd886405fe3aa8f8182438a9e56c1ef2a1ec0ae4a0acb9\ - 00f802f901f483028c592f8459682f008459682f02832625a094167001000000\ - 000000000000000000000000000280b90184fa233d0c00000000000000000000\ - 0000000000000000000000000000000000000000000020000000000000000000\ - 0000000000000000000000000000000000000000007e7e000000000000000000\ - 00000014dc79964da2c08b23698b3d3cc7ca32193d9955000000000000000000\ - 00000014dc79964da2c08b23698b3d3cc7ca32193d9955000000000000000000\ - 0000000001670010000000000000000000000000000100990000000000000000\ - 0000000000000000000000000000000000000000000000010000000000000000\ - 0000000000000000000000000000000000000000002625a00000000000000000\ - 0000000000000000000000000000000000000000000000000000000000000000\ - 0000000000976ea74026e726554db657fa54763abd0c3a0aa900000000000000\ - 0000000000000000000000000000000000000000000000012000000000000000\ - 2000000000000000000000000000000000000000000000001243726f6e4a6f62\ - 0053656e64546f6b656e730000000000000000000000000000c080a08f0a9757\ - 35d78526f1339c69c2ed02df7a6d7cded10c74fb57398c11c1420526c2a0047f\ - 003054d3d75d33120020872b6d5e0a4a05e47c50179bb9a8b866b7fb71b30000\ - 0000000000000000000000000000000000000000000000000000000000000000\ - 0000000000000000000000000000000000000000000000000000000000000000\ - 0000000000000000000000000000000000000000000000000000000000000000\ - 0000000000000000000000000000000000000000000000000000000000000000\ - 0000000000000000000000000000000000000000000000000000000000000000\ - 00000000000000000000000000000000"; - let blob_str = format!("{:0<262144}", valid_blob_str); - let dec_blob = blob_to_bytes(&blob_str); - println!("dec blob tx len: {:?}", dec_blob.len()); - let txs = decode_transactions(&dec_blob); - println!("dec blob tx: {txs:?}"); - } - - #[ignore] - #[test] - fn test_slot_block_num_mapping() { - let chain_spec = SupportedChainSpecs::default() - .get_chain_spec(&Network::TaikoA7.to_string()) - .unwrap(); - let expected_slot = 1000u64; - let second_per_slot = 12u64; - let block_time = chain_spec.genesis_time + expected_slot * second_per_slot; - let block_num = - block_time_to_block_slot(block_time, chain_spec.genesis_time, second_per_slot) - .expect("block time to slot failed"); - assert_eq!(block_num, expected_slot); - - assert!(block_time_to_block_slot( - chain_spec.genesis_time - 10, - chain_spec.genesis_time, - second_per_slot - ) - .is_err()); - } - - #[ignore] - #[test] - fn json_to_ethers_blob_tx() { - let response = "{ - \"blockHash\":\"0xa61eea0256aa361dfd436be11b0e276470413fbbc34b3642fbbf3b5d8d72f612\", - \"blockNumber\":\"0x4\", - \"from\":\"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266\", - \"gas\":\"0xf4240\", - \"gasPrice\":\"0x5e92e74e\", - \"maxFeePerGas\":\"0x8b772ea6\", - \"maxPriorityFeePerGas\":\"0x3b9aca00\", - \"maxFeePerBlobGas\":\"0x2\", - \"hash\":\"0xdb3b11250a2332cc4944fa8022836bd32da43c34d4f2e9e1b246cfdbc5b4c60e\", - \"input\":\"0x11762da2\", - \"nonce\":\"0x1\", - \"to\":\"0x5fbdb2315678afecb367f032d93f642f64180aa3\", - \"transactionIndex\":\"0x0\", - \"value\":\"0x0\", - \"type\":\"0x3\", - \"accessList\":[], - \"chainId\":\"0x7e7e\", - \"blobVersionedHashes\":[\"0x012d46373b7d1f53793cd6872e40e801f9af6860ecbdbaa2e28df25937618c6f\",\"0x0126d296b606f85b775b12b8b4abeb3bdb88f5a50502754d598537ae9b7fb947\"], - \"v\":\"0x0\", - \"r\":\"0xaba289efba8ef610a5b3b70b72a42fe1916640f64d7112ec0b89087bbc8fff5f\", - \"s\":\"0x1de067d69b79d28d0a3bd179e332c85b93cedbd299d9e205398c073a59633dcf\", - \"yParity\":\"0x0\" - }"; - let tx: Transaction = serde_json::from_str(response).unwrap(); - println!("tx: {tx:?}"); - } -} diff --git a/core/src/preflight/mod.rs b/core/src/preflight/mod.rs new file mode 100644 index 000000000..a8279f310 --- /dev/null +++ b/core/src/preflight/mod.rs @@ -0,0 +1,271 @@ +use std::collections::HashSet; + +use alloy_primitives::Bytes; +use raiko_lib::{ + builder::RethBlockBuilder, + consts::ChainSpec, + input::{BlobProofType, GuestInput, TaikoGuestInput, TaikoProverData}, + primitives::mpt::proofs_to_tries, + Measurement, +}; + +use crate::{ + interfaces::{RaikoError, RaikoResult}, + provider::{db::ProviderDb, BlockDataProvider}, +}; + +use util::{execute_txs, get_block_and_parent_data, prepare_taiko_chain_input}; + +mod util; + +pub struct PreflightData { + pub block_number: u64, + pub l1_chain_spec: ChainSpec, + pub l1_inclusion_block_number: u64, + pub taiko_chain_spec: ChainSpec, + pub prover_data: TaikoProverData, + pub blob_proof_type: BlobProofType, +} + +impl PreflightData { + pub fn new( + block_number: u64, + l1_inclusion_block_number: u64, + l1_chain_spec: ChainSpec, + taiko_chain_spec: ChainSpec, + prover_data: TaikoProverData, + blob_proof_type: BlobProofType, + ) -> Self { + Self { + block_number, + l1_chain_spec, + l1_inclusion_block_number, + taiko_chain_spec, + prover_data, + blob_proof_type, + } + } +} + +pub async fn preflight( + provider: BDP, + PreflightData { + block_number, + l1_chain_spec, + taiko_chain_spec, + prover_data, + blob_proof_type, + l1_inclusion_block_number, + }: PreflightData, +) -> RaikoResult { + let measurement = Measurement::start("Fetching block data...", false); + + let (block, parent_block) = get_block_and_parent_data(&provider, block_number).await?; + + let taiko_guest_input = if taiko_chain_spec.is_taiko() { + prepare_taiko_chain_input( + &l1_chain_spec, + &taiko_chain_spec, + block_number, + (l1_inclusion_block_number != 0).then_some(l1_inclusion_block_number), + &block, + prover_data, + blob_proof_type, + ) + .await? + } else { + // For Ethereum blocks we just convert the block transactions in a tx_list + // so that we don't have to supports separate paths. + TaikoGuestInput::try_from(block.body.clone()).map_err(|e| RaikoError::Conversion(e.0))? + }; + measurement.stop(); + + let parent_header: reth_primitives::Header = + parent_block.header.clone().try_into().map_err(|e| { + RaikoError::Conversion(format!("Failed converting to reth header: {e}")) + })?; + let parent_block_number = parent_header.number; + + // Create the guest input + let input = GuestInput::from(( + block.clone(), + parent_header, + taiko_chain_spec.clone(), + taiko_guest_input, + )); + + // Create the block builder, run the transactions and extract the DB + let provider_db = ProviderDb::new(provider, taiko_chain_spec, parent_block_number).await?; + + // Now re-execute the transactions in the block to collect all required data + let mut builder = RethBlockBuilder::new(&input, provider_db); + + // Optimize data gathering by executing the transactions multiple times so data can be requested in batches + execute_txs(&mut builder).await?; + + let Some(db) = builder.db.as_mut() else { + return Err(RaikoError::Preflight("No db in builder".to_owned())); + }; + + // Gather inclusion proofs for the initial and final state + let measurement = Measurement::start("Fetching storage proofs...", true); + let (parent_proofs, proofs, num_storage_proofs) = db.get_proofs().await?; + measurement.stop_with_count(&format!( + "[{} Account/{num_storage_proofs} Storage]", + parent_proofs.len() + proofs.len(), + )); + + // Construct the state trie and storage from the storage proofs. + let measurement = Measurement::start("Constructing MPT...", true); + let (parent_state_trie, parent_storage) = + proofs_to_tries(input.parent_header.state_root, parent_proofs, proofs)?; + measurement.stop(); + + // Gather proofs for block history + let measurement = Measurement::start("Fetching historical block headers...", true); + let ancestor_headers = db.get_ancestor_headers().await?; + measurement.stop(); + + // Get the contracts from the initial db. + let measurement = Measurement::start("Fetching contract code...", true); + let contracts = + HashSet::::from_iter(db.initial_db.accounts.values().filter_map(|account| { + account + .info + .code + .clone() + .map(|code| Bytes(code.bytecode().0.clone())) + })) + .into_iter() + .collect::>(); + measurement.stop(); + + // Fill in remaining generated guest input data + let input = GuestInput { + parent_state_trie, + parent_storage, + contracts, + ancestor_headers, + ..input + }; + + Ok(input) +} + +#[cfg(test)] +mod test { + use ethers_core::types::Transaction; + use raiko_lib::{ + consts::{Network, SupportedChainSpecs}, + utils::decode_transactions, + }; + + use crate::preflight::util::{blob_to_bytes, block_time_to_block_slot}; + + #[test] + fn test_new_blob_decode() { + let valid_blob_str = "\ + 01000004b0f904adb8b502f8b283028c59188459682f008459682f028286b394\ + 006700100000000000000000000000000001009980b844a9059cbb0000000000\ + 0000000000000001670010000000000000000000000000000100990000000000\ + 000000000000000000000000000000000000000000000000000001c080a0af40\ + 093afa19e4b7256a209c71a902d33985c5655e580d5fbf36815e290b623177a0\ + 19d4b4ccaa5497a47845016680c128b63e74e9d6a9756ebdeb2f78a65e0fa120\ + 0001f802f901f483028c592e8459682f008459682f02832625a0941670010000\ + 0b000000000000000000000000000280b90184fa233d0c000000000000000000\ + 0000000000000000000000000000000000000000000000200000000000000000\ + 000000000000000000000000000000000000000000007e7e0000000000000000\ + 0000000014dc79964da2c08b23698b3d3cc7ca32193d99550000000000000000\ + 0000000014dc79964da2c08b23698b3d3cc7ca32193d99550000000000000000\ + 0000000000016700100000000000000000000000000001009900000000000000\ + 0000000000000000000000000000000000000000000000000100000000000000\ + 000000000000000000000000000000000000000000002625a000000000000000\ + 0000000000000000000000000000000000000000000000000000000000000000\ + 000000000000976ea74026e726554db657fa54763abd0c3a0aa9000000000000\ + 0000000000000000000000000000000000000000000000000120000000000000\ + 220000000000000000000000000000000000000000000000001243726f6e4a6f\ + 102053656e64546f6b656e730000000000000000000000000000c080a0a99edd\ + 2b13d5436cb0fe71b2ea4e69c2292fdc682ae54fe702cc36d6634dd0ba85a057\ + 119f9297ca5ebd5402bd886405fe3aa8f8182438a9e56c1ef2a1ec0ae4a0acb9\ + 00f802f901f483028c592f8459682f008459682f02832625a094167001000000\ + 000000000000000000000000000280b90184fa233d0c00000000000000000000\ + 0000000000000000000000000000000000000000000020000000000000000000\ + 0000000000000000000000000000000000000000007e7e000000000000000000\ + 00000014dc79964da2c08b23698b3d3cc7ca32193d9955000000000000000000\ + 00000014dc79964da2c08b23698b3d3cc7ca32193d9955000000000000000000\ + 0000000001670010000000000000000000000000000100990000000000000000\ + 0000000000000000000000000000000000000000000000010000000000000000\ + 0000000000000000000000000000000000000000002625a00000000000000000\ + 0000000000000000000000000000000000000000000000000000000000000000\ + 0000000000976ea74026e726554db657fa54763abd0c3a0aa900000000000000\ + 0000000000000000000000000000000000000000000000012000000000000000\ + 2000000000000000000000000000000000000000000000001243726f6e4a6f62\ + 0053656e64546f6b656e730000000000000000000000000000c080a08f0a9757\ + 35d78526f1339c69c2ed02df7a6d7cded10c74fb57398c11c1420526c2a0047f\ + 003054d3d75d33120020872b6d5e0a4a05e47c50179bb9a8b866b7fb71b30000\ + 0000000000000000000000000000000000000000000000000000000000000000\ + 0000000000000000000000000000000000000000000000000000000000000000\ + 0000000000000000000000000000000000000000000000000000000000000000\ + 0000000000000000000000000000000000000000000000000000000000000000\ + 0000000000000000000000000000000000000000000000000000000000000000\ + 00000000000000000000000000000000"; + let blob_str = format!("{:0<262144}", valid_blob_str); + let dec_blob = blob_to_bytes(&blob_str); + println!("dec blob tx len: {:?}", dec_blob.len()); + let txs = decode_transactions(&dec_blob); + println!("dec blob tx: {txs:?}"); + } + + #[ignore] + #[test] + fn test_slot_block_num_mapping() { + let chain_spec = SupportedChainSpecs::default() + .get_chain_spec(&Network::TaikoA7.to_string()) + .unwrap(); + let expected_slot = 1000u64; + let second_per_slot = 12u64; + let block_time = chain_spec.genesis_time + expected_slot * second_per_slot; + let block_num = + block_time_to_block_slot(block_time, chain_spec.genesis_time, second_per_slot) + .expect("block time to slot failed"); + assert_eq!(block_num, expected_slot); + + assert!(block_time_to_block_slot( + chain_spec.genesis_time - 10, + chain_spec.genesis_time, + second_per_slot + ) + .is_err()); + } + + #[ignore] + #[test] + fn json_to_ethers_blob_tx() { + let response = "{ + \"blockHash\":\"0xa61eea0256aa361dfd436be11b0e276470413fbbc34b3642fbbf3b5d8d72f612\", + \"blockNumber\":\"0x4\", + \"from\":\"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266\", + \"gas\":\"0xf4240\", + \"gasPrice\":\"0x5e92e74e\", + \"maxFeePerGas\":\"0x8b772ea6\", + \"maxPriorityFeePerGas\":\"0x3b9aca00\", + \"maxFeePerBlobGas\":\"0x2\", + \"hash\":\"0xdb3b11250a2332cc4944fa8022836bd32da43c34d4f2e9e1b246cfdbc5b4c60e\", + \"input\":\"0x11762da2\", + \"nonce\":\"0x1\", + \"to\":\"0x5fbdb2315678afecb367f032d93f642f64180aa3\", + \"transactionIndex\":\"0x0\", + \"value\":\"0x0\", + \"type\":\"0x3\", + \"accessList\":[], + \"chainId\":\"0x7e7e\", + \"blobVersionedHashes\":[\"0x012d46373b7d1f53793cd6872e40e801f9af6860ecbdbaa2e28df25937618c6f\",\"0x0126d296b606f85b775b12b8b4abeb3bdb88f5a50502754d598537ae9b7fb947\"], + \"v\":\"0x0\", + \"r\":\"0xaba289efba8ef610a5b3b70b72a42fe1916640f64d7112ec0b89087bbc8fff5f\", + \"s\":\"0x1de067d69b79d28d0a3bd179e332c85b93cedbd299d9e205398c073a59633dcf\", + \"yParity\":\"0x0\" + }"; + let tx: Transaction = serde_json::from_str(response).unwrap(); + println!("tx: {tx:?}"); + } +} diff --git a/core/src/preflight/util.rs b/core/src/preflight/util.rs new file mode 100644 index 000000000..fd329f02d --- /dev/null +++ b/core/src/preflight/util.rs @@ -0,0 +1,539 @@ +use alloy_primitives::{hex, Log, B256}; +use alloy_provider::{Provider, ReqwestProvider}; +use alloy_rpc_types::{Filter, Header, Transaction as AlloyRpcTransaction}; +use alloy_sol_types::{SolCall, SolEvent}; +use anyhow::{anyhow, bail, ensure, Result}; +use kzg::kzg_types::ZFr; +use kzg_traits::{ + eip_4844::{blob_to_kzg_commitment_rust, Blob}, + Fr, G1, +}; +use raiko_lib::{ + builder::{OptimisticDatabase, RethBlockBuilder}, + clear_line, + consts::ChainSpec, + inplace_print, + input::{ + ontake::{BlockProposedV2, CalldataTxList}, + proposeBlockCall, BlobProofType, BlockProposed, BlockProposedFork, TaikoGuestInput, + TaikoProverData, + }, + primitives::eip4844::{self, commitment_to_version_hash, KZG_SETTINGS}, +}; +use reth_evm_ethereum::taiko::{decode_anchor, decode_anchor_ontake}; +use reth_primitives::Block; +use reth_revm::primitives::SpecId; +use serde::{Deserialize, Serialize}; +use tracing::{debug, error, info, warn}; + +use crate::{ + interfaces::{RaikoError, RaikoResult}, + provider::{db::ProviderDb, rpc::RpcBlockDataProvider, BlockDataProvider}, + require, +}; + +/// Optimize data gathering by executing the transactions multiple times so data can be requested in batches +pub async fn execute_txs(builder: &mut RethBlockBuilder>) -> RaikoResult<()> +where + BDP: BlockDataProvider, +{ + let max_iterations = 100; + for num_iterations in 0.. { + inplace_print(&format!("Executing iteration {num_iterations}...")); + + let Some(db) = builder.db.as_mut() else { + return Err(RaikoError::Preflight("No db in builder".to_owned())); + }; + db.optimistic = num_iterations + 1 < max_iterations; + + builder + .execute_transactions(num_iterations + 1 < max_iterations) + .map_err(|e| { + RaikoError::Preflight(format!("Executing transactions in builder failed: {e}")) + })?; + + let Some(db) = builder.db.as_mut() else { + return Err(RaikoError::Preflight("No db in builder".to_owned())); + }; + if db.fetch_data().await { + clear_line(); + info!("State data fetched in {num_iterations} iterations"); + break; + } + } + + Ok(()) +} + +/// Prepare the input for a Taiko chain +pub async fn prepare_taiko_chain_input( + l1_chain_spec: &ChainSpec, + taiko_chain_spec: &ChainSpec, + block_number: u64, + l1_inclusion_block_number: Option, + block: &Block, + prover_data: TaikoProverData, + blob_proof_type: BlobProofType, +) -> RaikoResult { + // Decode the anchor tx to find out which L1 blocks we need to fetch + let anchor_tx = block + .body + .first() + .ok_or_else(|| RaikoError::Preflight("No anchor tx in the block".to_owned()))?; + + let fork = taiko_chain_spec.active_fork(block.number, block.timestamp)?; + info!("current taiko chain fork: {fork:?}"); + + let (l1_state_block_number, l1_inclusion_block_number) = match fork { + SpecId::ONTAKE => { + let anchor_call = decode_anchor_ontake(anchor_tx.input())?; + ( + anchor_call._anchorBlockId, + l1_inclusion_block_number.unwrap_or(anchor_call._anchorBlockId + 1), + ) + } + _ => { + let anchor_call = decode_anchor(anchor_tx.input())?; + ( + anchor_call.l1BlockId, + l1_inclusion_block_number.unwrap_or(anchor_call.l1BlockId + 1), + ) + } + }; + debug!( + "anchor L1 block id: {l1_state_block_number:?}, l1 inclusion block id: {l1_inclusion_block_number:?}" + ); + + // Get the L1 block in which the L2 block was included so we can fetch the DA data. + // Also get the L1 state block header so that we can prove the L1 state root. + let provider_l1 = RpcBlockDataProvider::new(&l1_chain_spec.rpc, block_number)?; + + let (l1_inclusion_header, l1_state_header) = get_headers( + &provider_l1, + (l1_inclusion_block_number, l1_state_block_number), + ) + .await?; + + let l1_state_block_hash = l1_state_header.hash.ok_or_else(|| { + RaikoError::Preflight("No L1 state block hash for the requested block".to_owned()) + })?; + + debug!("l1_state_root_block hash: {l1_state_block_hash:?}"); + + let l1_inclusion_block_hash = l1_inclusion_header.hash.ok_or_else(|| { + RaikoError::Preflight("No L1 inclusion block hash for the requested block".to_owned()) + })?; + + // Get the block proposal data + let (proposal_tx, block_proposed) = get_block_proposed_event( + provider_l1.provider(), + taiko_chain_spec.clone(), + l1_inclusion_block_hash, + block_number, + fork, + ) + .await?; + + // Fetch the tx data from either calldata or blobdata + let (tx_data, blob_commitment, blob_proof) = if block_proposed.blob_used() { + get_tx_data( + proposal_tx.blob_versioned_hashes, + l1_inclusion_header.timestamp, + l1_chain_spec, + &blob_proof_type, + ) + .await? + } else { + match fork { + SpecId::ONTAKE => { + // Get the tx list data directly from the propose block CalldataTxList event + let (_, CalldataTxList { txList, .. }) = get_calldata_txlist_event( + provider_l1.provider(), + taiko_chain_spec.clone(), + l1_inclusion_block_hash, + block_number, + ) + .await?; + (txList.to_vec(), None, None) + } + _ => { + // Get the tx list data directly from the propose transaction data + let proposeBlockCall { txList, .. } = + proposeBlockCall::abi_decode(&proposal_tx.input, false).map_err(|_| { + RaikoError::Preflight("Could not decode proposeBlockCall".to_owned()) + })?; + (txList.to_vec(), None, None) + } + } + }; + + // Create the input struct without the block data set + Ok(TaikoGuestInput { + l1_header: l1_state_header.try_into().unwrap(), + tx_data, + anchor_tx: Some(anchor_tx.clone()), + blob_commitment, + block_proposed, + prover_data, + blob_proof, + blob_proof_type, + }) +} + +pub async fn get_tx_data( + blob_versioned_hashes: Option>, + timestamp: u64, + chain_spec: &ChainSpec, + blob_proof_type: &BlobProofType, +) -> RaikoResult<(Vec, Option>, Option>)> { + debug!("blob active"); + // Get the blob hashes attached to the propose tx + let blob_hashes = blob_versioned_hashes.unwrap_or_default(); + require(!blob_hashes.is_empty(), "blob hashes are empty")?; + // Currently the protocol enforces the first blob hash to be used + let blob_hash = blob_hashes[0]; + // Get the blob data for this block + let slot_id = block_time_to_block_slot( + timestamp, + chain_spec.genesis_time, + chain_spec.seconds_per_slot, + )?; + let beacon_rpc_url: String = chain_spec.beacon_rpc.clone().ok_or_else(|| { + RaikoError::Preflight("Beacon RPC URL is required for Taiko chains".to_owned()) + })?; + let blob = get_blob_data(&beacon_rpc_url, slot_id, blob_hash).await?; + let commitment = eip4844::calc_kzg_proof_commitment(&blob).map_err(|e| anyhow!(e))?; + let blob_proof = match blob_proof_type { + BlobProofType::KzgVersionedHash => None, + BlobProofType::ProofOfEquivalence => { + let (x, y) = + eip4844::proof_of_equivalence(&blob, &commitment_to_version_hash(&commitment)) + .map_err(|e| anyhow!(e))?; + + debug!("x {x:?} y {y:?}"); + let point = eip4844::calc_kzg_proof_with_point(&blob, ZFr::from_bytes(&x).unwrap()); + debug!("calc_kzg_proof_with_point {point:?}"); + + Some( + point + .map(|g1| g1.to_bytes().to_vec()) + .map_err(|e| anyhow!(e))?, + ) + } + }; + + Ok((blob, Some(commitment.to_vec()), blob_proof)) +} + +pub async fn get_calldata_txlist_event( + provider: &ReqwestProvider, + chain_spec: ChainSpec, + block_hash: B256, + l2_block_number: u64, +) -> Result<(AlloyRpcTransaction, CalldataTxList)> { + // Get the address that emitted the event + let Some(l1_address) = chain_spec.l1_contract else { + bail!("No L1 contract address in the chain spec"); + }; + + // Get the event signature (value can differ between chains) + let event_signature = CalldataTxList::SIGNATURE_HASH; + // Setup the filter to get the relevant events + let filter = Filter::new() + .address(l1_address) + .at_block_hash(block_hash) + .event_signature(event_signature); + // Now fetch the events + let logs = provider.get_logs(&filter).await?; + + // Run over the logs returned to find the matching event for the specified L2 block number + // (there can be multiple blocks proposed in the same block and even same tx) + for log in logs { + let Some(log_struct) = Log::new( + log.address(), + log.topics().to_vec(), + log.data().data.clone(), + ) else { + bail!("Could not create log") + }; + let event = CalldataTxList::decode_log(&log_struct, false) + .map_err(|_| RaikoError::Anyhow(anyhow!("Could not decode log")))?; + if event.blockId == raiko_lib::primitives::U256::from(l2_block_number) { + let Some(log_tx_hash) = log.transaction_hash else { + bail!("No transaction hash in the log") + }; + let tx = provider + .get_transaction_by_hash(log_tx_hash) + .await + .expect("couldn't query the propose tx") + .expect("Could not find the propose tx"); + return Ok((tx, event.data)); + } + } + bail!("No BlockProposedV2 event found for block {l2_block_number}"); +} + +pub async fn get_block_proposed_event( + provider: &ReqwestProvider, + chain_spec: ChainSpec, + block_hash: B256, + l2_block_number: u64, + fork: SpecId, +) -> Result<(AlloyRpcTransaction, BlockProposedFork)> { + // Get the address that emitted the event + let Some(l1_address) = chain_spec.l1_contract else { + bail!("No L1 contract address in the chain spec"); + }; + + // Get the event signature (value can differ between chains) + let event_signature = match fork { + SpecId::ONTAKE => BlockProposedV2::SIGNATURE_HASH, + _ => BlockProposed::SIGNATURE_HASH, + }; + // Setup the filter to get the relevant events + let filter = Filter::new() + .address(l1_address) + .at_block_hash(block_hash) + .event_signature(event_signature); + // Now fetch the events + let logs = provider.get_logs(&filter).await?; + + // Run over the logs returned to find the matching event for the specified L2 block number + // (there can be multiple blocks proposed in the same block and even same tx) + for log in logs { + let Some(log_struct) = Log::new( + log.address(), + log.topics().to_vec(), + log.data().data.clone(), + ) else { + bail!("Could not create log") + }; + let (block_id, data) = match fork { + SpecId::ONTAKE => { + let event = BlockProposedV2::decode_log(&log_struct, false) + .map_err(|_| RaikoError::Anyhow(anyhow!("Could not decode log")))?; + (event.blockId, BlockProposedFork::Ontake(event.data)) + } + _ => { + let event = BlockProposed::decode_log(&log_struct, false) + .map_err(|_| RaikoError::Anyhow(anyhow!("Could not decode log")))?; + (event.blockId, BlockProposedFork::Hekla(event.data)) + } + }; + + if block_id == raiko_lib::primitives::U256::from(l2_block_number) { + let Some(log_tx_hash) = log.transaction_hash else { + bail!("No transaction hash in the log") + }; + let tx = provider + .get_transaction_by_hash(log_tx_hash) + .await + .expect("couldn't query the propose tx") + .expect("Could not find the propose tx"); + return Ok((tx, data)); + } + } + + Err(anyhow!( + "No BlockProposed event found for block {l2_block_number}" + )) +} + +pub async fn get_block_and_parent_data( + provider: &BDP, + block_number: u64, +) -> RaikoResult<(Block, alloy_rpc_types::Block)> +where + BDP: BlockDataProvider, +{ + // Get the block and the parent block + let blocks = provider + .get_blocks(&[(block_number, true), (block_number - 1, false)]) + .await?; + let mut blocks = blocks.iter(); + let Some(block) = blocks.next() else { + return Err(RaikoError::Preflight( + "No block data for the requested block".to_owned(), + )); + }; + let Some(parent_block) = blocks.next() else { + return Err(RaikoError::Preflight( + "No parent block data for the requested block".to_owned(), + )); + }; + + info!( + "Processing block {:?} with hash: {:?}", + block.header.number, + block.header.hash.unwrap(), + ); + debug!("block.parent_hash: {:?}", block.header.parent_hash); + debug!("block gas used: {:?}", block.header.gas_used); + debug!("block transactions: {:?}", block.transactions.len()); + + // Convert the alloy block to a reth block + let block = Block::try_from(block.clone()) + .map_err(|e| RaikoError::Conversion(format!("Failed converting to reth block: {e}")))?; + Ok((block, parent_block.clone())) +} + +pub async fn get_headers(provider: &BDP, (a, b): (u64, u64)) -> RaikoResult<(Header, Header)> +where + BDP: BlockDataProvider, +{ + // Get the block and the parent block + let blocks = provider.get_blocks(&[(a, true), (b, false)]).await?; + let mut blocks = blocks.iter(); + let Some(a) = blocks.next() else { + return Err(RaikoError::Preflight( + "No block data for the requested block".to_owned(), + )); + }; + let Some(b) = blocks.next() else { + return Err(RaikoError::Preflight( + "No block data for the requested block".to_owned(), + )); + }; + + // Convert the alloy block to a reth block + Ok((a.header.clone(), b.header.clone())) +} + +// block_time_to_block_slot returns the slots of the given timestamp. +pub fn block_time_to_block_slot( + block_time: u64, + genesis_time: u64, + block_per_slot: u64, +) -> RaikoResult { + if genesis_time == 0 { + Err(RaikoError::Anyhow(anyhow!( + "genesis time is 0, please check chain spec" + ))) + } else if block_time < genesis_time { + Err(RaikoError::Anyhow(anyhow!( + "provided block_time precedes genesis time", + ))) + } else { + Ok((block_time - genesis_time) / block_per_slot) + } +} + +pub fn blob_to_bytes(blob_str: &str) -> Vec { + hex::decode(blob_str.to_lowercase().trim_start_matches("0x")).unwrap_or_default() +} + +fn calc_blob_versioned_hash(blob_str: &str) -> [u8; 32] { + let blob_bytes = hex::decode(blob_str.to_lowercase().trim_start_matches("0x")) + .expect("Could not decode blob"); + let blob = Blob::from_bytes(&blob_bytes).expect("Could not create blob"); + let commitment = blob_to_kzg_commitment_rust( + &eip4844::deserialize_blob_rust(&blob).expect("Could not deserialize blob"), + &KZG_SETTINGS.clone(), + ) + .expect("Could not create kzg commitment from blob"); + commitment_to_version_hash(&commitment.to_bytes()).0 +} + +async fn get_blob_data(beacon_rpc_url: &str, block_id: u64, blob_hash: B256) -> Result> { + if beacon_rpc_url.contains("blobscan.com") { + get_blob_data_blobscan(beacon_rpc_url, block_id, blob_hash).await + } else { + get_blob_data_beacon(beacon_rpc_url, block_id, blob_hash).await + } +} + +// Blob data from the beacon chain +// type Sidecar struct { +// Index string `json:"index"` +// Blob string `json:"blob"` +// SignedBeaconBlockHeader *SignedBeaconBlockHeader `json:"signed_block_header"` +// KzgCommitment string `json:"kzg_commitment"` +// KzgProof string `json:"kzg_proof"` +// CommitmentInclusionProof []string +// `json:"kzg_commitment_inclusion_proof"` } +#[derive(Clone, Debug, Deserialize, Serialize)] +struct GetBlobData { + pub index: String, + pub blob: String, + // pub signed_block_header: SignedBeaconBlockHeader, // ignore for now + pub kzg_commitment: String, + pub kzg_proof: String, + //pub kzg_commitment_inclusion_proof: Vec, +} + +#[derive(Clone, Debug, Deserialize, Serialize)] +struct GetBlobsResponse { + pub data: Vec, +} + +async fn get_blob_data_beacon( + beacon_rpc_url: &str, + block_id: u64, + blob_hash: B256, +) -> Result> { + let url = format!( + "{}/eth/v1/beacon/blob_sidecars/{block_id}", + beacon_rpc_url.trim_end_matches('/'), + ); + info!("Retrieve blob from {url}."); + let response = reqwest::get(url.clone()).await?; + + if !response.status().is_success() { + warn!( + "Request {url} failed with status code: {}", + response.status() + ); + return Err(anyhow::anyhow!( + "Request failed with status code: {}", + response.status() + )); + } + + let blobs = response.json::().await?; + ensure!(!blobs.data.is_empty(), "blob data not available anymore"); + // Get the blob data for the blob storing the tx list + let tx_blob = blobs + .data + .iter() + .find(|blob| { + // calculate from plain blob + blob_hash == calc_blob_versioned_hash(&blob.blob) + }) + .cloned(); + + if let Some(tx_blob) = &tx_blob { + Ok(blob_to_bytes(&tx_blob.blob)) + } else { + Err(anyhow!("couldn't find blob data matching blob hash")) + } +} + +// https://api.blobscan.com/#/ +#[derive(Clone, Debug, Deserialize, Serialize)] +struct BlobScanData { + pub commitment: String, + pub data: String, +} + +async fn get_blob_data_blobscan( + beacon_rpc_url: &str, + _block_id: u64, + blob_hash: B256, +) -> Result> { + let url = format!("{}/blobs/{blob_hash}", beacon_rpc_url.trim_end_matches('/'),); + let response = reqwest::get(url.clone()).await?; + + if !response.status().is_success() { + error!( + "Request {url} failed with status code: {}", + response.status() + ); + return Err(anyhow::anyhow!( + "Request failed with status code: {}", + response.status() + )); + } + + let blob = response.json::().await?; + Ok(blob_to_bytes(&blob.data)) +} diff --git a/core/src/provider/rpc.rs b/core/src/provider/rpc.rs index 82701f856..9f21ea9cc 100644 --- a/core/src/provider/rpc.rs +++ b/core/src/provider/rpc.rs @@ -64,8 +64,7 @@ impl BlockDataProvider for RpcBlockDataProvider { batch.send().await.map_err(|e| { RaikoError::RPC(format!( - "Error sending batch request for block {:?}: {e}", - blocks_to_fetch + "Error sending batch request for block {blocks_to_fetch:?}: {e}" )) })?; diff --git a/host/Cargo.toml b/host/Cargo.toml index c59152d3c..400d224c6 100644 --- a/host/Cargo.toml +++ b/host/Cargo.toml @@ -68,7 +68,7 @@ rlp = { workspace = true } url = { workspace = true } cfg-if = { workspace = true } cap = { workspace = true } -dotenv = {workspace = true } +dotenv = { workspace = true } # reth @@ -87,6 +87,7 @@ default = [] sp1 = ["raiko-core/sp1"] risc0 = ["raiko-core/risc0"] sgx = ["raiko-core/sgx"] +integration = [] [[bin]] name = "raiko-host" diff --git a/host/config/chain_spec_list_default.json b/host/config/chain_spec_list_default.json index 79f99c678..62f18d8c3 100644 --- a/host/config/chain_spec_list_default.json +++ b/host/config/chain_spec_list_default.json @@ -27,10 +27,12 @@ "l2_contract": null, "rpc": "https://ethereum-rpc.publicnode.com", "beacon_rpc": "https://ethereum-beacon-api.publicnode.com", - "verifier_address": { - "SGX":"0x532efbf6d62720d0b2a2bb9d11066e8588cae6d9", - "SP1":null, - "RISC0":"0x0000000000000000000000000000000000000000" + "verifier_address_forks": { + "FRONTIER": { + "SGX": "0x532efbf6d62720d0b2a2bb9d11066e8588cae6d9", + "SP1": null, + "RISC0": "0x0000000000000000000000000000000000000000" + } }, "genesis_time": 1606824023, "seconds_per_slot": 12, @@ -61,10 +63,12 @@ "l2_contract": null, "rpc": "https://ethereum-holesky-rpc.publicnode.com", "beacon_rpc": "https://fabled-weathered-cherry.ethereum-holesky.quiknode.pro/8f1c66935fa5f9afbda0db43318fe3c9e7b061e1/", - "verifier_address": { - "SGX":"0x532efbf6d62720d0b2a2bb9d11066e8588cae6d9", - "SP1":null, - "RISC0":"0x0000000000000000000000000000000000000000" + "verifier_address_forks": { + "FRONTIER": { + "SGX": "0x532efbf6d62720d0b2a2bb9d11066e8588cae6d9", + "SP1": null, + "RISC0": "0x0000000000000000000000000000000000000000" + } }, "genesis_time": 1695902400, "seconds_per_slot": 12, @@ -73,11 +77,14 @@ { "name": "taiko_a7", "chain_id": 167009, - "max_spec_id": "HEKLA", + "max_spec_id": "ONTAKE", "hard_forks": { "HEKLA": { "Block": 0 }, + "ONTAKE": { + "Block": 999999 + }, "CANCUN": "TBD" }, "eip_1559_constants": { @@ -90,10 +97,17 @@ "l2_contract": "0x1670090000000000000000000000000000010001", "rpc": "https://rpc.hekla.taiko.xyz", "beacon_rpc": null, - "verifier_address":{ - "SGX":"0x532efbf6d62720d0b2a2bb9d11066e8588cae6d9", - "SP1":"0xFbE49f777E0078b3Fa0bae6de4794c88d6EA6DDD", - "RISC0":"0x4fEd801C5a876D4289e869cbEfA1E1A448b10714" + "verifier_address_forks": { + "HEKLA": { + "SGX":"0x532efbf6d62720d0b2a2bb9d11066e8588cae6d9", + "SP1":"0xFbE49f777E0078b3Fa0bae6de4794c88d6EA6DDD", + "RISC0":"0x4fEd801C5a876D4289e869cbEfA1E1A448b10714" + }, + "ONTAKE": { + "SGX": "0xf6d620d0b2a2bb9d11066e8532efb72588cae6d9", + "SP1": null, + "RISC0": "0x0000000000000000000000000000000000000000" + } }, "genesis_time": 0, "seconds_per_slot": 1, @@ -102,11 +116,14 @@ { "name": "taiko_mainnet", "chain_id": 167000, - "max_spec_id": "HEKLA", + "max_spec_id": "ONTAKE", "hard_forks": { "HEKLA": { "Block": 0 }, + "ONTAKE": { + "Block": 999999 + }, "CANCUN": "TBD" }, "eip_1559_constants": { @@ -119,13 +136,15 @@ "l2_contract": "0x1670000000000000000000000000000000010001", "rpc": "https://rpc.mainnet.taiko.xyz", "beacon_rpc": null, - "verifier_address": { - "SGX":"0xb0f3186FC1963f774f52ff455DC86aEdD0b31F81", - "SP1":"0x0000000000000000000000000000000000000000", - "RISC0":"0x0000000000000000000000000000000000000000" + "verifier_address_forks": { + "HEKLA": { + "SGX":"0xb0f3186FC1963f774f52ff455DC86aEdD0b31F81", + "SP1":"0x0000000000000000000000000000000000000000", + "RISC0":"0x0000000000000000000000000000000000000000" + } }, "genesis_time": 0, "seconds_per_slot": 1, "is_taiko": true } -] \ No newline at end of file +] diff --git a/host/config/chain_spec_list_devnet.json b/host/config/chain_spec_list_devnet.json index a3b9abbba..88be19400 100644 --- a/host/config/chain_spec_list_devnet.json +++ b/host/config/chain_spec_list_devnet.json @@ -24,23 +24,28 @@ "l2_contract": null, "rpc": "https://l1rpc.internal.taiko.xyz", "beacon_rpc": "https://l1beacon.internal.taiko.xyz/", - "verifier_address": { - "SGX": null, - "SP1": null, - "RISC0": null + "verifier_address_forks": { + "FRONTIER": { + "SGX": null, + "SP1": null, + "RISC0": null + } }, - "genesis_time": 1724760400, + "genesis_time": 1726040200, "seconds_per_slot": 12, "is_taiko": false }, { "name": "taiko_dev", "chain_id": 167001, - "max_spec_id": "HEKLA", + "max_spec_id": "ONTAKE", "hard_forks": { "HEKLA": { "Block": 0 }, + "ONTAKE": { + "Block": 500 + }, "CANCUN": "TBD" }, "eip_1559_constants": { @@ -49,17 +54,24 @@ "base_fee_max_decrease_denominator": "0x8", "elasticity_multiplier": "0x2" }, - "l1_contract": "0xcdE816aFd1B7db50f09831097e71F99877809218", + "l1_contract": "0xA4702E22F8807Df82Fe5B6dDdd99eB3Fcb0237B0", "l2_contract": "0x1670010000000000000000000000000000010001", "rpc": "https://rpc.internal.taiko.xyz", "beacon_rpc": null, - "verifier_address": { - "SGX": "0xC069c3d2a9f2479F559AD34485698ad5199C555f", - "SP1": "0x5F7eD46Ce19E12639D05a5020C64045273842C83", - "RISC0": "0x28336BC4116B9672000E7C6Ab96B1454D9d138f7" + "verifier_address_forks": { + "HEKLA": { + "SGX": "0xebB0DA61818F639f460F67940EB269b36d1F104E", + "SP1": "0x748d4a7e3a49adEbA2157B2d581434A6Cc226D1F", + "RISC0": "0xDf8038e9f4535040D7421A89ead398b3A38366EC" + }, + "ONTAKE": { + "SGX": "0xebB0DA61818F639f460F67940EB269b36d1F104E", + "SP1": "0x748d4a7e3a49adEbA2157B2d581434A6Cc226D1F", + "RISC0": "0xDf8038e9f4535040D7421A89ead398b3A38366EC" + } }, "genesis_time": 0, "seconds_per_slot": 1, "is_taiko": true } -] \ No newline at end of file +] diff --git a/host/config/config.devnet.json b/host/config/config.devnet.json new file mode 100644 index 000000000..5ca97ea3e --- /dev/null +++ b/host/config/config.devnet.json @@ -0,0 +1,7 @@ +{ + "network": "taiko_dev", + "l1_network": "taiko_dev_l1", + "sgx": { + "instance_id": 0 + } +} diff --git a/host/src/cache.rs b/host/src/cache.rs index 81c2d2dd5..c4cd99815 100644 --- a/host/src/cache.rs +++ b/host/src/cache.rs @@ -113,6 +113,7 @@ mod test { proof_type: ProofType::Native, blob_proof_type: BlobProofType::KzgVersionedHash, prover_args: Default::default(), + l1_inclusion_block_number: 0, }; let raiko = Raiko::new( l1_chain_spec.clone(), diff --git a/host/src/interfaces.rs b/host/src/interfaces.rs index 95f385f0b..728d7710a 100644 --- a/host/src/interfaces.rs +++ b/host/src/interfaces.rs @@ -5,6 +5,8 @@ use raiko_tasks::{TaskManagerError, TaskStatus}; use tokio::sync::mpsc::error::TrySendError; use utoipa::ToSchema; +use crate::server::api::v1::Status; + /// The standardized error returned by the Raiko host. #[derive(thiserror::Error, Debug, ToSchema)] pub enum HostError { @@ -75,25 +77,27 @@ pub enum HostError { impl IntoResponse for HostError { fn into_response(self) -> axum::response::Response { let (error, message) = match self { - HostError::InvalidRequestConfig(e) => ("invalid_request_config".to_string(), e), - HostError::InvalidAddress(e) => ("invalid_address".to_string(), e), - HostError::Io(e) => ("io_error".to_string(), e.to_string()), - HostError::Conversion(e) => ("conversion_error".to_string(), e), - HostError::RPC(e) => ("rpc_error".to_string(), e), - HostError::Serde(e) => ("serde_error".to_string(), e.to_string()), - HostError::JoinHandle(e) => ("join_handle_error".to_string(), e.to_string()), - HostError::Guest(e) => ("guest_error".to_string(), e.to_string()), - HostError::Core(e) => ("core_error".to_string(), e.to_string()), - HostError::FeatureNotSupportedError(t) => { - ("feature_not_supported_error".to_string(), t.to_string()) - } - HostError::Anyhow(e) => ("anyhow_error".to_string(), e.to_string()), - HostError::HandleDropped => ("handle_dropped".to_string(), "".to_string()), - HostError::CapacityFull => ("capacity_full".to_string(), "".to_string()), - HostError::TaskManager(e) => ("task_manager".to_string(), e.to_string()), + HostError::InvalidRequestConfig(e) => ("invalid_request_config", e), + HostError::InvalidAddress(e) => ("invalid_address", e), + HostError::Io(e) => ("io_error", e.to_string()), + HostError::Conversion(e) => ("conversion_error", e), + HostError::RPC(e) => ("rpc_error", e), + HostError::Serde(e) => ("serde_error", e.to_string()), + HostError::JoinHandle(e) => ("join_handle_error", e.to_string()), + HostError::Guest(e) => ("guest_error", e.to_string()), + HostError::Core(e) => ("core_error", e.to_string()), + HostError::FeatureNotSupportedError(e) => ("feature_not_supported", e.to_string()), + HostError::TaskManager(e) => ("task_manager", e.to_string()), + HostError::Anyhow(e) => ("anyhow_error", e.to_string()), + HostError::HandleDropped => ("handle_dropped", "".to_owned()), + HostError::CapacityFull => ("capacity_full", "".to_owned()), + }; + let status = Status::Error { + error: error.to_owned(), + message, }; - axum::Json(serde_json::json!({ "status": "error", "error": error, "message": message })) - .into_response() + let value = serde_json::to_value(status).expect("couldn't serialize the error status"); + axum::Json(value).into_response() } } diff --git a/host/src/lib.rs b/host/src/lib.rs index d46a4849a..a4df64dc9 100644 --- a/host/src/lib.rs +++ b/host/src/lib.rs @@ -33,7 +33,7 @@ pub struct Opts { #[serde(default = "Opts::default_address")] /// Server bind address /// [default: 0.0.0.0:8080] - address: String, + pub address: String, #[arg(long, require_equals = true, default_value = "16")] #[serde(default = "Opts::default_concurrency_limit")] @@ -51,15 +51,15 @@ pub struct Opts { #[serde(default = "Opts::default_config_path")] /// Path to a config file that includes sufficient json args to request /// a proof of specified type. Curl json-rpc overrides its contents - config_path: PathBuf, + pub config_path: PathBuf, #[arg(long, require_equals = true)] /// Path to a chain spec file that includes supported chain list - chain_spec_path: Option, + pub chain_spec_path: Option, #[arg(long, require_equals = true)] /// Use a local directory as a cache for input. Accepts a custom directory. - cache_path: Option, + pub cache_path: Option, #[arg(long, require_equals = true, env = "RUST_LOG", default_value = "info")] #[serde(default = "Opts::default_log_level")] @@ -73,14 +73,14 @@ pub struct Opts { #[arg(long, require_equals = true)] /// Set jwt secret for auth - jwt_secret: Option, + pub jwt_secret: Option, #[arg(long, require_equals = true, default_value = "raiko.sqlite")] /// Set the path to the sqlite db file - sqlite_file: PathBuf, + pub sqlite_file: PathBuf, #[arg(long, require_equals = true, default_value = "1048576")] - max_db_size: usize, + pub max_db_size: usize, } impl Opts { @@ -115,6 +115,12 @@ impl Opts { *self = serde_json::from_value(config)?; Ok(()) } + + pub fn merge_from_env(&mut self) { + if let Some(path) = std::env::var("CONFIG_PATH").ok().map(PathBuf::from) { + self.config_path = path; + } + } } impl From for TaskManagerOpts { @@ -164,6 +170,8 @@ impl ProverState { pub fn init() -> HostResult { // Read the command line arguments; let mut opts = Opts::parse(); + // Read env supported options. + opts.merge_from_env(); // Read the config file. opts.merge_from_file()?; diff --git a/host/src/server/api/v1/mod.rs b/host/src/server/api/v1/mod.rs index d84113816..8c14a9f7d 100644 --- a/host/src/server/api/v1/mod.rs +++ b/host/src/server/api/v1/mod.rs @@ -1,7 +1,7 @@ use axum::{response::IntoResponse, Router}; use raiko_lib::input::GuestOutput; use serde::{Deserialize, Serialize}; -use serde_json::Value; +use serde_json::{json, Value}; use tower::ServiceBuilder; use utoipa::{OpenApi, ToSchema}; use utoipa_scalar::{Scalar, Servable}; @@ -62,10 +62,7 @@ pub struct ProofResponse { impl ProofResponse { pub fn to_response(&self) -> Value { - serde_json::json!({ - "status": "ok", - "data": self - }) + json!({ "status": "ok", "data": self }) } } @@ -83,7 +80,7 @@ impl TryFrom for ProofResponse { } } -#[derive(Debug, Serialize, ToSchema)] +#[derive(Debug, Deserialize, Serialize, ToSchema)] #[serde(tag = "status", rename_all = "lowercase")] #[allow(dead_code)] pub enum Status { diff --git a/host/src/server/api/v2/mod.rs b/host/src/server/api/v2/mod.rs index 0cd5ae120..65f4894e4 100644 --- a/host/src/server/api/v2/mod.rs +++ b/host/src/server/api/v2/mod.rs @@ -1,7 +1,7 @@ use axum::{response::IntoResponse, Json, Router}; use raiko_lib::prover::Proof; use raiko_tasks::TaskStatus; -use serde::Serialize; +use serde::{Deserialize, Serialize}; use utoipa::{OpenApi, ToSchema}; use utoipa_scalar::{Scalar, Servable}; use utoipa_swagger_ui::SwaggerUi; @@ -52,7 +52,7 @@ mod proof; /// The root API struct which is generated from the `OpenApi` derive macro. pub struct Docs; -#[derive(Debug, Serialize, ToSchema)] +#[derive(Debug, Deserialize, Serialize, ToSchema)] #[serde(untagged)] pub enum ProofResponse { Status { @@ -65,7 +65,7 @@ pub enum ProofResponse { }, } -#[derive(Debug, Serialize, ToSchema)] +#[derive(Debug, Deserialize, Serialize, ToSchema)] #[serde(tag = "status", rename_all = "lowercase")] pub enum Status { Ok { data: ProofResponse }, @@ -96,7 +96,7 @@ impl IntoResponse for Status { } } -#[derive(Debug, Serialize, ToSchema)] +#[derive(Debug, Deserialize, Serialize, ToSchema)] #[serde(tag = "status", rename_all = "lowercase")] /// Status of cancellation request. /// Can be `ok` for a successful cancellation or `error` with message and error type for errors. @@ -113,7 +113,7 @@ impl IntoResponse for CancelStatus { } } -#[derive(Debug, Serialize, ToSchema)] +#[derive(Debug, Serialize, ToSchema, Deserialize)] #[serde(tag = "status", rename_all = "lowercase")] /// Status of prune request. /// Can be `ok` for a successful prune or `error` with message and error type for errors. diff --git a/host/tests/common/client.rs b/host/tests/common/client.rs new file mode 100644 index 000000000..01a247ebf --- /dev/null +++ b/host/tests/common/client.rs @@ -0,0 +1,104 @@ +use raiko_core::interfaces::ProofRequestOpt; +use raiko_host::server::api::{v1, v2}; +use raiko_tasks::{TaskDescriptor, TaskStatus}; + +const URL: &str = "http://localhost:8080"; + +pub struct ProofClient { + reqwest_client: reqwest::Client, +} + +impl ProofClient { + pub fn new() -> Self { + Self { + reqwest_client: reqwest::Client::new(), + } + } + + pub async fn send_proof_v1( + &self, + proof_request: ProofRequestOpt, + ) -> anyhow::Result { + let response = self + .reqwest_client + .post(&format!("{URL}/v1/proof")) + .json(&proof_request) + .send() + .await?; + + if response.status().is_success() { + let proof_response = response.json::().await?; + Ok(proof_response) + } else { + Err(anyhow::anyhow!("Failed to send proof request")) + } + } + + pub async fn send_proof_v2( + &self, + proof_request: ProofRequestOpt, + ) -> anyhow::Result { + let response = self + .reqwest_client + .post(&format!("{URL}/v2/proof")) + .json(&proof_request) + .send() + .await?; + + if response.status().is_success() { + let proof_response = response.json::().await?; + Ok(proof_response) + } else { + Err(anyhow::anyhow!("Failed to send proof request")) + } + } + + pub async fn cancel_proof( + &self, + proof_request: ProofRequestOpt, + ) -> anyhow::Result { + let response = self + .reqwest_client + .post(&format!("{URL}/v2/proof/cancel")) + .json(&proof_request) + .send() + .await?; + + if response.status().is_success() { + let cancel_response = response.json::().await?; + Ok(cancel_response) + } else { + Err(anyhow::anyhow!("Failed to send proof request")) + } + } + + pub async fn prune_proof(&self) -> anyhow::Result { + let response = self + .reqwest_client + .post(&format!("{URL}/v2/proof/prune")) + .send() + .await?; + + if response.status().is_success() { + let prune_response = response.json::().await?; + Ok(prune_response) + } else { + Err(anyhow::anyhow!("Failed to send proof request")) + } + } + + pub async fn report_proof(&self) -> anyhow::Result> { + let response = self + .reqwest_client + .get(&format!("{URL}/v2/proof/report")) + .send() + .await?; + + if response.status().is_success() { + let report_response = response.json::>().await?; + Ok(report_response) + } else { + Err(anyhow::anyhow!("Failed to send proof request")) + } + } +} diff --git a/host/tests/common/mod.rs b/host/tests/common/mod.rs new file mode 100644 index 000000000..26ef7c8f2 --- /dev/null +++ b/host/tests/common/mod.rs @@ -0,0 +1,138 @@ +#![allow(dead_code)] + +use std::str::FromStr; + +use raiko_core::interfaces::{ProofRequestOpt, ProofType, ProverSpecificOpts}; +use raiko_host::{server::serve, ProverState}; +use raiko_lib::consts::{Network, SupportedChainSpecs}; +use serde::Deserialize; +use serde_json::json; +use tokio_util::sync::CancellationToken; + +mod client; +pub mod scenarios; + +pub use client::ProofClient; + +#[derive(Debug, Deserialize)] +struct RPCResult { + result: T, +} + +type BlockHeightResponse = RPCResult; + +#[derive(Debug, Deserialize)] +struct Block { + #[serde(rename = "gasUsed")] + gas_used: String, +} + +type BlockResponse = RPCResult; + +pub async fn find_recent_block(network: Network) -> anyhow::Result { + let supported_chains = SupportedChainSpecs::default(); + let client = reqwest::Client::new(); + let beacon = supported_chains + .get_chain_spec(&network.to_string()) + .unwrap() + .rpc; + + let response = client + .post(beacon.clone()) + .json(&json!({ + "jsonrpc": "2.0", + "method": "eth_blockNumber", + "params": [], + "id": 1 + })) + .send() + .await? + .json::() + .await?; + + let newest_block_number = u64::from_str_radix(&response.result[2..], 16)?; + + let latest_blocks = (newest_block_number - 20)..=newest_block_number; + + let mut blocks = Vec::with_capacity(21); + + for block_number in latest_blocks { + let response = client + .post(beacon.clone()) + .json(&json!({ + "jsonrpc": "2.0", + "method": "eth_getBlockByNumber", + "params": [format!("0x{block_number:x}"), false], + "id": 1 + })) + .send() + .await? + .json::() + .await?; + + let gas_used = u64::from_str_radix(&response.result.gas_used[2..], 16)?; + + blocks.push((block_number, gas_used)); + } + + let (block_number, _) = blocks.iter().min_by_key(|(_, gas_used)| *gas_used).unwrap(); + + Ok(*block_number) +} + +/// Start the Raiko server and return a cancellation token that can be used to stop the server. +pub async fn start_raiko() -> anyhow::Result { + // Initialize the server state. + dotenv::dotenv().ok(); + let state = ProverState::init().expect("Failed to initialize prover state"); + let token = CancellationToken::new(); + let clone = token.clone(); + + // Run the server in a separate thread with the ability to cancel it when our testing is done. + tokio::spawn(async move { + tokio::select! { + _ = token.cancelled() => { + println!("Test done"); + } + result = serve(state) => { + match result { + Ok(()) => { + panic!("Unexpected server shutdown"); + } + Err(error) => { + panic!("Server failed due to: {error:?}"); + } + }; + } + } + }); + + Ok(clone) +} + +pub async fn make_request() -> anyhow::Result { + // Get block to test with. + let block_number = find_recent_block(Network::TaikoMainnet).await?; + + let proof_type = + ProofType::from_str(&std::env::var("PROOF_TYPE").unwrap_or_else(|_| "native".to_owned()))?; + + Ok(ProofRequestOpt { + block_number: Some(block_number), + l1_inclusion_block_number: None, + network: Some("taiko_mainnet".to_owned()), + l1_network: Some("ethereum".to_string()), + graffiti: Some( + "8008500000000000000000000000000000000000000000000000000000000000".to_owned(), + ), + prover: Some("0x70997970C51812dc3A010C7d01b50e0d17dc79C8".to_owned()), + proof_type: Some(proof_type.to_string()), + blob_proof_type: Some("proof_of_equivalence".to_string()), + prover_args: ProverSpecificOpts { + native: None, + sgx: None, + sp1: Some(json!({ "verify": false })), + risc0: None, + }, + }) +} diff --git a/host/tests/common/scenarios.rs b/host/tests/common/scenarios.rs new file mode 100644 index 000000000..62e3c9bcb --- /dev/null +++ b/host/tests/common/scenarios.rs @@ -0,0 +1,239 @@ +use raiko_host::server::api::{v1, v2}; +use raiko_tasks::TaskStatus; + +use crate::common::{make_request, start_raiko, ProofClient}; + +/// Test v1 API interface. +pub async fn test_v1_api_format() -> anyhow::Result<()> { + let token = start_raiko().await.expect("Failed to start Raiko server"); + + // Send a proof request to the server. + let client = ProofClient::new(); + + let request = make_request().await?; + let response = client.send_proof_v1(request).await?; + + assert!( + matches!( + response, + v1::Status::Ok { + data: v1::ProofResponse { .. } + } + ), + "Got error response from server {response:?}" + ); + + token.cancel(); + Ok(()) +} + +/// Test v2 API response for a initial proof request and for requesting the proof status on further +/// requests. +pub async fn test_v2_api_response() -> anyhow::Result<()> { + let token = start_raiko().await.expect("Failed to start Raiko server"); + + // Send a proof request to the server. + let client = ProofClient::new(); + + let request = make_request().await?; + + let response = client + .send_proof_v2(request.clone()) + .await + .expect("Failed to send proof request"); + + assert!( + matches!( + response, + v2::Status::Ok { + data: v2::ProofResponse::Status { + status: TaskStatus::Registered + } + } | v2::Status::Ok { + data: v2::ProofResponse::Proof { .. } + } + ), + "Got error response from server {response:?}" + ); + + // Wait a second to allow the server to process the request. + tokio::time::sleep(std::time::Duration::from_secs(1)).await; + + // Check the server state. + let response = client + .send_proof_v2(request) + .await + .expect("Failed to send proof request"); + + assert!( + matches!( + response, + v2::Status::Ok { + data: v2::ProofResponse::Status { + status: TaskStatus::WorkInProgress + } + } | v2::Status::Ok { + data: v2::ProofResponse::Proof { .. } + } + ), + "Got incorrect response from server {response:?}" + ); + + token.cancel(); + Ok(()) +} + +/// Test the v2 API cancellation behavior. +pub async fn test_v2_cancellation() -> anyhow::Result<()> { + let token = start_raiko().await.expect("Failed to start Raiko server"); + + // Send a proof request to the server. + let client = ProofClient::new(); + + let request = make_request().await?; + + let response = client + .send_proof_v2(request.clone()) + .await + .expect("Failed to send proof request"); + + assert!( + matches!( + response, + v2::Status::Ok { + data: v2::ProofResponse::Status { + status: TaskStatus::Registered | TaskStatus::WorkInProgress + } + } | v2::Status::Ok { + data: v2::ProofResponse::Proof { .. } + } + ), + "Got error response from server {response:?}" + ); + + // Cancel the proof request. + let response = client + .cancel_proof(request.clone()) + .await + .expect("Failed to cancel proof request"); + + assert!( + matches!(response, v2::CancelStatus::Ok), + "Got error response from server {response:?}" + ); + + // Check that we can restart the proof request. + let response = client + .send_proof_v2(request) + .await + .expect("Failed to send proof request"); + + assert!( + matches!( + response, + v2::Status::Ok { + data: v2::ProofResponse::Status { + status: TaskStatus::Registered + } + } + ), + "Got error response from server {response:?}" + ); + + token.cancel(); + Ok(()) +} + +/// Test the v2 API report functionality before and after sending a request. +pub async fn test_v2_report() -> anyhow::Result<()> { + let token = start_raiko().await.expect("Failed to start Raiko server"); + // Send a proof request to the server. + let client = ProofClient::new(); + + let response = client.report_proof().await?; + + assert!(response.is_empty(), "Proof report is not empty"); + + let request = make_request().await?; + + let response = client + .send_proof_v2(request) + .await + .expect("Failed to send proof request"); + + assert!( + matches!( + response, + v2::Status::Ok { + data: v2::ProofResponse::Status { + status: TaskStatus::Registered + } + } + ), + "Got error response from server {response:?}" + ); + + let response = client.report_proof().await?; + + assert!( + !response.is_empty(), + "No proof report found after sending proof request" + ); + + token.cancel(); + Ok(()) +} + +/// Test the v2 API pruning functionality after having requests in the task db. +pub async fn test_v2_prune() -> anyhow::Result<()> { + let token = start_raiko().await.expect("Failed to start Raiko server"); + // Send a proof request to the server. + let client = ProofClient::new(); + + let response = client.report_proof().await?; + + assert!(response.is_empty(), "Proof report is not empty"); + + let request = make_request().await?; + + let response = client + .send_proof_v2(request) + .await + .expect("Failed to send proof request"); + + assert!( + matches!( + response, + v2::Status::Ok { + data: v2::ProofResponse::Status { + status: TaskStatus::Registered + } + } + ), + "Got error response from server {response:?}" + ); + + let response = client.report_proof().await?; + + assert!( + !response.is_empty(), + "No proof report found after sending proof request" + ); + + let response = client.prune_proof().await?; + + assert!( + matches!(response, v2::PruneStatus::Ok), + "Got error response from server {response:?}" + ); + + let response = client.report_proof().await?; + + assert!( + response.is_empty(), + "Proof report is not empty after pruning" + ); + + token.cancel(); + Ok(()) +} diff --git a/host/tests/proof_request.rs b/host/tests/proof_request.rs new file mode 100644 index 000000000..ba89f0cfa --- /dev/null +++ b/host/tests/proof_request.rs @@ -0,0 +1,20 @@ +mod common; + +#[tokio::test] +#[cfg(feature = "integration")] +async fn run_scenarios_sequentially() -> anyhow::Result<()> { + use crate::common::scenarios::{ + test_v1_api_format, test_v2_api_response, test_v2_cancellation, test_v2_prune, + test_v2_report, + }; + + let cwd = std::env::current_dir()?; + let main_dir = cwd.join("../"); + std::env::set_current_dir(main_dir)?; + test_v2_prune().await?; + test_v2_report().await?; + test_v1_api_format().await?; + test_v2_api_response().await?; + test_v2_cancellation().await?; + Ok(()) +} diff --git a/lib/src/builder.rs b/lib/src/builder.rs index 853dcc2e1..3269f98bb 100644 --- a/lib/src/builder.rs +++ b/lib/src/builder.rs @@ -12,7 +12,9 @@ use crate::{ CycleTracker, }; use anyhow::{bail, ensure, Result}; -use reth_chainspec::{ChainSpecBuilder, HOLESKY, MAINNET, TAIKO_A7, TAIKO_DEV, TAIKO_MAINNET}; +use reth_chainspec::{ + ChainSpecBuilder, Hardfork, HOLESKY, MAINNET, TAIKO_A7, TAIKO_DEV, TAIKO_MAINNET, +}; use reth_evm::execute::{BlockExecutionOutput, BlockValidationError, Executor, ProviderError}; use reth_evm_ethereum::execute::{ validate_block_post_execution, Consensus, EthBeaconConsensus, EthExecutorProvider, @@ -20,7 +22,7 @@ use reth_evm_ethereum::execute::{ use reth_evm_ethereum::taiko::TaikoData; use reth_primitives::revm_primitives::db::{Database, DatabaseCommit}; use reth_primitives::revm_primitives::{ - Account, AccountInfo, AccountStatus, Bytecode, Bytes, HashMap, + Account, AccountInfo, AccountStatus, Bytecode, Bytes, HashMap, SpecId, }; use reth_primitives::{Address, BlockWithSenders, Header, B256, KECCAK_EMPTY, U256}; use tracing::{debug, error}; @@ -96,11 +98,40 @@ impl + DatabaseCommit + OptimisticDatabase> _ => unimplemented!(), }; + if reth_chain_spec.is_taiko() { + let block_num = self.input.taiko.block_proposed.block_number(); + let block_timestamp = 0u64; // self.input.taiko.block_proposed.block_timestamp(); + let taiko_fork = self + .input + .chain_spec + .spec_id(block_num, block_timestamp) + .unwrap(); + match taiko_fork { + SpecId::HEKLA => { + assert!( + reth_chain_spec + .fork(Hardfork::Hekla) + .active_at_block(block_num), + "evm fork is not active, please update the chain spec" + ); + } + SpecId::ONTAKE => { + assert!( + reth_chain_spec + .fork(Hardfork::Ontake) + .active_at_block(block_num), + "evm fork is not active, please update the chain spec" + ); + } + _ => unimplemented!(), + } + } + // Generate the transactions from the tx list let mut block = self.input.block.clone(); block.body = generate_transactions( &self.input.chain_spec, - self.input.taiko.block_proposed.meta.blobUsed, + self.input.taiko.block_proposed.blob_used(), &self.input.taiko.tx_data, &self.input.taiko.anchor_tx, ); @@ -116,7 +147,7 @@ impl + DatabaseCommit + OptimisticDatabase> l1_header: self.input.taiko.l1_header.clone(), parent_header: self.input.parent_header.clone(), l2_contract: self.input.chain_spec.l2_contract.unwrap_or_default(), - ..Default::default() + base_fee_config: self.input.taiko.block_proposed.base_fee_config(), }) .optimistic(optimistic); let BlockExecutionOutput { diff --git a/lib/src/consts.rs b/lib/src/consts.rs index 0b2a09817..d29c35360 100644 --- a/lib/src/consts.rs +++ b/lib/src/consts.rs @@ -148,7 +148,7 @@ pub struct ChainSpec { pub l2_contract: Option
, pub rpc: String, pub beacon_rpc: Option, - pub verifier_address: BTreeMap>, + pub verifier_address_forks: BTreeMap>>, pub genesis_time: u64, pub seconds_per_slot: u64, pub is_taiko: bool, @@ -173,7 +173,7 @@ impl ChainSpec { l2_contract: None, rpc: "".to_string(), beacon_rpc: None, - verifier_address: BTreeMap::new(), + verifier_address_forks: BTreeMap::new(), genesis_time: 0u64, seconds_per_slot: 1u64, is_taiko, @@ -204,7 +204,7 @@ impl ChainSpec { &self.eip_1559_constants } - fn spec_id(&self, block_no: BlockNumber, timestamp: u64) -> Option { + pub fn spec_id(&self, block_no: BlockNumber, timestamp: u64) -> Option { for (spec_id, fork) in self.hard_forks.iter().rev() { if fork.active(block_no, timestamp) { return Some(*spec_id); @@ -213,6 +213,28 @@ impl ChainSpec { None } + pub fn get_fork_verifier_address( + &self, + block_num: u64, + verifier_type: VerifierType, + ) -> Result
{ + // fall down to the first fork that is active as default + for (spec_id, fork) in self.hard_forks.iter().rev() { + if fork.active(block_num, 0u64) { + if let Some(fork_verifier) = self.verifier_address_forks.get(spec_id) { + return fork_verifier + .get(&verifier_type) + .ok_or_else(|| anyhow!("Verifier type not found")) + .and_then(|address| { + address.ok_or_else(|| anyhow!("Verifier address not found")) + }); + } + } + } + + Err(anyhow!("fork verifier is not active")) + } + pub fn is_taiko(&self) -> bool { self.is_taiko } @@ -249,6 +271,8 @@ impl std::fmt::Display for Network { #[cfg(test)] mod tests { + use reth_primitives::address; + use super::*; #[test] @@ -266,11 +290,82 @@ mod tests { } #[test] - fn revm_taiko_a7_spec_id() { - let taiko_a7_spec = SupportedChainSpecs::default() + fn raiko_active_fork() { + let eth_mainnet_spec = SupportedChainSpecs::default() + .get_chain_spec(&Network::Ethereum.to_string()) + .unwrap(); + assert_eq!( + eth_mainnet_spec.active_fork(0, 0).unwrap(), + SpecId::FRONTIER + ); + assert_eq!( + eth_mainnet_spec.active_fork(15_537_394, 0).unwrap(), + SpecId::MERGE + ); + assert_eq!( + eth_mainnet_spec.active_fork(17_034_869, 0).unwrap(), + SpecId::MERGE + ); + assert_eq!( + eth_mainnet_spec.active_fork(17_034_870, 0).unwrap(), + SpecId::SHANGHAI + ); + + let taiko_mainnet_spec = SupportedChainSpecs::default() + .get_chain_spec(&Network::TaikoMainnet.to_string()) + .unwrap(); + assert_eq!(taiko_mainnet_spec.active_fork(0, 0).unwrap(), SpecId::HEKLA); + assert_eq!( + taiko_mainnet_spec.active_fork(999998, 0).unwrap(), + SpecId::HEKLA + ); + assert_eq!( + taiko_mainnet_spec.active_fork(999999, 0).unwrap(), + SpecId::ONTAKE + ); + } + + #[test] + fn forked_verifier_address() { + let eth_mainnet_spec = SupportedChainSpecs::default() + .get_chain_spec(&Network::Ethereum.to_string()) + .unwrap(); + let verifier_address = eth_mainnet_spec + .get_fork_verifier_address(15_537_394, VerifierType::SGX) + .unwrap(); + assert_eq!( + verifier_address, + address!("532efbf6d62720d0b2a2bb9d11066e8588cae6d9") + ); + + let hekla_mainnet_spec = SupportedChainSpecs::default() .get_chain_spec(&Network::TaikoA7.to_string()) .unwrap(); - assert_eq!(taiko_a7_spec.spec_id(1, 0), Some(SpecId::HEKLA)); + let verifier_address = hekla_mainnet_spec + .get_fork_verifier_address(12345, VerifierType::SGX) + .unwrap(); + assert_eq!( + verifier_address, + address!("532efbf6d62720d0b2a2bb9d11066e8588cae6d9") + ); + let verifier_address = hekla_mainnet_spec + .get_fork_verifier_address(15_537_394, VerifierType::SGX) + .unwrap(); + assert_eq!( + verifier_address, + address!("f6d620d0b2a2bb9d11066e8532efb72588cae6d9") + ); + } + + #[test] + fn forked_none_verifier_address() { + let eth_mainnet_spec = SupportedChainSpecs::default() + .get_chain_spec(&Network::Ethereum.to_string()) + .unwrap(); + let verifier_address = eth_mainnet_spec + .get_fork_verifier_address(15_537_394, VerifierType::None) + .unwrap_or_default(); + assert_eq!(verifier_address, Address::ZERO); } #[ignore] @@ -296,11 +391,14 @@ mod tests { l2_contract: None, rpc: "".to_string(), beacon_rpc: None, - verifier_address: BTreeMap::from([ - (VerifierType::SGX, Some(Address::default())), - (VerifierType::SP1, None), - (VerifierType::RISC0, Some(Address::default())), - ]), + verifier_address_forks: BTreeMap::from([( + SpecId::FRONTIER, + BTreeMap::from([ + (VerifierType::SGX, Some(Address::default())), + (VerifierType::SP1, None), + (VerifierType::RISC0, Some(Address::default())), + ]), + )]), genesis_time: 0u64, seconds_per_slot: 1u64, is_taiko: false, diff --git a/lib/src/input.rs b/lib/src/input.rs index fa756f12a..1b0688b16 100644 --- a/lib/src/input.rs +++ b/lib/src/input.rs @@ -1,9 +1,8 @@ use core::{fmt::Debug, str::FromStr}; -#[cfg(feature = "std")] -use std::path::PathBuf; -use alloy_sol_types::sol; use anyhow::{anyhow, Error, Result}; +use ontake::BlockProposedV2; +use reth_evm_ethereum::taiko::ProtocolBaseFeeConfig; use reth_primitives::{ revm_primitives::{Address, Bytes, HashMap, B256, U256}, Block, Header, TransactionSigned, @@ -56,6 +55,54 @@ impl From<(Block, Header, ChainSpec, TaikoGuestInput)> for GuestInput { } } +#[derive(Clone, Debug, Default, Serialize, Deserialize)] + +pub enum BlockProposedFork { + #[default] + Nothing, + Hekla(BlockProposed), + Ontake(BlockProposedV2), +} + +impl BlockProposedFork { + pub fn blob_used(&self) -> bool { + match self { + BlockProposedFork::Hekla(block) => block.meta.blobUsed, + BlockProposedFork::Ontake(block) => block.meta.blobUsed, + _ => false, + } + } + + pub fn block_number(&self) -> u64 { + match self { + BlockProposedFork::Hekla(block) => block.meta.id, + BlockProposedFork::Ontake(block) => block.meta.id, + _ => 0, + } + } + + pub fn block_timestamp(&self) -> u64 { + match self { + BlockProposedFork::Hekla(block) => block.meta.timestamp, + BlockProposedFork::Ontake(block) => block.meta.timestamp, + _ => 0, + } + } + + pub fn base_fee_config(&self) -> ProtocolBaseFeeConfig { + match self { + BlockProposedFork::Ontake(block) => ProtocolBaseFeeConfig { + adjustment_quotient: block.meta.baseFeeConfig.adjustmentQuotient, + sharing_pctg: block.meta.baseFeeConfig.sharingPctg, + gas_issuance_per_second: block.meta.baseFeeConfig.gasIssuancePerSecond, + min_gas_excess: block.meta.baseFeeConfig.minGasExcess, + max_gas_issuance_per_block: block.meta.baseFeeConfig.maxGasIssuancePerBlock, + }, + _ => ProtocolBaseFeeConfig::default(), + } + } +} + #[serde_as] #[derive(Clone, Debug, Default, Serialize, Deserialize)] pub struct TaikoGuestInput { @@ -63,7 +110,7 @@ pub struct TaikoGuestInput { pub l1_header: Header, pub tx_data: Vec, pub anchor_tx: Option, - pub block_proposed: BlockProposed, + pub block_proposed: BlockProposedFork, pub prover_data: TaikoProverData, pub blob_commitment: Option>, pub blob_proof: Option>, @@ -120,10 +167,6 @@ pub struct TaikoProverData { pub graffiti: B256, } -pub type RawGuestOutput = sol! { - tuple(uint64, address, Transition, address, address, bytes32) -}; - #[serde_as] #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] pub struct GuestOutput { @@ -131,96 +174,17 @@ pub struct GuestOutput { pub hash: B256, } -sol! { - #[derive(Debug, Default, Deserialize, Serialize)] - struct EthDeposit { - address recipient; - uint96 amount; - uint64 id; - } - - #[derive(Debug, Default, Deserialize, Serialize)] - struct BlockMetadata { - bytes32 l1Hash; - bytes32 difficulty; - bytes32 blobHash; //or txListHash (if Blob not yet supported) - bytes32 extraData; - bytes32 depositsHash; - address coinbase; // L2 coinbase - uint64 id; - uint32 gasLimit; - uint64 timestamp; - uint64 l1Height; - uint16 minTier; - bool blobUsed; - bytes32 parentMetaHash; - address sender; - } - - #[derive(Debug, Default, Deserialize, Serialize)] - struct BlockParams { - address assignedProver; - address coinbase; - bytes32 extraData; - bytes32 parentMetaHash; - HookCall[] hookCalls; - } - - #[derive(Debug, Default, Deserialize, Serialize)] - struct HookCall { - address hook; - bytes data; - } - - #[derive(Debug, Default, Deserialize, Serialize)] - struct Transition { - bytes32 parentHash; - bytes32 blockHash; - bytes32 stateRoot; - bytes32 graffiti; - } - - #[derive(Debug, Default, Deserialize, Serialize)] - event BlockProposed( - uint256 indexed blockId, - address indexed assignedProver, - uint96 livenessBond, - BlockMetadata meta, - EthDeposit[] depositsProcessed - ); - - #[derive(Debug)] - struct TierProof { - uint16 tier; - bytes data; - } - - #[derive(Debug)] - function proposeBlock( - bytes calldata params, - bytes calldata txList - ) - {} - - function proveBlock(uint64 blockId, bytes calldata input) {} -} - #[cfg(feature = "std")] use std::path::Path; +#[cfg(feature = "std")] +use std::path::PathBuf; #[cfg(feature = "std")] pub fn get_input_path(dir: &Path, block_number: u64, network: &str) -> PathBuf { dir.join(format!("input-{network}-{block_number}.bin")) } -#[cfg(test)] -mod tests { - extern crate alloc; - use super::*; +mod hekla; +pub mod ontake; - #[test] - fn input_serde_roundtrip() { - let input = GuestInput::default(); - let _: GuestInput = bincode::deserialize(&bincode::serialize(&input).unwrap()).unwrap(); - } -} +pub use hekla::*; diff --git a/lib/src/input/hekla.rs b/lib/src/input/hekla.rs new file mode 100644 index 000000000..decd7256d --- /dev/null +++ b/lib/src/input/hekla.rs @@ -0,0 +1,90 @@ +use core::fmt::Debug; + +use alloy_sol_types::sol; +use serde::{Deserialize, Serialize}; + +sol! { + #[derive(Debug, Default, Deserialize, Serialize)] + struct EthDeposit { + address recipient; + uint96 amount; + uint64 id; + } + + #[derive(Debug, Default, Deserialize, Serialize)] + struct BlockMetadata { + bytes32 l1Hash; + bytes32 difficulty; + bytes32 blobHash; //or txListHash (if Blob not yet supported) + bytes32 extraData; + bytes32 depositsHash; + address coinbase; // L2 coinbase + uint64 id; + uint32 gasLimit; + uint64 timestamp; + uint64 l1Height; + uint16 minTier; + bool blobUsed; + bytes32 parentMetaHash; + address sender; + } + + #[derive(Debug, Default, Deserialize, Serialize)] + struct BlockParams { + address assignedProver; + address coinbase; + bytes32 extraData; + bytes32 parentMetaHash; + HookCall[] hookCalls; + } + + #[derive(Debug, Default, Deserialize, Serialize)] + struct HookCall { + address hook; + bytes data; + } + + #[derive(Debug)] + struct Transition { + bytes32 parentHash; + bytes32 blockHash; + bytes32 stateRoot; + bytes32 graffiti; + } + + #[derive(Debug, Default, Deserialize, Serialize)] + event BlockProposed( + uint256 indexed blockId, + address indexed assignedProver, + uint96 livenessBond, + BlockMetadata meta, + EthDeposit[] depositsProcessed + ); + + #[derive(Debug)] + struct TierProof { + uint16 tier; + bytes data; + } + + #[derive(Debug)] + function proposeBlock( + bytes calldata params, + bytes calldata txList + ) + {} + + function proveBlock(uint64 blockId, bytes calldata input) {} +} + +#[cfg(test)] +mod tests { + extern crate alloc; + use crate::input::GuestInput; + + #[test] + fn input_serde_roundtrip() { + let input = GuestInput::default(); + let _: GuestInput = bincode::deserialize(&bincode::serialize(&input).unwrap()).unwrap(); + } +} diff --git a/lib/src/input/ontake.rs b/lib/src/input/ontake.rs new file mode 100644 index 000000000..06fbd0745 --- /dev/null +++ b/lib/src/input/ontake.rs @@ -0,0 +1,66 @@ +use alloy_sol_types::sol; +use core::fmt::Debug; +use serde::{Deserialize, Serialize}; + +sol! { + #[derive(Debug, Default, Deserialize, Serialize)] + struct BaseFeeConfig { + uint8 adjustmentQuotient; + uint8 sharingPctg; + uint32 gasIssuancePerSecond; + uint64 minGasExcess; + uint32 maxGasIssuancePerBlock; + } + + #[derive(Debug, Default, Deserialize, Serialize)] + struct BlockParamsV2 { + address coinbase; + bytes32 parentMetaHash; + uint64 anchorBlockId; // NEW + uint64 timestamp; // NEW + uint32 blobTxListOffset; // NEW + uint32 blobTxListLength; // NEW + uint8 blobIndex; // NEW + } + + #[derive(Debug, Default, Deserialize, Serialize)] + struct BlockMetadataV2 { + bytes32 anchorBlockHash; // `_l1BlockHash` in TaikoL2's anchor tx. + bytes32 difficulty; + bytes32 blobHash; + bytes32 extraData; + address coinbase; + uint64 id; + uint32 gasLimit; + uint64 timestamp; + uint64 anchorBlockId; // `_l1BlockId` in TaikoL2's anchor tx. + uint16 minTier; + bool blobUsed; + bytes32 parentMetaHash; + address proposer; + uint96 livenessBond; + // Time this block is proposed at, used to check proving window and cooldown window. + uint64 proposedAt; + // L1 block number, required/used by node/client. + uint64 proposedIn; + uint32 blobTxListOffset; + uint32 blobTxListLength; + uint8 blobIndex; + BaseFeeConfig baseFeeConfig; + } + + #[derive(Debug, Default, Deserialize, Serialize)] + event BlockProposedV2(uint256 indexed blockId, BlockMetadataV2 meta); + + #[derive(Debug, Default, Deserialize, Serialize)] + event CalldataTxList(uint256 indexed blockId, bytes txList); + + #[derive(Debug)] + function proposeBlockV2( + bytes calldata _params, + bytes calldata _txList + ) + {} + + function proveBlock(uint64 blockId, bytes calldata input) {} +} diff --git a/lib/src/protocol_instance.rs b/lib/src/protocol_instance.rs index cf9b59422..5036173f7 100644 --- a/lib/src/protocol_instance.rs +++ b/lib/src/protocol_instance.rs @@ -7,7 +7,11 @@ use reth_primitives::Header; use crate::no_std::*; use crate::{ consts::{SupportedChainSpecs, VerifierType}, - input::{BlobProofType, BlockMetadata, EthDeposit, GuestInput, Transition}, + input::{ + ontake::{BlockMetadataV2, BlockProposedV2}, + BlobProofType, BlockMetadata, BlockProposed, BlockProposedFork, EthDeposit, GuestInput, + Transition, + }, primitives::{ eip4844::{self, commitment_to_version_hash}, keccak::keccak, @@ -17,10 +21,116 @@ use crate::{ use log::info; use reth_evm_ethereum::taiko::ANCHOR_GAS_LIMIT; +#[derive(Debug, Clone)] +pub enum BlockMetaDataFork { + None, + Hekla(BlockMetadata), + Ontake(BlockMetadataV2), +} + +impl From<(&GuestInput, &Header, B256, &BlockProposed)> for BlockMetadata { + fn from( + (input, header, tx_list_hash, block_proposed): (&GuestInput, &Header, B256, &BlockProposed), + ) -> Self { + Self { + coinbase: header.beneficiary, + id: header.number, + gasLimit: (header.gas_limit + - if input.chain_spec.is_taiko() { + ANCHOR_GAS_LIMIT + } else { + 0 + }) as u32, + timestamp: header.timestamp, + extraData: bytes_to_bytes32(&header.extra_data).into(), + + l1Hash: input.taiko.l1_header.hash_slow(), + l1Height: input.taiko.l1_header.number, + + blobHash: tx_list_hash, + + depositsHash: keccak(Vec::::new().abi_encode()).into(), + + difficulty: block_proposed.meta.difficulty, + minTier: block_proposed.meta.minTier, + blobUsed: block_proposed.meta.blobUsed, + parentMetaHash: block_proposed.meta.parentMetaHash, + sender: block_proposed.meta.sender, + } + } +} + +impl From<(&GuestInput, &Header, B256, &BlockProposedV2)> for BlockMetadataV2 { + fn from( + (input, header, tx_list_hash, block_proposed): ( + &GuestInput, + &Header, + B256, + &BlockProposedV2, + ), + ) -> Self { + Self { + id: header.number, + coinbase: header.beneficiary, + timestamp: header.timestamp, + gasLimit: (header.gas_limit + - if input.chain_spec.is_taiko() { + ANCHOR_GAS_LIMIT + } else { + 0 + }) as u32, + extraData: bytes_to_bytes32(&header.extra_data).into(), + + anchorBlockId: input.taiko.l1_header.number, + anchorBlockHash: input.taiko.l1_header.hash_slow(), + + blobHash: tx_list_hash, + + difficulty: block_proposed.meta.difficulty, + minTier: block_proposed.meta.minTier, + blobUsed: block_proposed.meta.blobUsed, + parentMetaHash: block_proposed.meta.parentMetaHash, + proposer: block_proposed.meta.proposer, + livenessBond: block_proposed.meta.livenessBond, + proposedAt: block_proposed.meta.proposedAt, + proposedIn: block_proposed.meta.proposedIn, + blobTxListOffset: block_proposed.meta.blobTxListOffset, + blobTxListLength: block_proposed.meta.blobTxListLength, + blobIndex: block_proposed.meta.blobIndex, + baseFeeConfig: block_proposed.meta.baseFeeConfig.clone(), + } + } +} + +impl BlockMetaDataFork { + fn from(input: &GuestInput, header: &Header, tx_list_hash: B256) -> Self { + match &input.taiko.block_proposed { + BlockProposedFork::Nothing => Self::None, + BlockProposedFork::Hekla(block_proposed) => { + Self::Hekla((input, header, tx_list_hash, block_proposed).into()) + } + BlockProposedFork::Ontake(block_proposed_v2) => { + Self::Ontake((input, header, tx_list_hash, block_proposed_v2).into()) + } + } + } + + fn match_block_proposal(&self, other: &BlockProposedFork) -> bool { + match (self, other) { + (Self::Hekla(a), BlockProposedFork::Hekla(b)) => a.abi_encode() == b.meta.abi_encode(), + (Self::Ontake(a), BlockProposedFork::Ontake(b)) => { + a.abi_encode() == b.meta.abi_encode() + } + (Self::None, BlockProposedFork::Nothing) => true, + _ => false, + } + } +} + #[derive(Debug, Clone)] pub struct ProtocolInstance { pub transition: Transition, - pub block_metadata: BlockMetadata, + pub block_metadata: BlockMetaDataFork, pub prover: Address, pub sgx_instance: Address, // only used for SGX pub chain_id: u64, @@ -29,7 +139,7 @@ pub struct ProtocolInstance { impl ProtocolInstance { pub fn new(input: &GuestInput, header: &Header, proof_type: VerifierType) -> Result { - let blob_used = input.taiko.block_proposed.meta.blobUsed; + let blob_used = input.taiko.block_proposed.blob_used(); // If blob is used, tx_list_hash is the commitment to the blob // and we need to verify the blob hash matches the blob data. // If we need to compute the proof of equivalence this data will be set. @@ -65,7 +175,7 @@ impl ProtocolInstance { )?; ensure!(verified); } - crate::input::BlobProofType::KzgVersionedHash => { + BlobProofType::KzgVersionedHash => { let ct = CycleTracker::start("proof_of_commitment"); ensure!( commitment == &eip4844::calc_kzg_proof_commitment(&input.taiko.tx_data)? @@ -114,12 +224,10 @@ impl ProtocolInstance { ); } - let verifier_address = (*input + let verifier_address = input .chain_spec - .verifier_address - .get(&proof_type) - .unwrap_or(&None)) - .unwrap_or_default(); + .get_fork_verifier_address(input.taiko.block_proposed.block_number(), proof_type) + .unwrap_or_default(); let pi = ProtocolInstance { transition: Transition { @@ -128,27 +236,7 @@ impl ProtocolInstance { stateRoot: header.state_root, graffiti: input.taiko.prover_data.graffiti, }, - block_metadata: BlockMetadata { - l1Hash: input.taiko.l1_header.hash_slow(), - difficulty: input.taiko.block_proposed.meta.difficulty, - blobHash: tx_list_hash, - extraData: bytes_to_bytes32(&header.extra_data).into(), - depositsHash: keccak(Vec::::new().abi_encode()).into(), - coinbase: header.beneficiary, - id: header.number, - gasLimit: (header.gas_limit - - if input.chain_spec.is_taiko() { - ANCHOR_GAS_LIMIT - } else { - 0 - }) as u32, - timestamp: header.timestamp, - l1Height: input.taiko.l1_header.number, - minTier: input.taiko.block_proposed.meta.minTier, - blobUsed: blob_used, - parentMetaHash: input.taiko.block_proposed.meta.parentMetaHash, - sender: input.taiko.block_proposed.meta.sender, - }, + block_metadata: BlockMetaDataFork::from(input, header, tx_list_hash), sgx_instance: Address::default(), prover: input.taiko.prover_data.prover, chain_id: input.chain_spec.chain_id, @@ -158,10 +246,11 @@ impl ProtocolInstance { // Sanity check if input.chain_spec.is_taiko() { ensure!( - pi.block_metadata.abi_encode() == input.taiko.block_proposed.meta.abi_encode(), + pi.block_metadata + .match_block_proposal(&input.taiko.block_proposed), format!( "block hash mismatch, expected: {:?}, got: {:?}", - input.taiko.block_proposed.meta, pi.block_metadata + input.taiko.block_proposed, pi.block_metadata ) ); } @@ -175,7 +264,11 @@ impl ProtocolInstance { } pub fn meta_hash(&self) -> B256 { - keccak(self.block_metadata.abi_encode()).into() + match self.block_metadata { + BlockMetaDataFork::None => keccak(vec![]).into(), + BlockMetaDataFork::Hekla(ref meta) => keccak(meta.abi_encode()).into(), + BlockMetaDataFork::Ontake(ref meta) => keccak(meta.abi_encode()).into(), + } } // keccak256(abi.encode(tran, newInstance, prover, metaHash)) diff --git a/makefile b/makefile index d7bb36567..30a07f87b 100644 --- a/makefile +++ b/makefile @@ -12,6 +12,9 @@ test: TEST=1 ./script/build.sh $(TARGET) TEST=1 RUN=1 ./script/build.sh $(TARGET) +integration: + ./script/integration.sh $(TARGET) + fmt: @cargo fmt --all --check @@ -21,4 +24,4 @@ clippy: update: @cargo update cd ./provers/sp1/guest && cargo update - cd ./provers/risc0/guest && cargo update \ No newline at end of file + cd ./provers/risc0/guest && cargo update diff --git a/pipeline/src/builder.rs b/pipeline/src/builder.rs index 7560fcf9d..7282cd858 100644 --- a/pipeline/src/builder.rs +++ b/pipeline/src/builder.rs @@ -128,22 +128,31 @@ pub struct CommandBuilder { impl CommandBuilder { fn get_path_buf(tool: &str, toolchain: &str) -> Option { - let std::io::Result::Ok(std::process::Output { stdout, .. }) = sanitized_cmd("rustup") + match sanitized_cmd("rustup") .args([&format!("+{toolchain}"), "which", tool]) .output() - else { - return None; - }; - - let Ok(out) = String::from_utf8(stdout) else { - return None; - }; - - let out = out.trim(); - - println!("Using {tool}: {out}"); - - Some(PathBuf::from(out)) + { + Ok(output) => { + if output.status.success() { + let stdout = output.stdout; + if let Ok(out) = String::from_utf8(stdout.clone()) { + let out = out.trim(); + println!("Using {tool}: {out}"); + Some(PathBuf::from(out)) + } else { + println!("Command succeeded with unknown output: {:?}", stdout); + None + } + } else { + eprintln!("Command failed with status: {}", output.status); + None + } + } + Err(e) => { + eprintln!("Failed to execute command: {}", e); + None + } + } } pub fn new(meta: &Metadata, target: &str, toolchain: &str) -> Self { diff --git a/provers/risc0/driver/src/methods/ecdsa.rs b/provers/risc0/driver/src/methods/ecdsa.rs index 7fe04062b..fc6693437 100644 --- a/provers/risc0/driver/src/methods/ecdsa.rs +++ b/provers/risc0/driver/src/methods/ecdsa.rs @@ -1,5 +1,5 @@ pub const ECDSA_ELF: &[u8] = include_bytes!("../../../guest/target/riscv32im-risc0-zkvm-elf/release/ecdsa"); pub const ECDSA_ID: [u32; 8] = [ - 1166688769, 1407190737, 3347938864, 1261472884, 3997842354, 3752365982, 4108615966, 2506107654, + 3652025223, 1048803843, 2950123308, 1536068232, 1159324221, 1265391242, 958811727, 4248139033, ]; diff --git a/provers/risc0/driver/src/methods/risc0_guest.rs b/provers/risc0/driver/src/methods/risc0_guest.rs index 82432997a..0ec1a43a9 100644 --- a/provers/risc0/driver/src/methods/risc0_guest.rs +++ b/provers/risc0/driver/src/methods/risc0_guest.rs @@ -1,5 +1,5 @@ pub const RISC0_GUEST_ELF: &[u8] = include_bytes!("../../../guest/target/riscv32im-risc0-zkvm-elf/release/risc0-guest"); pub const RISC0_GUEST_ID: [u32; 8] = [ - 3154357135, 4157790813, 123789652, 116361652, 829137687, 2314522156, 1964429423, 2989684539, + 120620766, 3895849966, 3454466213, 2248933936, 2068139275, 3561387734, 3426824243, 3764143, ]; diff --git a/provers/risc0/driver/src/methods/sha256.rs b/provers/risc0/driver/src/methods/sha256.rs index 4302e7320..22118b337 100644 --- a/provers/risc0/driver/src/methods/sha256.rs +++ b/provers/risc0/driver/src/methods/sha256.rs @@ -1,5 +1,5 @@ pub const SHA256_ELF: &[u8] = include_bytes!("../../../guest/target/riscv32im-risc0-zkvm-elf/release/sha256"); pub const SHA256_ID: [u32; 8] = [ - 1030743442, 3697463329, 2083175350, 1726292372, 629109085, 444583534, 849554126, 3148184953, + 2716313044, 1330228279, 3217062305, 3693970552, 3654025276, 4270078228, 3722528174, 3151280396, ]; diff --git a/provers/risc0/driver/src/methods/test_risc0_guest.rs b/provers/risc0/driver/src/methods/test_risc0_guest.rs index 7db0ebf0e..ad47e6fed 100644 --- a/provers/risc0/driver/src/methods/test_risc0_guest.rs +++ b/provers/risc0/driver/src/methods/test_risc0_guest.rs @@ -1,6 +1,6 @@ pub const TEST_RISC0_GUEST_ELF: &[u8] = include_bytes!( - "../../../guest/target/riscv32im-risc0-zkvm-elf/release/deps/risc0_guest-3bef88267f07d7e2" + "../../../guest/target/riscv32im-risc0-zkvm-elf/release/deps/risc0_guest-4ff36f602a7f8785" ); pub const TEST_RISC0_GUEST_ID: [u32; 8] = [ - 947177299, 3433149683, 3077752115, 1716500464, 3011459317, 622725533, 247263939, 1661915565, + 487317851, 25800719, 3284824055, 1294483162, 678500656, 385631844, 1177387042, 72350148, ]; diff --git a/provers/risc0/guest/Cargo.lock b/provers/risc0/guest/Cargo.lock index 3a21dc909..e51bad347 100644 --- a/provers/risc0/guest/Cargo.lock +++ b/provers/risc0/guest/Cargo.lock @@ -54,9 +54,9 @@ checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" [[package]] name = "alloy-chains" -version = "0.1.23" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1752d7d62e2665da650a36d84abbf239f812534475d51f072a49a533513b7cdd" +checksum = "5b515e82c8468ddb6ff8db21c78a5997442f113fd8471fd5b2261b2602dd0c67" dependencies = [ "alloy-rlp", "num_enum", @@ -130,9 +130,9 @@ dependencies = [ [[package]] name = "alloy-rlp" -version = "0.3.7" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a43b18702501396fa9bcdeecd533bc85fac75150d308fc0f6800a01e6234a003" +checksum = "26154390b1d205a4a7ac7352aa2eb4f81f391399d4e2f546fb81a2f8bb383f62" dependencies = [ "alloy-rlp-derive", "arrayvec", @@ -141,9 +141,9 @@ dependencies = [ [[package]] name = "alloy-rlp-derive" -version = "0.3.7" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d83524c1f6162fcb5b0decf775498a125066c86dda6066ed609531b0e912f85a" +checksum = "4d0f2d905ebd295e7effec65e5f6868d153936130ae718352771de3e7d03c75c" dependencies = [ "proc-macro2", "quote", @@ -212,7 +212,7 @@ dependencies = [ "alloy-sol-macro-input", "const-hex", "heck", - "indexmap 2.2.6", + "indexmap 2.3.0", "proc-macro-error", "proc-macro2", "quote", @@ -281,9 +281,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.14" +version = "0.6.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b" +checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" dependencies = [ "anstyle", "anstyle-parse", @@ -296,36 +296,36 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.7" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "038dfcf04a5feb68e9c60b21c9625a54c2c0616e79b72b0fd87075a056ae1d1b" +checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" [[package]] name = "anstyle-parse" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c03a11a9034d92058ceb6ee011ce58af4a9bf61491aa7e1e59ecd24bd40d22d4" +checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad186efb764318d35165f1758e7dcef3b10628e26d41a44bc5550652e6804391" +checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" dependencies = [ - "windows-sys", + "windows-sys 0.52.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.3" +version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19" +checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" dependencies = [ "anstyle", - "windows-sys", + "windows-sys 0.52.0", ] [[package]] @@ -739,9 +739,9 @@ checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" [[package]] name = "bytemuck" -version = "1.16.1" +version = "1.16.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b236fc92302c97ed75b38da1f4917b5cdda4984745740f153a5d3059e48d725e" +checksum = "102087e286b4677862ea56cf8fc58bb2cdfa8725c40ffb80fe3a008eb7f2fc83" dependencies = [ "bytemuck_derive", ] @@ -765,9 +765,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.6.1" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a12916984aab3fa6e39d655a33e09c0071eb36d6ab3aea5c2d78551f1df6d952" +checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" dependencies = [ "serde", ] @@ -787,9 +787,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.1.6" +version = "1.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2aba8f4e9906c7ce3c73463f62a7f0c65183ada1a2d47e397cc8810827f9694f" +checksum = "504bdec147f2cc13c8b57ed9401fd8a147cc66b67ad5cb241394244f2c947549" [[package]] name = "cfg-if" @@ -814,9 +814,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.9" +version = "4.5.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64acc1846d54c1fe936a78dc189c34e28d3f5afc348403f28ecf53660b9b8462" +checksum = "11d8838454fda655dafd3accb2b6e2bea645b9e4078abe84a22ceb947235c5cc" dependencies = [ "clap_builder", "clap_derive", @@ -824,9 +824,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.9" +version = "4.5.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fb8393d67ba2e7bfaf28a23458e4e2b543cc73a99595511eb207fdb8aede942" +checksum = "216aec2b177652e3846684cbfe25c9964d18ec45234f0f5da5157b207ed1aab6" dependencies = [ "anstream", "anstyle", @@ -836,9 +836,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.8" +version = "4.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bac35c6dafb060fd4d275d9a4ffae97917c13a6327903a8be2153cd964f7085" +checksum = "501d359d5f3dcaf6ecdeee48833ae73ec6e42723a1e52419c79abf9507eec0a0" dependencies = [ "heck", "proc-macro2", @@ -848,15 +848,15 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b82cf0babdbd58558212896d1a4272303a57bdb245c2bf1147185fb45640e70" +checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" [[package]] name = "colorchoice" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422" +checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" [[package]] name = "const-hex" @@ -1116,9 +1116,9 @@ checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" [[package]] name = "dunce" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" [[package]] name = "dyn-clone" @@ -1173,9 +1173,9 @@ dependencies = [ [[package]] name = "enumn" -version = "0.1.13" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fd000fd6988e73bbe993ea3db9b1aa64906ab88766d654973924340c8cddb42" +checksum = "2f9ed6b3789237c8a0c1c505af1c7eb2c560df6186f01b098c3a1064ea532f38" dependencies = [ "proc-macro2", "quote", @@ -1195,7 +1195,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" dependencies = [ "libc", - "windows-sys", + "windows-sys 0.52.0", ] [[package]] @@ -1268,9 +1268,9 @@ dependencies = [ [[package]] name = "flate2" -version = "1.0.30" +version = "1.0.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" +checksum = "7f211bbe8e69bbd0cfdea405084f128ae8b4aaa6b0b522fc8f2b009084797920" dependencies = [ "crc32fast", "miniz_oxide", @@ -1532,9 +1532,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.2.6" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" +checksum = "de3fc2e30ba82dd1b3911c8de1ffc143c74a914a14e99514d7637e3099df5ea0" dependencies = [ "equivalent", "hashbrown 0.14.5", @@ -1543,9 +1543,9 @@ dependencies = [ [[package]] name = "is_terminal_polyfill" -version = "1.70.0" +version = "1.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" [[package]] name = "itertools" @@ -1613,9 +1613,9 @@ dependencies = [ [[package]] name = "keccak-asm" -version = "0.1.1" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47a3633291834c4fbebf8673acbc1b04ec9d151418ff9b8e26dcd79129928758" +checksum = "422fbc7ff2f2f5bdffeb07718e5a5324dca72b0c9293d50df4026652385e3314" dependencies = [ "digest 0.10.7", "sha3-asm", @@ -1867,18 +1867,18 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02339744ee7253741199f897151b38e72257d13802d4ee837285cc2990a90845" +checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" dependencies = [ "num_enum_derive", ] [[package]] name = "num_enum_derive" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "681030a937600a36906c185595136d26abfebb4aa9c65701cefcaf8578bb982b" +checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" dependencies = [ "proc-macro2", "quote", @@ -2005,9 +2005,12 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" -version = "0.2.17" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] [[package]] name = "primitive-types" @@ -2205,9 +2208,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.5" +version = "1.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b91213439dad192326a0d7c6ee3955910425f441d7038e0d6933b0aec5c4517f" +checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" dependencies = [ "aho-corasick", "memchr", @@ -2250,7 +2253,7 @@ checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" [[package]] name = "reth-chainspec" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "alloy-chains", "alloy-eips", @@ -2269,7 +2272,7 @@ dependencies = [ [[package]] name = "reth-codecs" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "alloy-consensus", "alloy-eips", @@ -2284,7 +2287,7 @@ dependencies = [ [[package]] name = "reth-codecs-derive" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "convert_case 0.6.0", "proc-macro2", @@ -2295,7 +2298,7 @@ dependencies = [ [[package]] name = "reth-consensus" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "auto_impl", "reth-primitives", @@ -2305,7 +2308,7 @@ dependencies = [ [[package]] name = "reth-consensus-common" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "reth-chainspec", "reth-consensus", @@ -2315,7 +2318,7 @@ dependencies = [ [[package]] name = "reth-db" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "bytes", "derive_more", @@ -2341,7 +2344,7 @@ dependencies = [ [[package]] name = "reth-db-api" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "bytes", "derive_more", @@ -2360,7 +2363,7 @@ dependencies = [ [[package]] name = "reth-ethereum-consensus" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "reth-chainspec", "reth-consensus", @@ -2372,7 +2375,7 @@ dependencies = [ [[package]] name = "reth-ethereum-forks" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "alloy-chains", "alloy-primitives", @@ -2385,7 +2388,7 @@ dependencies = [ [[package]] name = "reth-evm" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "auto_impl", "futures-util", @@ -2402,7 +2405,7 @@ dependencies = [ [[package]] name = "reth-evm-ethereum" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "alloy-eips", "alloy-sol-types", @@ -2422,7 +2425,7 @@ dependencies = [ [[package]] name = "reth-execution-errors" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "alloy-eips", "alloy-primitives", @@ -2436,7 +2439,7 @@ dependencies = [ [[package]] name = "reth-execution-types" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "reth-execution-errors", "reth-primitives", @@ -2447,7 +2450,7 @@ dependencies = [ [[package]] name = "reth-fs-util" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "serde_json", "thiserror", @@ -2456,7 +2459,7 @@ dependencies = [ [[package]] name = "reth-metrics" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "metrics", "reth-metrics-derive", @@ -2465,7 +2468,7 @@ dependencies = [ [[package]] name = "reth-metrics-derive" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "once_cell", "proc-macro2", @@ -2477,7 +2480,7 @@ dependencies = [ [[package]] name = "reth-primitives" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "alloy-consensus", "alloy-eips", @@ -2511,7 +2514,7 @@ dependencies = [ [[package]] name = "reth-primitives-traits" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "alloy-consensus", "alloy-eips", @@ -2530,7 +2533,7 @@ dependencies = [ [[package]] name = "reth-prune-types" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "alloy-primitives", "bytes", @@ -2544,7 +2547,7 @@ dependencies = [ [[package]] name = "reth-revm" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "alloy-eips", "alloy-rlp", @@ -2562,7 +2565,7 @@ dependencies = [ [[package]] name = "reth-stages-types" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "alloy-primitives", "bytes", @@ -2575,7 +2578,7 @@ dependencies = [ [[package]] name = "reth-static-file-types" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "alloy-primitives", "derive_more", @@ -2586,7 +2589,7 @@ dependencies = [ [[package]] name = "reth-storage-api" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "auto_impl", "reth-chainspec", @@ -2603,7 +2606,7 @@ dependencies = [ [[package]] name = "reth-storage-errors" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "reth-fs-util", "reth-primitives", @@ -2613,7 +2616,7 @@ dependencies = [ [[package]] name = "reth-tracing" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "clap", "eyre", @@ -2628,7 +2631,7 @@ dependencies = [ [[package]] name = "reth-trie" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "alloy-rlp", "auto_impl", @@ -2647,7 +2650,7 @@ dependencies = [ [[package]] name = "reth-trie-common" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "alloy-consensus", "alloy-genesis", @@ -2667,7 +2670,7 @@ dependencies = [ [[package]] name = "revm" version = "9.0.0" -source = "git+https://github.com/taikoxyz/revm.git?branch=v36-taiko#787302e80d35c1b41d62a9119110a281c5dbe1c8" +source = "git+https://github.com/taikoxyz/revm.git?branch=v36-taiko#337a98f982e165c5a84cfc25d965344bfd4081bc" dependencies = [ "auto_impl", "cfg-if", @@ -2745,9 +2748,9 @@ dependencies = [ [[package]] name = "risc0-binfmt" -version = "1.0.3" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3432b33880fd2bb3fcff4f7f4764f782852e839a849f72f1b36ba021e6f15d0" +checksum = "4003dd96f2e323dfef431b21a2aaddee1c6791fc32dea8eb2bff1b438bf5caf6" dependencies = [ "anyhow", "elf", @@ -2759,9 +2762,9 @@ dependencies = [ [[package]] name = "risc0-circuit-recursion" -version = "1.0.3" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adde6018be5b1ba65854fbbf993e44e0dc076893bb5e6e8311d9e606503fca2a" +checksum = "e7c4154d2fbbde5af02a1c35c90340c2749044f5d5cd7834251b616ffa28d467" dependencies = [ "anyhow", "bytemuck", @@ -2773,9 +2776,9 @@ dependencies = [ [[package]] name = "risc0-circuit-rv32im" -version = "1.0.3" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fce940ee68935e3fbe224033fb8dc8447d23dcc7558aaa8bb8c21bc1de73bdf" +checksum = "ce836e7c553e63cbd807d15925ba5dd641a80cdee7d123619eaa60bb555ab014" dependencies = [ "anyhow", "risc0-binfmt", @@ -2788,9 +2791,9 @@ dependencies = [ [[package]] name = "risc0-core" -version = "1.0.3" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be98b31168c4ff7dbe4c2744a1c189fdba6db200b0c581afd1272f0cc0d79aad" +checksum = "047cc26c68c092d664ded7488dcac0462d9e31190e1598a7820fe4246d313583" dependencies = [ "bytemuck", "rand_core", @@ -2798,9 +2801,9 @@ dependencies = [ [[package]] name = "risc0-groth16" -version = "1.0.3" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fa298da93c2a8ea3c92bde5b2e12cbad3c4291bc4a5a70af5f1fd64a12353a5" +checksum = "b3309c7acaf46ed3d21df3841185afd8ea4aab9fb63dbd1974694dfdae276970" dependencies = [ "anyhow", "ark-bn254", @@ -2832,9 +2835,9 @@ dependencies = [ [[package]] name = "risc0-zkp" -version = "1.0.3" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6186432695488efb2eb4794d4074cf1edf381962303ecdd1732e366662f88afe" +checksum = "ae55272541351a2391e5051519b33bfdf41f5648216827cc2cb94a49b6937380" dependencies = [ "anyhow", "blake2", @@ -2854,9 +2857,9 @@ dependencies = [ [[package]] name = "risc0-zkvm" -version = "1.0.3" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ca4ee3b38d873affc146e48c741e5a70533f5ccb1e3b186d8d671459c51d1ba" +checksum = "f234694d9dabc1172cf418b7a3ba65447caad15b994f450e9941d2a7cc89e045" dependencies = [ "anyhow", "bytemuck", @@ -2879,9 +2882,9 @@ dependencies = [ [[package]] name = "risc0-zkvm-platform" -version = "1.0.3" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0494a25344644aea2fe9bdb2f619a28e68eb4aff2c173c723a1331fceac56eea" +checksum = "16735dab52ae8bf0dc30df78fce901b674f469dfd7b5f5dfddd54caea22f14d5" dependencies = [ "bytemuck", "getrandom", @@ -3020,7 +3023,7 @@ dependencies = [ "errno", "libc", "linux-raw-sys", - "windows-sys", + "windows-sys 0.52.0", ] [[package]] @@ -3126,12 +3129,13 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.120" +version = "1.0.122" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e0d21c9a8cae1235ad58a00c11cb40d4b1e5c784f1ef2c537876ed6ffd8b7c5" +checksum = "784b6203951c57ff748476b126ccb5e8e2959a5c19e5c617ab1956be3dbc68da" dependencies = [ - "indexmap 2.2.6", + "indexmap 2.3.0", "itoa", + "memchr", "ryu", "serde", ] @@ -3162,7 +3166,7 @@ dependencies = [ "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.2.6", + "indexmap 2.3.0", "serde", "serde_derive", "serde_json", @@ -3227,9 +3231,9 @@ dependencies = [ [[package]] name = "sha3-asm" -version = "0.1.1" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9b57fd861253bff08bb1919e995f90ba8f4889de2726091c8876f3a4e823b40" +checksum = "57d79b758b7cb2085612b11a235055e485605a5103faccdd633f35bd7aee69dd" dependencies = [ "cc", "cfg-if", @@ -3403,14 +3407,15 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.10.1" +version = "3.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" +checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64" dependencies = [ "cfg-if", "fastrand", + "once_cell", "rustix", - "windows-sys", + "windows-sys 0.59.0", ] [[package]] @@ -3529,9 +3534,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "toml_datetime" -version = "0.6.6" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" [[package]] name = "toml_edit" @@ -3539,7 +3544,7 @@ version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" dependencies = [ - "indexmap 2.2.6", + "indexmap 2.3.0", "toml_datetime", "winnow", ] @@ -3613,9 +3618,9 @@ dependencies = [ [[package]] name = "tracing-logfmt" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22b8e455f6caa5212a102ec530bf86b8dc5a4c536299bffd84b238fed9119be7" +checksum = "6b1f47d22deb79c3f59fcf2a1f00f60cbdc05462bf17d1cd356c1fefa3f444bd" dependencies = [ "time", "tracing", @@ -3743,7 +3748,7 @@ version = "4.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c5afb1a60e207dca502682537fefcfd9921e71d0b83e9576060f09abc6efab23" dependencies = [ - "indexmap 2.2.6", + "indexmap 2.3.0", "serde", "serde_json", "utoipa-gen", @@ -3770,9 +3775,9 @@ checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" [[package]] name = "version_check" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "wait-timeout" @@ -3893,6 +3898,15 @@ dependencies = [ "windows-targets", ] +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets", +] + [[package]] name = "windows-targets" version = "0.52.6" @@ -3981,6 +3995,7 @@ version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ + "byteorder", "zerocopy-derive", ] diff --git a/provers/sgx/guest/src/one_shot.rs b/provers/sgx/guest/src/one_shot.rs index 4c4cfee71..5dec155c7 100644 --- a/provers/sgx/guest/src/one_shot.rs +++ b/provers/sgx/guest/src/one_shot.rs @@ -13,6 +13,7 @@ use raiko_lib::{ }; use secp256k1::{Keypair, SecretKey}; use serde::Serialize; +use serde_json::json; base64_serde_type!(Base64Standard, base64::engine::general_purpose::STANDARD); @@ -68,7 +69,7 @@ fn save_bootstrap_details( quote: hex::encode(quote), }; - println!("{}", serde_json::json!(&bootstrap_details)); + println!("{}", json!(&bootstrap_details)); let json = serde_json::to_string_pretty(&bootstrap_details)?; fs::write(bootstrap_details_file_path, json).context(format!( "Saving bootstrap data file {} failed", @@ -155,7 +156,7 @@ pub async fn one_shot(global_opts: GlobalOpts, args: OneShotArgs) -> Result<()> // Print out the proof and updated public info let quote = get_sgx_quote()?; - let data = serde_json::json!({ + let data = json!({ "proof": format!("0x{proof}"), "quote": hex::encode(quote), "public_key": format!("0x{new_pubkey}"), diff --git a/provers/sgx/setup/src/app_args.rs b/provers/sgx/setup/src/app_args.rs index 459fd04ac..c67e4ad7f 100644 --- a/provers/sgx/setup/src/app_args.rs +++ b/provers/sgx/setup/src/app_args.rs @@ -37,6 +37,10 @@ pub struct BootstrapArgs { #[arg(long, default_value = "taiko_a7")] pub network: String, + + /// block_num to get the verifier address for different fork + #[arg(long, default_value = "0")] + pub block_num: u64, } fn get_default_raiko_user_config_path(subdir: &str) -> PathBuf { diff --git a/provers/sgx/setup/src/setup_bootstrap.rs b/provers/sgx/setup/src/setup_bootstrap.rs index 2ae7a419d..6747f531a 100644 --- a/provers/sgx/setup/src/setup_bootstrap.rs +++ b/provers/sgx/setup/src/setup_bootstrap.rs @@ -59,15 +59,13 @@ pub(crate) async fn setup_bootstrap( // clean check file remove_instance_id(&config_dir)?; let bootstrap_proof = bootstrap(secret_dir, gramine_cmd()).await?; + let verifier_address = taiko_chain_spec + .get_fork_verifier_address(bootstrap_args.block_num, VerifierType::SGX)?; let register_id = register_sgx_instance( &bootstrap_proof.quote, &l1_chain_spec.rpc, l1_chain_spec.chain_id, - taiko_chain_spec - .verifier_address - .get(&VerifierType::SGX) - .unwrap() - .unwrap(), + verifier_address, ) .await .map_err(|e| anyhow::Error::msg(e.to_string()))?; diff --git a/provers/sp1/guest/Cargo.lock b/provers/sp1/guest/Cargo.lock index 06046e331..3f00879a3 100644 --- a/provers/sp1/guest/Cargo.lock +++ b/provers/sp1/guest/Cargo.lock @@ -1066,7 +1066,7 @@ checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125" [[package]] name = "ecdsa" version = "0.16.9" -source = "git+https://github.com/sp1-patches/signatures?branch=patch-ecdsa-v0.16.9#1caae137b2b2c458b8a542b1c4e9fb40293c67a3" +source = "git+https://github.com/sp1-patches/signatures?branch=patch-ecdsa-v0.16.9#de1b108e8140dcb86ecf56f1215ac4b7fab6fcd8" dependencies = [ "anyhow", "cfg-if", @@ -1076,7 +1076,7 @@ dependencies = [ "hex-literal", "rfc6979", "signature", - "sp1-lib 1.1.1", + "sp1-lib 1.2.0-rc2", "spki", ] @@ -2533,7 +2533,7 @@ checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" [[package]] name = "reth-chainspec" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "alloy-chains", "alloy-eips", @@ -2552,7 +2552,7 @@ dependencies = [ [[package]] name = "reth-codecs" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "alloy-consensus", "alloy-eips", @@ -2567,7 +2567,7 @@ dependencies = [ [[package]] name = "reth-codecs-derive" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "convert_case 0.6.0", "proc-macro2", @@ -2578,7 +2578,7 @@ dependencies = [ [[package]] name = "reth-consensus" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "auto_impl", "reth-primitives", @@ -2588,7 +2588,7 @@ dependencies = [ [[package]] name = "reth-consensus-common" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "reth-chainspec", "reth-consensus", @@ -2598,7 +2598,7 @@ dependencies = [ [[package]] name = "reth-db" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "bytes", "derive_more", @@ -2624,7 +2624,7 @@ dependencies = [ [[package]] name = "reth-db-api" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "bytes", "derive_more", @@ -2643,7 +2643,7 @@ dependencies = [ [[package]] name = "reth-ethereum-consensus" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "reth-chainspec", "reth-consensus", @@ -2655,7 +2655,7 @@ dependencies = [ [[package]] name = "reth-ethereum-forks" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "alloy-chains", "alloy-primitives", @@ -2668,7 +2668,7 @@ dependencies = [ [[package]] name = "reth-evm" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "auto_impl", "futures-util", @@ -2685,7 +2685,7 @@ dependencies = [ [[package]] name = "reth-evm-ethereum" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "alloy-eips", "alloy-sol-types", @@ -2705,7 +2705,7 @@ dependencies = [ [[package]] name = "reth-execution-errors" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "alloy-eips", "alloy-primitives", @@ -2719,7 +2719,7 @@ dependencies = [ [[package]] name = "reth-execution-types" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "reth-execution-errors", "reth-primitives", @@ -2730,7 +2730,7 @@ dependencies = [ [[package]] name = "reth-fs-util" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "serde_json", "thiserror", @@ -2739,7 +2739,7 @@ dependencies = [ [[package]] name = "reth-metrics" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "metrics", "reth-metrics-derive", @@ -2748,7 +2748,7 @@ dependencies = [ [[package]] name = "reth-metrics-derive" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "once_cell", "proc-macro2", @@ -2760,7 +2760,7 @@ dependencies = [ [[package]] name = "reth-primitives" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "alloy-consensus", "alloy-eips", @@ -2794,7 +2794,7 @@ dependencies = [ [[package]] name = "reth-primitives-traits" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "alloy-consensus", "alloy-eips", @@ -2813,7 +2813,7 @@ dependencies = [ [[package]] name = "reth-prune-types" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "alloy-primitives", "bytes", @@ -2827,7 +2827,7 @@ dependencies = [ [[package]] name = "reth-revm" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "alloy-eips", "alloy-rlp", @@ -2845,7 +2845,7 @@ dependencies = [ [[package]] name = "reth-stages-types" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "alloy-primitives", "bytes", @@ -2858,7 +2858,7 @@ dependencies = [ [[package]] name = "reth-static-file-types" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "alloy-primitives", "derive_more", @@ -2869,7 +2869,7 @@ dependencies = [ [[package]] name = "reth-storage-api" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "auto_impl", "reth-chainspec", @@ -2886,7 +2886,7 @@ dependencies = [ [[package]] name = "reth-storage-errors" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "reth-fs-util", "reth-primitives", @@ -2896,7 +2896,7 @@ dependencies = [ [[package]] name = "reth-tracing" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "clap", "eyre", @@ -2911,7 +2911,7 @@ dependencies = [ [[package]] name = "reth-trie" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "alloy-rlp", "auto_impl", @@ -2930,7 +2930,7 @@ dependencies = [ [[package]] name = "reth-trie-common" version = "1.0.0-rc.2" -source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#910b6f1cd0b2f09ed33f6d79c5ad266a53d47ce3" +source = "git+https://github.com/taikoxyz/taiko-reth.git?branch=v1.0.0-rc.2-taiko#d1165aab7a38731ec686bef75933b45aa0bb6cd1" dependencies = [ "alloy-consensus", "alloy-genesis", @@ -3010,7 +3010,7 @@ dependencies = [ [[package]] name = "rfc6979" version = "0.4.0" -source = "git+https://github.com/sp1-patches/signatures?branch=patch-ecdsa-v0.16.9#1caae137b2b2c458b8a542b1c4e9fb40293c67a3" +source = "git+https://github.com/sp1-patches/signatures?branch=patch-ecdsa-v0.16.9#de1b108e8140dcb86ecf56f1215ac4b7fab6fcd8" dependencies = [ "hmac", "subtle", @@ -3549,20 +3549,22 @@ dependencies = [ [[package]] name = "sp1-lib" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "839009d6aab5876710e2bc35170d1f328bc70f38992f0037b938623dadfcc61f" +version = "1.2.0-rc1" +source = "git+https://github.com/succinctlabs/sp1?branch=dev#e8efd0019c8be52c6c4cecfea6259ab90db4148a" dependencies = [ "anyhow", "bincode", "cfg-if", + "hex", "serde", + "snowbridge-amcl", ] [[package]] name = "sp1-lib" -version = "1.2.0-rc1" -source = "git+https://github.com/succinctlabs/sp1?branch=dev#e8efd0019c8be52c6c4cecfea6259ab90db4148a" +version = "1.2.0-rc2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b85660c40c7b40a65c706816d9157ef1b084099a80275c9b4d650f53067e667f" dependencies = [ "anyhow", "bincode", diff --git a/provers/sp1/guest/Cargo.toml b/provers/sp1/guest/Cargo.toml index 6d2e6271d..efa74446b 100644 --- a/provers/sp1/guest/Cargo.toml +++ b/provers/sp1/guest/Cargo.toml @@ -38,7 +38,7 @@ sp1-core = { version = "1.1.1"} sha2-v0-10-8 = { git = "https://github.com/sp1-patches/RustCrypto-hashes", package = "sha2", branch = "patch-v0.10.8" } secp256k1 = { git = "https://github.com/sp1-patches/rust-secp256k1", branch = "patch-secp256k1-v0.29.0" } harness-core = { path = "../../../harness/core" } -harness = { path = "../../../harness/macro", features = ["sp1"]} +harness = { path = "../../../harness/macro", features = ["sp1"] } substrate-bn = "0.6.0" revm-precompile = { git = "https://github.com/taikoxyz/revm.git", branch = "v36-taiko", default-features = false, features = [ "taiko", @@ -48,7 +48,7 @@ revm-precompile = { git = "https://github.com/taikoxyz/revm.git", branch = "v36- bincode = "1.3.3" reth-primitives = { git = "https://github.com/taikoxyz/taiko-reth.git", branch = "v1.0.0-rc.2-taiko", default-features = false, features = ["alloy-compat", "taiko"] } lazy_static = "1.4.0" -num-bigint = {version = "0.4.6", default-features = false} +num-bigint = { version = "0.4.6", default-features = false } [patch.crates-io] revm = { git = "https://github.com/taikoxyz/revm.git", branch = "v36-taiko" } @@ -67,5 +67,5 @@ bn = { package = "substrate-bn", git = "https://github.com/sp1-patches/bn", bran default = ["sp1-cycle-tracker"] sp1-cycle-tracker = [ "raiko-lib/sp1-cycle-tracker", - "revm-precompile/sp1-cycle-tracker" + "revm-precompile/sp1-cycle-tracker", ] diff --git a/provers/sp1/guest/elf/bn254-add b/provers/sp1/guest/elf/bn254-add index 3d419857b..114558550 100755 Binary files a/provers/sp1/guest/elf/bn254-add and b/provers/sp1/guest/elf/bn254-add differ diff --git a/provers/sp1/guest/elf/bn254-mul b/provers/sp1/guest/elf/bn254-mul index 8b78759fe..f33e21df2 100755 Binary files a/provers/sp1/guest/elf/bn254-mul and b/provers/sp1/guest/elf/bn254-mul differ diff --git a/provers/sp1/guest/elf/ecdsa b/provers/sp1/guest/elf/ecdsa index 58e8f7f73..e3e748bc2 100755 Binary files a/provers/sp1/guest/elf/ecdsa and b/provers/sp1/guest/elf/ecdsa differ diff --git a/provers/sp1/guest/elf/sha256 b/provers/sp1/guest/elf/sha256 index 65fb30f52..1bed49cb0 100755 Binary files a/provers/sp1/guest/elf/sha256 and b/provers/sp1/guest/elf/sha256 differ diff --git a/provers/sp1/guest/elf/sp1-guest b/provers/sp1/guest/elf/sp1-guest index 61c1da8eb..68548e1f7 100755 Binary files a/provers/sp1/guest/elf/sp1-guest and b/provers/sp1/guest/elf/sp1-guest differ diff --git a/provers/sp1/guest/elf/test-sp1-guest b/provers/sp1/guest/elf/test-sp1-guest index fbd754514..de5de6508 100755 Binary files a/provers/sp1/guest/elf/test-sp1-guest and b/provers/sp1/guest/elf/test-sp1-guest differ diff --git a/script/ci-env-check.sh b/script/ci-env-check.sh new file mode 100755 index 000000000..fa3867ba1 --- /dev/null +++ b/script/ci-env-check.sh @@ -0,0 +1,40 @@ +#!/bin/bash + +echo "=== CI Environment Diagnostics ===" + +echo "Checking for wget:" +if command -v wget &> /dev/null; then + echo "wget is available. Version:" + wget --version | head -n 1 +else + echo "wget is not available." +fi + +echo -e "\nChecking for package managers:" +for pkg_manager in apt-get yum apk dnf zypper; do + if command -v $pkg_manager &> /dev/null; then + echo "$pkg_manager is available." + else + echo "$pkg_manager is not available." + fi +done + +echo -e "\nSystem information:" +if [ -f /etc/os-release ]; then + cat /etc/os-release +elif [ -f /etc/lsb-release ]; then + cat /etc/lsb-release +else + echo "Unable to determine OS information." +fi + +echo -e "\nPATH environment variable:" +echo $PATH + +echo -e "\nContents of /usr/bin (first 10 entries):" +ls /usr/bin | head -n 10 + +echo -e "\nCI-related environment variables:" +env | grep -i "ci" || echo "No CI-specific environment variables found." + +echo -e "\n=== End of Diagnostics ===" diff --git a/script/install.sh b/script/install.sh index 79ddcde2c..908259f7b 100755 --- a/script/install.sh +++ b/script/install.sh @@ -3,6 +3,11 @@ # Any error will result in failure set -e +# report the CI image status +if [ -n "$CI" ]; then + source ./script/ci-env-check.sh +fi + # toolchain necessary to compile c-kzg in SP1/risc0 if [ -z "$1" ] || [ "$1" == "sp1" ] || [ "$1" == "risc0" ]; then # Check if the RISC-V GCC prebuilt binary archive already exists @@ -59,8 +64,8 @@ if [ -z "$1" ] || [ "$1" == "risc0" ]; then rzup -v 1.0.1 else echo "/home/runner/.config/.risc0/bin" >> $GITHUB_PATH - echo $GITHUB_PATH - /home/runner/.config/.risc0/bin/rzup -v 1.0.1 + echo $GITHUB_PATH + /home/runner/.risc0/bin/rzup --verbose install fi fi # SP1 diff --git a/script/integration.sh b/script/integration.sh new file mode 100755 index 000000000..f6e090477 --- /dev/null +++ b/script/integration.sh @@ -0,0 +1,63 @@ +#!/usr/bin/env bash + +# Any error will result in failure +set -e + +TOOLCHAIN_RISC0=+nightly-2024-04-18 +TOOLCHAIN_SP1=+nightly-2024-04-18 +TOOLCHAIN_SGX=+nightly-2024-04-18 +export PROOF_TYPE="$1" + +check_toolchain() { + local TOOLCHAIN=$1 + + # Remove the plus sign from the toolchain name + TOOLCHAIN=${TOOLCHAIN#+} + + # Function to check if the toolchain is installed + exist() { + rustup toolchain list | grep "$TOOLCHAIN" >/dev/null + } + + # Main script logic + if exist; then + echo "Toolchain $TOOLCHAIN exists" + else + echo "Installing Rust toolchain: $TOOLCHAIN" + rustup install "$TOOLCHAIN" + fi +} + +if [ "$CPU_OPT" = "1" ]; then + export RUSTFLAGS='-C target-cpu=native' + echo "Enable cpu optimization with host RUSTFLAGS" +fi + +# NATIVE +if [ -z "$1" ] || [ "$1" == "native" ]; then + cargo test -F integration run_scenarios_sequentially +fi + +# SGX +if [ "$1" == "sgx" ]; then + check_toolchain $TOOLCHAIN_SGX + if [ "$MOCK" = "1" ]; then + export SGX_DIRECT=1 + fi + cargo ${TOOLCHAIN_SGX} test -F "sgx integration" run_scenarios_sequentially +fi + +# RISC0 +if [ "$1" == "risc0" ]; then + check_toolchain $TOOLCHAIN_RISC0 + ./script/setup-bonsai.sh + cargo ${TOOLCHAIN_RISC0} run --bin risc0-builder -F test + cargo ${TOOLCHAIN_RISC0} test -F "risc0 integration" run_scenarios_sequentially +fi + +# SP1 +if [ "$1" == "sp1" ]; then + check_toolchain $TOOLCHAIN_SP1 + cargo ${TOOLCHAIN_SP1} run --bin sp1-builder + cargo ${TOOLCHAIN_SP1} test -F "sp1 integration" run_scenarios_sequentially +fi diff --git a/tasks/src/lib.rs b/tasks/src/lib.rs index 3366a8520..2abd2e741 100644 --- a/tasks/src/lib.rs +++ b/tasks/src/lib.rs @@ -11,7 +11,7 @@ use raiko_lib::{ prover::{IdStore, IdWrite, ProofKey, ProverResult}, }; use rusqlite::Error as SqlError; -use serde::Serialize; +use serde::{Deserialize, Serialize}; use utoipa::ToSchema; use crate::{adv_sqlite::SqliteTaskManager, mem_db::InMemoryTaskManager}; @@ -61,7 +61,7 @@ impl From for TaskManagerError { #[allow(non_camel_case_types)] #[rustfmt::skip] -#[derive(PartialEq, Debug, Copy, Clone, IntoPrimitive, FromPrimitive, Serialize, ToSchema)] +#[derive(PartialEq, Debug, Copy, Clone, IntoPrimitive, FromPrimitive, Deserialize, Serialize, ToSchema)] #[repr(i32)] #[serde(rename_all = "snake_case")] pub enum TaskStatus { @@ -81,7 +81,7 @@ pub enum TaskStatus { SqlDbCorruption = -99999, } -#[derive(Debug, Clone, Serialize, PartialEq, Eq, Hash)] +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)] pub struct TaskDescriptor { pub chain_id: ChainId, pub blockhash: B256, diff --git a/tasks/tests/main.rs b/tasks/tests/main.rs index 7214a546c..5dfee896f 100644 --- a/tasks/tests/main.rs +++ b/tasks/tests/main.rs @@ -43,6 +43,7 @@ mod tests { proof_type, prover_args, blob_proof_type: BlobProofType::ProofOfEquivalence, + l1_inclusion_block_number: 0, }, ) }