Module snarkvm_algorithms::polycommit::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
A proof of satisfaction of linear combinations.
Evaluation proof at a query set.
CommitterKey
is used to commit to, and create evaluation proofs for, a given polynomial.A commitment along with information about its degree bound (if any).
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.
A labeled linear combinations of polynomials.
PreparedVerifierKey
is used to check evaluation proofs for a given commitment.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”].
VerifierKey
is used to check evaluation proofs for a given commitment.Enums
A term in a linear combination.
Functions
Evaluate the given polynomials at
query_set
.Type Definitions
Commitment
is the commitment for the KZG10 scheme.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)
.Labels a
LabeledPolynomial
or a LabeledCommitment
.PreparedCommitment
is the prepared commitment for the KZG10 scheme.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
is the randomness for the KZG10 scheme.UniversalParams
are the universal parameters for the KZG10 scheme.