99 vinfo(
"Constructing DeciderProvingKey");
100 auto start = std::chrono::steady_clock::now();
103 if (!circuit.circuit_finalized) {
104 circuit.finalize_circuit(
true);
112 circuit.blocks.set_fixed_block_sizes(trace_settings);
114 circuit.blocks.summarize();
127 for (
auto& block : circuit.blocks.
get()) {
128 if (block.size() > 0) {
133 vinfo(
"allocating polynomials object in proving key...");
156 if constexpr (IsMegaFlavor<Flavor>) {
159 if constexpr (HasDataBus<Flavor>) {
169 vinfo(
"populating trace...");
176 if constexpr (IsMegaFlavor<Flavor>) {
189 construct_lookup_table_polynomials<Flavor>(
196 construct_lookup_read_counts<Flavor>(
207 if constexpr (HasIPAAccumulator<Flavor>) {
211 auto end = std::chrono::steady_clock::now();
212 auto diff = std::chrono::duration_cast<std::chrono::milliseconds>(end - start);
213 vinfo(
"time to construct proving key: ", diff.count(),
" ms.");
#define BB_ASSERT_EQ(actual, expected,...)
CommitmentKey object over a pairing group 𝔾₁.
A DeciderProvingKey is normally constructed from a finalized circuit and it contains all the informat...
void populate_memory_records(const Circuit &circuit)
Copy RAM/ROM record of reads and writes from the circuit to the proving key.
SubrelationSeparators alphas
size_t compute_dyadic_size(Circuit &)
Helper method to compute quantities like total number of gates and dyadic circuit size.
size_t final_active_wire_idx
size_t num_public_inputs() const
void set_overflow_size(size_t size)
DeciderProvingKey_()=default
void set_final_active_wire_idx(size_t idx)
typename Flavor::Polynomial Polynomial
void allocate_ecc_op_polynomials(const Circuit &)
size_t dyadic_size() const
~DeciderProvingKey_()=default
std::vector< FF > gate_challenges
ProverPolynomials polynomials
void allocate_databus_polynomials(const Circuit &)
std::vector< FF > public_inputs
MetaData get_metadata() const
static constexpr size_t num_zero_rows
DeciderProvingKey_(Circuit &circuit, TraceSettings trace_settings={}, const CommitmentKey &commitment_key=CommitmentKey())
size_t pub_inputs_offset() const
typename Flavor::CircuitBuilder Circuit
size_t get_overflow_size() const
size_t compute_structured_dyadic_size(Circuit &circuit)
Compute dyadic size based on a structured trace with fixed block size.
void allocate_lagrange_polynomials()
void allocate_table_lookup_polynomials(const Circuit &)
static constexpr size_t NUM_WIRES
CommitmentKey commitment_key
void allocate_selectors(const Circuit &)
static void move_structured_trace_overflow_to_overflow_block(Circuit &circuit)
Check that the number of gates in each block does not exceed its fixed capacity. Move any overflow to...
size_t get_final_active_wire_idx() const
std::vector< uint32_t > memory_write_records
ActiveRegionData active_region_data
size_t log_dyadic_size() const
void set_dyadic_size(size_t size)
typename Flavor::ProverPolynomials ProverPolynomials
std::vector< uint32_t > memory_read_records
bb::RelationParameters< FF > relation_parameters
typename Flavor::CommitmentKey CommitmentKey
void allocate_permutation_argument_polynomials()
void construct_databus_polynomials(Circuit &)
Flavor::PrecomputedData get_precomputed()
typename Flavor::SubrelationSeparators SubrelationSeparators
A container for the prover polynomials handles.
bb::CommitmentKey< Curve > CommitmentKey
std::array< FF, NUM_SUBRELATIONS - 1 > SubrelationSeparators
MegaCircuitBuilder CircuitBuilder
bb::Polynomial< FF > Polynomial
static constexpr bool has_zero_row
static void populate(Builder &builder, ProverPolynomials &, ActiveRegionData &)
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
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
#define PROFILE_THIS_NAME(name)
Contains various functions that help construct Honk Sigma and Id polynomials.
The precomputed data needed to compute a Honk VK.
Container for parameters used by the grand product (permutation, lookup) Honk relations.