Expand description

A crate for polynomial commitment schemes.


pub use data_structures::*;
pub use error::*;


Data structures used by a polynomial commitment scheme.

Errors pertaining to query sets.

The core [KZG10] construction.

Polynomial commitment scheme from [KZG10] that enforces strict degree bounds and (optionally) enables 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).


Helper macro to forward all derived implementations to the ToBytes and FromBytes traits


A proof of satisfaction of linear combinations.

An allocated version of Evaluations.

A labeled point variable, for queries to a polynomial commitment.

An allocated version of LinearCombination.

A collection of random data used in the polynomial commitment checking.

Stores a polynomial in coefficient form.

An allocated version of QuerySet.


A coefficient of LinearCombination.


Describes the interface for a gadget for a PolynomialCommitment verifier.

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.


Evaluate the given polynomials at query_set.

Type Definitions

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).

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.