Crate ark_poly_commit

source ·
Expand description

A crate for polynomial commitment schemes.

Re-exports

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 multilinear polynomial commitment scheme that converts n-variate multilinear polynomial into n quotient UV polynomial. This scheme is based on hardness of the discrete logarithm in prime-order groups. Construction is detailed in [XZZPD19]xzzpd19 and [[ZGKPP18]][zgkpp18]
  • 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

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

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 pair of (label, (point_label, point)), where label is the label of a polynomial in p, point_label is the label for the point (e.g., “beta”), and and point is the location that p[label] is to be queried at.