|
Barretenberg
The ZK-SNARK library at the core of Aztec
|
#include <kzg.hpp>
Public Types | |
| using | Curve = Curve_ |
| using | CK = CommitmentKey< Curve > |
| using | VK = VerifierCommitmentKey< Curve > |
| using | Fr = typename Curve::ScalarField |
| using | Commitment = typename Curve::AffineElement |
| using | GroupElement = typename Curve::Element |
| using | Polynomial = bb::Polynomial< Fr > |
| using | VerifierAccumulator = std::array< GroupElement, 2 > |
Static Public Member Functions | |
| template<typename Transcript > | |
| static void | compute_opening_proof (const CK &ck, const ProverOpeningClaim< Curve > &opening_claim, const std::shared_ptr< Transcript > &prover_trancript) |
| Computes the KZG commitment to an opening proof polynomial at a single evaluation point. | |
| template<typename Transcript > | |
| static VerifierAccumulator | reduce_verify (const OpeningClaim< Curve > &claim, const std::shared_ptr< Transcript > &verifier_transcript) |
| Computes the input points for the pairing check needed to verify a KZG opening claim of a single polynomial commitment. This reduction is non-interactive and always succeeds. | |
| template<typename Transcript > | |
| static VerifierAccumulator | reduce_verify_batch_opening_claim (BatchOpeningClaim< Curve > batch_opening_claim, const std::shared_ptr< Transcript > &transcript) |
| Computes the input points for the pairing check needed to verify a KZG opening claim obtained from a Shplemini accumulator. | |
| using bb::KZG< Curve_ >::CK = CommitmentKey<Curve> |
| using bb::KZG< Curve_ >::Commitment = typename Curve::AffineElement |
| using bb::KZG< Curve_ >::Fr = typename Curve::ScalarField |
| using bb::KZG< Curve_ >::GroupElement = typename Curve::Element |
| using bb::KZG< Curve_ >::Polynomial = bb::Polynomial<Fr> |
| using bb::KZG< Curve_ >::VerifierAccumulator = std::array<GroupElement, 2> |
| using bb::KZG< Curve_ >::VK = VerifierCommitmentKey<Curve> |
|
inlinestatic |
Computes the KZG commitment to an opening proof polynomial at a single evaluation point.
| ck | The commitment key which has a commit function, the srs and pippenger_runtime_state |
| opening_claim | {p, (r, v = p(r))} where p is the witness polynomial whose opening proof needs to be computed |
| prover_transcript | Prover transcript |
|
inlinestatic |
Computes the input points for the pairing check needed to verify a KZG opening claim of a single polynomial commitment. This reduction is non-interactive and always succeeds.
This is used in the recursive setting where we want to "aggregate" proofs, not verify them.
| claim | OpeningClaim ({r, v}, C) |
|
inlinestatic |
Computes the input points for the pairing check needed to verify a KZG opening claim obtained from a Shplemini accumulator.
This function is used in a recursive setting where we want to "aggregate" proofs. In the Shplemini case, the commitment \( C \) is encoded into the vectors commitments and scalars contained in the batch_opening_claim. More explicitly, \( C = \sum \text{commitments}_i \cdot \text{scalars}_i \). To avoid performing an extra batch_mul, we simply add the commitment \( [W]_1 \) to the vector of commitments and the Shplonk evaluation challenge to the vector of scalars and perform a single batch_mul that computes \(C +
W\cdot z \).
| batch_opening_claim | \((\text{commitments}, \text{scalars}, \text{shplonk_evaluation_challenge})\) A struct containing the commitments, scalars, and the Shplonk evaluation challenge. |