Learn about OpenVM
Introduction to OpenVM
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. Developers can use OpenVM to generate ZK proofs that verify the execution of arbitrary Rust programs, accelerate proving with custom VM extensions, and verify proofs on-chain efficiently. OpenVM ships with:
- A Rust frontend supporting std and no-std programs via compilation to RISC-V.
- Verification of unbounded length programs via continuations and proof aggregation.
- A Solidity verifier to efficiently verify OpenVM proofs in EVM.
- A robust set of VM extensions allowing developers to efficiently verify operations like the following efficiently from within standard Rust programs:
- SHA2-256 and Keccak hashes.
- Elliptic curve operations over short Weierstrass curves including ECDSA on secp256k1 and secp256r1.
- Optimal Ate pairing on curves including BN254 and BLS12-381.
- Int256 and modular arithmetic over arbitrary moduli.
- STARK recursion.
To learn more about OpenVM, you can check out:
- Developer Quickstart: A developer-focused guide to proving your first Rust program with OpenVM.
- Developer Book: A guide for using OpenVM to prove arbitrary code execution in Rust and for customizing OpenVM by adding program-specific VM extensions.
- Whitepaper and Specifications: A formal specification for OpenVM including details on the proof system, no-CPU architecture, continuations design, and soundness analysis.
- OpenVM GitHub: The source code for OpenVM.
To chat with other developers building with OpenVM, join the OpenVM Developer Chat.