Crate spartan2

Crate spartan2 

Source
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_with but use for_each instead of map.