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.
openvm-stark-backend
: General purpose STARK proving system with multi-trace and logup support, built on top of Plonky3.openvm-stark-sdk
: Low-level SDK for use with STARK backend to generate proofs for specific STARK configurations.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/.h
files) and CUDA utilities library.openvm-cuda-backend
: CUDA implementation of a STARK prover backend using all of the previous crates.
Contributors should read Development without CUDA and Development with CUDA for instructions on how to set up their development environments.
As of June 2025, STARK Backend v1.1.0 and later are recommended for production use. STARK Backend completed an external audit on Cantina from January to March 2025 as well as an internal audit by members of the Axiom team during the same timeframe.
See SECURITY.md.
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. We extend Plonky3 by providing higher level interfaces for proving multi-chip circuits.
- 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
AirBuilder
designs, and the original design for theInteractionBuilder
was 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.