|
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 | IPAReductionResult |
| Result of reducing Chonk verification to an IPA opening claim (native mode only). More... | |
| struct | ReductionResult |
| Result of Chonk verification reduction (recursive 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. | |
| IPAReductionResult | reduce_to_ipa_claim (const Proof &proof) |
| Run Chonk verification up to but not including IPA, returning the IPA claim for deferred verification. | |
| ChonkVerifier< false >::IPAReductionResult | reduce_to_ipa_claim (const Proof &proof) |
| Run all Chonk verification except IPA, returning the IPA data for deferred verification. | |
| 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 >::IPAReductionResult | reduce_to_ipa_claim (const Proof &proof) |
| Stub for recursive mode (not meaningful — reduce_to_ipa_claim 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 | IPAClaim = typename GoblinVerifier::ReductionResult::IPAClaim |
| using | IPAProof = typename GoblinVerifier::ReductionResult::IPAProof |
| using | MergeCommitments = typename GoblinVerifier::MergeVerifier::InputCommitments |
Private Attributes | |
| std::shared_ptr< VKAndHash > | vk_and_hash |
| std::shared_ptr< Transcript > | transcript |
Static Private Attributes | |
| static constexpr size_t | NUM_PAIRING_POINTS = 4 |
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 an IPA claim (Grumpkin). Pairing points are aggregated at each rollup level and verified on L1. IPA claims are carried in RollupIO through rollup levels, accumulated via IPA::accumulate, and verified in-circuit at root rollup via IPA::full_verify_recursive.
In native mode: Performs all verification including pairing check and IPA 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 75 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 54 of file chonk_verifier.hpp.
|
private |
Definition at line 55 of file chonk_verifier.hpp.
| using bb::ChonkVerifier< IsRecursive >::Output = std::conditional_t<IsRecursive, ReductionResult, bool> |
Definition at line 72 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 76 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 74 of file chonk_verifier.hpp.
| using bb::ChonkVerifier< IsRecursive >::VKAndHash = typename HidingKernelVerifier::VKAndHash |
Definition at line 73 of file chonk_verifier.hpp.
|
inline |
Definition at line 78 of file chonk_verifier.hpp.
| ChonkVerifier< false >::IPAReductionResult bb::ChonkVerifier< false >::reduce_to_ipa_claim | ( | const Proof & | proof | ) |
Run all Chonk verification except IPA, returning the IPA data for deferred verification.
Definition at line 17 of file chonk_verifier.cpp.
| ChonkVerifier< true >::IPAReductionResult bb::ChonkVerifier< true >::reduce_to_ipa_claim | ( | const Proof & | proof | ) |
Stub for recursive mode (not meaningful — reduce_to_ipa_claim is only used in native batch verification).
Definition at line 136 of file chonk_verifier.cpp.
| IPAReductionResult bb::ChonkVerifier< IsRecursive >::reduce_to_ipa_claim | ( | const Proof & | proof | ) |
Run Chonk verification up to but not including IPA, returning the IPA claim for deferred verification.
Verifies the MegaZK proof, databus consistency, and Goblin proof (merge/eccvm/translator), then returns the IPA opening claim and proof without performing the final IPA MSM. This enables batch IPA 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 59 of file chonk_verifier.cpp.
| ChonkVerifier< true >::Output bb::ChonkVerifier< true >::verify | ( | const Proof & | proof | ) |
Verifies a Chonk IVC proof in-circuit.
Definition at line 83 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 58 of file chonk_verifier.hpp.
|
private |
Definition at line 133 of file chonk_verifier.hpp.
|
private |
Definition at line 131 of file chonk_verifier.hpp.