Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
goblin_recursive_verifier.cpp
Go to the documentation of this file.
1// === AUDIT STATUS ===
2// internal: { status: not started, auditors: [], date: YYYY-MM-DD }
3// external_1: { status: not started, auditors: [], date: YYYY-MM-DD }
4// external_2: { status: not started, auditors: [], date: YYYY-MM-DD }
5// =====================
6
8
10
19 const MergeCommitments& merge_commitments,
20 const MergeSettings merge_settings)
21{
22 StdlibProof stdlib_proof(*builder, proof);
23 return verify(stdlib_proof, merge_commitments, merge_settings);
24}
25
34 const MergeCommitments& merge_commitments,
35 const MergeSettings merge_settings)
36{
37 // Verify the final merge step
38 MergeVerifier merge_verifier{ builder, merge_settings, transcript };
39 auto [merge_pairing_points, merged_table_commitments] =
40 merge_verifier.verify_proof(proof.merge_proof, merge_commitments);
41
42 // Run the ECCVM recursive verifier
44 auto [opening_claim, ipa_proof] = eccvm_verifier.verify_proof(proof.eccvm_proof);
45
46 // Run the Translator recursive verifier
48 PairingPoints<Builder> translator_pairing_points = translator_verifier.verify_proof(
49 proof.translator_proof, eccvm_verifier.evaluation_challenge_x, eccvm_verifier.batching_challenge_v);
50
51 // Verify the consistency between the ECCVM and Translator transcript polynomial evaluations
52 translator_verifier.verify_translation(eccvm_verifier.translation_evaluations,
53 eccvm_verifier.translation_masking_term_eval);
54
55 translator_pairing_points.aggregate(merge_pairing_points);
56
57 // Verify the consistency between the commitments to polynomials representing the op queue received by translator
58 // and final merge verifier
59 translator_verifier.verify_consistency_with_final_merge(merged_table_commitments);
60
61 return { translator_pairing_points, opening_claim, ipa_proof };
62}
63} // namespace bb::stdlib::recursion::honk
GoblinRecursiveVerifierOutput verify(const GoblinProof &, const MergeCommitments &merge_commitments, const MergeSettings merge_settings=MergeSettings::PREPEND)
Creates a circuit that executes the ECCVM, Translator and Merge verifiers.
MergeSettings
The MergeSettings define whether an current subtable will be added at the beginning (PREPEND) or at t...
std::shared_ptr< TranslatorVerificationKey > translator_verification_key
Definition goblin.hpp:61
std::shared_ptr< ECCVMVerificationKey > eccvm_verification_key
Definition goblin.hpp:60
An object storing two EC points that represent the inputs to a pairing check.
void aggregate(PairingPoints const &other)
Compute a linear combination of the present pairing points with an input set of pairing points.