Crate spartan2

source ·
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 commitments Group with pasta curves and BN256/Grumpkin RO traits with Poseidon EvaluationEngine 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