Warning: this implementation is experimental and not audited. Please use at your own risk.
This repository contains an implementation of the SuperNova protocol, written in Rust. SuperNova is a novel recursive proof system and an extension of the Nova protocol, which introduces folding schemes to circuit arithmetizations, in order to compress multiple executions of the same circuit into one. SuperNova builds on top of this by introducing a VM-like construction where a prover defines circuits separately for each VM instruction, and folds any executed program into the correct circuits, instruction by instruction.
- R1CS arithmetization
- Vanilla Plonk arithmetization
- Prover/verifier construction
- Tests
Nova and SuperNova are research works done by Srinath Setty (GitHub, Twitter) and Abhiram Kothapalli (and Ioanna Tzialla for Nova), and this repository heavily relies on the earlier implementation of Nova. All credit goes to them!