-
Notifications
You must be signed in to change notification settings - Fork 129
feat(l2): add support for Pico backend #5440
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
Lines of code reportTotal lines added: Detailed view |
Benchmark Results ComparisonNo significant difference was registered for any benchmark run. Detailed ResultsBenchmark Results: BubbleSort
Benchmark Results: ERC20Approval
Benchmark Results: ERC20Mint
Benchmark Results: ERC20Transfer
Benchmark Results: Factorial
Benchmark Results: FactorialRecursive
Benchmark Results: Fibonacci
Benchmark Results: FibonacciRecursive
Benchmark Results: ManyHashes
Benchmark Results: MstoreBench
Benchmark Results: Push
Benchmark Results: SstoreBench_no_opt
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR adds support for the Pico zkVM backend to the ethrex L2 prover infrastructure. Pico requires compilation with nightly Rust, which propagates the nightly requirement to ethrex-prover and ethrex-replay when the pico feature flag is enabled.
Key Changes:
- Added Pico backend implementation with prove, execute, and verify functions
- Integrated Pico guest program with rkyv serialization
- Updated CI workflows to support Pico compilation and testing
- Modified KZG API calls to use new from_slice methods
Reviewed changes
Copilot reviewed 16 out of 18 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| crates/l2/prover/src/backend/pico.rs | New Pico backend implementation with prove/execute/verify functions |
| crates/l2/prover/src/guest_program/src/pico/src/main.rs | Pico guest program entry point using pico_sdk |
| crates/l2/prover/src/guest_program/src/pico/Cargo.toml | Dependencies for Pico guest program with patches for compatibility |
| crates/l2/prover/src/guest_program/build.rs | Build script to compile Pico program using cargo pico |
| crates/vm/levm/Cargo.toml | Added pico feature flag for LEVM |
| crates/common/crypto/kzg.rs | Updated kzg-rs API calls to use from_slice constructors |
| .github/workflows/tag_release.yaml | CI pipeline for building and releasing Pico artifacts |
| .github/workflows/pr-main_l2_prover.yaml | PR validation workflow for Pico backend |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Motivation
To implement the Pico zkVM as a backend for L1 proving.
A particularity of Pico is that it requires compiling
ethrex-proverin nightly (if thepicofeature flag is enabled). This also propagates intoethrex-replay.