Install | User Book | Contributor Docs | Crate Docs
OpenVM is a performant and modular zkVM framework built for customization and extensibility.
-
Modular no-CPU Architecture: Unlike traditional machine architectures, the OpenVM architecture has no central processing unit. This design choice allows for seamless integration of custom chips, without forking or modifying the core architecture.
-
Extensible Instruction Set: The instruction set architecture (ISA) is designed to be extended with new custom instructions that integrate directly with the virtual machine. Current extensions available for OpenVM include:
- RISC-V support via RV32IM
- A native field arithmetic extension for proof recursion and aggregation
- The Keccak-256 hash function
- Int256 arithmetic
- Modular arithmetic over arbitrary fields
- Elliptic curve operations, including multi-scalar multiplication and ECDSA scalar multiplication.
- Pairing operations on the BN254 and BLS12-381 curves.
-
Rust Frontend: ISA extensions are directly accessible through a Rust frontend via intrinsic functions, providing a smooth developer experience.
-
On-chain Verification: Every VM made using the framework comes with out-of-the-box support for unbounded program proving with verification on Ethereum.
As of December 2024, OpenVM has not been audited and is currently not recommended for production use. We plan to continue development towards a production-ready release in 2025.
See the Book for more information on how to use OpenVM.
See the Contributor Docs for more information on the project. A good starting point is Project Layout.
OpenVM is a new zkVM design framework. In the process of building it, we studied and learned from the designs and implementations of other projects. We would like to thank these projects for sharing their code for open source development:
- Plonky3: The STARK backend and circuit writing interfaces are built on top of Plonky3, where we benefited from their modular design at the polynomial IOP level.
- Valida: Many ideas around chips and chip interactions were pioneered by Valida and we were greatly inspired by their designs. Some parts of our ISA architecture also had inspirations from their ZK-specific ISA.
- RISC Zero: We are extremely grateful to the RISC Zero team for merging their zkVM focused toolchain into Rust upstream. Our Rust toolchain integration builds upon their work.
- SP1: We gained inspirations from various parts of SP1's design and interfaces. The native compiler and eDSL we use for the Native Field VM Extension originated from their recursion compiler.