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

#include <folding_test_utils.hpp>

Public Types

using Builder = Flavor::CircuitBuilder
 
using Curve = stdlib::bn254< Builder >
 
using ProverInstance = ProverInstance_< Flavor >
 
using VerificationKey = typename Flavor::VerificationKey
 
using VerifierInstance = VerifierInstance_< Flavor >
 
using ProverInstances = std::array< std::shared_ptr< ProverInstance >, NUM_INSTANCES >
 
using VerifierInstances = std::array< std::shared_ptr< VerifierInstance >, NUM_INSTANCES >
 
using TupleOfKeys = std::tuple< ProverInstances, VerifierInstances >
 
using FoldingData = std::tuple< std::shared_ptr< ProverInstance >, std::shared_ptr< VerifierInstance > >
 
using FoldingProver = ProtogalaxyProver_< Flavor >
 
using FoldingVerifier = ProtogalaxyVerifier_< VerifierInstance >
 
using DeciderProver = DeciderProver_< Flavor >
 
using DeciderVerifier = DeciderVerifier_< Flavor >
 
using FoldingVerificationResult = std::tuple< std::shared_ptr< VerifierInstance >, std::shared_ptr< typename FoldingVerifier::Transcript > >
 

Static Public Member Functions

static void create_function_circuit (Builder &builder, const size_t &log_num_gates=9, const size_t &log_num_gates_with_public_inputs=9)
 Create a circuit with the specified number of arithmetic gates and arithmetic gates with public inputs.
 
static void construct_instances_and_add_to_tuple (TupleOfKeys &keys, Builder &builder, size_t idx=0, TraceSettings trace_settings=TraceSettings{})
 Construct Prover and Verifier instances for a provided circuit and add to tuple.
 
static void construct_accumulator_and_add_to_tuple (TupleOfKeys &keys, size_t idx=0, TraceSettings trace_settings=TraceSettings{})
 Construct Prover and Verifier accumulators and add to tuple.
 
static TupleOfKeys construct_instances (size_t num_keys, TraceSettings trace_settings=TraceSettings{}, bool circuits_of_different_size=false)
 Construct a given number of Prover and Verifier instances.
 
static FoldingData get_folding_data (const TupleOfKeys &keys, size_t idx)
 Get folding data at index idx in the tuple of keys.
 
static FoldingResult< Flavorfold (const ProverInstances &prover_instances, const VerifierInstances &verification_keys, bool hash_accumulator=false, ExecutionTraceUsageTracker trace_usage_tracker=ExecutionTraceUsageTracker{})
 Fold two prover instances. Return folded accumulator and folding proof.
 
static FoldingVerificationResult verify_folding_proof (const VerifierInstances &verification_keys, const HonkProof &folding_proof, bool hash_accumulator=false)
 Verify a folding proof. Return the folded accumulator and the verifier transcript.
 
static FoldingData fold_and_verify (const ProverInstances &prover_instances, const VerifierInstances &verification_keys, ExecutionTraceUsageTracker trace_usage_tracker=ExecutionTraceUsageTracker{}, bool hash_accumulator=false)
 Fold two prover instances and generate folded verifier by running the PG verifier.
 
static bool run_decider (const std::shared_ptr< ProverInstance > &prover_accumulator, const std::shared_ptr< VerifierInstance > &verifier_accumulator)
 Run the decider on the given accumulator.
 
static std::pair< bool, std::string > compare_accumulators (const std::shared_ptr< VerifierInstance > &lhs, const std::shared_ptr< VerifierInstance > &rhs)
 Compare two accumulators. Return the result of the comparison and error message.
 
static std::pair< bool, std::string > compare_accumulators (const std::shared_ptr< ProverInstance > &lhs, const std::shared_ptr< VerifierInstance > &rhs)
 Compare a Prover accumulator and a Verifier accumulator. Return the result of the comparison and error message.
 

Detailed Description

template<class Flavor>
class bb::ProtogalaxyTestUtilities< Flavor >

Definition at line 18 of file folding_test_utils.hpp.

Member Typedef Documentation

◆ Builder

◆ Curve

Definition at line 21 of file folding_test_utils.hpp.

◆ DeciderProver

template<class Flavor >
using bb::ProtogalaxyTestUtilities< Flavor >::DeciderProver = DeciderProver_<Flavor>

Definition at line 31 of file folding_test_utils.hpp.

◆ DeciderVerifier

template<class Flavor >
using bb::ProtogalaxyTestUtilities< Flavor >::DeciderVerifier = DeciderVerifier_<Flavor>

Definition at line 32 of file folding_test_utils.hpp.

◆ FoldingData

template<class Flavor >
using bb::ProtogalaxyTestUtilities< Flavor >::FoldingData = std::tuple<std::shared_ptr<ProverInstance>, std::shared_ptr<VerifierInstance> >

Definition at line 28 of file folding_test_utils.hpp.

◆ FoldingProver

template<class Flavor >
using bb::ProtogalaxyTestUtilities< Flavor >::FoldingProver = ProtogalaxyProver_<Flavor>

Definition at line 29 of file folding_test_utils.hpp.

◆ FoldingVerificationResult

template<class Flavor >
using bb::ProtogalaxyTestUtilities< Flavor >::FoldingVerificationResult = std::tuple<std::shared_ptr<VerifierInstance>, std::shared_ptr<typename FoldingVerifier::Transcript> >

Definition at line 33 of file folding_test_utils.hpp.

◆ FoldingVerifier

template<class Flavor >
using bb::ProtogalaxyTestUtilities< Flavor >::FoldingVerifier = ProtogalaxyVerifier_<VerifierInstance>

Definition at line 30 of file folding_test_utils.hpp.

◆ ProverInstance

◆ ProverInstances

template<class Flavor >
using bb::ProtogalaxyTestUtilities< Flavor >::ProverInstances = std::array<std::shared_ptr<ProverInstance>, NUM_INSTANCES>

Definition at line 25 of file folding_test_utils.hpp.

◆ TupleOfKeys

template<class Flavor >
using bb::ProtogalaxyTestUtilities< Flavor >::TupleOfKeys = std::tuple<ProverInstances, VerifierInstances>

Definition at line 27 of file folding_test_utils.hpp.

◆ VerificationKey

Definition at line 23 of file folding_test_utils.hpp.

◆ VerifierInstance

template<class Flavor >
using bb::ProtogalaxyTestUtilities< Flavor >::VerifierInstance = VerifierInstance_<Flavor>

Definition at line 24 of file folding_test_utils.hpp.

◆ VerifierInstances

template<class Flavor >
using bb::ProtogalaxyTestUtilities< Flavor >::VerifierInstances = std::array<std::shared_ptr<VerifierInstance>, NUM_INSTANCES>

Definition at line 26 of file folding_test_utils.hpp.

Member Function Documentation

◆ compare_accumulators() [1/2]

template<class Flavor >
static std::pair< bool, std::string > bb::ProtogalaxyTestUtilities< Flavor >::compare_accumulators ( const std::shared_ptr< ProverInstance > &  lhs,
const std::shared_ptr< VerifierInstance > &  rhs 
)
inlinestatic

Compare a Prover accumulator and a Verifier accumulator. Return the result of the comparison and error message.

Definition at line 276 of file folding_test_utils.hpp.

◆ compare_accumulators() [2/2]

template<class Flavor >
static std::pair< bool, std::string > bb::ProtogalaxyTestUtilities< Flavor >::compare_accumulators ( const std::shared_ptr< VerifierInstance > &  lhs,
const std::shared_ptr< VerifierInstance > &  rhs 
)
inlinestatic

Compare two accumulators. Return the result of the comparison and error message.

Definition at line 231 of file folding_test_utils.hpp.

◆ construct_accumulator_and_add_to_tuple()

template<class Flavor >
static void bb::ProtogalaxyTestUtilities< Flavor >::construct_accumulator_and_add_to_tuple ( TupleOfKeys keys,
size_t  idx = 0,
TraceSettings  trace_settings = TraceSettings{} 
)
inlinestatic

Construct Prover and Verifier accumulators and add to tuple.

Definition at line 107 of file folding_test_utils.hpp.

◆ construct_instances()

template<class Flavor >
static TupleOfKeys bb::ProtogalaxyTestUtilities< Flavor >::construct_instances ( size_t  num_keys,
TraceSettings  trace_settings = TraceSettings{},
bool  circuits_of_different_size = false 
)
inlinestatic

Construct a given number of Prover and Verifier instances.

Definition at line 121 of file folding_test_utils.hpp.

◆ construct_instances_and_add_to_tuple()

template<class Flavor >
static void bb::ProtogalaxyTestUtilities< Flavor >::construct_instances_and_add_to_tuple ( TupleOfKeys keys,
Builder builder,
size_t  idx = 0,
TraceSettings  trace_settings = TraceSettings{} 
)
inlinestatic

Construct Prover and Verifier instances for a provided circuit and add to tuple.

Definition at line 91 of file folding_test_utils.hpp.

◆ create_function_circuit()

template<class Flavor >
static void bb::ProtogalaxyTestUtilities< Flavor >::create_function_circuit ( Builder builder,
const size_t &  log_num_gates = 9,
const size_t &  log_num_gates_with_public_inputs = 9 
)
inlinestatic

Create a circuit with the specified number of arithmetic gates and arithmetic gates with public inputs.

Definition at line 39 of file folding_test_utils.hpp.

◆ fold()

template<class Flavor >
static FoldingResult< Flavor > bb::ProtogalaxyTestUtilities< Flavor >::fold ( const ProverInstances prover_instances,
const VerifierInstances verification_keys,
bool  hash_accumulator = false,
ExecutionTraceUsageTracker  trace_usage_tracker = ExecutionTraceUsageTracker{} 
)
inlinestatic

Fold two prover instances. Return folded accumulator and folding proof.

Definition at line 155 of file folding_test_utils.hpp.

◆ fold_and_verify()

template<class Flavor >
static FoldingData bb::ProtogalaxyTestUtilities< Flavor >::fold_and_verify ( const ProverInstances prover_instances,
const VerifierInstances verification_keys,
ExecutionTraceUsageTracker  trace_usage_tracker = ExecutionTraceUsageTracker{},
bool  hash_accumulator = false 
)
inlinestatic

Fold two prover instances and generate folded verifier by running the PG verifier.

Definition at line 200 of file folding_test_utils.hpp.

◆ get_folding_data()

template<class Flavor >
static FoldingData bb::ProtogalaxyTestUtilities< Flavor >::get_folding_data ( const TupleOfKeys keys,
size_t  idx 
)
inlinestatic

Get folding data at index idx in the tuple of keys.

Definition at line 147 of file folding_test_utils.hpp.

◆ run_decider()

template<class Flavor >
static bool bb::ProtogalaxyTestUtilities< Flavor >::run_decider ( const std::shared_ptr< ProverInstance > &  prover_accumulator,
const std::shared_ptr< VerifierInstance > &  verifier_accumulator 
)
inlinestatic

Run the decider on the given accumulator.

Definition at line 216 of file folding_test_utils.hpp.

◆ verify_folding_proof()

template<class Flavor >
static FoldingVerificationResult bb::ProtogalaxyTestUtilities< Flavor >::verify_folding_proof ( const VerifierInstances verification_keys,
const HonkProof folding_proof,
bool  hash_accumulator = false 
)
inlinestatic

Verify a folding proof. Return the folded accumulator and the verifier transcript.

Definition at line 178 of file folding_test_utils.hpp.


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