|
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... | |
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. | |
| 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. | |
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 >::Output bb::ChonkVerifier< false >::verify | ( | const Proof & | proof | ) |
Verifies a Chonk IVC proof (Native specialization).
Definition at line 16 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 67 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 111 of file chonk_verifier.hpp.
|
private |
Definition at line 109 of file chonk_verifier.hpp.