A performant and modular zkVM framework built for customization and extensibility
OpenVM is an open-source zero-knowledge virtual machine (zkVM) framework focused on modularity at every level of the stack. OpenVM is designed for customization and extensibility without sacrificing performance or maintainability.
-
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 and SHA2-256 hash functions
- 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.
The following chapters will guide you through:
- Getting started.
- Writing applications in Rust targeting OpenVM and generating proofs.
- Using existing extensions to optimize your Rust programs.
- How to add custom VM extensions.
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.
📖 About this book
The book is continuously rendered here! You can contribute to this book on GitHub.