From ce996a9227ff1baf647c5b3a2605a7d39d437e35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Fri, 25 Apr 2025 18:35:10 -0300 Subject: [PATCH 1/3] bump to 4.1.7 --- .github/workflows/main_prover.yaml | 2 +- .github/workflows/pr-main_l2_prover.yaml | 4 ++-- crates/l2/docs/prover.md | 2 +- crates/l2/prover/Cargo.toml | 4 ++-- crates/l2/prover/bench/README.md | 2 +- crates/l2/prover/zkvm/interface/Cargo.toml | 2 +- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/main_prover.yaml b/.github/workflows/main_prover.yaml index e9227e5386..88af9ce14b 100644 --- a/.github/workflows/main_prover.yaml +++ b/.github/workflows/main_prover.yaml @@ -31,7 +31,7 @@ jobs: run: | . "$HOME/.cargo/env" curl -L https://sp1.succinct.xyz | bash - ~/.sp1/bin/sp1up --version 4.1.0 + ~/.sp1/bin/sp1up --version 4.1.7 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 diff --git a/.github/workflows/pr-main_l2_prover.yaml b/.github/workflows/pr-main_l2_prover.yaml index 1da4a89443..b096cbccda 100644 --- a/.github/workflows/pr-main_l2_prover.yaml +++ b/.github/workflows/pr-main_l2_prover.yaml @@ -30,7 +30,7 @@ jobs: - name: RISC-V SP1 toolchain install run: | curl -L https://sp1.succinct.xyz | bash - ~/.sp1/bin/sp1up --version 4.1.0 + ~/.sp1/bin/sp1up --version 4.1.7 - name: Check sp1 run: | cargo check -p ethrex-prover -F sp1 @@ -75,7 +75,7 @@ jobs: - name: RISC-V SP1 toolchain install run: | curl -L https://sp1.succinct.xyz | bash - ~/.sp1/bin/sp1up --version 4.1.0 + ~/.sp1/bin/sp1up --version 4.1.7 - name: Build prover and SP1's zkVM run: | cd crates/l2/prover diff --git a/crates/l2/docs/prover.md b/crates/l2/docs/prover.md index c122e1ff27..b389983668 100644 --- a/crates/l2/docs/prover.md +++ b/crates/l2/docs/prover.md @@ -64,7 +64,7 @@ sequenceDiagram 2. `rzup install cargo-risczero 1.2.0` - [SP1](https://docs.succinct.xyz/docs/sp1/introduction) 1. `curl -L https://sp1up.succinct.xyz | bash` - 2. `sp1up --version 4.1.0` + 2. `sp1up --version 4.1.7` - [Pico](https://docs.brevis.network/) 1. `cargo +nightly install --git https://github.com/brevis-network/pico pico-cli` 2. `rustup install nightly-2024-11-27` diff --git a/crates/l2/prover/Cargo.toml b/crates/l2/prover/Cargo.toml index e5e88416b1..86485ec877 100644 --- a/crates/l2/prover/Cargo.toml +++ b/crates/l2/prover/Cargo.toml @@ -30,8 +30,8 @@ zkvm_interface = { path = "./zkvm/interface", default-features = false } risc0-zkvm = { version = "1.2.2", optional = true } risc0-ethereum-contracts = { version = "1.3.1", optional = true } -sp1-sdk = { version = "4.1.1", optional = true } -sp1-recursion-gnark-ffi = { version = "4.1.1", optional = true } +sp1-sdk = { version = "4.1.7", optional = true } +sp1-recursion-gnark-ffi = { version = "4.1.7", optional = true } pico-sdk = { git = "https://github.com/brevis-network/pico", optional = true, rev = "286feb9878d9e09347852e5bf127b8ff81a2b45c" } [dev-dependencies] diff --git a/crates/l2/prover/bench/README.md b/crates/l2/prover/bench/README.md index 81f1123336..5ef3a51ad4 100644 --- a/crates/l2/prover/bench/README.md +++ b/crates/l2/prover/bench/README.md @@ -2,7 +2,7 @@ ## Usage -1. For now we only support SP1. Install their [toolchain](https://docs.succinct.xyz/docs/sp1/introduction) first. +1. For now we only support SP1. Install their [toolchain](https://docs.succinct.xyz/docs/sp1/introduction) first (version 4.1.7). 2. Run: 1. `make sp1 RPC_URL= BLOCK_NUMBER=` for execution without proving 2. `make prove-sp1 RPC_URL= BLOCK_NUMBER=` for generating a proof. diff --git a/crates/l2/prover/zkvm/interface/Cargo.toml b/crates/l2/prover/zkvm/interface/Cargo.toml index d1b53a6434..556f5bdb7f 100644 --- a/crates/l2/prover/zkvm/interface/Cargo.toml +++ b/crates/l2/prover/zkvm/interface/Cargo.toml @@ -20,7 +20,7 @@ ethrex-trie = { path = "../../../../common/trie", default-features = false } [build-dependencies] risc0-build = { version = "1.2.2", optional = true } -sp1-build = { version = "4.1.1", optional = true } +sp1-build = { version = "4.1.7", optional = true } pico-cli = { git = "https://github.com/brevis-network/pico", optional = true } [package.metadata.risc0] From 00f9b98ad1a61ccd0eb6ecf386463e04d993beb5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Fri, 25 Apr 2025 18:52:43 -0300 Subject: [PATCH 2/3] bump zkvm program version --- crates/l2/prover/zkvm/interface/sp1/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/l2/prover/zkvm/interface/sp1/Cargo.toml b/crates/l2/prover/zkvm/interface/sp1/Cargo.toml index 84b508e6d1..5d8b3129ba 100644 --- a/crates/l2/prover/zkvm/interface/sp1/Cargo.toml +++ b/crates/l2/prover/zkvm/interface/sp1/Cargo.toml @@ -6,7 +6,7 @@ edition = "2021" [workspace] [dependencies] -sp1-zkvm = "4.1.0" +sp1-zkvm = "4.1.7" zkvm_interface = { path = "../" } ethrex-common = { path = "../../../../../common", default-features = false } From 3271f9feae52283d638cff4aa9b0228db35624c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Mon, 5 May 2025 11:27:44 -0300 Subject: [PATCH 3/3] fix(l2): bench crate (#2647) The pipeline was failing because of: 1. some breaking changes (renamed imports) 2. a previously existing bug that we didn't catch until #2516 (we were encoding a leaf node without its leaf flag, so it would be decoded into an extension leaf and produce a panic) 3. we were executing the prover in L2 mode because we depended on ethrex-l2 (and in ethrex-prover, which depends on ethrex-l2), and that crate enables the L2 feature of ethrex-vm by default. - The solution was to make an `l2` feature for ethrex-l2, which isn't ideal. A better (but bigger) solution is proposed in #2662 --- Cargo.lock | 1 - crates/l2/Cargo.toml | 9 +++++---- crates/l2/prover/Cargo.toml | 5 +++-- crates/l2/prover/bench/Cargo.toml | 1 - crates/l2/prover/bench/src/main.rs | 1 - crates/l2/prover/bench/src/rpc/db.rs | 5 ++++- 6 files changed, 12 insertions(+), 10 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index bdd3b9507d..b6286145d6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3322,7 +3322,6 @@ dependencies = [ "clap 4.5.36", "derive_more 1.0.0", "ethrex-common", - "ethrex-l2", "ethrex-levm", "ethrex-prover", "ethrex-rlp", diff --git a/crates/l2/Cargo.toml b/crates/l2/Cargo.toml index 0eb513805e..e9d2685d23 100644 --- a/crates/l2/Cargo.toml +++ b/crates/l2/Cargo.toml @@ -16,11 +16,11 @@ ethereum-types.workspace = true ethrex-common.workspace = true ethrex-rlp.workspace = true ethrex-rpc.workspace = true -ethrex-blockchain = { workspace = true, features = ["l2"] } +ethrex-blockchain.workspace = true ethrex-storage.workspace = true ethrex-storage-rollup.workspace = true ethrex-trie.workspace = true -ethrex-vm = { workspace = true, features = ["l2"] } +ethrex-vm.workspace = true ethrex-levm.workspace = true ethrex-dev = { path = "../../crates/blockchain/dev", default-features = false } ethrex-metrics = { path = "../blockchain/metrics", default-features = false } @@ -37,7 +37,7 @@ directories = "5.0.1" toml = { version = "0.8.19", features = ["parse"] } bincode = "1.3.3" -zkvm_interface = { path = "./prover/zkvm/interface/", features = ["l2"] } +zkvm_interface = { path = "./prover/zkvm/interface/" } [dev-dependencies] rand = "0.8.5" @@ -54,5 +54,6 @@ unnecessary_cast = "warn" panic = "deny" [features] -default = [] +default = ["l2"] metrics = ["ethrex-metrics/l2"] +l2 = ["ethrex-blockchain/l2", "ethrex-vm/l2", "zkvm_interface/l2"] diff --git a/crates/l2/prover/Cargo.toml b/crates/l2/prover/Cargo.toml index c6387a84dd..25a644ca19 100644 --- a/crates/l2/prover/Cargo.toml +++ b/crates/l2/prover/Cargo.toml @@ -23,7 +23,7 @@ ethrex-rlp.workspace = true ethrex-blockchain.workspace = true # l2 -ethrex-l2.workspace = true +ethrex-l2 = { path = "../", default-features = false } ethrex-sdk.workspace = true zkvm_interface = { path = "./zkvm/interface", default-features = false } @@ -56,11 +56,12 @@ risc0 = [ ] sp1 = ["zkvm_interface/sp1", "dep:sp1-sdk"] -gpu = ["risc0-zkvm/cuda", "sp1-sdk/cuda"] +gpu = ["risc0-zkvm?/cuda", "sp1-sdk?/cuda"] l2 = [ "ethrex-vm/l2", "zkvm_interface/l2", "ethrex-blockchain/l2", + "ethrex-l2/l2", ] # the prover can work with either l1 or l2 blocks [lints.clippy] diff --git a/crates/l2/prover/bench/Cargo.toml b/crates/l2/prover/bench/Cargo.toml index edb816968c..f7ad7ccd1f 100644 --- a/crates/l2/prover/bench/Cargo.toml +++ b/crates/l2/prover/bench/Cargo.toml @@ -9,7 +9,6 @@ ethrex-vm.workspace = true ethrex-storage.workspace = true ethrex-rlp.workspace = true ethrex-prover.workspace = true -ethrex-l2.workspace = true ethrex-trie.workspace = true ethrex-levm.workspace = true diff --git a/crates/l2/prover/bench/src/main.rs b/crates/l2/prover/bench/src/main.rs index 96e97243ce..0b5eb0c3e3 100644 --- a/crates/l2/prover/bench/src/main.rs +++ b/crates/l2/prover/bench/src/main.rs @@ -1,7 +1,6 @@ use std::{fs::File, io::Write}; use clap::Parser; -use ethrex_l2::utils::prover::proving_systems::ProverType; use ethrex_prover_bench::{ cache::{load_cache, write_cache, Cache}, rpc::{db::RpcDB, get_block, get_latest_block_number}, diff --git a/crates/l2/prover/bench/src/rpc/db.rs b/crates/l2/prover/bench/src/rpc/db.rs index 6fc04c9d39..bdb1204cfb 100644 --- a/crates/l2/prover/bench/src/rpc/db.rs +++ b/crates/l2/prover/bench/src/rpc/db.rs @@ -542,7 +542,10 @@ fn get_potential_child_nodes(proof: &[NodeRLP], key: &PathRLP) -> Option