82 "final_active_wire_idx has not been initialized");
100 vinfo(
"Constructing ProverInstance");
101 auto start = std::chrono::steady_clock::now();
105 BB_ASSERT(circuit.pairing_points_tagging.has_single_pairing_point_tag(),
106 "Pairing points must all be aggregated together. Either no pairing points should be created, or "
107 "all created pairing points must be aggregated into a single pairing point. Found ",
108 circuit.pairing_points_tagging.num_unique_pairing_points(),
109 " different pairing points.");
111 BB_ASSERT(circuit.pairing_points_tagging.has_public_pairing_points() ||
112 !circuit.pairing_points_tagging.has_pairing_points(),
113 "Pairing points must be set to public in the circuit before constructing the ProverInstance.");
117 if (!circuit.circuit_finalized) {
118 circuit.finalize_circuit(
true);
123 circuit.blocks.compute_offsets();
124 for (
auto& block : circuit.blocks.get()) {
125 if (block.size() > 0) {
130 vinfo(
"allocating polynomials object in prover instance...");
158 vinfo(
"populating trace...");
162 BB_BENCH_NAME(
"constructing prover instance after trace populate");
178 construct_lookup_table_polynomials<Flavor>(
polynomials.get_tables(), circuit);
184 construct_lookup_read_counts<Flavor>(
polynomials.lookup_read_counts,
polynomials.lookup_read_tags, circuit);
198 auto end = std::chrono::steady_clock::now();
199 auto diff = std::chrono::duration_cast<std::chrono::milliseconds>(end - start);
200 vinfo(
"time to construct proving key: ", diff.count(),
" ms.");
#define BB_ASSERT(expression,...)
#define BB_ASSERT_EQ(actual, expected,...)
#define BB_BENCH_NAME(name)
A container for the prover polynomials.
typename Curve::ScalarField FF
ECCVMCircuitBuilder CircuitBuilder
bb::Polynomial< FF > Polynomial
bb::CommitmentKey< Curve > CommitmentKey
A ProverInstance is normally constructed from a finalized circuit and it contains all the information...
size_t pub_inputs_offset() const
ProverInstance_(ProverInstance_ &&)=delete
std::vector< uint32_t > memory_write_records
static constexpr size_t num_zero_rows
void allocate_selectors(const Circuit &)
Flavor::PrecomputedData get_precomputed()
ProverInstance_()=default
ProverInstance_(Circuit &circuit, const CommitmentKey &commitment_key=CommitmentKey())
bb::RelationParameters< FF > relation_parameters
CommitmentKey commitment_key
void allocate_lagrange_polynomials()
size_t compute_dyadic_size(Circuit &)
Compute the minimum dyadic (power-of-2) circuit size.
ProverInstance_ & operator=(ProverInstance_ &&)=delete
size_t get_final_active_wire_idx() const
void set_final_active_wire_idx(size_t idx)
size_t log_dyadic_size() const
void allocate_ecc_op_polynomials(const Circuit &)
ProverPolynomials polynomials
SubrelationSeparator alpha
size_t trace_active_range_size() const
Get the size of the active trace range (0 to the final active wire index)
void allocate_permutation_argument_polynomials()
void allocate_table_lookup_polynomials(const Circuit &)
typename Flavor::WitnessCommitments WitnessCommitments
size_t dyadic_size() const
std::vector< FF > public_inputs
WitnessCommitments commitments
std::vector< uint32_t > memory_read_records
ProverInstance_(const ProverInstance_ &)=delete
typename Flavor::CircuitBuilder Circuit
void populate_memory_records(const Circuit &circuit)
Copy RAM/ROM record of reads and writes from the circuit to the instance.
size_t final_active_wire_idx
ProverInstance_ & operator=(const ProverInstance_ &)=delete
void construct_databus_polynomials(Circuit &)
typename Flavor::ProverPolynomials ProverPolynomials
void allocate_databus_polynomials(const Circuit &)
typename Flavor::SubrelationSeparator SubrelationSeparator
typename Flavor::Polynomial Polynomial
size_t num_public_inputs() const
typename Flavor::CommitmentKey CommitmentKey
void set_dyadic_size(size_t size)
std::vector< FF > gate_challenges
static constexpr size_t NUM_WIRES
~ProverInstance_()=default
MetaData get_metadata() const
static void populate(Builder &builder, ProverPolynomials &)
Given a circuit, populate a proving key with wire polys, selector polys, and sigma/id polys.
Base class templates for structures that contain data parameterized by the fundamental polynomials of...
constexpr T get_msb(const T in)
Entry point for Barretenberg command-line interface.
std::vector< fr > HonkProof
Contains various functions that help construct Honk Sigma and Id polynomials.
Container for parameters used by the grand product (permutation, lookup) Honk relations.