Module poly_commitment::kzg

source ·
Expand description

This module implements the KZG protocol described in the paper Constant-Size Commitments to Polynomials and Their Applications by Kate, Zaverucha and Goldberg, often referred to as the KZG10 paper.

The protocol requires a structured reference string (SRS) that contains powers of a generator of a group, and a pairing friendly curve.

The pairing friendly curve requirement is hidden in the Pairing trait parameter.

Structs

  • Define a structured reference string (i.e. SRS) for the KZG protocol. The SRS consists of powers of an element g^x for some toxic waste x.

Functions

  • Combine the (chunked) evaluations of multiple polynomials. This function returns the accumulation of the evaluations, scaled by polyscale. If no evaluation is given, the function returns an empty vector. It does also suppose that for each evaluation, the number of evaluations is the same. It is not constrained yet in the interface, but it should be. If one list has not the same size, it will be shrunk to the size of the first element of the list. For instance, if we have 3 polynomials P1, P2, P3 evaluated at the points ζ and ζω (like in vanilla PlonK), and for each polynomial, we have two chunks, i.e. we have