|
Barretenberg
The ZK-SNARK library at the core of Aztec
|
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< VerificationKey > | get_verification_key () const |
| std::shared_ptr< Transcript > | get_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< Curve > | reduce_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< VerificationKey > | key |
| Proof | proof |
| BF | vk_hash |
| Commitment | pcs_g1_identity |
| std::shared_ptr< Transcript > | transcript |
| std::conditional_t< IsRecursive, Builder *, void * > | builder = nullptr |
| std::vector< OpeningClaim< Curve > > | univariate_opening_claims |
| TranslationEvaluations_< FF > | translation_evaluations |
| FF | evaluation_challenge_x |
| FF | batching_challenge_v |
| FF | accumulated_result |
| FF | translation_masking_term_eval |
| bool | translation_masking_consistency_checked = false |
Unified ECCVM verifier class for both native and recursive verification.
| Flavor | Either ECCVMFlavor (native) or ECCVMRecursiveFlavor (recursive) |
Definition at line 21 of file eccvm_verifier.hpp.
| using bb::ECCVMVerifier_< Flavor >::BF = Flavor::BF |
Definition at line 24 of file eccvm_verifier.hpp.
| using bb::ECCVMVerifier_< Flavor >::Builder = std::conditional_t<IsRecursive, typename Flavor::CircuitBuilder, void> |
Definition at line 35 of file eccvm_verifier.hpp.
| using bb::ECCVMVerifier_< Flavor >::Commitment = Flavor::Commitment |
Definition at line 26 of file eccvm_verifier.hpp.
| using bb::ECCVMVerifier_< Flavor >::CommitmentLabels = Flavor::CommitmentLabels |
Definition at line 27 of file eccvm_verifier.hpp.
| using bb::ECCVMVerifier_< Flavor >::Curve = Flavor::Curve |
Definition at line 25 of file eccvm_verifier.hpp.
| using bb::ECCVMVerifier_< Flavor >::FF = Flavor::FF |
Definition at line 23 of file eccvm_verifier.hpp.
Definition at line 33 of file eccvm_verifier.hpp.
| using bb::ECCVMVerifier_< Flavor >::Proof = Flavor::Proof |
Definition at line 32 of file eccvm_verifier.hpp.
| using bb::ECCVMVerifier_< Flavor >::Transcript = Flavor::Transcript |
Definition at line 28 of file eccvm_verifier.hpp.
| using bb::ECCVMVerifier_< Flavor >::TranslatorInputData = TranslatorInputData_<FF> |
Definition at line 40 of file eccvm_verifier.hpp.
| using bb::ECCVMVerifier_< Flavor >::TripleIPA = bb::TripleIPA<Curve, CONST_ECCVM_LOG_N> |
Definition at line 36 of file eccvm_verifier.hpp.
| using bb::ECCVMVerifier_< Flavor >::TripleIpaAccumulator = typename TripleIPA::VerifierAccumulator |
Definition at line 37 of file eccvm_verifier.hpp.
| using bb::ECCVMVerifier_< Flavor >::TripleIpaClaim = typename TripleIPA::TripleIpaClaim |
Definition at line 38 of file eccvm_verifier.hpp.
| using bb::ECCVMVerifier_< Flavor >::TripleIpaProof = std::conditional_t<IsRecursive, stdlib::Proof<UltraCircuitBuilder>, HonkProof> |
Definition at line 39 of file eccvm_verifier.hpp.
| using bb::ECCVMVerifier_< Flavor >::VerificationKey = Flavor::VerificationKey |
Definition at line 29 of file eccvm_verifier.hpp.
| using bb::ECCVMVerifier_< Flavor >::VerifierCommitmentKey = Flavor::VerifierCommitmentKey |
Definition at line 31 of file eccvm_verifier.hpp.
| using bb::ECCVMVerifier_< Flavor >::VerifierCommitments = Flavor::VerifierCommitments |
Definition at line 30 of file eccvm_verifier.hpp.
|
inline |
Definition at line 88 of file eccvm_verifier.hpp.
|
private |
Definition at line 118 of file eccvm_verifier.cpp.
|
private |
Definition at line 228 of file eccvm_verifier.cpp.
|
private |
Definition at line 295 of file eccvm_verifier.cpp.
|
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.
| translation_commitments | Commitments to op, Px, Py, z1, and z2 |
Definition at line 150 of file eccvm_verifier.cpp.
|
inlinestatic |
Definition at line 70 of file eccvm_verifier.hpp.
|
private |
Definition at line 269 of file eccvm_verifier.cpp.
|
private |
Definition at line 245 of file eccvm_verifier.cpp.
|
inline |
Definition at line 129 of file eccvm_verifier.hpp.
|
inline |
Get the data required by the TranslatorVerifier.
Definition at line 123 of file eccvm_verifier.hpp.
|
inline |
Definition at line 128 of file eccvm_verifier.hpp.
| 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.
Works for both native verification and recursive (in-circuit) verification.
Definition at line 24 of file eccvm_verifier.cpp.
|
private |
Definition at line 238 of file eccvm_verifier.cpp.
|
inlinestatic |
Definition at line 63 of file eccvm_verifier.hpp.
|
private |
Definition at line 163 of file eccvm_verifier.hpp.
|
private |
Definition at line 162 of file eccvm_verifier.hpp.
|
private |
Definition at line 155 of file eccvm_verifier.hpp.
|
private |
Definition at line 161 of file eccvm_verifier.hpp.
|
staticconstexpr |
Definition at line 34 of file eccvm_verifier.hpp.
|
private |
Definition at line 148 of file eccvm_verifier.hpp.
|
private |
Definition at line 151 of file eccvm_verifier.hpp.
|
private |
Definition at line 149 of file eccvm_verifier.hpp.
|
private |
Definition at line 152 of file eccvm_verifier.hpp.
|
private |
Definition at line 158 of file eccvm_verifier.hpp.
|
private |
Definition at line 167 of file eccvm_verifier.hpp.
|
private |
Definition at line 166 of file eccvm_verifier.hpp.
|
private |
Definition at line 157 of file eccvm_verifier.hpp.
|
private |
Definition at line 150 of file eccvm_verifier.hpp.