Expand description
This library implements Spartan, a high-speed SNARK.
Modules
- This module defines errors returned by the library.
- This module implements Spartan’s traits using the following configuration:
CommitmentEngine
with Pedersen’s commitmentsGroup
with pasta curves and BN256/GrumpkinRO
traits with PoseidonEvaluationEngine
with an IPA-based polynomial evaluation argument - 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. - This module defines various traits required by the users of the library to implement.
Macros
- Curve ops This implementation behaves in ways specific to the halo2curves suite of curves in:
Structs
- A type that holds the prover key
- A SNARK proving a circuit expressed with bellperson This module provides interfaces to directly prove a step circuit by using Spartan SNARK. In particular, it supports any SNARK that implements RelaxedR1CSSNARK trait (e.g., with the SNARKs implemented in ppsnark.rs or snark.rs).
- A type that holds the verifier key