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

Unified ECCVM verifier class for both native and recursive verification. More...

#include <eccvm_verifier.hpp>

Classes

struct  DeferredTripleIpaOpening
 
struct  ReductionResult
 Result of reducing ECCVM proof to a compact TripleIPA claim. More...
 

Public Types

using FF = Flavor::FF
 
using BF = Flavor::BF
 
using Curve = Flavor::Curve
 
using Commitment = Flavor::Commitment
 
using CommitmentLabels = Flavor::CommitmentLabels
 
using Transcript = Flavor::Transcript
 
using VerificationKey = Flavor::VerificationKey
 
using VerifierCommitments = Flavor::VerifierCommitments
 
using VerifierCommitmentKey = Flavor::VerifierCommitmentKey
 
using Proof = Flavor::Proof
 
using PCS = IPA< Curve, CONST_ECCVM_LOG_N >
 
using Builder = std::conditional_t< IsRecursive, typename Flavor::CircuitBuilder, void >
 
using TripleIPA = bb::TripleIPA< Curve, CONST_ECCVM_LOG_N >
 
using TripleIpaAccumulator = typename TripleIPA::VerifierAccumulator
 
using TripleIpaClaim = typename TripleIPA::TripleIpaClaim
 
using TripleIpaProof = std::conditional_t< IsRecursive, stdlib::Proof< UltraCircuitBuilder >, HonkProof >
 
using TranslatorInputData = TranslatorInputData_< FF >
 

Public Member Functions

 ECCVMVerifier_ (const std::shared_ptr< Transcript > &transcript, const Proof &proof)
 
ReductionResult reduce_to_triple_ipa_claim ()
 Reduce the ECCVM proof to a compact TripleIPA verifier claim.
 
TranslatorInputData get_translator_input_data () const
 Get the data required by the TranslatorVerifier.
 
std::shared_ptr< VerificationKeyget_verification_key () const
 
std::shared_ptr< Transcriptget_transcript () const
 

Static Public Member Functions

static bool verify_accumulator (const TripleIpaAccumulator &accumulator)
 
static bool batch_verify_accumulators (std::span< const TripleIpaAccumulator > accumulators)
 

Static Public Attributes

static constexpr bool IsRecursive = Curve::is_stdlib_type
 

Private Member Functions

bool append_libra_opening_claims (const std::array< Commitment, NUM_SMALL_IPA_COMMITMENTS > &libra_commitments, const std::vector< FF > &multilinear_challenge, const FF &claimed_libra_evaluation)
 
void append_translation_opening_claims (const std::vector< Commitment > &translation_commitments)
 To link the ECCVM Transcript wires op, Px, Py, z1, and z2 to the accumulator computed by the translator, we verify their evaluations as univariates. For efficiency reasons, we batch these evaluations.
 
void append_sumcheck_round_opening_claims (const std::vector< Commitment > &sumcheck_round_commitments, const std::vector< std::array< FF, 3 > > &sumcheck_round_evaluations, const std::vector< FF > &multilinear_challenge)
 
void append_pow_masking_opening_claim ()
 
OpeningClaim< Curvereduce_univariate_opening_claims ()
 
TripleIpaClaim compute_triple_ipa_claim (VerifierCommitments &commitments, SumcheckOutput< Flavor > &sumcheck_output, const OpeningClaim< Curve > &univariate_opening_claim)
 
void compute_accumulated_result ()
 

Private Attributes

std::shared_ptr< VerificationKeykey
 
Proof proof
 
BF vk_hash
 
Commitment pcs_g1_identity
 
std::shared_ptr< Transcripttranscript
 
std::conditional_t< IsRecursive, Builder *, void * > builder = nullptr
 
std::vector< OpeningClaim< Curve > > univariate_opening_claims
 
TranslationEvaluations_< FFtranslation_evaluations
 
FF evaluation_challenge_x
 
FF batching_challenge_v
 
FF accumulated_result
 
FF translation_masking_term_eval
 
bool translation_masking_consistency_checked = false
 

Detailed Description

template<typename Flavor>
class bb::ECCVMVerifier_< Flavor >

Unified ECCVM verifier class for both native and recursive verification.

Template Parameters
FlavorEither ECCVMFlavor (native) or ECCVMRecursiveFlavor (recursive)

Definition at line 21 of file eccvm_verifier.hpp.

Member Typedef Documentation

◆ BF

template<typename Flavor >
using bb::ECCVMVerifier_< Flavor >::BF = Flavor::BF

Definition at line 24 of file eccvm_verifier.hpp.

◆ Builder

Definition at line 35 of file eccvm_verifier.hpp.

◆ Commitment

template<typename Flavor >
using bb::ECCVMVerifier_< Flavor >::Commitment = Flavor::Commitment

Definition at line 26 of file eccvm_verifier.hpp.

◆ CommitmentLabels

template<typename Flavor >
using bb::ECCVMVerifier_< Flavor >::CommitmentLabels = Flavor::CommitmentLabels

Definition at line 27 of file eccvm_verifier.hpp.

◆ Curve

template<typename Flavor >
using bb::ECCVMVerifier_< Flavor >::Curve = Flavor::Curve

Definition at line 25 of file eccvm_verifier.hpp.

◆ FF

template<typename Flavor >
using bb::ECCVMVerifier_< Flavor >::FF = Flavor::FF

Definition at line 23 of file eccvm_verifier.hpp.

◆ PCS

template<typename Flavor >
using bb::ECCVMVerifier_< Flavor >::PCS = IPA<Curve, CONST_ECCVM_LOG_N>

Definition at line 33 of file eccvm_verifier.hpp.

◆ Proof

template<typename Flavor >
using bb::ECCVMVerifier_< Flavor >::Proof = Flavor::Proof

Definition at line 32 of file eccvm_verifier.hpp.

◆ Transcript

Definition at line 28 of file eccvm_verifier.hpp.

◆ TranslatorInputData

template<typename Flavor >
using bb::ECCVMVerifier_< Flavor >::TranslatorInputData = TranslatorInputData_<FF>

Definition at line 40 of file eccvm_verifier.hpp.

◆ TripleIPA

template<typename Flavor >
using bb::ECCVMVerifier_< Flavor >::TripleIPA = bb::TripleIPA<Curve, CONST_ECCVM_LOG_N>

Definition at line 36 of file eccvm_verifier.hpp.

◆ TripleIpaAccumulator

template<typename Flavor >
using bb::ECCVMVerifier_< Flavor >::TripleIpaAccumulator = typename TripleIPA::VerifierAccumulator

Definition at line 37 of file eccvm_verifier.hpp.

◆ TripleIpaClaim

template<typename Flavor >
using bb::ECCVMVerifier_< Flavor >::TripleIpaClaim = typename TripleIPA::TripleIpaClaim

Definition at line 38 of file eccvm_verifier.hpp.

◆ TripleIpaProof

Definition at line 39 of file eccvm_verifier.hpp.

◆ VerificationKey

Definition at line 29 of file eccvm_verifier.hpp.

◆ VerifierCommitmentKey

template<typename Flavor >
using bb::ECCVMVerifier_< Flavor >::VerifierCommitmentKey = Flavor::VerifierCommitmentKey

Definition at line 31 of file eccvm_verifier.hpp.

◆ VerifierCommitments

template<typename Flavor >
using bb::ECCVMVerifier_< Flavor >::VerifierCommitments = Flavor::VerifierCommitments

Definition at line 30 of file eccvm_verifier.hpp.

Constructor & Destructor Documentation

◆ ECCVMVerifier_()

template<typename Flavor >
bb::ECCVMVerifier_< Flavor >::ECCVMVerifier_ ( const std::shared_ptr< Transcript > &  transcript,
const Proof proof 
)
inline

Definition at line 88 of file eccvm_verifier.hpp.

Member Function Documentation

◆ append_libra_opening_claims()

template<typename Flavor >
bool bb::ECCVMVerifier_< Flavor >::append_libra_opening_claims ( const std::array< Commitment, NUM_SMALL_IPA_COMMITMENTS > &  libra_commitments,
const std::vector< FF > &  multilinear_challenge,
const FF claimed_libra_evaluation 
)
private

Definition at line 118 of file eccvm_verifier.cpp.

◆ append_pow_masking_opening_claim()

template<typename Flavor >
void bb::ECCVMVerifier_< Flavor >::append_pow_masking_opening_claim ( )
private

Definition at line 228 of file eccvm_verifier.cpp.

◆ append_sumcheck_round_opening_claims()

template<typename Flavor >
void bb::ECCVMVerifier_< Flavor >::append_sumcheck_round_opening_claims ( const std::vector< Commitment > &  sumcheck_round_commitments,
const std::vector< std::array< FF, 3 > > &  sumcheck_round_evaluations,
const std::vector< FF > &  multilinear_challenge 
)
private

Definition at line 295 of file eccvm_verifier.cpp.

◆ append_translation_opening_claims()

template<typename Flavor >
void bb::ECCVMVerifier_< Flavor >::append_translation_opening_claims ( const std::vector< Commitment > &  translation_commitments)
private

To link the ECCVM Transcript wires op, Px, Py, z1, and z2 to the accumulator computed by the translator, we verify their evaluations as univariates. For efficiency reasons, we batch these evaluations.

For details, see the docs of ECCVMProver::append_translation_opening_claims() method.

Parameters
translation_commitmentsCommitments to op, Px, Py, z1, and z2
Returns
The translation univariate opening claims.

Definition at line 150 of file eccvm_verifier.cpp.

◆ batch_verify_accumulators()

template<typename Flavor >
static bool bb::ECCVMVerifier_< Flavor >::batch_verify_accumulators ( std::span< const TripleIpaAccumulator accumulators)
inlinestatic

Definition at line 70 of file eccvm_verifier.hpp.

◆ compute_accumulated_result()

template<typename Flavor >
void bb::ECCVMVerifier_< Flavor >::compute_accumulated_result ( )
private

Definition at line 269 of file eccvm_verifier.cpp.

◆ compute_triple_ipa_claim()

template<typename Flavor >
ECCVMVerifier_< Flavor >::TripleIpaClaim bb::ECCVMVerifier_< Flavor >::compute_triple_ipa_claim ( VerifierCommitments commitments,
SumcheckOutput< Flavor > &  sumcheck_output,
const OpeningClaim< Curve > &  univariate_opening_claim 
)
private

Definition at line 245 of file eccvm_verifier.cpp.

◆ get_transcript()

template<typename Flavor >
std::shared_ptr< Transcript > bb::ECCVMVerifier_< Flavor >::get_transcript ( ) const
inline

Definition at line 129 of file eccvm_verifier.hpp.

◆ get_translator_input_data()

template<typename Flavor >
TranslatorInputData bb::ECCVMVerifier_< Flavor >::get_translator_input_data ( ) const
inline

Get the data required by the TranslatorVerifier.

Returns
TranslatorInputData containing evaluation_challenge_x, batching_challenge_v, and accumulated_result

Definition at line 123 of file eccvm_verifier.hpp.

◆ get_verification_key()

template<typename Flavor >
std::shared_ptr< VerificationKey > bb::ECCVMVerifier_< Flavor >::get_verification_key ( ) const
inline

Definition at line 128 of file eccvm_verifier.hpp.

◆ reduce_to_triple_ipa_claim()

template<typename Flavor >
ECCVMVerifier_< Flavor >::ReductionResult bb::ECCVMVerifier_< Flavor >::reduce_to_triple_ipa_claim ( )

Reduce the ECCVM proof to a compact TripleIPA verifier claim.

Verifies an ECCVM Honk proof for given program settings.

The ECCVM proves correct execution of elliptic curve operations accumulated in the op queue. This method verifies ECCVM internal checks (sumcheck, consistency, etc.) and reconstructs the public TripleIPA claim. The TripleIPA proof is carried separately by callers and reduced/accumulated downstream.

Returns
ReductionResult containing the TripleIPA claim and whether sumcheck, consistency, and masking checks passed.

Works for both native verification and recursive (in-circuit) verification.

Definition at line 24 of file eccvm_verifier.cpp.

◆ reduce_univariate_opening_claims()

template<typename Flavor >
OpeningClaim< typename Flavor::Curve > bb::ECCVMVerifier_< Flavor >::reduce_univariate_opening_claims ( )
private

Definition at line 238 of file eccvm_verifier.cpp.

◆ verify_accumulator()

template<typename Flavor >
static bool bb::ECCVMVerifier_< Flavor >::verify_accumulator ( const TripleIpaAccumulator accumulator)
inlinestatic

Definition at line 63 of file eccvm_verifier.hpp.

Member Data Documentation

◆ accumulated_result

template<typename Flavor >
FF bb::ECCVMVerifier_< Flavor >::accumulated_result
private

Definition at line 163 of file eccvm_verifier.hpp.

◆ batching_challenge_v

template<typename Flavor >
FF bb::ECCVMVerifier_< Flavor >::batching_challenge_v
private

Definition at line 162 of file eccvm_verifier.hpp.

◆ builder

template<typename Flavor >
std::conditional_t<IsRecursive, Builder*, void*> bb::ECCVMVerifier_< Flavor >::builder = nullptr
private

Definition at line 155 of file eccvm_verifier.hpp.

◆ evaluation_challenge_x

template<typename Flavor >
FF bb::ECCVMVerifier_< Flavor >::evaluation_challenge_x
private

Definition at line 161 of file eccvm_verifier.hpp.

◆ IsRecursive

template<typename Flavor >
constexpr bool bb::ECCVMVerifier_< Flavor >::IsRecursive = Curve::is_stdlib_type
staticconstexpr

Definition at line 34 of file eccvm_verifier.hpp.

◆ key

template<typename Flavor >
std::shared_ptr<VerificationKey> bb::ECCVMVerifier_< Flavor >::key
private

Definition at line 148 of file eccvm_verifier.hpp.

◆ pcs_g1_identity

template<typename Flavor >
Commitment bb::ECCVMVerifier_< Flavor >::pcs_g1_identity
private

Definition at line 151 of file eccvm_verifier.hpp.

◆ proof

template<typename Flavor >
Proof bb::ECCVMVerifier_< Flavor >::proof
private

Definition at line 149 of file eccvm_verifier.hpp.

◆ transcript

template<typename Flavor >
std::shared_ptr<Transcript> bb::ECCVMVerifier_< Flavor >::transcript
private

Definition at line 152 of file eccvm_verifier.hpp.

◆ translation_evaluations

template<typename Flavor >
TranslationEvaluations_<FF> bb::ECCVMVerifier_< Flavor >::translation_evaluations
private

Definition at line 158 of file eccvm_verifier.hpp.

◆ translation_masking_consistency_checked

template<typename Flavor >
bool bb::ECCVMVerifier_< Flavor >::translation_masking_consistency_checked = false
private

Definition at line 167 of file eccvm_verifier.hpp.

◆ translation_masking_term_eval

template<typename Flavor >
FF bb::ECCVMVerifier_< Flavor >::translation_masking_term_eval
private

Definition at line 166 of file eccvm_verifier.hpp.

◆ univariate_opening_claims

template<typename Flavor >
std::vector<OpeningClaim<Curve> > bb::ECCVMVerifier_< Flavor >::univariate_opening_claims
private

Definition at line 157 of file eccvm_verifier.hpp.

◆ vk_hash

template<typename Flavor >
BF bb::ECCVMVerifier_< Flavor >::vk_hash
private

Definition at line 150 of file eccvm_verifier.hpp.


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