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

The recursive counterpart to the "native" UltraRollupFlavor. More...

#include <ultra_rollup_recursive_flavor.hpp>

Inheritance diagram for bb::UltraRollupRecursiveFlavor_< BuilderType >:
bb::UltraRecursiveFlavor_< BuilderType >

Classes

class  VerificationKey
 The verification key is responsible for storing the commitments to the precomputed (non-witnessk) polynomials used by the verifier. More...
 

Public Types

using CircuitBuilder = BuilderType
 
using NativeFlavor = UltraRollupFlavor
 
using Curve = UltraRecursiveFlavor_< BuilderType >::Curve
 
using PCS = KZG< Curve >
 
using GroupElement = typename Curve::Element
 
using Commitment = typename Curve::Element
 
using FF = typename Curve::ScalarField
 
using VerifierCommitmentKey = bb::VerifierCommitmentKey< NativeFlavor::Curve >
 
using NativeVerificationKey = NativeFlavor::VerificationKey
 
using Transcript = UltraRecursiveFlavor_< BuilderType >::Transcript
 
using VerifierCommitments = UltraFlavor::VerifierCommitments_< Commitment, VerificationKey >
 
using VKAndHash = VKAndHash_< FF, VerificationKey >
 
- Public Types inherited from bb::UltraRecursiveFlavor_< BuilderType >
using CircuitBuilder = BuilderType
 
using Curve = stdlib::bn254< CircuitBuilder >
 
using PCS = KZG< Curve >
 
using GroupElement = typename Curve::Element
 
using Commitment = typename Curve::Element
 
using FF = typename Curve::ScalarField
 
using NativeFlavor = UltraFlavor
 
using NativeVerificationKey = NativeFlavor::VerificationKey
 
using Transcript = bb::BaseTranscript< bb::stdlib::recursion::honk::StdlibTranscriptParams< CircuitBuilder > >
 
using VerifierCommitmentKey = bb::VerifierCommitmentKey< NativeFlavor::Curve >
 
using Relations = UltraFlavor::Relations_< FF >
 
using SubrelationSeparators = std::array< FF, NUM_SUBRELATIONS - 1 >
 
using CommitmentLabels = UltraFlavor::CommitmentLabels
 
using WitnessCommitments = UltraFlavor::WitnessEntities< Commitment >
 
using VerifierCommitments = UltraFlavor::VerifierCommitments_< Commitment, VerificationKey >
 
using VKAndHash = VKAndHash_< FF, VerificationKey >
 

Additional Inherited Members

- Static Public Attributes inherited from bb::UltraRecursiveFlavor_< BuilderType >
static constexpr size_t VIRTUAL_LOG_N = UltraFlavor::VIRTUAL_LOG_N
 
static constexpr bool USE_SHORT_MONOMIALS = UltraFlavor::USE_SHORT_MONOMIALS
 
static constexpr bool HasZK = false
 
static constexpr bool USE_PADDING = UltraFlavor::USE_PADDING
 
static constexpr size_t NUM_WIRES = UltraFlavor::NUM_WIRES
 
static constexpr size_t NUM_ALL_ENTITIES = UltraFlavor::NUM_ALL_ENTITIES
 
static constexpr size_t NUM_PRECOMPUTED_ENTITIES = UltraFlavor::NUM_PRECOMPUTED_ENTITIES
 
static constexpr size_t NUM_WITNESS_ENTITIES = UltraFlavor::NUM_WITNESS_ENTITIES
 
static constexpr RepeatedCommitmentsData REPEATED_COMMITMENTS = UltraFlavor::REPEATED_COMMITMENTS
 
static constexpr size_t MAX_PARTIAL_RELATION_LENGTH = compute_max_partial_relation_length<Relations>()
 
static constexpr size_t MAX_TOTAL_RELATION_LENGTH = compute_max_total_relation_length<Relations>()
 
static constexpr size_t BATCHED_RELATION_PARTIAL_LENGTH = MAX_PARTIAL_RELATION_LENGTH + 1
 
static constexpr size_t NUM_RELATIONS = std::tuple_size<Relations>::value
 
static constexpr size_t NUM_SUBRELATIONS = NativeFlavor::NUM_SUBRELATIONS
 

Detailed Description

template<typename BuilderType>
class bb::UltraRollupRecursiveFlavor_< BuilderType >

The recursive counterpart to the "native" UltraRollupFlavor.

This flavor can be used to instantiate a recursive Mega Honk verifier for a proof created using the MegaZKFlavor. It is similar in structure to its native counterpart with two main differences: 1) the curve types are stdlib types (e.g. field_t instead of field) and 2) it does not specify any Prover related types (e.g. Polynomial, ExtendedEdges, etc.) since we do not emulate prover computation in circuits, i.e. it only makes sense to instantiate a Verifier with this flavor.

Note
Unlike conventional flavors, "recursive" flavors are templated by a builder (much like native vs stdlib types). This is because the flavor itself determines the details of the underlying verifier algorithm (i.e. the set of relations), while the Builder determines the arithmetization of that algorithm into a circuit.
Template Parameters
BuilderTypeDetermines the arithmetization of the verifier circuit defined based on this flavor.

Definition at line 39 of file ultra_rollup_recursive_flavor.hpp.

Member Typedef Documentation

◆ CircuitBuilder

template<typename BuilderType >
using bb::UltraRollupRecursiveFlavor_< BuilderType >::CircuitBuilder = BuilderType

Definition at line 41 of file ultra_rollup_recursive_flavor.hpp.

◆ Commitment

template<typename BuilderType >
using bb::UltraRollupRecursiveFlavor_< BuilderType >::Commitment = typename Curve::Element

Definition at line 46 of file ultra_rollup_recursive_flavor.hpp.

◆ Curve

template<typename BuilderType >
using bb::UltraRollupRecursiveFlavor_< BuilderType >::Curve = UltraRecursiveFlavor_<BuilderType>::Curve

Definition at line 43 of file ultra_rollup_recursive_flavor.hpp.

◆ FF

template<typename BuilderType >
using bb::UltraRollupRecursiveFlavor_< BuilderType >::FF = typename Curve::ScalarField

Definition at line 47 of file ultra_rollup_recursive_flavor.hpp.

◆ GroupElement

template<typename BuilderType >
using bb::UltraRollupRecursiveFlavor_< BuilderType >::GroupElement = typename Curve::Element

Definition at line 45 of file ultra_rollup_recursive_flavor.hpp.

◆ NativeFlavor

template<typename BuilderType >
using bb::UltraRollupRecursiveFlavor_< BuilderType >::NativeFlavor = UltraRollupFlavor

Definition at line 42 of file ultra_rollup_recursive_flavor.hpp.

◆ NativeVerificationKey

template<typename BuilderType >
using bb::UltraRollupRecursiveFlavor_< BuilderType >::NativeVerificationKey = NativeFlavor::VerificationKey

Definition at line 49 of file ultra_rollup_recursive_flavor.hpp.

◆ PCS

template<typename BuilderType >
using bb::UltraRollupRecursiveFlavor_< BuilderType >::PCS = KZG<Curve>

Definition at line 44 of file ultra_rollup_recursive_flavor.hpp.

◆ Transcript

template<typename BuilderType >
using bb::UltraRollupRecursiveFlavor_< BuilderType >::Transcript = UltraRecursiveFlavor_<BuilderType>::Transcript

Definition at line 50 of file ultra_rollup_recursive_flavor.hpp.

◆ VerifierCommitmentKey

template<typename BuilderType >
using bb::UltraRollupRecursiveFlavor_< BuilderType >::VerifierCommitmentKey = bb::VerifierCommitmentKey<NativeFlavor::Curve>

Definition at line 48 of file ultra_rollup_recursive_flavor.hpp.

◆ VerifierCommitments

template<typename BuilderType >
using bb::UltraRollupRecursiveFlavor_< BuilderType >::VerifierCommitments = UltraFlavor::VerifierCommitments_<Commitment, VerificationKey>

Definition at line 124 of file ultra_rollup_recursive_flavor.hpp.

◆ VKAndHash

template<typename BuilderType >
using bb::UltraRollupRecursiveFlavor_< BuilderType >::VKAndHash = VKAndHash_<FF, VerificationKey>

Definition at line 125 of file ultra_rollup_recursive_flavor.hpp.


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