Expand description
This library implements Nova, a high-speed recursive SNARK.
Modules
- Global Nova constants
- This module defines errors returned by the library.
- This module implements various gadgets necessary for Nova and applications built with Nova.
- This module implements Nova’s traits using the following several different combinations
- This module defines R1CS related types and a folding scheme for Relaxed R1CS
- This module implements
RelaxedR1CSSNARKTrait
using Spartan that is generic over the polynomial commitment and evaluation argument (i.e., a PCS) We provide two implementations, one in snark.rs (which does not use any preprocessing) and another in ppsnark.rs (which uses preprocessing to keep the verifier’s state small if the PCS provides a succinct verifier) We also provide direct.rs that allows proving a step circuit directly with either of the two SNARKs. - SuperNova Description
- This module defines various traits required by the users of the library to implement.
Macros
- This implementation behaves in ways specific to the halo2curves suite of curves in:
- Macros to give syntactic sugar for zipWith pattern and variatns.
- Like
zip_with
but usefor_each
instead ofmap
.
Structs
- A type that holds parameters for the primary and secondary circuits of Nova and SuperNova
- A SNARK that proves the knowledge of a valid
RecursiveSNARK
- A type that holds the prover key for
CompressedSNARK
- A type that holds public parameters of Nova
- A SNARK that proves the correct execution of an incremental computation
- A resource buffer for
RecursiveSNARK
for storing scratch values that are computed byprove_step
, which allows the reuse of memory allocations and avoids unnecessary new allocations in the critical section. - A type that holds the verifier key for
CompressedSNARK
Functions
- Compute the circuit digest of a StepCircuit.