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

The recursive counterpart to the Ultra flavor with ZK. More...

#include <ultra_zk_recursive_flavor.hpp>

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

Public Types

using NativeFlavor = UltraZKFlavor
 
- 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 >
 

Static Public Attributes

static constexpr bool HasZK = true
 
static constexpr size_t BATCHED_RELATION_PARTIAL_LENGTH = NativeFlavor::BATCHED_RELATION_PARTIAL_LENGTH
 
- 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::UltraZKRecursiveFlavor_< BuilderType >

The recursive counterpart to the Ultra flavor with ZK.

This flavor can be used to instantiate a recursive Ultra Honk ZK verifier for a proof created using the ZK Ultra flavor. 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, ProverUnivariates, 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 52 of file ultra_zk_recursive_flavor.hpp.

Member Typedef Documentation

◆ NativeFlavor

template<typename BuilderType >
using bb::UltraZKRecursiveFlavor_< BuilderType >::NativeFlavor = UltraZKFlavor

Definition at line 54 of file ultra_zk_recursive_flavor.hpp.

Member Data Documentation

◆ BATCHED_RELATION_PARTIAL_LENGTH

template<typename BuilderType >
constexpr size_t bb::UltraZKRecursiveFlavor_< BuilderType >::BATCHED_RELATION_PARTIAL_LENGTH = NativeFlavor::BATCHED_RELATION_PARTIAL_LENGTH
staticconstexpr

Definition at line 58 of file ultra_zk_recursive_flavor.hpp.

◆ HasZK

template<typename BuilderType >
constexpr bool bb::UltraZKRecursiveFlavor_< BuilderType >::HasZK = true
staticconstexpr

Definition at line 56 of file ultra_zk_recursive_flavor.hpp.


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