Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
bb::HypernovaFoldingVerifier< Flavor_ > Class Template Reference

HyperNova folding verifier (native + recursive). Verifies folding proofs and maintains accumulators. More...

#include <hypernova_verifier.hpp>

Public Types

using Flavor = Flavor_
 
using FF = Flavor::FF
 
using Curve = Flavor::Curve
 
using Commitment = Flavor::Commitment
 
using VerifierCommitments = Flavor::VerifierCommitments
 
using Transcript = Flavor::Transcript
 
using Accumulator = MultilinearBatchingVerifierClaim< Curve >
 
using OinkVerifier = bb::OinkVerifier< Flavor >
 
using SumcheckVerifier = bb::SumcheckVerifier< Flavor >
 
using MegaSumcheckOutput = SumcheckOutput< Flavor >
 
using BatchingFlavor = std::conditional_t< IsRecursiveFlavor< Flavor >, MultilinearBatchingRecursiveFlavor, MultilinearBatchingFlavor >
 
using MultilinearBatchingVerifier = bb::MultilinearBatchingVerifier< BatchingFlavor >
 
using VerifierInstance = VerifierInstance_< Flavor >
 
using Proof = std::conditional_t< IsRecursiveFlavor< Flavor >, stdlib::Proof< MegaCircuitBuilder >, HonkProof >
 

Public Member Functions

 HypernovaFoldingVerifier (std::shared_ptr< Transcript > transcript)
 
std::pair< bool, Accumulatorinstance_to_accumulator (const std::shared_ptr< VerifierInstance > &instance, const Proof &proof)
 Turn an instance into an accumulator by executing sumcheck.
 
std::tuple< bool, bool, Accumulatorverify_folding_proof (const std::shared_ptr< typename HypernovaFoldingVerifier::VerifierInstance > &instance, const Proof &proof)
 Verify folding proof. Return the new accumulator and the results of the two sumchecks.
 

Static Public Attributes

static constexpr size_t NUM_UNSHIFTED_ENTITIES = MegaFlavor::NUM_UNSHIFTED_ENTITIES
 
static constexpr size_t NUM_SHIFTED_ENTITIES = MegaFlavor::NUM_SHIFTED_ENTITIES
 

Private Member Functions

SumcheckOutput< Flavorsumcheck_on_incoming_instance (const std::shared_ptr< VerifierInstance > &instance, const Proof &proof, size_t num_public_inputs)
 Perform sumcheck on the incoming instance.
 
Accumulator sumcheck_output_to_accumulator (MegaSumcheckOutput &sumcheck_output, const std::shared_ptr< VerifierInstance > &instance)
 Convert the output of the sumcheck run on the incoming instance into an accumulator.
 
template<size_t N>
Commitment batch_mul (const RefArray< Commitment, N > &_points, const std::vector< FF > &scalars)
 Utility to perform batch mul of commitments.
 

Private Attributes

std::shared_ptr< Transcripttranscript
 

Detailed Description

template<typename Flavor_>
class bb::HypernovaFoldingVerifier< Flavor_ >

HyperNova folding verifier (native + recursive). Verifies folding proofs and maintains accumulators.

See: chonk/README.md#hypernova-folding-details

Definition at line 22 of file hypernova_verifier.hpp.

Member Typedef Documentation

◆ Accumulator

template<typename Flavor_ >
using bb::HypernovaFoldingVerifier< Flavor_ >::Accumulator = MultilinearBatchingVerifierClaim<Curve>

Definition at line 30 of file hypernova_verifier.hpp.

◆ BatchingFlavor

template<typename Flavor_ >
using bb::HypernovaFoldingVerifier< Flavor_ >::BatchingFlavor = std::conditional_t<IsRecursiveFlavor<Flavor>, MultilinearBatchingRecursiveFlavor, MultilinearBatchingFlavor>

Definition at line 34 of file hypernova_verifier.hpp.

◆ Commitment

template<typename Flavor_ >
using bb::HypernovaFoldingVerifier< Flavor_ >::Commitment = Flavor::Commitment

Definition at line 27 of file hypernova_verifier.hpp.

◆ Curve

template<typename Flavor_ >
using bb::HypernovaFoldingVerifier< Flavor_ >::Curve = Flavor::Curve

Definition at line 26 of file hypernova_verifier.hpp.

◆ FF

template<typename Flavor_ >
using bb::HypernovaFoldingVerifier< Flavor_ >::FF = Flavor::FF

Definition at line 25 of file hypernova_verifier.hpp.

◆ Flavor

template<typename Flavor_ >
using bb::HypernovaFoldingVerifier< Flavor_ >::Flavor = Flavor_

Definition at line 24 of file hypernova_verifier.hpp.

◆ MegaSumcheckOutput

template<typename Flavor_ >
using bb::HypernovaFoldingVerifier< Flavor_ >::MegaSumcheckOutput = SumcheckOutput<Flavor>

Definition at line 33 of file hypernova_verifier.hpp.

◆ MultilinearBatchingVerifier

template<typename Flavor_ >
using bb::HypernovaFoldingVerifier< Flavor_ >::MultilinearBatchingVerifier = bb::MultilinearBatchingVerifier<BatchingFlavor>

Definition at line 36 of file hypernova_verifier.hpp.

◆ OinkVerifier

template<typename Flavor_ >
using bb::HypernovaFoldingVerifier< Flavor_ >::OinkVerifier = bb::OinkVerifier<Flavor>

Definition at line 31 of file hypernova_verifier.hpp.

◆ Proof

template<typename Flavor_ >
using bb::HypernovaFoldingVerifier< Flavor_ >::Proof = std::conditional_t<IsRecursiveFlavor<Flavor>, stdlib::Proof<MegaCircuitBuilder>, HonkProof>

Definition at line 39 of file hypernova_verifier.hpp.

◆ SumcheckVerifier

template<typename Flavor_ >
using bb::HypernovaFoldingVerifier< Flavor_ >::SumcheckVerifier = bb::SumcheckVerifier<Flavor>

Definition at line 32 of file hypernova_verifier.hpp.

◆ Transcript

template<typename Flavor_ >
using bb::HypernovaFoldingVerifier< Flavor_ >::Transcript = Flavor::Transcript

Definition at line 29 of file hypernova_verifier.hpp.

◆ VerifierCommitments

template<typename Flavor_ >
using bb::HypernovaFoldingVerifier< Flavor_ >::VerifierCommitments = Flavor::VerifierCommitments

Definition at line 28 of file hypernova_verifier.hpp.

◆ VerifierInstance

template<typename Flavor_ >
using bb::HypernovaFoldingVerifier< Flavor_ >::VerifierInstance = VerifierInstance_<Flavor>

Definition at line 37 of file hypernova_verifier.hpp.

Constructor & Destructor Documentation

◆ HypernovaFoldingVerifier()

template<typename Flavor_ >
bb::HypernovaFoldingVerifier< Flavor_ >::HypernovaFoldingVerifier ( std::shared_ptr< Transcript transcript)
inline

Definition at line 44 of file hypernova_verifier.hpp.

Member Function Documentation

◆ batch_mul()

template<typename Flavor_ >
template<size_t N>
HypernovaFoldingVerifier< Flavor_ >::Commitment bb::HypernovaFoldingVerifier< Flavor_ >::batch_mul ( const RefArray< Commitment, N > &  _points,
const std::vector< FF > &  scalars 
)
private

Utility to perform batch mul of commitments.

Definition at line 15 of file hypernova_verifier.cpp.

◆ instance_to_accumulator()

template<typename Flavor >
std::pair< bool, typename HypernovaFoldingVerifier< Flavor >::Accumulator > bb::HypernovaFoldingVerifier< Flavor >::instance_to_accumulator ( const std::shared_ptr< VerifierInstance > &  instance,
const Proof proof 
)

Turn an instance into an accumulator by executing sumcheck.

Parameters
instance
Returns
std::pair<bool, Accumulator> Pair of sumcheck result and new accumulator.

Definition at line 90 of file hypernova_verifier.cpp.

◆ sumcheck_on_incoming_instance()

template<typename Flavor >
SumcheckOutput< Flavor > bb::HypernovaFoldingVerifier< Flavor >::sumcheck_on_incoming_instance ( const std::shared_ptr< VerifierInstance > &  instance,
const Proof proof,
size_t  num_public_inputs 
)
private

Perform sumcheck on the incoming instance.

Executing this sumcheck we generate the random challenges at which the polynomial commitments have to be opened.

Parameters
num_public_inputsNumber of public inputs (derived from proof size by caller)

Definition at line 61 of file hypernova_verifier.cpp.

◆ sumcheck_output_to_accumulator()

template<typename Flavor_ >
HypernovaFoldingVerifier< Flavor >::Accumulator bb::HypernovaFoldingVerifier< Flavor >::sumcheck_output_to_accumulator ( MegaSumcheckOutput sumcheck_output,
const std::shared_ptr< VerifierInstance > &  instance 
)
private

Convert the output of the sumcheck run on the incoming instance into an accumulator.

Definition at line 26 of file hypernova_verifier.cpp.

◆ verify_folding_proof()

template<typename Flavor >
std::tuple< bool, bool, typename HypernovaFoldingVerifier< Flavor >::Accumulator > bb::HypernovaFoldingVerifier< Flavor >::verify_folding_proof ( const std::shared_ptr< typename HypernovaFoldingVerifier< Flavor_ >::VerifierInstance > &  instance,
const Proof proof 
)

Verify folding proof. Return the new accumulator and the results of the two sumchecks.

Parameters
instanceThe verifier instance for the incoming circuit
proofThe folding proof to verify
Returns
std::tuple<instance_sumcheck_verified, batching_sumcheck_verified, new_accumulator>
  • instance_sumcheck_verified: Did the Sumcheck on the incoming instance pass?
  • batching_sumcheck_verified: Did the MultilinearBatching Sumcheck pass?
  • new_accumulator: The combined accumulator (valid only if both checks pass)

Definition at line 116 of file hypernova_verifier.cpp.

Member Data Documentation

◆ NUM_SHIFTED_ENTITIES

template<typename Flavor_ >
constexpr size_t bb::HypernovaFoldingVerifier< Flavor_ >::NUM_SHIFTED_ENTITIES = MegaFlavor::NUM_SHIFTED_ENTITIES
staticconstexpr

Definition at line 42 of file hypernova_verifier.hpp.

◆ NUM_UNSHIFTED_ENTITIES

template<typename Flavor_ >
constexpr size_t bb::HypernovaFoldingVerifier< Flavor_ >::NUM_UNSHIFTED_ENTITIES = MegaFlavor::NUM_UNSHIFTED_ENTITIES
staticconstexpr

Definition at line 41 of file hypernova_verifier.hpp.

◆ transcript

template<typename Flavor_ >
std::shared_ptr<Transcript> bb::HypernovaFoldingVerifier< Flavor_ >::transcript
private

Definition at line 70 of file hypernova_verifier.hpp.


The documentation for this class was generated from the following files: