12 :
key(
std::move(verifier_key))
23 transcript = other.transcript;
51 using ClaimBatch = ClaimBatcher::Batch;
59 FF vk_hash =
key->hash();
61 info(
"AVM vk hash in verifier: ", vk_hash);
66 comm =
transcript->template receive_from_prover<Commitment>(label);
69 auto [beta, gamm] =
transcript->template get_challenges<FF>(
"beta",
"gamma");
70 relation_parameters.
beta = beta;
71 relation_parameters.
gamma = gamm;
75 commitment =
transcript->template receive_from_prover<Commitment>(label);
79 std::vector<FF> padding_indicator_array(
key->log_circuit_size, 1);
82 const FF alpha =
transcript->template get_challenge<FF>(
"Sumcheck:alpha");
87 std::vector<FF> gate_challenges =
88 transcript->template get_powers_of_challenge<FF>(
"Sumcheck:gate_challenge",
key->log_circuit_size);
94 vinfo(
"Sumcheck verification failed");
99 vinfo(
"Public inputs size mismatch");
111 if (public_input_evaluation != claimed_evaluations[i]) {
112 vinfo(
"public_input_evaluation failed, public inputs col ", i);
117 ClaimBatcher claim_batcher{
124 const auto pairing_points = PCS::reduce_verify_batch_opening_claim(opening_claim,
transcript);
126 const auto shplemini_verified = pcs_vkey.pairing_check(pairing_points[0], pairing_points[1]);
128 if (!shplemini_verified) {
129 vinfo(
"Shplemini verification failed");
#define AVM_NUM_PUBLIC_INPUT_COLUMNS
Structured polynomial class that represents the coefficients 'a' of a_0 + a_1 x .....
Fr evaluate_mle(std::span< const Fr > evaluation_points, bool shift=false) const
evaluate multi-linear extension p(X_0,…,X_{n-1}) = \sum_i a_i*L_i(X_0,…,X_{n-1}) at u = (u_0,...
An efficient verifier for the evaluation proofs of multilinear polynomials and their shifts.
Implementation of the sumcheck Verifier for statements of the form for multilinear polynomials .
SumcheckOutput< Flavor > verify(const bb::RelationParameters< FF > &relation_parameters, std::vector< FF > &gate_challenges, const std::vector< FF > &padding_indicator_array)
Extract round univariate, check sum, generate challenge, compute next target sum.....
AvmFlavorSettings::VerifierCommitmentKey VerifierCommitmentKey
VerifierCommitments_< Commitment, VerificationKey > VerifierCommitments
AvmFlavorSettings::PCS PCS
AvmFlavorSettings::Commitment Commitment
AvmFlavorSettings::Curve Curve
AvmVerifier(std::shared_ptr< VerificationKey > verifier_key)
std::shared_ptr< Transcript > transcript
AvmVerifier & operator=(const AvmVerifier &other)=delete
FF evaluate_public_input_column(const std::vector< FF > &points, std::vector< FF > challenges)
std::shared_ptr< VerificationKey > key
virtual bool verify_proof(const HonkProof &proof, const std::vector< std::vector< FF > > &public_inputs)
This function verifies an Avm Honk proof for given program settings.
std::map< std::string, Commitment > commitments
Flavor::Commitment Commitment
std::vector< fr > HonkProof
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
An accumulator consisting of the Shplonk evaluation challenge and vectors of commitments and scalars.
Logic to support batching opening claims for unshifted and shifted polynomials in Shplemini.
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...
ClaimedEvaluations claimed_evaluations
std::vector< FF > challenge