Crate ark_poly_commit
source ·Expand description
A crate for polynomial commitment schemes.
Re-exports
pub use marlin::marlin_pc;
pub use marlin::marlin_pst13_pc;
pub use data_structures::*;
pub use error::*;
Modules
- Defines the challenge strategies and challenge generator.
- Data structures used by a polynomial commitment scheme.
- Errors pertaining to query sets.
- A polynomial commitment scheme based on the hardness of the discrete logarithm problem in prime-order groups. The construction is detailed in [BCMS20].
- The core [KZG10] construction.
- Univariate and multivariate polynomial commitment schemes which (optionally) enable hiding commitments by following the approach outlined in [CHMMVW20, “Marlin”].
- A random number generator that bypasses some limitations of the Rust borrow checker.
- 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).
- Streaming polynomial commitment based on the construction in [[BCHO22, “Gemini”]][gemini] with batching techniques inspired by [[BDFG20]][bdfg].
Constants
- The size of opening challenges in bits.
Traits
- Describes the interface for univariate polynomials
- Describes the common interface for univariate and multivariate polynomials
- Describes the interface for a polynomial commitment scheme that allows a sender to commit to multiple polynomials and later provide a succinct proof of evaluation for the corresponding commitments at a query set
Q
, while enforcing per-polynomial degree bounds.
Functions
- Evaluate the given polynomials at
query_set
.
Type Definitions
Evaluations
is the result of querying a set of labeled polynomials or equationsp
at aQuerySet
Q
. It maps each element ofQ
to the resulting evaluation. That is, if(label, query)
is an element ofQ
, thenevaluation.get((label, query))
should equalp[label].evaluate(query)
.QuerySet
is the set of queries that are to be made to a set of labeled polynomials/equationsp
that have previously been committed to. Each element of aQuerySet
is a pair of(label, (point_label, point))
, wherelabel
is the label of a polynomial inp
,point_label
is the label for the point (e.g., “beta”), and andpoint
is the location thatp[label]
is to be queried at.