Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
HonkRecursionConstraintTestingFunctions< RecursiveFlavor, IsRootRollup, N, LayerSizes > Class Template Reference

Classes

struct  InvalidWitness
 

Public Types

using InnerFlavor = RecursiveFlavor::NativeFlavor
 
using InnerBuilder = InnerFlavor::CircuitBuilder
 
using InnerIO = std::conditional_t< HasIPAAccumulator< InnerFlavor >, bb::stdlib::recursion::honk::RollupIO, bb::stdlib::recursion::honk::DefaultIO< InnerBuilder > >
 
using InnerProverInstance = ProverInstance_< InnerFlavor >
 
using InnerVerificationKey = InnerFlavor::VerificationKey
 
using InnerProver = UltraProver_< InnerFlavor >
 
using AcirConstraint = std::conditional_t< IS_SINGLE_RECURSIVE_VERIFICATION, RecursionConstraint, std::vector< RecursionConstraint > >
 
using Builder = RecursiveFlavor::CircuitBuilder
 

Static Public Member Functions

static InnerBuilder create_inner_circuit ()
 Create a dummy circuit.
 
static AcirConstraint merge_recursion_constraints (std::vector< RecursionConstraint > &constraints, std::vector< WitnessVector > &witness_vectors, WitnessVector &witness_values)
 Merge a series of recursion constraints by offsetting the relevant indices and concatenating the witness vectors.
 
static std::pair< RecursionConstraint, WitnessVectorcircuit_to_recursion_constraint (InnerBuilder &builder)
 Convert a circuit into a recursion constraint: prove the circuit and add the proof, the vk and its hash to a witness vector.
 
static ProgramMetadata generate_metadata ()
 Generate the metadata for the circuit recursively verifying the top layer circuits.
 
static std::pair< AcirConstraint, WitnessVectorinvalidate_witness (AcirConstraint honk_recursion_constraints, WitnessVector witness_values, const InvalidWitness::Target &invalid_witness_target)
 
static void generate_constraints (AcirConstraint &honk_recursion_constraint, WitnessVector &witness_values)
 

Static Public Attributes

static constexpr uint32_t InnerProofType
 
static constexpr bool IS_SINGLE_RECURSIVE_VERIFICATION = N == 1 && LayerSizes[0] == 1
 
static constexpr size_t NUM_PUBLIC_INPUTS = 2
 

Detailed Description

template<typename RecursiveFlavor, bool IsRootRollup, size_t N, std::array< size_t, N > LayerSizes>
class HonkRecursionConstraintTestingFunctions< RecursiveFlavor, IsRootRollup, N, LayerSizes >

Definition at line 64 of file honk_recursion_constraint.test.cpp.

Member Typedef Documentation

◆ AcirConstraint

template<typename RecursiveFlavor , bool IsRootRollup, size_t N, std::array< size_t, N > LayerSizes>
using HonkRecursionConstraintTestingFunctions< RecursiveFlavor, IsRootRollup, N, LayerSizes >::AcirConstraint = std::conditional_t<IS_SINGLE_RECURSIVE_VERIFICATION, RecursionConstraint, std::vector<RecursionConstraint> >

Definition at line 108 of file honk_recursion_constraint.test.cpp.

◆ Builder

template<typename RecursiveFlavor , bool IsRootRollup, size_t N, std::array< size_t, N > LayerSizes>
using HonkRecursionConstraintTestingFunctions< RecursiveFlavor, IsRootRollup, N, LayerSizes >::Builder = RecursiveFlavor::CircuitBuilder

Definition at line 110 of file honk_recursion_constraint.test.cpp.

◆ InnerBuilder

template<typename RecursiveFlavor , bool IsRootRollup, size_t N, std::array< size_t, N > LayerSizes>
using HonkRecursionConstraintTestingFunctions< RecursiveFlavor, IsRootRollup, N, LayerSizes >::InnerBuilder = InnerFlavor::CircuitBuilder

Definition at line 87 of file honk_recursion_constraint.test.cpp.

◆ InnerFlavor

template<typename RecursiveFlavor , bool IsRootRollup, size_t N, std::array< size_t, N > LayerSizes>
using HonkRecursionConstraintTestingFunctions< RecursiveFlavor, IsRootRollup, N, LayerSizes >::InnerFlavor = RecursiveFlavor::NativeFlavor

Definition at line 86 of file honk_recursion_constraint.test.cpp.

◆ InnerIO

template<typename RecursiveFlavor , bool IsRootRollup, size_t N, std::array< size_t, N > LayerSizes>
using HonkRecursionConstraintTestingFunctions< RecursiveFlavor, IsRootRollup, N, LayerSizes >::InnerIO = std::conditional_t<HasIPAAccumulator<InnerFlavor>, bb::stdlib::recursion::honk::RollupIO, bb::stdlib::recursion::honk::DefaultIO<InnerBuilder> >

Definition at line 88 of file honk_recursion_constraint.test.cpp.

◆ InnerProver

template<typename RecursiveFlavor , bool IsRootRollup, size_t N, std::array< size_t, N > LayerSizes>
using HonkRecursionConstraintTestingFunctions< RecursiveFlavor, IsRootRollup, N, LayerSizes >::InnerProver = UltraProver_<InnerFlavor>

Definition at line 93 of file honk_recursion_constraint.test.cpp.

◆ InnerProverInstance

template<typename RecursiveFlavor , bool IsRootRollup, size_t N, std::array< size_t, N > LayerSizes>
using HonkRecursionConstraintTestingFunctions< RecursiveFlavor, IsRootRollup, N, LayerSizes >::InnerProverInstance = ProverInstance_<InnerFlavor>

Definition at line 91 of file honk_recursion_constraint.test.cpp.

◆ InnerVerificationKey

template<typename RecursiveFlavor , bool IsRootRollup, size_t N, std::array< size_t, N > LayerSizes>
using HonkRecursionConstraintTestingFunctions< RecursiveFlavor, IsRootRollup, N, LayerSizes >::InnerVerificationKey = InnerFlavor::VerificationKey

Definition at line 92 of file honk_recursion_constraint.test.cpp.

Member Function Documentation

◆ circuit_to_recursion_constraint()

template<typename RecursiveFlavor , bool IsRootRollup, size_t N, std::array< size_t, N > LayerSizes>
static std::pair< RecursionConstraint, WitnessVector > HonkRecursionConstraintTestingFunctions< RecursiveFlavor, IsRootRollup, N, LayerSizes >::circuit_to_recursion_constraint ( InnerBuilder builder)
inlinestatic

Convert a circuit into a recursion constraint: prove the circuit and add the proof, the vk and its hash to a witness vector.

Definition at line 206 of file honk_recursion_constraint.test.cpp.

◆ create_inner_circuit()

template<typename RecursiveFlavor , bool IsRootRollup, size_t N, std::array< size_t, N > LayerSizes>
static InnerBuilder HonkRecursionConstraintTestingFunctions< RecursiveFlavor, IsRootRollup, N, LayerSizes >::create_inner_circuit ( )
inlinestatic

Create a dummy circuit.

Returns
InnerBuilder

Definition at line 144 of file honk_recursion_constraint.test.cpp.

◆ generate_constraints()

template<typename RecursiveFlavor , bool IsRootRollup, size_t N, std::array< size_t, N > LayerSizes>
static void HonkRecursionConstraintTestingFunctions< RecursiveFlavor, IsRootRollup, N, LayerSizes >::generate_constraints ( AcirConstraint honk_recursion_constraint,
WitnessVector witness_values 
)
inlinestatic

Definition at line 288 of file honk_recursion_constraint.test.cpp.

◆ generate_metadata()

template<typename RecursiveFlavor , bool IsRootRollup, size_t N, std::array< size_t, N > LayerSizes>
static ProgramMetadata HonkRecursionConstraintTestingFunctions< RecursiveFlavor, IsRootRollup, N, LayerSizes >::generate_metadata ( )
inlinestatic

Generate the metadata for the circuit recursively verifying the top layer circuits.

Definition at line 235 of file honk_recursion_constraint.test.cpp.

◆ invalidate_witness()

template<typename RecursiveFlavor , bool IsRootRollup, size_t N, std::array< size_t, N > LayerSizes>
static std::pair< AcirConstraint, WitnessVector > HonkRecursionConstraintTestingFunctions< RecursiveFlavor, IsRootRollup, N, LayerSizes >::invalidate_witness ( AcirConstraint  honk_recursion_constraints,
WitnessVector  witness_values,
const InvalidWitness::Target invalid_witness_target 
)
inlinestatic

Definition at line 240 of file honk_recursion_constraint.test.cpp.

◆ merge_recursion_constraints()

template<typename RecursiveFlavor , bool IsRootRollup, size_t N, std::array< size_t, N > LayerSizes>
static AcirConstraint HonkRecursionConstraintTestingFunctions< RecursiveFlavor, IsRootRollup, N, LayerSizes >::merge_recursion_constraints ( std::vector< RecursionConstraint > &  constraints,
std::vector< WitnessVector > &  witness_vectors,
WitnessVector witness_values 
)
inlinestatic

Merge a series of recursion constraints by offsetting the relevant indices and concatenating the witness vectors.

Parameters
constraintsThe constraints to be merged
witness_vectorsThe witness vectors corresponding to each constraint
witness_valuesThe final witness vector where all the witness values are stored
Returns
AcirConstraint

Definition at line 168 of file honk_recursion_constraint.test.cpp.

Member Data Documentation

◆ InnerProofType

template<typename RecursiveFlavor , bool IsRootRollup, size_t N, std::array< size_t, N > LayerSizes>
constexpr uint32_t HonkRecursionConstraintTestingFunctions< RecursiveFlavor, IsRootRollup, N, LayerSizes >::InnerProofType
staticconstexpr
Initial value:
= []() {
if constexpr (HasIPAAccumulator<InnerFlavor>) {
return ROLLUP_HONK;
} else if constexpr (InnerFlavor::HasZK) {
return HONK_ZK;
}
return HONK;
}()

Definition at line 97 of file honk_recursion_constraint.test.cpp.

◆ IS_SINGLE_RECURSIVE_VERIFICATION

template<typename RecursiveFlavor , bool IsRootRollup, size_t N, std::array< size_t, N > LayerSizes>
constexpr bool HonkRecursionConstraintTestingFunctions< RecursiveFlavor, IsRootRollup, N, LayerSizes >::IS_SINGLE_RECURSIVE_VERIFICATION = N == 1 && LayerSizes[0] == 1
staticconstexpr

Definition at line 107 of file honk_recursion_constraint.test.cpp.

◆ NUM_PUBLIC_INPUTS

template<typename RecursiveFlavor , bool IsRootRollup, size_t N, std::array< size_t, N > LayerSizes>
constexpr size_t HonkRecursionConstraintTestingFunctions< RecursiveFlavor, IsRootRollup, N, LayerSizes >::NUM_PUBLIC_INPUTS = 2
staticconstexpr

Definition at line 114 of file honk_recursion_constraint.test.cpp.


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