OpenVM Stark Backend
July 2, 2026 ยท View on GitHub
A modular proof system backend for proving and verifying multi-chip circuits with inter-chip communication.
The backend is designed to be modular and compatible with different proof systems, with a focus on performance and extensibility. The aim is to support different circuit representations and permutation/lookup arguments.
Crates
openvm-stark-backend: General purpose STARK proving system with multi-trace and logup support, using the SWIRL proof system.openvm-codec-derive: Procedural macros for encoding and decoding of proof types.openvm-stark-sdk: Low-level SDK for use with STARK backend to generate proofs for specific STARK configurations.openvm-cpu-backend: Optimized row-major CPU prover backend for the SWIRL proof system.openvm-cuda-builder: Build utilities and CUDA detection crate, meant to be imported as a build dependency in crates that use CUDA.openvm-cuda-common: Shared headers (.cuh/.hfiles) and CUDA utilities library.openvm-cuda-backend: CUDA implementation of a STARK prover backend using all of the previous crates.openvm-backend-tests: Shared backend-generic test suite for the SWIRL proof system.
Contributors should read Development without CUDA and Development with CUDA for instructions on how to set up their development environments.
Status
As of July 2026, STARK Backend v2.0.0 and later are recommended for production use. STARK Backend uses the SWIRL proof system and completed an external audit by zkSecurity.
Security
See SECURITY.md.
Acknowledgements
We studied and built upon the work of other teams in our quest to design a modular and performant proving framework. We would like to thank these teams for sharing their code for open source development:
- Plonky3: This codebase is built on top of Plonky3, where we have heavily benefited from their modular design at the polynomial IOP level.
- Valida: Valida introduced the exceptionally elegant interactions interface for multi-chip communication via logup permutation arguments. We have found this interface quite well thought out and have built upon and extended it.
- SP1: We learned from SP1's
AirBuilderdesigns, and the original design for theInteractionBuilderwas inspired by them. - Risc0: We used some of Risc0's open source CUDA kernels as the starting point for our own CUDA kernels.
- Supranational: We ported and modified sppark's open source NTT CUDA kernels for use in our CUDA backend.
- Scroll: Members of the Scroll team made foundational contributions to the CUDA backend.