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

#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 MultilinearBatchingVerifier = std::conditional_t< IsRecursiveFlavor< Flavor >, typename HypernovaRecursiveTypes::MultilinearBatchingVerifier, typename HypernovaNativeTypes::MultilinearBatchingVerifier >
 
using VerifierInstance = std::conditional_t< IsRecursiveFlavor< Flavor >, typename HypernovaRecursiveTypes::VerifierInstance, typename HypernovaNativeTypes::VerifierInstance >
 
using Proof = std::conditional_t< IsRecursiveFlavor< Flavor >, typename HypernovaRecursiveTypes::Proof, typename HypernovaNativeTypes::Proof >
 

Public Member Functions

 HypernovaFoldingVerifier (const 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.
 

Public Attributes

std::shared_ptr< Transcripttranscript
 

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)
 Perform sumcheck on the incoming instance.
 
std::pair< std::vector< FF >, std::vector< FF > > get_batching_challenges ()
 Generate the challenges required to batch the incoming instance with the accumulator.
 
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.
 

Detailed Description

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

Definition at line 21 of file hypernova_verifier.hpp.

Member Typedef Documentation

◆ Accumulator

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

Definition at line 29 of file hypernova_verifier.hpp.

◆ Commitment

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

Definition at line 26 of file hypernova_verifier.hpp.

◆ Curve

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

Definition at line 25 of file hypernova_verifier.hpp.

◆ FF

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

Definition at line 24 of file hypernova_verifier.hpp.

◆ Flavor

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

Definition at line 23 of file hypernova_verifier.hpp.

◆ MegaSumcheckOutput

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

Definition at line 32 of file hypernova_verifier.hpp.

◆ MultilinearBatchingVerifier

template<typename Flavor_ >
using bb::HypernovaFoldingVerifier< Flavor_ >::MultilinearBatchingVerifier = std::conditional_t<IsRecursiveFlavor<Flavor>, typename HypernovaRecursiveTypes::MultilinearBatchingVerifier, typename HypernovaNativeTypes::MultilinearBatchingVerifier>

Definition at line 34 of file hypernova_verifier.hpp.

◆ OinkVerifier

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

Definition at line 30 of file hypernova_verifier.hpp.

◆ Proof

template<typename Flavor_ >
using bb::HypernovaFoldingVerifier< Flavor_ >::Proof = std::conditional_t<IsRecursiveFlavor<Flavor>, typename HypernovaRecursiveTypes::Proof, typename HypernovaNativeTypes::Proof>

Definition at line 41 of file hypernova_verifier.hpp.

◆ SumcheckVerifier

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

Definition at line 31 of file hypernova_verifier.hpp.

◆ Transcript

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

Definition at line 28 of file hypernova_verifier.hpp.

◆ VerifierCommitments

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

Definition at line 27 of file hypernova_verifier.hpp.

◆ VerifierInstance

template<typename Flavor_ >
using bb::HypernovaFoldingVerifier< Flavor_ >::VerifierInstance = std::conditional_t<IsRecursiveFlavor<Flavor>, typename HypernovaRecursiveTypes::VerifierInstance, typename HypernovaNativeTypes::VerifierInstance>

Definition at line 38 of file hypernova_verifier.hpp.

Constructor & Destructor Documentation

◆ HypernovaFoldingVerifier()

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

Definition at line 50 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 32 of file hypernova_verifier.cpp.

◆ get_batching_challenges()

template<typename Flavor_ >
std::pair< std::vector< typename HypernovaFoldingVerifier< Flavor_ >::FF >, std::vector< typename HypernovaFoldingVerifier< Flavor_ >::FF > > bb::HypernovaFoldingVerifier< Flavor_ >::get_batching_challenges ( )
private

Generate the challenges required to batch the incoming instance with the accumulator.

Definition at line 14 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 108 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 
)
private

Perform sumcheck on the incoming instance.

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

Definition at line 82 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 48 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
proof
Returns
std::tuple<bool, bool, Accumulator> Tuple of first and second sumcheck result, and new accumulator.

Definition at line 130 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 46 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 45 of file hypernova_verifier.hpp.

◆ transcript

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

Definition at line 48 of file hypernova_verifier.hpp.


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