Expand description
This library implements Spartan, a high-speed SNARK. We currently implement a non-preprocessing version of Spartan that is generic over the polynomial commitment and evaluation argument (i.e., a PCS).
Modules§
- bellpepper
- Support for generating R1CS from Bellpepper
- errors
- This module defines errors returned by the library.
- neutronnova_
zk - This module implements NeutronNova’s folding scheme for folding together a batch of R1CS instances This implementation focuses on a non-recursive version of NeutronNova and targets the case where the batch size is moderately large. Since we are in the non-recursive setting, we simply fold a batch of instances into one (all at once, via multi-folding) and then use Spartan to prove that folded instance. The proof system implemented here provides zero-knowledge via Nova’s folding scheme.
- provider
- This module implements Spartan’s traits using the following several different combinations
- spartan
- This module implements the Spartan SNARK protocol. It provides the prover and verifier keys, as well as the SNARK itself.
- spartan_
zk - This module implements the Spartan zkSNARK protocol. We provide zero-knowledge via Nova’s folding scheme It provides the prover and verifier keys, as well as the zkSNARK itself.
- sumcheck
- This module implements the sum-check protocol used in Spartan.
- traits
- This module defines various traits required by the users of the library to implement.
Macros§
- impl_
traits - Implements Spartan’s traits
- impl_
traits_ no_ dlog_ ext - Implements Spartan’s traits except DlogGroupExt so that the MSM can be implemented differently
- zip_
with - Macros to give syntactic sugar for zipWith pattern and variants.
- zip_
with_ for_ each - Like
zip_withbut usefor_eachinstead ofmap.