Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
eccvm_prover.hpp
Go to the documentation of this file.
1// === AUDIT STATUS ===
2// internal: { status: Planned, auditors: [], commit: }
3// external_1: { status: not started, auditors: [], commit: }
4// external_2: { status: not started, auditors: [], commit: }
5// =====================
6
7#pragma once
19
20namespace bb {
21
22// The prover always runs sumcheck with the short-monomial flavor (faster sumcheck).
24 public:
26 using FF = Flavor::FF;
27 using BF = Flavor::BF;
33 using Commitments = typename Flavor::template AllEntities<Commitment>;
43
44 explicit ECCVMProver(CircuitBuilder& builder, const std::shared_ptr<Transcript>& transcript);
45
52
55
56 // The ECCVM PCS pipeline collects all univariate opening claims, reduces them with one Shplonk, then opens the
57 // sumcheck multilinears and reduced univariate claim with TripleIPA.
63 void prove_triple_ipa(const OpeningClaim& prover_opening, const VerifierOpeningClaim& verifier_opening);
64 std::shared_ptr<Transcript> transcript;
66
67 // Univariate opening claims collected for the single Shplonk reduction.
69
71
72 std::vector<FF> public_inputs;
73
75
76 std::shared_ptr<ProvingKey> key;
78
81
84
86};
87
88// Retained for call sites that name the TripleIPA prover explicitly; the ECCVM prover always uses it.
90
91} // namespace bb
Common transcript class for both parties. Stores the data for the current round, as well as the manif...
CommitmentKey object over a pairing group 𝔾₁.
A container for commitment labels.
The proving key is responsible for storing the polynomials used by the prover.
ECCVMCircuitBuilder CircuitBuilder
typename G1::affine_element Commitment
typename Curve::BaseField BF
bb::Polynomial< FF > Polynomial
bb::CommitmentKey< Curve > CommitmentKey
FixedVKAndHash_< PrecomputedEntities< Commitment >, BF, ECCVMHardcodedVKAndHash > VerificationKey
The verification key stores commitments to the precomputed polynomials used by the verifier.
BaseTranscript< Codec, HashFunction > Transcript
void prove_triple_ipa(const OpeningClaim &prover_opening, const VerifierOpeningClaim &verifier_opening)
Open the sumcheck multilinears together with the single reduced univariate claim via the TripleIPA.
BB_PROFILE void execute_transcript_consistency_univariate_opening_round()
Flavor::Commitment Commitment
std::vector< FF > public_inputs
SumcheckOutput< Flavor > sumcheck_output
typename Flavor::template AllEntities< Commitment > Commitments
BB_PROFILE void execute_log_derivative_commitments_round()
Compute sorted witness-table accumulator.
void append_libra_opening_claims()
Add the Libra (sumcheck ZK masking) univariate opening claims, produced via the SmallSubgroupIPA prov...
std::shared_ptr< Transcript > transcript
CommitmentLabels commitment_labels
TranslationEvaluations translation_evaluations
void append_translation_opening_claims()
To link the ECCVM Transcript wires op, Px, Py, z1, and z2 to the accumulator computed by the translat...
Commitments commitments
std::shared_ptr< ProvingKey > key
void append_pow_masking_opening_claim()
Add a small random univariate opening claim that masks the TripleIPA pow tensor.
BB_PROFILE void execute_preamble_round()
Fiat-Shamir the VK.
BB_PROFILE void execute_wire_commitments_round()
Compute commitments to the first three wires.
std::pair< OpeningClaim, VerifierOpeningClaim > reduce_univariate_opening_claims()
Reduce all univariate opening claims to a single opening claim via one Shplonk.
ProverOpeningClaimBatcher< Flavor::Curve > univariate_claims
BB_PROFILE void execute_grand_product_computation_round()
Compute permutation and lookup grand product polynomials and commitments.
BB_PROFILE void execute_relation_check_rounds()
Run Sumcheck resulting in u = (u_1,...,u_d) challenges and all evaluations at u being calculated.
bb::RelationParameters< FF > relation_parameters
void append_sumcheck_round_opening_claims()
Add the committed-sumcheck round univariate opening claims (3 per round: evaluations at 0,...
Simple verification key class for fixed-size circuits (ECCVM, Translator, AVM).
Definition flavor.hpp:104
Unverified claim (C,r,v) for some witness polynomial p(X) such that.
Definition claim.hpp:55
Polynomial p and an opening pair (r,v) such that p(r) = v.
Definition claim.hpp:36
A Curve-agnostic ZK protocol to prove inner products of small vectors.
#define BB_PROFILE
AluTraceBuilder builder
Definition alu.test.cpp:124
Entry point for Barretenberg command-line interface.
Definition api.hpp:5
std::vector< fr > HonkProof
Definition proof.hpp:15
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
Definition tuple.hpp:13
Container for parameters used by the grand product (permutation, lookup) Honk relations.
Contains the evaluations of multilinear polynomials at the challenge point . These are computed by S...
This structure is created to contain various polynomials and constants required by ZK Sumcheck.