|
Barretenberg
The ZK-SNARK library at the core of Aztec
|
Stateful HyperNova folding verifier (native + recursive). Verifies a series of instances against a starting accumulator and reduces them to one accumulator with a single multilinear batching proof. More...
#include <hypernova_verifier.hpp>
Public Types | |
| using | BaseFlavor = std::conditional_t< IsRecursive, MegaKernelRecursiveFlavor, MegaKernelFlavor > |
| using | FF = typename BaseFlavor::FF |
| using | Curve = typename BaseFlavor::Curve |
| using | Commitment = typename BaseFlavor::Commitment |
| using | Transcript = typename BaseFlavor::Transcript |
| using | Accumulator = MultilinearBatchingVerifierClaim< Curve > |
| using | BatchingVerifier = MultilinearBatchingVerifier< IsRecursive > |
| using | Proof = std::conditional_t< IsRecursive, stdlib::Proof< MegaCircuitBuilder >, HonkProof > |
| template<typename InstanceFlavor > | |
| using | VerifierInstance = VerifierInstance_< InstanceFlavor > |
Public Member Functions | |
| HypernovaFoldingVerifier (std::shared_ptr< Transcript > transcript) | |
| template<typename InstanceFlavor > | |
| bool | accumulate_instance (const std::shared_ptr< VerifierInstance< InstanceFlavor > > &instance, const Proof &proof) |
| Verify the instance-to-accumulator sumcheck of one incoming proof and cache the resulting claim. | |
| std::pair< bool, Accumulator > | finalize (const Proof &batching_proof, std::optional< Accumulator > previous_accumulator=std::nullopt) |
| Batch the previous accumulator (if any) and the cached claims into a single accumulator. | |
| const std::vector< Accumulator > & | get_cached_claims () const |
Static Public Attributes | |
| static constexpr bool | IsRecursive = IsRecursive_ |
Private Member Functions | |
| template<typename InstanceFlavor > | |
| SumcheckOutput< InstanceFlavor > | sumcheck_on_incoming_instance (const std::shared_ptr< VerifierInstance< InstanceFlavor > > &instance, const Proof &proof, size_t num_public_inputs) |
| Perform Oink + Sumcheck on the incoming instance, generating the challenges at which the polynomial commitments have to be opened. | |
| template<typename InstanceFlavor > | |
| Accumulator | sumcheck_output_to_accumulator (SumcheckOutput< InstanceFlavor > &sumcheck_output, const std::shared_ptr< VerifierInstance< InstanceFlavor > > &instance) |
| Convert the output of the instance sumcheck into an accumulator claim. | |
| template<size_t N> | |
| Commitment | batch_mul (std::span< Commitment, N > _points, std::vector< FF > &scalars) |
| Utility to perform batch mul of commitments. | |
Private Attributes | |
| std::shared_ptr< Transcript > | transcript |
| std::vector< Accumulator > | cached_claims |
Stateful HyperNova folding verifier (native + recursive). Verifies a series of instances against a starting accumulator and reduces them to one accumulator with a single multilinear batching proof.
See: chonk/README.md#hypernova-folding-details
Construct → accumulate_instance<InstanceFlavor>() once per incoming proof → finalize() exactly once. SINGLE-USE: construct a fresh verifier for each folding group
Definition at line 35 of file hypernova_verifier.hpp.
| using bb::HypernovaFoldingVerifier< IsRecursive_ >::Accumulator = MultilinearBatchingVerifierClaim<Curve> |
Definition at line 45 of file hypernova_verifier.hpp.
| using bb::HypernovaFoldingVerifier< IsRecursive_ >::BaseFlavor = std::conditional_t<IsRecursive, MegaKernelRecursiveFlavor, MegaKernelFlavor> |
Definition at line 40 of file hypernova_verifier.hpp.
| using bb::HypernovaFoldingVerifier< IsRecursive_ >::BatchingVerifier = MultilinearBatchingVerifier<IsRecursive> |
Definition at line 46 of file hypernova_verifier.hpp.
| using bb::HypernovaFoldingVerifier< IsRecursive_ >::Commitment = typename BaseFlavor::Commitment |
Definition at line 43 of file hypernova_verifier.hpp.
| using bb::HypernovaFoldingVerifier< IsRecursive_ >::Curve = typename BaseFlavor::Curve |
Definition at line 42 of file hypernova_verifier.hpp.
| using bb::HypernovaFoldingVerifier< IsRecursive_ >::FF = typename BaseFlavor::FF |
Definition at line 41 of file hypernova_verifier.hpp.
| using bb::HypernovaFoldingVerifier< IsRecursive_ >::Proof = std::conditional_t<IsRecursive, stdlib::Proof<MegaCircuitBuilder>, HonkProof> |
Definition at line 47 of file hypernova_verifier.hpp.
| using bb::HypernovaFoldingVerifier< IsRecursive_ >::Transcript = typename BaseFlavor::Transcript |
Definition at line 44 of file hypernova_verifier.hpp.
| using bb::HypernovaFoldingVerifier< IsRecursive_ >::VerifierInstance = VerifierInstance_<InstanceFlavor> |
Definition at line 49 of file hypernova_verifier.hpp.
|
inline |
Definition at line 51 of file hypernova_verifier.hpp.
| template bool bb::HypernovaFoldingVerifier< IsRecursive_ >::accumulate_instance< MegaAppRecursiveFlavor > | ( | const std::shared_ptr< VerifierInstance< InstanceFlavor > > & | instance, |
| const Proof & | proof | ||
| ) |
Verify the instance-to-accumulator sumcheck of one incoming proof and cache the resulting claim.
Definition at line 34 of file hypernova_verifier.cpp.
|
private |
Utility to perform batch mul of commitments.
Definition at line 22 of file hypernova_verifier.cpp.
| std::pair< bool, typename HypernovaFoldingVerifier< IsRecursive_ >::Accumulator > bb::HypernovaFoldingVerifier< IsRecursive_ >::finalize | ( | const Proof & | batching_proof, |
| std::optional< Accumulator > | previous_accumulator = std::nullopt |
||
| ) |
Batch the previous accumulator (if any) and the cached claims into a single accumulator.
The previous accumulator is claim 0, followed by the cached per-instance claims in order. With a single assembled claim there is nothing to batch: it is returned and the batching proof is ignored (it is empty). With two or more, the MultilinearBatching proof is loaded onto the shared transcript and verified.
Definition at line 108 of file hypernova_verifier.cpp.
|
inline |
Definition at line 73 of file hypernova_verifier.hpp.
|
private |
Perform Oink + Sumcheck on the incoming instance, generating the challenges at which the polynomial commitments have to be opened.
Definition at line 57 of file hypernova_verifier.cpp.
|
private |
Convert the output of the instance sumcheck into an accumulator claim.
Definition at line 76 of file hypernova_verifier.cpp.
|
private |
Definition at line 77 of file hypernova_verifier.hpp.
|
staticconstexpr |
Definition at line 37 of file hypernova_verifier.hpp.
|
private |
Definition at line 76 of file hypernova_verifier.hpp.