Module sonic_pc

Source
Expand description

Polynomial commitment scheme based on the construction in [KZG10], modified to obtain batching and to enforce strict degree bounds by following the approach outlined in [MBKM19, “Sonic”] (more precisely, via the variant in [Gabizon19, “AuroraLight”] that avoids negative G1 powers).

Structs§

BatchLCProof
A proof of satisfaction of linear combinations.
BatchProof
Evaluation proof at a query set.
CommitterKey
CommitterKey is used to commit to, and create evaluation proofs for, a given polynomial.
CommitterUnionKey
CommitterUnionKey is a union of CommitterKeys, useful for multi-circuit batch proofs.
LabeledCommitment
A commitment along with information about its degree bound (if any).
LabeledPolynomial
A polynomial along with information about its degree bound (if any), and the maximum number of queries that will be made to it. This latter number determines the amount of protection that will be provided to a commitment for this polynomial.
LabeledPolynomialWithBasis
LinearCombination
A labeled linear combinations of polynomials.
PolynomialInfo
SonicKZG10
Polynomial commitment based on [KZG10], with degree enforcement and batching taken from [MBKM19, “Sonic”] (more precisely, their counterparts in [Gabizon19, “AuroraLight”] that avoid negative G1 powers). The (optional) hiding property of the commitment scheme follows the approach described in [CHMMVW20, “Marlin”].

Enums§

LCTerm
A term in a linear combination.
PolynomialWithBasis

Functions§

evaluate_query_set
Evaluate the given polynomials at query_set.

Type Aliases§

Commitment
Commitment is the commitment for the KZG10 scheme.
Evaluations
Evaluations is the result of querying a set of labeled polynomials or equations p at a QuerySet Q. It maps each element of Q to the resulting evaluation. That is, if (label, query) is an element of Q, then evaluation.get((label, query)) should equal p[label].evaluate(query).
PolynomialLabel
Labels a LabeledPolynomial or a LabeledCommitment.
QuerySet
QuerySet is the set of queries that are to be made to a set of labeled polynomials/equations p that have previously been committed to. Each element of a QuerySet is a (label, query) pair, where label is the label of a polynomial in p, and query is the field element that p[label] is to be queried at.
Randomness
Randomness is the randomness for the KZG10 scheme.
UniversalParams
UniversalParams are the universal parameters for the KZG10 scheme.