|
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 | ReductionResult |
| Result of reducing ECCVM proof to IPA opening 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 | TranslatorInputData = TranslatorInputData_< FF > |
| using | Builder = std::conditional_t< IsRecursive, typename Flavor::CircuitBuilder, void > |
Public Member Functions | |
| ECCVMVerifier_ (const std::shared_ptr< Transcript > &transcript, const Proof &proof) | |
| ReductionResult | reduce_to_ipa_opening () |
| Reduce the ECCVM proof to an IPA opening 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 Attributes | |
| static constexpr bool | IsRecursive = Curve::is_stdlib_type |
Private Member Functions | |
| void | compute_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 | compute_accumulated_result () |
Private Attributes | |
| std::shared_ptr< VerificationKey > | key |
| Proof | proof |
| BF | vk_hash |
| std::shared_ptr< Transcript > | transcript |
| std::conditional_t< IsRecursive, Builder *, void * > | builder = nullptr |
| std::array< OpeningClaim< Curve >, NUM_OPENING_CLAIMS > | 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 |
Static Private Attributes | |
| static constexpr size_t | NUM_OPENING_CLAIMS = ECCVMFlavor::NUM_TRANSLATION_OPENING_CLAIMS + 1 |
Unified ECCVM verifier class for both native and recursive verification.
| Flavor | Either ECCVMFlavor (native) or ECCVMRecursiveFlavor (recursive) |
Definition at line 19 of file eccvm_verifier.hpp.
| using bb::ECCVMVerifier_< Flavor >::BF = Flavor::BF |
Definition at line 22 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 24 of file eccvm_verifier.hpp.
| using bb::ECCVMVerifier_< Flavor >::CommitmentLabels = Flavor::CommitmentLabels |
Definition at line 25 of file eccvm_verifier.hpp.
| using bb::ECCVMVerifier_< Flavor >::Curve = Flavor::Curve |
Definition at line 23 of file eccvm_verifier.hpp.
| using bb::ECCVMVerifier_< Flavor >::FF = Flavor::FF |
Definition at line 21 of file eccvm_verifier.hpp.
Definition at line 31 of file eccvm_verifier.hpp.
| using bb::ECCVMVerifier_< Flavor >::Proof = Flavor::Proof |
Definition at line 30 of file eccvm_verifier.hpp.
| using bb::ECCVMVerifier_< Flavor >::Transcript = Flavor::Transcript |
Definition at line 26 of file eccvm_verifier.hpp.
| using bb::ECCVMVerifier_< Flavor >::TranslatorInputData = TranslatorInputData_<FF> |
Definition at line 32 of file eccvm_verifier.hpp.
| using bb::ECCVMVerifier_< Flavor >::VerificationKey = Flavor::VerificationKey |
Definition at line 27 of file eccvm_verifier.hpp.
| using bb::ECCVMVerifier_< Flavor >::VerifierCommitmentKey = Flavor::VerifierCommitmentKey |
Definition at line 29 of file eccvm_verifier.hpp.
| using bb::ECCVMVerifier_< Flavor >::VerifierCommitments = Flavor::VerifierCommitments |
Definition at line 28 of file eccvm_verifier.hpp.
|
inline |
Definition at line 49 of file eccvm_verifier.hpp.
|
private |
Definition at line 244 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::compute_translation_opening_claims() method.
| translation_commitments | Commitments to op, Px, Py, z1, and z2 |
opening_claims. Definition at line 147 of file eccvm_verifier.cpp.
|
inline |
Definition at line 91 of file eccvm_verifier.hpp.
|
inline |
Get the data required by the TranslatorVerifier.
Definition at line 85 of file eccvm_verifier.hpp.
|
inline |
Definition at line 90 of file eccvm_verifier.hpp.
| ECCVMVerifier_< Flavor >::ReductionResult bb::ECCVMVerifier_< Flavor >::reduce_to_ipa_opening | ( | ) |
Reduce the ECCVM proof to an IPA opening 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 the ECCVM proof's internal checks (sumcheck, translation masking consistency, etc.) and reduces all polynomial opening claims to a single IPA opening claim via Shplemini and Shplonk. This method does NOT perform the final IPA verification - it returns an IPA claim that must be verified externally.
Works for both native verification and recursive (in-circuit) verification.
Definition at line 20 of file eccvm_verifier.cpp.
|
private |
Definition at line 115 of file eccvm_verifier.hpp.
|
private |
Definition at line 114 of file eccvm_verifier.hpp.
|
private |
Definition at line 103 of file eccvm_verifier.hpp.
|
private |
Definition at line 113 of file eccvm_verifier.hpp.
|
staticconstexpr |
Definition at line 34 of file eccvm_verifier.hpp.
|
private |
Definition at line 97 of file eccvm_verifier.hpp.
|
staticconstexprprivate |
Definition at line 107 of file eccvm_verifier.hpp.
|
private |
Definition at line 108 of file eccvm_verifier.hpp.
|
private |
Definition at line 98 of file eccvm_verifier.hpp.
|
private |
Definition at line 100 of file eccvm_verifier.hpp.
|
private |
Definition at line 110 of file eccvm_verifier.hpp.
|
private |
Definition at line 119 of file eccvm_verifier.hpp.
|
private |
Definition at line 118 of file eccvm_verifier.hpp.
|
private |
Definition at line 99 of file eccvm_verifier.hpp.