-
Notifications
You must be signed in to change notification settings - Fork 130
feat(l2): prover backend for OpenVM #5412
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
Conversation
Co-authored-by: Ivan Litteri <[email protected]>
This reverts commit eac58e6.
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 integrates OpenVM as a new prover backend for L1 proving in the L2 system. The implementation adds OpenVM guest programs, backend modules, and KZG cryptographic support using openvm-kzg.
Key changes:
- Adds OpenVM guest program with stateless execution support
- Implements OpenVM prover backend with compressed and Groth16 proof formats
- Integrates
openvm-kzgas an alternative toc-kzgfor KZG operations - Adds CI workflow support for OpenVM backend testing
Reviewed changes
Copilot reviewed 16 out of 18 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| crates/l2/prover/src/guest_program/src/openvm/src/main.rs | Implements the OpenVM guest program entry point with input deserialization and execution |
| crates/l2/prover/src/guest_program/src/openvm/Cargo.toml | Defines guest program dependencies with OpenVM v1.4.1 |
| crates/l2/prover/src/guest_program/src/openvm/openvm_init.rs | Auto-generated OpenVM initialization for algebra and ECC support |
| crates/l2/prover/src/guest_program/src/openvm/openvm.toml | Configuration for OpenVM VM including supported curves and cryptographic primitives |
| crates/l2/prover/src/guest_program/build.rs | Adds build logic for compiling OpenVM guest programs |
| crates/l2/prover/src/backend/openvm.rs | Implements OpenVM backend with execute, prove, and batch proof functions |
| crates/l2/prover/src/backend/mod.rs | Registers OpenVM as a new backend option |
| crates/l2/prover/src/lib.rs | Integrates OpenVM backend into prover's main execution flow |
| crates/common/crypto/kzg.rs | Adds OpenVM-KZG support with conditional compilation for different KZG implementations |
| crates/common/crypto/Cargo.toml | Adds openvm-kzg dependency |
| .github/workflows/pr-main_l2_prover.yaml | Adds CI job for OpenVM backend testing |
| crates/l2/prover/Cargo.toml | Adds OpenVM SDK and related dependencies |
| crates/vm/levm/Cargo.toml | Adds openvm feature flag |
| crates/vm/Cargo.toml | Adds openvm feature flag propagation |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
an OpenVM backend was added for ethrex-prover in lambdaclass/ethrex#5412. This PR adds supports to use it with ethrex-replay --------- Co-authored-by: ilitteri <[email protected]> Co-authored-by: ilitteri <[email protected]> Co-authored-by: Ivan Litteri <[email protected]>
an OpenVM backend was added for ethrex-prover in lambdaclass/ethrex#5412. This PR adds supports to use it with ethrex-replay --------- Co-authored-by: ilitteri <[email protected]> Co-authored-by: ilitteri <[email protected]> Co-authored-by: Ivan Litteri <[email protected]>
Motivation
Integrates OpenVM as a new prover backend. For now it only supports L1 proving, until we can implement blob verification using
openvm-kzg.Currently proving is slow as we didn't yet use the guest libraries/precompiles for crypto primitives.
L2 block proving is not supported for now. The issue blocking this is that openvm-kzg does not support blob KZG proof verification.
Description
openvm-kzgbecause of the guest incompatibility withc-kzgandkzg-rs.