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

A ProverInstance is normally constructed from a finalized circuit and it contains all the information required by a Mega Honk prover to create a proof. More...

#include <prover_instance.hpp>

Public Types

using Flavor = Flavor_
 
using FF = typename Flavor::FF
 
using Trace = TraceToPolynomials< Flavor >
 

Public Member Functions

void set_dyadic_size (size_t size)
 
void set_final_active_wire_idx (size_t idx)
 
size_t dyadic_size () const
 
size_t log_dyadic_size () const
 
size_t pub_inputs_offset () const
 
size_t num_public_inputs () const
 
MetaData get_metadata () const
 
size_t get_final_active_wire_idx () const
 
size_t trace_active_range_size () const
 Get the size of the active trace range (0 to the final active wire index)
 
Flavor::PrecomputedData get_precomputed ()
 
 ProverInstance_ (Circuit &circuit, const CommitmentKey &commitment_key=CommitmentKey())
 
 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
 
SubrelationSeparator alpha
 
bb::RelationParameters< FFrelation_parameters
 
std::vector< FFgate_challenges
 
HonkProof ipa_proof
 
bool is_complete = false
 
std::vector< uint32_t > memory_read_records
 
std::vector< uint32_t > memory_write_records
 
CommitmentKey commitment_key
 

Private Types

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

Private Member Functions

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 &)
 
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() }
 

Static Private Attributes

static constexpr size_t num_zero_rows = Flavor::has_zero_row ? 1 : 0
 
static constexpr size_t NUM_WIRES = Circuit::NUM_WIRES
 

Detailed Description

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

A ProverInstance is normally constructed from a finalized circuit and it contains all the information required by a Mega Honk prover to create a proof.

Definition at line 33 of file prover_instance.hpp.

Member Typedef Documentation

◆ Circuit

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

Definition at line 39 of file prover_instance.hpp.

◆ CommitmentKey

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

Definition at line 40 of file prover_instance.hpp.

◆ FF

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

Definition at line 36 of file prover_instance.hpp.

◆ Flavor

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

Definition at line 35 of file prover_instance.hpp.

◆ Polynomial

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

Definition at line 43 of file prover_instance.hpp.

◆ ProverPolynomials

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

Definition at line 41 of file prover_instance.hpp.

◆ SubrelationSeparator

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

Definition at line 44 of file prover_instance.hpp.

◆ Trace

template<IsUltraOrMegaHonk Flavor_>
using bb::ProverInstance_< Flavor_ >::Trace = TraceToPolynomials<Flavor>

Definition at line 51 of file prover_instance.hpp.

◆ WitnessCommitments

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

Definition at line 42 of file prover_instance.hpp.

Constructor & Destructor Documentation

◆ ProverInstance_() [1/4]

template<IsUltraOrMegaHonk Flavor_>
bb::ProverInstance_< Flavor_ >::ProverInstance_ ( Circuit circuit,
const CommitmentKey commitment_key = CommitmentKey() 
)
inline

Definition at line 96 of file prover_instance.hpp.

◆ ProverInstance_() [2/4]

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

◆ ProverInstance_() [3/4]

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

◆ ProverInstance_() [4/4]

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

◆ ~ProverInstance_()

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

Member Function Documentation

◆ allocate_databus_polynomials()

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

Definition at line 141 of file prover_instance.cpp.

◆ allocate_ecc_op_polynomials()

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

Definition at line 126 of file prover_instance.cpp.

◆ allocate_lagrange_polynomials()

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

Definition at line 71 of file prover_instance.cpp.

◆ allocate_permutation_argument_polynomials()

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

Definition at line 54 of file prover_instance.cpp.

◆ allocate_selectors()

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

Definition at line 82 of file prover_instance.cpp.

◆ allocate_table_lookup_polynomials()

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

Definition at line 98 of file prover_instance.cpp.

◆ allocate_wires()

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

Definition at line 42 of file prover_instance.cpp.

◆ compute_dyadic_size()

template<IsUltraOrMegaHonk 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 25 of file prover_instance.cpp.

◆ construct_databus_polynomials()

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

Definition at line 192 of file prover_instance.cpp.

◆ dyadic_size()

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

Definition at line 70 of file prover_instance.hpp.

◆ get_final_active_wire_idx()

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

Definition at line 79 of file prover_instance.hpp.

◆ get_metadata()

template<IsUltraOrMegaHonk Flavor_>
MetaData bb::ProverInstance_< Flavor_ >::get_metadata ( ) const
inline

Definition at line 78 of file prover_instance.hpp.

◆ get_precomputed()

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

Definition at line 91 of file prover_instance.hpp.

◆ log_dyadic_size()

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

Definition at line 71 of file prover_instance.hpp.

◆ num_public_inputs()

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

Definition at line 73 of file prover_instance.hpp.

◆ operator=() [1/2]

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

◆ operator=() [2/2]

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

◆ populate_memory_records()

template<IsUltraOrMegaHonk 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 DPK as indices into the full trace by accounting for the offset of the memory block.

Definition at line 240 of file prover_instance.cpp.

◆ pub_inputs_offset()

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

Definition at line 72 of file prover_instance.hpp.

◆ set_dyadic_size()

template<IsUltraOrMegaHonk Flavor_>
void bb::ProverInstance_< Flavor_ >::set_dyadic_size ( size_t  size)
inline

Definition at line 68 of file prover_instance.hpp.

◆ set_final_active_wire_idx()

template<IsUltraOrMegaHonk Flavor_>
void bb::ProverInstance_< Flavor_ >::set_final_active_wire_idx ( size_t  idx)
inline

Definition at line 69 of file prover_instance.hpp.

◆ trace_active_range_size()

template<IsUltraOrMegaHonk Flavor_>
size_t bb::ProverInstance_< Flavor_ >::trace_active_range_size ( ) const
inline

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

Definition at line 86 of file prover_instance.hpp.

Member Data Documentation

◆ alpha

template<IsUltraOrMegaHonk Flavor_>
SubrelationSeparator bb::ProverInstance_< Flavor_ >::alpha

Definition at line 56 of file prover_instance.hpp.

◆ commitment_key

template<IsUltraOrMegaHonk Flavor_>
CommitmentKey bb::ProverInstance_< Flavor_ >::commitment_key

Definition at line 66 of file prover_instance.hpp.

◆ commitments

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

Definition at line 55 of file prover_instance.hpp.

◆ final_active_wire_idx

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

Definition at line 48 of file prover_instance.hpp.

◆ gate_challenges

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

Definition at line 58 of file prover_instance.hpp.

◆ ipa_proof

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

Definition at line 60 of file prover_instance.hpp.

◆ is_complete

template<IsUltraOrMegaHonk Flavor_>
bool bb::ProverInstance_< Flavor_ >::is_complete = false

Definition at line 62 of file prover_instance.hpp.

◆ memory_read_records

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

Definition at line 63 of file prover_instance.hpp.

◆ memory_write_records

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

Definition at line 64 of file prover_instance.hpp.

◆ metadata

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

Definition at line 46 of file prover_instance.hpp.

◆ NUM_WIRES

template<IsUltraOrMegaHonk Flavor_>
constexpr size_t bb::ProverInstance_< Flavor_ >::NUM_WIRES = Circuit::NUM_WIRES
staticconstexprprivate

Definition at line 212 of file prover_instance.hpp.

◆ num_zero_rows

template<IsUltraOrMegaHonk Flavor_>
constexpr size_t bb::ProverInstance_< Flavor_ >::num_zero_rows = Flavor::has_zero_row ? 1 : 0
staticconstexprprivate

Definition at line 211 of file prover_instance.hpp.

◆ polynomials

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

Definition at line 54 of file prover_instance.hpp.

◆ public_inputs

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

Definition at line 53 of file prover_instance.hpp.

◆ relation_parameters

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

Definition at line 57 of file prover_instance.hpp.


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