Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
bb::stdlib::recursion::honk::BoomerangRecursiveVerifierTest< RecursiveFlavor > Class Template Reference

Test suite for recursive verification of Honk proofs for both Ultra and Mega arithmetisation. More...

Inheritance diagram for bb::stdlib::recursion::honk::BoomerangRecursiveVerifierTest< RecursiveFlavor >:

Static Public Member Functions

static void SetUpTestSuite ()
 
static void test_recursive_verification ()
 Construct a recursive verification circuit for the proof of an inner circuit then check the number of unconstrained variables in the circuit.
 

Private Types

using InnerFlavor = typename RecursiveFlavor::NativeFlavor
 
using InnerProver = UltraProver_< InnerFlavor >
 
using InnerVerifier = UltraVerifier_< InnerFlavor >
 
using InnerBuilder = typename InnerFlavor::CircuitBuilder
 
using InnerDeciderProvingKey = DeciderProvingKey_< InnerFlavor >
 
using InnerCurve = bn254< InnerBuilder >
 
using InnerCommitment = InnerFlavor::Commitment
 
using InnerFF = InnerFlavor::FF
 
using OuterBuilder = typename RecursiveFlavor::CircuitBuilder
 
using OuterFlavor = std::conditional_t< IsMegaBuilder< OuterBuilder >, MegaFlavor, std::conditional_t< HasIPAAccumulator< RecursiveFlavor >, UltraRollupFlavor, UltraFlavor > >
 
using OuterProver = UltraProver_< OuterFlavor >
 
using OuterVerifier = UltraVerifier_< OuterFlavor >
 
using OuterDeciderProvingKey = DeciderProvingKey_< OuterFlavor >
 
using RecursiveVerifier = UltraRecursiveVerifier_< RecursiveFlavor >
 
using VerificationKey = typename RecursiveVerifier::VerificationKey
 
using PairingObject = PairingPoints< OuterBuilder >
 
using VerifierOutput = bb::stdlib::recursion::honk::UltraRecursiveVerifierOutput< OuterBuilder >
 
using StdlibProof = bb::stdlib::Proof< OuterBuilder >
 

Static Private Member Functions

static InnerBuilder create_inner_circuit (size_t log_num_gates=10)
 Create a non-trivial arbitrary inner circuit, the proof of which will be recursively verified.
 

Detailed Description

template<typename RecursiveFlavor>
class bb::stdlib::recursion::honk::BoomerangRecursiveVerifierTest< RecursiveFlavor >

Test suite for recursive verification of Honk proofs for both Ultra and Mega arithmetisation.

Inner* types describe the type of circuits (and everything else required to generate a proof) that we aim to recursively verify. Outer* describes the arithmetisation of the recursive verifier circuit and the types required to ensure the recursive verifier circuit is correct (i.e. by producing a proof and verifying it).

Template Parameters
RecursiveFlavordefines the recursive verifier, what the arithmetisation of its circuit should be and what types of proofs it recursively verifies.

Definition at line 23 of file graph_description_ultra_recursive_verifier.test.cpp.

Member Typedef Documentation

◆ InnerBuilder

template<typename RecursiveFlavor >
using bb::stdlib::recursion::honk::BoomerangRecursiveVerifierTest< RecursiveFlavor >::InnerBuilder = typename InnerFlavor::CircuitBuilder
private

◆ InnerCommitment

template<typename RecursiveFlavor >
using bb::stdlib::recursion::honk::BoomerangRecursiveVerifierTest< RecursiveFlavor >::InnerCommitment = InnerFlavor::Commitment
private

◆ InnerCurve

template<typename RecursiveFlavor >
using bb::stdlib::recursion::honk::BoomerangRecursiveVerifierTest< RecursiveFlavor >::InnerCurve = bn254<InnerBuilder>
private

◆ InnerDeciderProvingKey

template<typename RecursiveFlavor >
using bb::stdlib::recursion::honk::BoomerangRecursiveVerifierTest< RecursiveFlavor >::InnerDeciderProvingKey = DeciderProvingKey_<InnerFlavor>
private

◆ InnerFF

template<typename RecursiveFlavor >
using bb::stdlib::recursion::honk::BoomerangRecursiveVerifierTest< RecursiveFlavor >::InnerFF = InnerFlavor::FF
private

◆ InnerFlavor

template<typename RecursiveFlavor >
using bb::stdlib::recursion::honk::BoomerangRecursiveVerifierTest< RecursiveFlavor >::InnerFlavor = typename RecursiveFlavor::NativeFlavor
private

◆ InnerProver

template<typename RecursiveFlavor >
using bb::stdlib::recursion::honk::BoomerangRecursiveVerifierTest< RecursiveFlavor >::InnerProver = UltraProver_<InnerFlavor>
private

◆ InnerVerifier

template<typename RecursiveFlavor >
using bb::stdlib::recursion::honk::BoomerangRecursiveVerifierTest< RecursiveFlavor >::InnerVerifier = UltraVerifier_<InnerFlavor>
private

◆ OuterBuilder

template<typename RecursiveFlavor >
using bb::stdlib::recursion::honk::BoomerangRecursiveVerifierTest< RecursiveFlavor >::OuterBuilder = typename RecursiveFlavor::CircuitBuilder
private

◆ OuterDeciderProvingKey

template<typename RecursiveFlavor >
using bb::stdlib::recursion::honk::BoomerangRecursiveVerifierTest< RecursiveFlavor >::OuterDeciderProvingKey = DeciderProvingKey_<OuterFlavor>
private

◆ OuterFlavor

template<typename RecursiveFlavor >
using bb::stdlib::recursion::honk::BoomerangRecursiveVerifierTest< RecursiveFlavor >::OuterFlavor = std::conditional_t<IsMegaBuilder<OuterBuilder>, MegaFlavor, std::conditional_t<HasIPAAccumulator<RecursiveFlavor>, UltraRollupFlavor, UltraFlavor> >
private

◆ OuterProver

template<typename RecursiveFlavor >
using bb::stdlib::recursion::honk::BoomerangRecursiveVerifierTest< RecursiveFlavor >::OuterProver = UltraProver_<OuterFlavor>
private

◆ OuterVerifier

template<typename RecursiveFlavor >
using bb::stdlib::recursion::honk::BoomerangRecursiveVerifierTest< RecursiveFlavor >::OuterVerifier = UltraVerifier_<OuterFlavor>
private

◆ PairingObject

template<typename RecursiveFlavor >
using bb::stdlib::recursion::honk::BoomerangRecursiveVerifierTest< RecursiveFlavor >::PairingObject = PairingPoints<OuterBuilder>
private

◆ RecursiveVerifier

template<typename RecursiveFlavor >
using bb::stdlib::recursion::honk::BoomerangRecursiveVerifierTest< RecursiveFlavor >::RecursiveVerifier = UltraRecursiveVerifier_<RecursiveFlavor>
private

◆ StdlibProof

template<typename RecursiveFlavor >
using bb::stdlib::recursion::honk::BoomerangRecursiveVerifierTest< RecursiveFlavor >::StdlibProof = bb::stdlib::Proof<OuterBuilder>
private

◆ VerificationKey

template<typename RecursiveFlavor >
using bb::stdlib::recursion::honk::BoomerangRecursiveVerifierTest< RecursiveFlavor >::VerificationKey = typename RecursiveVerifier::VerificationKey
private

◆ VerifierOutput

template<typename RecursiveFlavor >
using bb::stdlib::recursion::honk::BoomerangRecursiveVerifierTest< RecursiveFlavor >::VerifierOutput = bb::stdlib::recursion::honk::UltraRecursiveVerifierOutput<OuterBuilder>
private

Member Function Documentation

◆ create_inner_circuit()

template<typename RecursiveFlavor >
static InnerBuilder bb::stdlib::recursion::honk::BoomerangRecursiveVerifierTest< RecursiveFlavor >::create_inner_circuit ( size_t  log_num_gates = 10)
inlinestaticprivate

Create a non-trivial arbitrary inner circuit, the proof of which will be recursively verified.

Parameters
builder
public_inputs
log_num_gates

Definition at line 60 of file graph_description_ultra_recursive_verifier.test.cpp.

◆ SetUpTestSuite()

template<typename RecursiveFlavor >
static void bb::stdlib::recursion::honk::BoomerangRecursiveVerifierTest< RecursiveFlavor >::SetUpTestSuite ( )
inlinestatic

◆ test_recursive_verification()

template<typename RecursiveFlavor >
static void bb::stdlib::recursion::honk::BoomerangRecursiveVerifierTest< RecursiveFlavor >::test_recursive_verification ( )
inlinestatic

Construct a recursive verification circuit for the proof of an inner circuit then check the number of unconstrained variables in the circuit.

Definition at line 99 of file graph_description_ultra_recursive_verifier.test.cpp.


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