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
  • A verifier for the folding/accumulation scheme

Constants

  • The number of rows the IVC circuit requires.
  • The maximum number of bits the fields can be. It is critical as we have some assumptions for the gadgets describing the IVC.
  • 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 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::columns::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.