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.