barretenberg
Loading...
Searching...
No Matches
Public Member Functions | Public Attributes | List of all members
proof_system::plonk::ProverBase< settings > Class Template Reference

Public Member Functions

 ProverBase (std::shared_ptr< proving_key > input_key=nullptr, const transcript::Manifest &manifest=transcript::Manifest())
 
 ProverBase (ProverBase &&other)
 
 ProverBase (const ProverBase &other)=delete
 
ProverBaseoperator= (const ProverBase &other)=delete
 
ProverBaseoperator= (ProverBase &&other)
 
BBERG_PROFILE void execute_preamble_round ()
 
BBERG_PROFILE void execute_first_round ()
 
BBERG_PROFILE void execute_second_round ()
 
BBERG_PROFILE void execute_third_round ()
 
BBERG_PROFILE void execute_fourth_round ()
 Computes the quotient polynomial, then commits to its degree-n split parts.
 
BBERG_PROFILE void execute_fifth_round ()
 
BBERG_PROFILE void execute_sixth_round ()
 
void add_polynomial_evaluations_to_transcript ()
 
void compute_batch_opening_polynomials ()
 
void compute_wire_commitments ()
 
void compute_quotient_commitments ()
 
void init_quotient_polynomials ()
 
void compute_opening_elements ()
 
void add_plookup_memory_records_to_w_4 ()
 
void compute_quotient_evaluation ()
 
void add_blinding_to_quotient_polynomial_parts ()
 
void compute_lagrange_1_fft ()
 
plonk::proofexport_proof ()
 
plonk::proofconstruct_proof ()
 
size_t get_circuit_size () const
 
void flush_queued_work_items ()
 
work_queue::work_item_info get_queued_work_item_info () const
 
std::shared_ptr< barretenberg::fr[]> get_scalar_multiplication_data (const size_t work_item_number) const
 
size_t get_scalar_multiplication_size (const size_t work_item_number) const
 
std::shared_ptr< fr[]> get_ifft_data (const size_t work_item_number) const
 
work_queue::queued_fft_inputs get_fft_data (const size_t work_item_number) const
 
void put_scalar_multiplication_data (const barretenberg::g1::affine_element result, const size_t work_item_number)
 
void put_fft_data (std::shared_ptr< fr[]> result, const size_t work_item_number)
 
void put_ifft_data (std::shared_ptr< fr[]> result, const size_t work_item_number)
 
void reset ()
 

Public Attributes

size_t circuit_size
 
std::vector< std::unique_ptr< ProverRandomWidget > > random_widgets
 
std::vector< std::unique_ptr< widget::TransitionWidgetBase< barretenberg::fr > > > transition_widgets
 
transcript::StandardTranscript transcript
 
std::shared_ptr< proving_keykey
 
std::unique_ptr< CommitmentSchemecommitment_scheme
 
work_queue queue
 

Constructor & Destructor Documentation

◆ ProverBase()

template<typename settings >
proof_system::plonk::ProverBase< settings >::ProverBase ( std::shared_ptr< proving_key input_key = nullptr,
const transcript::Manifest input_manifest = transcript::Manifest() 
)

Create ProverBase from proving key, witness and manifest.

Parameters
input_keyProving key.
input_witnessWitness containing witness polynomials.
input_manifestInput manifest
Template Parameters
settingsSettings class.

Member Function Documentation

◆ compute_wire_commitments()

template<typename settings >
void proof_system::plonk::ProverBase< settings >::compute_wire_commitments
  • Compute wire commitments and add them to the transcript.
  • Add public_inputs from w_2_fft to transcript.
Template Parameters
settingsProgram settings.

◆ execute_first_round()

template<typename settings >
void proof_system::plonk::ProverBase< settings >::execute_first_round

Execute the first round:

  • Compute wire commitments.
  • Add public input values to the transcript

N.B. Random widget precommitments aren't actually being computed, since we are using permutation widget which only does computation in compute_random_commitments function if the round is 3.

@tname settings Program settings.

◆ execute_preamble_round()

template<typename settings >
void proof_system::plonk::ProverBase< settings >::execute_preamble_round

Execute preamble round.

  • Execute init round
  • Add randomness to the wire witness polynomials for Honest-Verifier Zero Knowledge.

N.B. Maybe we need to refactor this, since before we execute this function wires are in lagrange basis and after they are in monomial form. This is an inconsistency that can mislead developers.

Template Parameters
settingsProgram settings.

◆ execute_second_round()

template<typename settings >
void proof_system::plonk::ProverBase< settings >::execute_second_round

Execute second round:

  • Apply Fiat-Shamir transform to generate the "eta" challenge
  • Compute the random_widgets' round commitments that need to be computed at round 2.
  • If using plookup, we compute some w_4 values here (for gates which access "memory"), and apply blinding factors, before finally committing to w_4.

@tname settings Program settings.

◆ execute_third_round()

template<typename settings >
void proof_system::plonk::ProverBase< settings >::execute_third_round

Execute third round:

  • Apply Fiat-Shamir transform on the "beta" challenge
  • Apply 3rd round random widgets*
  • FFT the wires.

*For example, standard composer executes permutation widget for z polynomial construction at this round.

Template Parameters
settingsProgram settings.

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