Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
bb::MultilinearBatchingVerifier< Flavor_ > Class Template Reference

Multilinear batching verifier. Verifies claim reduction via sumcheck. More...

#include <multilinear_batching_verifier.hpp>

Public Types

using Flavor = Flavor_
 
using FF = typename Flavor::FF
 
using Curve = typename Flavor::Curve
 
using Transcript = typename Flavor::Transcript
 
using Commitment = typename Flavor::Commitment
 
using Sumcheck = SumcheckVerifier< Flavor >
 
using VerifierClaim = MultilinearBatchingVerifierClaim< Curve >
 
using Proof = std::vector< FF >
 
using InstanceFlavor = std::conditional_t< std::is_same_v< Flavor, MultilinearBatchingFlavor >, MegaFlavor, MegaRecursiveFlavor_< MegaCircuitBuilder > >
 
using InstanceCommitments = InstanceFlavor::VerifierCommitments
 
using InstanceFF = InstanceFlavor::FF
 

Public Member Functions

 MultilinearBatchingVerifier (const std::shared_ptr< Transcript > &transcript)
 
std::pair< bool, VerifierClaimverify_proof (SumcheckOutput< InstanceFlavor > &instance_sumcheck, InstanceCommitments &verifier_commitments, std::vector< InstanceFF > &unshifted_challenges, std::vector< InstanceFF > &shifted_challenges)
 

Static Public Attributes

static constexpr size_t NUM_UNSHIFTED_ENTITIES = MegaFlavor::NUM_UNSHIFTED_ENTITIES
 
static constexpr size_t NUM_SHIFTED_ENTITIES = MegaFlavor::NUM_SHIFTED_ENTITIES
 

Private Member Functions

FF compute_new_target_sum (const FF &alpha, SumcheckOutput< InstanceFlavor > &instance_sumcheck, const std::vector< InstanceFF > &unshifted_challenges, const std::vector< InstanceFF > &shifted_challenges, const FF &accumulator_non_shifted_evaluation, const FF &accumulator_shifted_evaluation) const
 Utility to compute the new target sum for the batching sumcheck.
 
template<size_t N>
Commitment batch_mul (RefArray< Commitment, N > instance_commitments, const Commitment &accumulator_commitment, std::vector< FF > &scalars, const FF &batching_challenge)
 Utility to perform batch mul of commitments.
 
VerifierClaim compute_new_claim (const SumcheckOutput< Flavor > &sumcheck_result, InstanceCommitments &verifier_commitments, std::vector< InstanceFF > &unshifted_challenges, std::vector< InstanceFF > &shifted_challenges, const Commitment &non_shifted_accumulator_commitment, const Commitment &shifted_accumulator_commitment, const FF &batching_challenge)
 Utility to compute the new claim after the batching sumcheck.
 
bool check_eq_consistency (const SumcheckOutput< Flavor > &sumcheck_result, const std::vector< FF > &accumulator_challenges, const std::vector< InstanceFF > &instance_challenges)
 Verify that the prover used the correct eq polynomials.
 

Private Attributes

std::shared_ptr< Transcripttranscript
 
std::shared_ptr< VerifierClaimaccumulator_claim
 
std::shared_ptr< VerifierClaiminstance_claim
 

Detailed Description

template<typename Flavor_>
class bb::MultilinearBatchingVerifier< Flavor_ >

Multilinear batching verifier. Verifies claim reduction via sumcheck.

See: chonk/README.md#batching-claims-into-accumulator

Definition at line 25 of file multilinear_batching_verifier.hpp.

Member Typedef Documentation

◆ Commitment

template<typename Flavor_ >
using bb::MultilinearBatchingVerifier< Flavor_ >::Commitment = typename Flavor::Commitment

Definition at line 32 of file multilinear_batching_verifier.hpp.

◆ Curve

template<typename Flavor_ >
using bb::MultilinearBatchingVerifier< Flavor_ >::Curve = typename Flavor::Curve

Definition at line 29 of file multilinear_batching_verifier.hpp.

◆ FF

template<typename Flavor_ >
using bb::MultilinearBatchingVerifier< Flavor_ >::FF = typename Flavor::FF

Definition at line 28 of file multilinear_batching_verifier.hpp.

◆ Flavor

template<typename Flavor_ >
using bb::MultilinearBatchingVerifier< Flavor_ >::Flavor = Flavor_

Definition at line 27 of file multilinear_batching_verifier.hpp.

◆ InstanceCommitments

template<typename Flavor_ >
using bb::MultilinearBatchingVerifier< Flavor_ >::InstanceCommitments = InstanceFlavor::VerifierCommitments

Definition at line 40 of file multilinear_batching_verifier.hpp.

◆ InstanceFF

template<typename Flavor_ >
using bb::MultilinearBatchingVerifier< Flavor_ >::InstanceFF = InstanceFlavor::FF

Definition at line 41 of file multilinear_batching_verifier.hpp.

◆ InstanceFlavor

◆ Proof

template<typename Flavor_ >
using bb::MultilinearBatchingVerifier< Flavor_ >::Proof = std::vector<FF>

Definition at line 35 of file multilinear_batching_verifier.hpp.

◆ Sumcheck

template<typename Flavor_ >
using bb::MultilinearBatchingVerifier< Flavor_ >::Sumcheck = SumcheckVerifier<Flavor>

Definition at line 33 of file multilinear_batching_verifier.hpp.

◆ Transcript

template<typename Flavor_ >
using bb::MultilinearBatchingVerifier< Flavor_ >::Transcript = typename Flavor::Transcript

Definition at line 30 of file multilinear_batching_verifier.hpp.

◆ VerifierClaim

template<typename Flavor_ >
using bb::MultilinearBatchingVerifier< Flavor_ >::VerifierClaim = MultilinearBatchingVerifierClaim<Curve>

Definition at line 34 of file multilinear_batching_verifier.hpp.

Constructor & Destructor Documentation

◆ MultilinearBatchingVerifier()

template<typename Flavor_ >
bb::MultilinearBatchingVerifier< Flavor_ >::MultilinearBatchingVerifier ( const std::shared_ptr< Transcript > &  transcript)
explicit

Definition at line 17 of file multilinear_batching_verifier.cpp.

Member Function Documentation

◆ batch_mul()

template<typename Flavor_ >
template<size_t N>
MultilinearBatchingVerifier< Flavor_ >::Commitment bb::MultilinearBatchingVerifier< Flavor_ >::batch_mul ( RefArray< Commitment, N >  instance_commitments,
const Commitment accumulator_commitment,
std::vector< FF > &  scalars,
const FF batching_challenge 
)
private

Utility to perform batch mul of commitments.

Definition at line 54 of file multilinear_batching_verifier.cpp.

◆ check_eq_consistency()

template<typename Flavor_ >
bool bb::MultilinearBatchingVerifier< Flavor_ >::check_eq_consistency ( const SumcheckOutput< Flavor > &  sumcheck_result,
const std::vector< FF > &  accumulator_challenges,
const std::vector< InstanceFF > &  instance_challenges 
)
private

Verify that the prover used the correct eq polynomials.

The batching relation uses eq(r_acc, u) and eq(r_inst, u) to "select" the correct evaluation point. The prover provides these as evaluations of witness polynomials, but the verifier can compute them directly from the known challenges. This check ensures consistency.

Definition at line 166 of file multilinear_batching_verifier.cpp.

◆ compute_new_claim()

template<typename Flavor_ >
MultilinearBatchingVerifier< Flavor_ >::VerifierClaim bb::MultilinearBatchingVerifier< Flavor_ >::compute_new_claim ( const SumcheckOutput< Flavor > &  sumcheck_result,
InstanceCommitments verifier_commitments,
std::vector< InstanceFF > &  unshifted_challenges,
std::vector< InstanceFF > &  shifted_challenges,
const Commitment non_shifted_accumulator_commitment,
const Commitment shifted_accumulator_commitment,
const FF batching_challenge 
)
private

Utility to compute the new claim after the batching sumcheck.

Definition at line 75 of file multilinear_batching_verifier.cpp.

◆ compute_new_target_sum()

template<typename Flavor_ >
MultilinearBatchingVerifier< Flavor_ >::FF bb::MultilinearBatchingVerifier< Flavor_ >::compute_new_target_sum ( const FF alpha,
SumcheckOutput< InstanceFlavor > &  instance_sumcheck,
const std::vector< InstanceFF > &  unshifted_challenges,
const std::vector< InstanceFF > &  shifted_challenges,
const FF accumulator_non_shifted_evaluation,
const FF accumulator_shifted_evaluation 
) const
private

Utility to compute the new target sum for the batching sumcheck.

Definition at line 22 of file multilinear_batching_verifier.cpp.

◆ verify_proof()

template<typename Flavor_ >
std::pair< bool, typename MultilinearBatchingVerifier< Flavor_ >::VerifierClaim > bb::MultilinearBatchingVerifier< Flavor_ >::verify_proof ( SumcheckOutput< InstanceFlavor > &  instance_sumcheck,
InstanceCommitments verifier_commitments,
std::vector< InstanceFF > &  unshifted_challenges,
std::vector< InstanceFF > &  shifted_challenges 
)

Definition at line 111 of file multilinear_batching_verifier.cpp.

Member Data Documentation

◆ accumulator_claim

template<typename Flavor_ >
std::shared_ptr<VerifierClaim> bb::MultilinearBatchingVerifier< Flavor_ >::accumulator_claim
private

Definition at line 54 of file multilinear_batching_verifier.hpp.

◆ instance_claim

template<typename Flavor_ >
std::shared_ptr<VerifierClaim> bb::MultilinearBatchingVerifier< Flavor_ >::instance_claim
private

Definition at line 55 of file multilinear_batching_verifier.hpp.

◆ NUM_SHIFTED_ENTITIES

template<typename Flavor_ >
constexpr size_t bb::MultilinearBatchingVerifier< Flavor_ >::NUM_SHIFTED_ENTITIES = MegaFlavor::NUM_SHIFTED_ENTITIES
staticconstexpr

Definition at line 43 of file multilinear_batching_verifier.hpp.

◆ NUM_UNSHIFTED_ENTITIES

template<typename Flavor_ >
constexpr size_t bb::MultilinearBatchingVerifier< Flavor_ >::NUM_UNSHIFTED_ENTITIES = MegaFlavor::NUM_UNSHIFTED_ENTITIES
staticconstexpr

Definition at line 42 of file multilinear_batching_verifier.hpp.

◆ transcript

template<typename Flavor_ >
std::shared_ptr<Transcript> bb::MultilinearBatchingVerifier< Flavor_ >::transcript
private

Definition at line 53 of file multilinear_batching_verifier.hpp.


The documentation for this class was generated from the following files: