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

Contains all the information required by a Honk prover to create a proof, constructed from a finalized circuit. More...

#include <prover_instance.hpp>

Public Types

using Flavor = Flavor_
 
using FF = typename Flavor::FF
 

Public Member Functions

size_t dyadic_size () const
 
size_t log_dyadic_size () const
 
size_t pub_inputs_offset () const
 
size_t num_public_inputs () const
 
size_t get_final_active_wire_idx () const
 
Flavor::PrecomputedData get_precomputed ()
 
 ProverInstance_ (Circuit &circuit)
 
 ProverInstance_ ()=default
 
 ProverInstance_ (const ProverInstance_ &)=delete
 
 ProverInstance_ (ProverInstance_ &&)=delete
 
ProverInstance_operator= (const ProverInstance_ &)=delete
 
ProverInstance_operator= (ProverInstance_ &&)=delete
 
 ~ProverInstance_ ()=default
 

Public Attributes

std::vector< FFpublic_inputs
 
ProverPolynomials polynomials
 
WitnessCommitments commitments
 
FF alpha
 
RelationParameters< FFrelation_parameters
 
std::vector< FFgate_challenges
 
HonkProof ipa_proof
 
std::vector< uint32_t > memory_read_records
 
std::vector< uint32_t > memory_write_records
 

Private Types

using Circuit = typename Flavor::CircuitBuilder
 
using ProverPolynomials = typename Flavor::ProverPolynomials
 
using WitnessCommitments = typename Flavor::WitnessCommitments
 
using Polynomial = typename Flavor::Polynomial
 

Private Member Functions

size_t trace_active_range_size () const
 Get the size of the active trace range (0 to the final active wire index)
 
size_t compute_dyadic_size (Circuit &)
 Compute the minimum dyadic (power-of-2) circuit size.
 
void allocate_wires ()
 
void allocate_permutation_argument_polynomials ()
 
void allocate_lagrange_polynomials ()
 
void allocate_selectors (const Circuit &)
 
void allocate_table_lookup_polynomials (const Circuit &)
 
void allocate_ecc_op_polynomials (const Circuit &)
 
void allocate_databus_polynomials (const Circuit &)
 
void construct_databus_polynomials (Circuit &)
 Populate the databus polynomials (calldata, secondary_calldata, return_data) and their read counts/tags.
 
void construct_lookup_polynomials (Circuit &circuit)
 
void populate_memory_records (const Circuit &circuit)
 Copy RAM/ROM record of reads and writes from the circuit to the instance.
 

Private Attributes

MetaData metadata
 
size_t final_active_wire_idx { std::numeric_limits<size_t>::max() }
 

Detailed Description

template<typename Flavor_>
class bb::ProverInstance_< Flavor_ >

Contains all the information required by a Honk prover to create a proof, constructed from a finalized circuit.

Definition at line 26 of file prover_instance.hpp.

Member Typedef Documentation

◆ Circuit

template<typename Flavor_ >
using bb::ProverInstance_< Flavor_ >::Circuit = typename Flavor::CircuitBuilder
private

Definition at line 32 of file prover_instance.hpp.

◆ FF

template<typename Flavor_ >
using bb::ProverInstance_< Flavor_ >::FF = typename Flavor::FF

Definition at line 29 of file prover_instance.hpp.

◆ Flavor

template<typename Flavor_ >
using bb::ProverInstance_< Flavor_ >::Flavor = Flavor_

Definition at line 28 of file prover_instance.hpp.

◆ Polynomial

template<typename Flavor_ >
using bb::ProverInstance_< Flavor_ >::Polynomial = typename Flavor::Polynomial
private

Definition at line 35 of file prover_instance.hpp.

◆ ProverPolynomials

template<typename Flavor_ >
using bb::ProverInstance_< Flavor_ >::ProverPolynomials = typename Flavor::ProverPolynomials
private

Definition at line 33 of file prover_instance.hpp.

◆ WitnessCommitments

template<typename Flavor_ >
using bb::ProverInstance_< Flavor_ >::WitnessCommitments = typename Flavor::WitnessCommitments
private

Definition at line 34 of file prover_instance.hpp.

Constructor & Destructor Documentation

◆ ProverInstance_() [1/4]

template<typename Flavor >
bb::ProverInstance_< Flavor >::ProverInstance_ ( Circuit circuit)

Definition at line 21 of file prover_instance.cpp.

◆ ProverInstance_() [2/4]

template<typename Flavor_ >
bb::ProverInstance_< Flavor_ >::ProverInstance_ ( )
default

◆ ProverInstance_() [3/4]

template<typename Flavor_ >
bb::ProverInstance_< Flavor_ >::ProverInstance_ ( const ProverInstance_< Flavor_ > &  )
delete

◆ ProverInstance_() [4/4]

template<typename Flavor_ >
bb::ProverInstance_< Flavor_ >::ProverInstance_ ( ProverInstance_< Flavor_ > &&  )
delete

◆ ~ProverInstance_()

template<typename Flavor_ >
bb::ProverInstance_< Flavor_ >::~ProverInstance_ ( )
default

Member Function Documentation

◆ allocate_databus_polynomials()

template<typename Flavor >
requires HasDataBus<Flavor>
void bb::ProverInstance_< Flavor >::allocate_databus_polynomials ( const Circuit circuit)
private

Definition at line 228 of file prover_instance.cpp.

◆ allocate_ecc_op_polynomials()

template<typename Flavor >
requires IsMegaFlavor<Flavor>
void bb::ProverInstance_< Flavor >::allocate_ecc_op_polynomials ( const Circuit circuit)
private

Definition at line 213 of file prover_instance.cpp.

◆ allocate_lagrange_polynomials()

template<typename Flavor >
void bb::ProverInstance_< Flavor >::allocate_lagrange_polynomials ( )
private

Definition at line 159 of file prover_instance.cpp.

◆ allocate_permutation_argument_polynomials()

template<typename Flavor >
void bb::ProverInstance_< Flavor >::allocate_permutation_argument_polynomials ( )
private

Definition at line 142 of file prover_instance.cpp.

◆ allocate_selectors()

template<typename Flavor >
void bb::ProverInstance_< Flavor >::allocate_selectors ( const Circuit circuit)
private

Definition at line 170 of file prover_instance.cpp.

◆ allocate_table_lookup_polynomials()

template<typename Flavor >
void bb::ProverInstance_< Flavor >::allocate_table_lookup_polynomials ( const Circuit circuit)
private

Definition at line 185 of file prover_instance.cpp.

◆ allocate_wires()

template<typename Flavor >
void bb::ProverInstance_< Flavor >::allocate_wires ( )
private

Definition at line 130 of file prover_instance.cpp.

◆ compute_dyadic_size()

template<typename Flavor >
size_t bb::ProverInstance_< Flavor >::compute_dyadic_size ( Circuit circuit)
private

Compute the minimum dyadic (power-of-2) circuit size.

The dyadic circuit size is the smallest power of two which can accommodate all polynomials required for the proving system. This size must account for the execution trace itself, i.e. the wires/selectors, but also any auxiliary polynomials like those that store the table data for lookup arguments.

Template Parameters
Flavor
Parameters
circuit

Definition at line 113 of file prover_instance.cpp.

◆ construct_databus_polynomials()

template<typename Flavor >
requires HasDataBus<Flavor>
void bb::ProverInstance_< Flavor >::construct_databus_polynomials ( Circuit circuit)
private

Populate the databus polynomials (calldata, secondary_calldata, return_data) and their read counts/tags.

Definition at line 287 of file prover_instance.cpp.

◆ construct_lookup_polynomials()

template<typename Flavor >
void bb::ProverInstance_< Flavor >::construct_lookup_polynomials ( Circuit circuit)
private

Definition at line 271 of file prover_instance.cpp.

◆ dyadic_size()

template<typename Flavor_ >
size_t bb::ProverInstance_< Flavor_ >::dyadic_size ( ) const
inline

Definition at line 53 of file prover_instance.hpp.

◆ get_final_active_wire_idx()

template<typename Flavor_ >
size_t bb::ProverInstance_< Flavor_ >::get_final_active_wire_idx ( ) const
inline

Definition at line 61 of file prover_instance.hpp.

◆ get_precomputed()

template<typename Flavor_ >
Flavor::PrecomputedData bb::ProverInstance_< Flavor_ >::get_precomputed ( )
inline

Definition at line 68 of file prover_instance.hpp.

◆ log_dyadic_size()

template<typename Flavor_ >
size_t bb::ProverInstance_< Flavor_ >::log_dyadic_size ( ) const
inline

Definition at line 54 of file prover_instance.hpp.

◆ num_public_inputs()

template<typename Flavor_ >
size_t bb::ProverInstance_< Flavor_ >::num_public_inputs ( ) const
inline

Definition at line 56 of file prover_instance.hpp.

◆ operator=() [1/2]

template<typename Flavor_ >
ProverInstance_ & bb::ProverInstance_< Flavor_ >::operator= ( const ProverInstance_< Flavor_ > &  )
delete

◆ operator=() [2/2]

template<typename Flavor_ >
ProverInstance_ & bb::ProverInstance_< Flavor_ >::operator= ( ProverInstance_< Flavor_ > &&  )
delete

◆ populate_memory_records()

template<typename Flavor >
void bb::ProverInstance_< Flavor >::populate_memory_records ( const Circuit circuit)
private

Copy RAM/ROM record of reads and writes from the circuit to the instance.

The memory records in the circuit store indices within the memory block where a read/write is performed. They are stored in the ProverInstance as indices into the full trace by accounting for the offset of the memory block.

Definition at line 336 of file prover_instance.cpp.

◆ pub_inputs_offset()

template<typename Flavor_ >
size_t bb::ProverInstance_< Flavor_ >::pub_inputs_offset ( ) const
inline

Definition at line 55 of file prover_instance.hpp.

◆ trace_active_range_size()

template<typename Flavor_ >
size_t bb::ProverInstance_< Flavor_ >::trace_active_range_size ( ) const
inlineprivate

Get the size of the active trace range (0 to the final active wire index)

Definition at line 84 of file prover_instance.hpp.

Member Data Documentation

◆ alpha

template<typename Flavor_ >
FF bb::ProverInstance_< Flavor_ >::alpha

Definition at line 44 of file prover_instance.hpp.

◆ commitments

template<typename Flavor_ >
WitnessCommitments bb::ProverInstance_< Flavor_ >::commitments

Definition at line 43 of file prover_instance.hpp.

◆ final_active_wire_idx

template<typename Flavor_ >
size_t bb::ProverInstance_< Flavor_ >::final_active_wire_idx { std::numeric_limits<size_t>::max() }
private

Definition at line 38 of file prover_instance.hpp.

◆ gate_challenges

template<typename Flavor_ >
std::vector<FF> bb::ProverInstance_< Flavor_ >::gate_challenges

Definition at line 46 of file prover_instance.hpp.

◆ ipa_proof

template<typename Flavor_ >
HonkProof bb::ProverInstance_< Flavor_ >::ipa_proof

Definition at line 48 of file prover_instance.hpp.

◆ memory_read_records

template<typename Flavor_ >
std::vector<uint32_t> bb::ProverInstance_< Flavor_ >::memory_read_records

Definition at line 50 of file prover_instance.hpp.

◆ memory_write_records

template<typename Flavor_ >
std::vector<uint32_t> bb::ProverInstance_< Flavor_ >::memory_write_records

Definition at line 51 of file prover_instance.hpp.

◆ metadata

template<typename Flavor_ >
MetaData bb::ProverInstance_< Flavor_ >::metadata
private

Definition at line 36 of file prover_instance.hpp.

◆ polynomials

template<typename Flavor_ >
ProverPolynomials bb::ProverInstance_< Flavor_ >::polynomials

Definition at line 42 of file prover_instance.hpp.

◆ public_inputs

template<typename Flavor_ >
std::vector<FF> bb::ProverInstance_< Flavor_ >::public_inputs

Definition at line 41 of file prover_instance.hpp.

◆ relation_parameters

template<typename Flavor_ >
RelationParameters<FF> bb::ProverInstance_< Flavor_ >::relation_parameters

Definition at line 45 of file prover_instance.hpp.


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