Module commitment

Source
Expand description

This module implements Dlog-based polynomial commitment schema. The following functionality is implemented

  1. Commit to polynomial with its max degree
  2. Open polynomial commitment batch at the given evaluation point and scaling factor scalar producing the batched opening proof
  3. Verify batch of batched opening proofs

Modules§

caml

Structs§

BatchEvaluationProof
Contains the batch evaluation
BlindedCommitment
A commitment to a polynomial with some blinding factors.
Evaluation
Contains the evaluation of a polynomial commitment at a set of points.
PolyComm
Represent a polynomial commitment when the type is instantiated with a curve.

Traits§

CommitmentCurve
A useful trait extending AffineRepr for commitments. Unfortunately, we can’t specify that AffineRepr<BaseField : PrimeField>, so usage of this traits must manually bind G::BaseField: PrimeField.
EndoCurve
A trait extending CommitmentCurve for endomorphisms. Unfortunately, we can’t specify that AffineRepr<BaseField : PrimeField>, so usage of this traits must manually bind G::BaseField: PrimeField.

Functions§

absorb_commitment
b_poly
Returns (1 + chal[-1] x)(1 + chal[-2] x^2)(1 + chal[-3] x^4) … It’s “step 8: Define the univariate polynomial” of appendix A.2 of https://eprint.iacr.org/2020/499
b_poly_coefficients
combine_commitments
This function populates the parameters scalars and points. It iterates over the evaluations and adds each commitment to the vector points. The parameter scalars is populated with the values: rand_base * polyscale^i for each commitment. For instance, if we have 3 commitments, the scalars vector will contain the values
combined_inner_product
Computes the linearization of the evaluations of a (potentially split) polynomial.
shift_scalar
Inside the circuit, we have a specialized scalar multiplication which computes either
squeeze_challenge
squeeze_prechallenge