Crate arrabbiata

source ·

Modules

  • This module will be used by the prover to evaluate at a certain point.
  • This file defines a trait similar to [kimchi::curve::KimchiCurve] for Pallas and Vesta. It aims to define all the parameters that are needed by a curve to be used in Arrabbiata. For instance, the sponge parameters, the endomorphism coefficients, etc. The goal of this trait is to parametrize the whole library with the different curves.
  • This module contains the implementation of the IVC scheme in addition to running an arbitrary function that can use up to crate::NUMBER_OF_COLUMNS columns. At the moment, all constraints must be of maximum degree crate::MAX_DEGREE, but it might change in the future.
  • This file will implement a logup argument to allow users performing lookup in their circuits.
  • A prover for the folding/accumulation scheme
  • This module defines methods and structures for setting up the circuit, or in a more theoretical language, the “NP relation” that the circuit will be related to. Note that when mentioning “circuit” in this context, we are referring to a specific user application in addition to the circuit used to encode the verifier.
  • A verifier for the folding/accumulation scheme

Constants

  • The maximum number of bits the fields can be. It is critical as we have some assumptions for the gadgets describing the verifier circuit.
  • The maximum degree of the polynomial that can be represented by the polynomial-time function the library supports.
  • The minimum SRS size required to use Nova, in base 2. Requiring at least 2^16 to perform 16bits range checks.
  • The arity of the multivariate polynomials describing the constraints. We consider, erroneously, that a public input can be considered as a column and fit an entire polynomial. This is subject to change, as most values considered as public inputs at the moment are fixed for the relation. We also suppose that the private inputs on the next row can be used, hence the multiplication by two.
  • The maximum number of columns that can be used in the circuit.
  • The maximum number of public inputs the circuit can use per row We do have 15 for now as we want to compute 5 rounds of poseidon per row using the gadget crate::column::Gadget::Poseidon. In addition to the 12 public inputs required for the rounds, we add 2 more for the values to absorb.
  • The number of selectors used in the circuit.
  • Define the number of values we must absorb when computating the hash to the public IO.
  • The number of rows the verifier circuit requires.