|
Barretenberg
The ZK-SNARK library at the core of Aztec
|
Verifier for Chonk IVC proofs (both native and recursive). More...
#include <chonk_verifier.hpp>
Classes | |
| struct | ReductionResult |
| Result of Chonk verification reduction (recursive mode only) More... | |
| struct | TripleIpaReductionResult |
| Result of reducing Chonk verification to a deferred TripleIPA opening (native mode only). More... | |
Public Types | |
| using | Output = std::conditional_t< IsRecursive, ReductionResult, bool > |
| using | VKAndHash = typename HidingKernelVerifier::VKAndHash |
| using | VK = typename HidingKernelVerifier::VerificationKey |
| using | Commitment = typename HidingKernelVerifier::Commitment |
| using | Proof = std::conditional_t< IsRecursive, ChonkStdlibProof, ChonkProof > |
Public Member Functions | |
| ChonkVerifier (const std::shared_ptr< VKAndHash > &vk_and_hash) | |
| Output | verify (const Proof &proof) |
| Verify a Chonk proof. | |
| TripleIpaReductionResult | reduce_to_triple_ipa_opening (const Proof &proof) |
| Run Chonk verification up to but not including TripleIPA verification. | |
| ChonkVerifier< false >::TripleIpaReductionResult | reduce_to_triple_ipa_opening (const Proof &proof) |
| Run Chonk verification up to the deferred TripleIPA verification, returning the TripleIPA data. | |
| ChonkVerifier< false >::Output | verify (const Proof &proof) |
| Verifies a Chonk IVC proof (Native specialization). | |
| ChonkVerifier< true >::Output | verify (const Proof &proof) |
| Verifies a Chonk IVC proof in-circuit. | |
| ChonkVerifier< true >::TripleIpaReductionResult | reduce_to_triple_ipa_opening (const Proof &proof) |
| Stub for recursive mode (not meaningful — reduce_to_triple_ipa_opening is only used in native batch verification). | |
Private Types | |
| using | Builder = std::conditional_t< IsRecursive, UltraCircuitBuilder, void > |
| using | HidingKernelVerifier = std::conditional_t< IsRecursive, bb::MegaZKRecursiveVerifier, bb::MegaZKVerifier > |
| using | GoblinVerifier = std::conditional_t< IsRecursive, bb::GoblinRecursiveVerifier, bb::GoblinVerifier > |
| using | Transcript = typename GoblinVerifier::Transcript |
| using | GoblinReductionResult = typename GoblinVerifier::ReductionResult |
| using | HidingKernelIO = std::conditional_t< IsRecursive, stdlib::recursion::honk::HidingKernelIO< Builder >, bb::HidingKernelIO > |
| using | PairingPoints = typename GoblinVerifier::ReductionResult::PairingPoints |
| using | MergeCommitments = typename GoblinVerifier::MergeVerifier::InputCommitments |
| using | DeferredTripleIpaOpening = std::conditional_t< IsRecursive, typename ECCVMRecursiveVerifier::DeferredTripleIpaOpening, typename ECCVMVerifier::DeferredTripleIpaOpening > |
| using | NativeDeferredTripleIpaOpening = typename ECCVMVerifier::DeferredTripleIpaOpening |
Private Attributes | |
| std::shared_ptr< VKAndHash > | vk_and_hash |
| std::shared_ptr< Transcript > | transcript |
Static Private Attributes | |
| static constexpr size_t | NUM_PAIRING_POINTS = 3 |
Verifier for Chonk IVC proofs (both native and recursive).
Consists of:
The hiding kernel proof is verified first to extract ECC op queue commitments, which are then used as inputs to Goblin verification. Databus consistency is checked between the kernel's return data and calldata commitments.
In recursive mode: Returns an Output containing deferred verification data: pairing points (BN254) and a compact TripleIPA opening (Grumpkin). Pairing points are aggregated at each rollup level and verified on L1. The TripleIPA opening is reduced into the existing IPA accumulation path before final discharge.
In native mode: Performs all verification including pairing check and TripleIPA verification, returns bool.
Recursive mode uses Ultra arithmetization, as all ECC ops have to be performed in-circuit.
Definition at line 43 of file chonk_verifier.hpp.
|
private |
Definition at line 45 of file chonk_verifier.hpp.
| using bb::ChonkVerifier< IsRecursive >::Commitment = typename HidingKernelVerifier::Commitment |
Definition at line 76 of file chonk_verifier.hpp.
|
private |
Definition at line 54 of file chonk_verifier.hpp.
|
private |
Definition at line 49 of file chonk_verifier.hpp.
|
private |
Definition at line 47 of file chonk_verifier.hpp.
|
private |
Definition at line 50 of file chonk_verifier.hpp.
|
private |
Definition at line 46 of file chonk_verifier.hpp.
|
private |
Definition at line 53 of file chonk_verifier.hpp.
|
private |
Definition at line 57 of file chonk_verifier.hpp.
| using bb::ChonkVerifier< IsRecursive >::Output = std::conditional_t<IsRecursive, ReductionResult, bool> |
Definition at line 73 of file chonk_verifier.hpp.
|
private |
Definition at line 52 of file chonk_verifier.hpp.
| using bb::ChonkVerifier< IsRecursive >::Proof = std::conditional_t<IsRecursive, ChonkStdlibProof, ChonkProof> |
Definition at line 77 of file chonk_verifier.hpp.
|
private |
Definition at line 48 of file chonk_verifier.hpp.
| using bb::ChonkVerifier< IsRecursive >::VK = typename HidingKernelVerifier::VerificationKey |
Definition at line 75 of file chonk_verifier.hpp.
| using bb::ChonkVerifier< IsRecursive >::VKAndHash = typename HidingKernelVerifier::VKAndHash |
Definition at line 74 of file chonk_verifier.hpp.
|
inline |
Definition at line 79 of file chonk_verifier.hpp.
| ChonkVerifier< false >::TripleIpaReductionResult bb::ChonkVerifier< false >::reduce_to_triple_ipa_opening | ( | const Proof & | proof | ) |
Run Chonk verification up to the deferred TripleIPA verification, returning the TripleIPA data.
Verification flow on a shared transcript:
Definition at line 27 of file chonk_verifier.cpp.
| ChonkVerifier< true >::TripleIpaReductionResult bb::ChonkVerifier< true >::reduce_to_triple_ipa_opening | ( | const Proof & | proof | ) |
Stub for recursive mode (not meaningful — reduce_to_triple_ipa_opening is only used in native batch verification).
Definition at line 205 of file chonk_verifier.cpp.
| TripleIpaReductionResult bb::ChonkVerifier< IsRecursive >::reduce_to_triple_ipa_opening | ( | const Proof & | proof | ) |
Run Chonk verification up to but not including TripleIPA verification.
Verifies the MegaZK proof, databus consistency, and Goblin proof (merge/eccvm/translator), then returns the TripleIPA opening without reducing it to an accumulator. This enables batch TripleIPA verification across multiple Chonk proofs.
| proof | The Chonk proof to partially verify |
| ChonkVerifier< false >::Output bb::ChonkVerifier< false >::verify | ( | const Proof & | proof | ) |
Verifies a Chonk IVC proof (Native specialization).
Definition at line 108 of file chonk_verifier.cpp.
| ChonkVerifier< true >::Output bb::ChonkVerifier< true >::verify | ( | const Proof & | proof | ) |
Verifies a Chonk IVC proof in-circuit.
Verification flow on a shared transcript:
Returns ReductionResult with aggregated pairing points and TripleIPA opening for deferred verification.
Definition at line 131 of file chonk_verifier.cpp.
| Output bb::ChonkVerifier< IsRecursive >::verify | ( | const Proof & | proof | ) |
Verify a Chonk proof.
Recursive mode (IsRecursive=true): Creates circuit constraints that verify:
Native mode (IsRecursive=false): Performs full verification including:
| proof | Chonk proof (ChonkStdlibProof for recursive, ChonkProof for native mode) |
|
staticconstexprprivate |
Definition at line 60 of file chonk_verifier.hpp.
|
private |
Definition at line 135 of file chonk_verifier.hpp.
|
private |
Definition at line 133 of file chonk_verifier.hpp.