Introducing OpenVM

Published

We are excited to announce OpenVM, a novel open-source zkVM framework prioritizing modularity and extensibility across the ISA, toolchain, ZK circuits, and proof system. OpenVM is built for the future of zkVMs, where developers seek customization and extensibility without making tradeoffs on maintainability or performance. The modular OpenVM design addresses these needs by allowing developers to add custom opcodes, circuits, and proof systems, all within the same framework.

OpenVM was initiated by Axiom, Scroll, and individual collaborators including Max Gillett. With this release, we are looking for additional contributors to add support for different proof systems, proving environments, and frontends. We believe an open ecosystem with multiple independent teams collaborating on the same modular framework will provide developers the most future-proof and adaptable zkVM solution amongst continuous innovations in proof system and zkVM design. 

The v0.1 release of OpenVM, available today under MIT license, includes a Rust frontend, proving of arbitrary length programs via aggregation, and efficient onchain verification. The initial set of extensions includes RISC-V via RV32IM, proof aggregation, ECDSA, pairings on BN254 and BLS12-381, int256 and modular arithmetic, and hashes including Keccak and Poseidon2. Developers can integrate their own custom VM extensions by simply importing the OpenVM crates, no repo forks required.

To try out OpenVM, check out the developer book and our code on Github. If you’d like to chat about using or contributing to OpenVM, join the developer Telegram.

Why OpenVM

Existing zkVM solutions are monolithic and developed by single entities, meaning developers face lock-in to vertically integrated stacks and incur the burden of maintaining upstream repo forks to add custom functionality. OpenVM addresses these issues by introducing a new zkVM design paradigm with modularity at each level of the stack, summarized below. A detailed OpenVM design spec is available at the contributor docs.

  • OpenVM supports arbitrary ISAs through VM extensions, which are groups of opcodes interoperating over common memory spaces. All functionality, including RISC-V and proof aggregation support, is implemented through extensions and can be accessed by developers through a Rust frontend.

  • OpenVM introduces a novel no-CPU zkVM design where the execution trace is not materialized in any single ZK circuit. This enables developers to integrate custom extensions without forking or modifying the core OpenVM libraries, minimizing security surface area and maintenance overhead.

  • The modular OpenVM design enables the use of different proof systems for different pieces of the system, enabling developers to experiment with and benefit from proof system improvements without rebuilding the entire zkVM stack.

The end result is that ZK teams building on OpenVM can customize where necessary while still benefiting from zkVM innovations across the stack from a community of different teams. We believe this approach will provide application developers with the most future-proof and performant zkVM solution.

What’s Available Today

The initial v0.1 release of OpenVM is MIT licensed and available today on Github with a user guide at the developer book. It supports:

  • Proving arbitrary Rust code via compilation to RISC-V, continuations, and onchain verification. Both no-std and std Rust programs are supported, with the exclusion of OS-dependent functionality like randomness and file IO. 

  • A feature-rich initial set of VM extensions, including RV32IM, a recursion-focused extension for Baby Bear arithmetic, int256 arithmetic and modular arithmetic over user-specified moduli, hashes including Keccak and Poseidon2, and elliptic curve operations on arbitrary curves including ECDSA on Secp256k1 and optimal Ate pairing on BN254 and BLS12-381.

  • Full support for arbitrary developer-created VM extensions via the same Rust frontend via compilation to custom RISC-V assembly. This includes the ability to execute and prove unbounded programs involving custom user-defined extensions onchain. 

To demonstrate what is currently possible with OpenVM, we integrated the initial VM extensions into revm and reth and generated onchain proofs of the state transition function for mainnet Ethereum blocks. Indicative benchmarks for a representative set of blocks as of the v0.1 release in December 2024 are shown below:

m7a.48xlarge on AWS, details here

Additional features are in development across the stack, including optimized aggregation, usage of different proof systems, and hardware acceleration. We expect significant reductions in cost and latency as we ship these improvements. 

What’s Next

In the coming months, we plan to extend the OpenVM framework and apply it to different use cases:

  • Axiom will continue proof system and zkVM development for OpenVM and will release ZK-enabled products building upon and supporting OpenVM. If you are interested in deeper support while using or customizing OpenVM for your project, get in touch here.

  • Scroll will continue proof system and zkVM development for OpenVM and will use OpenVM in its upcoming zkVM-powered upgrade. Scroll will also explore a new GKR-based zkVM design, Ceno, to be integrated into the OpenVM framework with a common developer frontend. 

  • Other contributors are adding features to OpenVM to target use cases in client-side proving, privacy, and blockchain scalability.

We believe the most flexible, performant, and secure zkVM framework will come from a diverse set of contributors using a shared modular infrastructure for different use cases, and we are excited to work with new contributors with this first public release, either as individuals or teams. If you’d like to contribute to and benefit from adapting OpenVM for your use case, come chat with us on Telegram.

If you want to dive right in, check out:

  • Quickstart guide: A step-by-step introduction to proving your first Rust program using OpenVM.

  • Developer book: A guide for using the full OpenVM framework to prove arbitrary code execution in zkVM and how to customize OpenVM for your needs by integrating a custom extension.

  • OpenVM design spec: Detailed explanations of novel design components in OpenVM including our modular transpiler, no-CPU architecture, variable word size support, and optimized continuations design.

We’re excited to see what extensions or applications you will build with OpenVM!