Conversation
There was a problem hiding this comment.
Pull request overview
Updates the repository to SP1 v6 and newer Rust tooling, including changes to prover/client APIs and version routing logic.
Changes:
- Upgrade SP1 crates/tooling to v6.0.2 and update build scripts to the async
sp1-sdkAPI. - Update Rust toolchain/CI to use Rust 1.91 and align “primary version” logic to
sp1-v6. - Adjust node prover + calibrator to async initialization/execution and update related tests.
Reviewed changes
Copilot reviewed 14 out of 16 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| x.sh | Bump cargo prove tool tag to v6.0.2 for program builds |
| rust-toolchain.toml | Update pinned Rust toolchain channel |
| programs/vapp/stf/Cargo.toml | Switch sp1-zkvm to workspace dependency (v6) |
| programs/vapp/aggregation/build.rs | Move build-time key hash generation to async sp1-sdk API |
| programs/vapp/aggregation/Cargo.toml | Update SP1 deps and add tokio for async build script |
| crates/vapp/tests/common/mod.rs | Update test request version strings to v6 |
| crates/vapp/tests/clear.rs | Re-target “non-primary compressed” tests from v6 to v5 |
| crates/vapp/src/state.rs | Change “primary supported version” routing to v6 |
| crates/node/core/src/serial.rs | Update prover initialization + proving flow to async SP1 v6 APIs |
| crates/node/calibrator/src/lib.rs | Make calibrator async and update execution/proving calls for v6 |
| crates/node/calibrator/Cargo.toml | Add async-trait and tokio dev-dependency |
| bin/node/src/main.rs | Await async calibrator/prover initialization and update ELF type |
| Cargo.toml | Bump Rust MSRV + SP1 versions; adjust patches for v6 |
| .github/workflows/pr.yml | Update CI toolchain version |
| .github/actions/setup/action.yml | Update Rust install version and sp1up version |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Upgrades the VApp and prover node from SP1 V5 to SP1 V6. As the majority of proof requests on the network are now SP1 V6, switching V6 to the primary version means a greater percentage of proofs can have the stronger cryptographic security guarantees of native SP1 proof verification, rather than falling back to signature-based verification.
Dependency & Toolchain Changes
sp1-*workspace deps:5.2.3→6.0.2sp1-zkvmdeps consolidated to{ workspace = true }(were hardcoded at5.1.0)1.88→1.91(SP1 V6 minimum)[patch.crates-io]entries (sha2,sha3,tiny-keccak,k256,p256) tosp1-6.0.0tags; removedcrypto-bigint(no longer patched in V6)action.ymlandpr.ymlto install Rust 1.91 and SP1 V6is_primaryVersion Changeis_primary_versioncheck changed fromstarts_with("sp1-v5")tostarts_with("sp1-v6")SP1 V6 API Migration
EnvProver::new(),setup(),execute(),prove()are now asyncspawn_blocking+catch_unwind→tokio::spawn(panics caught viaJoinError)include_elf!now returnsElfenum instead of&[u8]report.gasfield →report.gas()accessorCalibrator::calibrate()trait made asyncbuild.rswrapped intokio::runtimefor asyncsetup()verify_sp1_proofunchanged — V6 preserves the same public API internallyELF Rebuilds
x.shbuild tags updated tov6.0.2riscv32imtoriscv64im-succinct-zkvm-elfTest Plan
cargo check --workspacepasses (excluding zkVM programs which need SP1 toolchain)cargo test --releasepasses (vapp state tests, including V5 backward-compat tests)cargo fmt --checkpasses./x.sh