diff --git a/barretenberg/cpp/src/barretenberg/eccvm/eccvm_flavor.hpp b/barretenberg/cpp/src/barretenberg/eccvm/eccvm_flavor.hpp index 38d54c8982ad..2c28cf74ac29 100644 --- a/barretenberg/cpp/src/barretenberg/eccvm/eccvm_flavor.hpp +++ b/barretenberg/cpp/src/barretenberg/eccvm/eccvm_flavor.hpp @@ -112,8 +112,9 @@ class ECCVMFlavor { * @brief A base class labelling precomputed entities and (ordered) subsets of interest. * @details Used to build the proving key and verification key. */ - template class PrecomputedEntities : public PrecomputedEntitiesBase { + template class PrecomputedEntities { public: + bool operator==(const PrecomputedEntities& other) const = default; using DataType = DataType_; DEFINE_FLAVOR_MEMBERS(DataType, lagrange_first, // column 0 @@ -759,8 +760,9 @@ class ECCVMFlavor { * resolve that, and split out separate PrecomputedPolynomials/Commitments data for clarity but also for * portability of our circuits. */ - class VerificationKey : public VerificationKey_, VerifierCommitmentKey> { + class VerificationKey : public VerificationKey_, VerifierCommitmentKey> { public: + bool operator==(const VerificationKey&) const = default; VerificationKey() = default; VerificationKey(const size_t circuit_size, const size_t num_public_inputs) : VerificationKey_(circuit_size, num_public_inputs) diff --git a/barretenberg/cpp/src/barretenberg/flavor/flavor.hpp b/barretenberg/cpp/src/barretenberg/flavor/flavor.hpp index bb779cfc6c47..2e741a04452b 100644 --- a/barretenberg/cpp/src/barretenberg/flavor/flavor.hpp +++ b/barretenberg/cpp/src/barretenberg/flavor/flavor.hpp @@ -87,17 +87,6 @@ namespace bb { -/** - * @brief Base class template containing circuit-specifying data. - * - */ -class PrecomputedEntitiesBase { - public: - bool operator==(const PrecomputedEntitiesBase& other) const = default; - uint64_t circuit_size; - uint64_t log_circuit_size; - uint64_t num_public_inputs; -}; // Specifies the regions of the execution trace containing non-trivial wire values struct ActiveRegionData { void add_range(const size_t start, const size_t end) @@ -164,18 +153,23 @@ template class ProvingKey_ { /** * @brief Base verification key class. * + * @tparam FF_, the type that we will represent our VK metadata (circuit_size, log_circuit_size, num_public_inputs, + * pub_inputs_offset). It will either be uint64_t or a stdlib field type. * @tparam PrecomputedEntities An instance of PrecomputedEntities_ with affine_element data type and handle type. * @tparam VerifierCommitmentKey The PCS verification key */ -template +template class VerificationKey_ : public PrecomputedCommitments { public: using FF = typename VerifierCommitmentKey::Curve::ScalarField; using Commitment = typename VerifierCommitmentKey::Commitment; std::shared_ptr pcs_verification_key; + FF_ circuit_size; + FF_ log_circuit_size; + FF_ num_public_inputs; + FF_ pub_inputs_offset = 0; bool contains_pairing_point_accumulator = false; PairingPointAccumulatorPubInputIndices pairing_point_accumulator_public_input_indices = {}; - uint64_t pub_inputs_offset = 0; bool operator==(const VerificationKey_&) const = default; VerificationKey_() = default; diff --git a/barretenberg/cpp/src/barretenberg/stdlib/eccvm_verifier/eccvm_recursive_flavor.hpp b/barretenberg/cpp/src/barretenberg/stdlib/eccvm_verifier/eccvm_recursive_flavor.hpp index 498c4bc4998d..139163cf2b64 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/eccvm_verifier/eccvm_recursive_flavor.hpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/eccvm_verifier/eccvm_recursive_flavor.hpp @@ -87,7 +87,7 @@ template class ECCVMRecursiveFlavor_ { * portability of our circuits. */ class VerificationKey - : public VerificationKey_, VerifierCommitmentKey> { + : public VerificationKey_, VerifierCommitmentKey> { public: VerificationKey(const size_t circuit_size, const size_t num_public_inputs) { @@ -108,10 +108,11 @@ template class ECCVMRecursiveFlavor_ { { this->pcs_verification_key = std::make_shared( builder, native_key->circuit_size, native_key->pcs_verification_key); - this->circuit_size = native_key->circuit_size; - this->log_circuit_size = numeric::get_msb(this->circuit_size); - this->num_public_inputs = native_key->num_public_inputs; - this->pub_inputs_offset = native_key->pub_inputs_offset; + this->circuit_size = FF::from_witness(builder, native_key->circuit_size); + // TODO(https://github.com/AztecProtocol/barretenberg/issues/1283): Use stdlib get_msb. + this->log_circuit_size = FF::from_witness(builder, numeric::get_msb(native_key->circuit_size)); + this->num_public_inputs = FF::from_witness(builder, native_key->num_public_inputs); + this->pub_inputs_offset = FF::from_witness(builder, native_key->pub_inputs_offset); for (auto [native_commitment, commitment] : zip_view(native_key->get_all(), this->get_all())) { commitment = Commitment::from_witness(builder, native_commitment); diff --git a/barretenberg/cpp/src/barretenberg/stdlib/eccvm_verifier/eccvm_recursive_verifier.cpp b/barretenberg/cpp/src/barretenberg/stdlib/eccvm_verifier/eccvm_recursive_verifier.cpp index deed4b9a67a8..dc196852512c 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/eccvm_verifier/eccvm_recursive_verifier.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/eccvm_verifier/eccvm_recursive_verifier.cpp @@ -69,6 +69,7 @@ ECCVMRecursiveVerifier_::verify_proof(const ECCVMProof& proof) commitments.z_perm = transcript->template receive_from_prover(commitment_labels.z_perm); // Execute Sumcheck Verifier + // TODO(https://github.com/AztecProtocol/barretenberg/issues/1283): Suspicious get_value(). const size_t log_circuit_size = numeric::get_msb(static_cast(circuit_size.get_value())); auto sumcheck = SumcheckVerifier(log_circuit_size, transcript); const FF alpha = transcript->template get_challenge("Sumcheck:alpha"); diff --git a/barretenberg/cpp/src/barretenberg/stdlib/eccvm_verifier/eccvm_recursive_verifier.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/eccvm_verifier/eccvm_recursive_verifier.test.cpp index 462ea1bd4d28..f276e82c38dc 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/eccvm_verifier/eccvm_recursive_verifier.test.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/eccvm_verifier/eccvm_recursive_verifier.test.cpp @@ -110,9 +110,11 @@ template class ECCVMRecursiveTests : public ::testing } // Ensure verification key is the same - EXPECT_EQ(verifier.key->circuit_size, verification_key->circuit_size); - EXPECT_EQ(verifier.key->log_circuit_size, verification_key->log_circuit_size); - EXPECT_EQ(verifier.key->num_public_inputs, verification_key->num_public_inputs); + EXPECT_EQ(static_cast(verifier.key->circuit_size.get_value()), verification_key->circuit_size); + EXPECT_EQ(static_cast(verifier.key->log_circuit_size.get_value()), + verification_key->log_circuit_size); + EXPECT_EQ(static_cast(verifier.key->num_public_inputs.get_value()), + verification_key->num_public_inputs); for (auto [vk_poly, native_vk_poly] : zip_view(verifier.key->get_all(), verification_key->get_all())) { EXPECT_EQ(vk_poly.get_value(), native_vk_poly); } diff --git a/barretenberg/cpp/src/barretenberg/stdlib/honk_verifier/decider_recursive_verifier.cpp b/barretenberg/cpp/src/barretenberg/stdlib/honk_verifier/decider_recursive_verifier.cpp index ad6f36b99d82..cd31a58bcdf1 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/honk_verifier/decider_recursive_verifier.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/honk_verifier/decider_recursive_verifier.cpp @@ -26,8 +26,10 @@ std::array DeciderRecursiveVerifier_:: VerifierCommitments commitments{ accumulator->verification_key, accumulator->witness_commitments }; - auto sumcheck = Sumcheck( - static_cast(accumulator->verification_key->log_circuit_size), transcript, accumulator->target_sum); + // TODO(https://github.com/AztecProtocol/barretenberg/issues/1283): fix log_circuit_size usage in stdlib cases. + auto sumcheck = Sumcheck(static_cast(accumulator->verification_key->log_circuit_size.get_value()), + transcript, + accumulator->target_sum); SumcheckOutput output = sumcheck.verify(accumulator->relation_parameters, accumulator->alphas, accumulator->gate_challenges); diff --git a/barretenberg/cpp/src/barretenberg/stdlib/honk_verifier/oink_recursive_verifier.cpp b/barretenberg/cpp/src/barretenberg/stdlib/honk_verifier/oink_recursive_verifier.cpp index cd1fdaa181b1..befb6ea9d897 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/honk_verifier/oink_recursive_verifier.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/honk_verifier/oink_recursive_verifier.cpp @@ -43,15 +43,15 @@ template void OinkRecursiveVerifier_::verify() WitnessCommitments commitments; CommitmentLabels labels; - FF circuit_size = FF::from_witness(builder, verification_key->verification_key->circuit_size); - FF public_input_size = FF::from_witness(builder, verification_key->verification_key->num_public_inputs); - FF pub_inputs_offset = FF::from_witness(builder, verification_key->verification_key->pub_inputs_offset); + FF circuit_size = verification_key->verification_key->circuit_size; + FF public_input_size = verification_key->verification_key->num_public_inputs; + FF pub_inputs_offset = verification_key->verification_key->pub_inputs_offset; transcript->add_to_hash_buffer(domain_separator + "circuit_size", circuit_size); transcript->add_to_hash_buffer(domain_separator + "public_input_size", public_input_size); transcript->add_to_hash_buffer(domain_separator + "pub_inputs_offset", pub_inputs_offset); std::vector public_inputs; - for (size_t i = 0; i < verification_key->verification_key->num_public_inputs; ++i) { + for (size_t i = 0; i < static_cast(static_cast(public_input_size.get_value())); ++i) { public_inputs.emplace_back( transcript->template receive_from_prover(domain_separator + "public_input_" + std::to_string(i))); } @@ -98,12 +98,13 @@ template void OinkRecursiveVerifier_::verify() } } + // TODO(https://github.com/AztecProtocol/barretenberg/issues/1283): Suspicious get_value(). const FF public_input_delta = compute_public_input_delta( public_inputs, beta, gamma, circuit_size, - static_cast(verification_key->verification_key->pub_inputs_offset)); + static_cast(verification_key->verification_key->pub_inputs_offset.get_value())); // Get commitment to permutation and lookup grand products commitments.z_perm = transcript->template receive_from_prover(domain_separator + labels.z_perm); diff --git a/barretenberg/cpp/src/barretenberg/stdlib/honk_verifier/ultra_recursive_verifier.cpp b/barretenberg/cpp/src/barretenberg/stdlib/honk_verifier/ultra_recursive_verifier.cpp index 5133e96812b9..ebe23d687c15 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/honk_verifier/ultra_recursive_verifier.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/honk_verifier/ultra_recursive_verifier.cpp @@ -52,7 +52,7 @@ UltraRecursiveVerifier_::Output UltraRecursiveVerifier_::verify_ StdlibProof honk_proof; if constexpr (HasIPAAccumulator) { const size_t HONK_PROOF_LENGTH = Flavor::NativeFlavor::PROOF_LENGTH_WITHOUT_PUB_INPUTS - IPA_PROOF_LENGTH; - const size_t num_public_inputs = static_cast(key->num_public_inputs); + const size_t num_public_inputs = static_cast(key->num_public_inputs.get_value()); // The extra calculation is for the IPA proof length. // TODO(https://github.com/AztecProtocol/barretenberg/issues/1182): Handle in ProofSurgeon. ASSERT(proof.size() == HONK_PROOF_LENGTH + IPA_PROOF_LENGTH + num_public_inputs); @@ -104,7 +104,8 @@ UltraRecursiveVerifier_::Output UltraRecursiveVerifier_::verify_ // Execute Sumcheck Verifier and extract multivariate opening point u = (u_0, ..., u_{d-1}) and purported // multivariate evaluations at u - const size_t log_circuit_size = numeric::get_msb(static_cast(key->circuit_size)); + // TODO(https://github.com/AztecProtocol/barretenberg/issues/1283): Suspicious get_value(). + const size_t log_circuit_size = numeric::get_msb(static_cast(key->circuit_size.get_value())); auto sumcheck = Sumcheck(log_circuit_size, transcript); // Receive commitments to Libra masking polynomials diff --git a/barretenberg/cpp/src/barretenberg/stdlib/honk_verifier/ultra_recursive_verifier.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/honk_verifier/ultra_recursive_verifier.test.cpp index 571706b73844..9268dc3e2bd6 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/honk_verifier/ultra_recursive_verifier.test.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/honk_verifier/ultra_recursive_verifier.test.cpp @@ -128,9 +128,9 @@ template class RecursiveVerifierTest : public testing RecursiveVerifier verifier{ &outer_circuit, honk_vk }; // Spot check some values in the recursive VK to ensure it was constructed correctly - EXPECT_EQ(verifier.key->circuit_size, honk_vk->circuit_size); - EXPECT_EQ(verifier.key->log_circuit_size, honk_vk->log_circuit_size); - EXPECT_EQ(verifier.key->num_public_inputs, honk_vk->num_public_inputs); + EXPECT_EQ(static_cast(verifier.key->circuit_size.get_value()), honk_vk->circuit_size); + EXPECT_EQ(static_cast(verifier.key->log_circuit_size.get_value()), honk_vk->log_circuit_size); + EXPECT_EQ(static_cast(verifier.key->num_public_inputs.get_value()), honk_vk->num_public_inputs); for (auto [vk_poly, native_vk_poly] : zip_view(verifier.key->get_all(), honk_vk->get_all())) { EXPECT_EQ(vk_poly.get_value(), native_vk_poly); } diff --git a/barretenberg/cpp/src/barretenberg/stdlib/protogalaxy_verifier/recursive_decider_verification_key.hpp b/barretenberg/cpp/src/barretenberg/stdlib/protogalaxy_verifier/recursive_decider_verification_key.hpp index e11674a2c827..edaab8b4bd36 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/protogalaxy_verifier/recursive_decider_verification_key.hpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/protogalaxy_verifier/recursive_decider_verification_key.hpp @@ -100,12 +100,13 @@ template class RecursiveDeciderVerificationKey_ { */ DeciderVerificationKey get_value() { - auto native_honk_vk = std::make_shared(verification_key->circuit_size, - verification_key->num_public_inputs); + auto native_honk_vk = std::make_shared( + static_cast(verification_key->circuit_size.get_value()), + static_cast(verification_key->num_public_inputs.get_value())); native_honk_vk->pcs_verification_key = verification_key->pcs_verification_key == nullptr ? std::make_shared() : verification_key->pcs_verification_key; - native_honk_vk->pub_inputs_offset = verification_key->pub_inputs_offset; + native_honk_vk->pub_inputs_offset = static_cast(verification_key->pub_inputs_offset.get_value()); native_honk_vk->contains_pairing_point_accumulator = verification_key->contains_pairing_point_accumulator; native_honk_vk->pairing_point_accumulator_public_input_indices = verification_key->pairing_point_accumulator_public_input_indices; @@ -120,7 +121,8 @@ template class RecursiveDeciderVerificationKey_ { DeciderVerificationKey decider_vk(native_honk_vk); decider_vk.is_accumulator = is_accumulator; - decider_vk.public_inputs = std::vector(static_cast(verification_key->num_public_inputs)); + decider_vk.public_inputs = std::vector( + static_cast(static_cast(verification_key->num_public_inputs.get_value()))); for (auto [public_input, inst_public_input] : zip_view(public_inputs, decider_vk.public_inputs)) { inst_public_input = public_input.get_value(); } diff --git a/barretenberg/cpp/src/barretenberg/stdlib/protogalaxy_verifier/recursive_decider_verification_keys.hpp b/barretenberg/cpp/src/barretenberg/stdlib/protogalaxy_verifier/recursive_decider_verification_keys.hpp index 9a2361b7a9bf..6b2565538164 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/protogalaxy_verifier/recursive_decider_verification_keys.hpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/protogalaxy_verifier/recursive_decider_verification_keys.hpp @@ -45,8 +45,10 @@ template struct RecursiveDeciderVerific { size_t max_log_circuit_size{ 0 }; for (auto key : _data) { - max_log_circuit_size = - std::max(max_log_circuit_size, static_cast(key->verification_key->log_circuit_size)); + // TODO(https://github.com/AztecProtocol/barretenberg/issues/1283): Suspicious get_value. + max_log_circuit_size = std::max( + max_log_circuit_size, + static_cast(static_cast(key->verification_key->log_circuit_size.get_value()))); } return max_log_circuit_size; } diff --git a/barretenberg/cpp/src/barretenberg/stdlib/translator_vm_verifier/translator_recursive_flavor.hpp b/barretenberg/cpp/src/barretenberg/stdlib/translator_vm_verifier/translator_recursive_flavor.hpp index 526208e2ee87..ee6689df0bc3 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/translator_vm_verifier/translator_recursive_flavor.hpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/translator_vm_verifier/translator_recursive_flavor.hpp @@ -93,7 +93,7 @@ template class TranslatorRecursiveFlavor_ { * portability of our circuits. */ class VerificationKey - : public VerificationKey_, VerifierCommitmentKey> { + : public VerificationKey_, VerifierCommitmentKey> { public: VerificationKey(const size_t circuit_size, const size_t num_public_inputs) { @@ -105,10 +105,11 @@ template class TranslatorRecursiveFlavor_ { VerificationKey(CircuitBuilder* builder, const std::shared_ptr& native_key) { this->pcs_verification_key = std::make_shared(); // ? - this->circuit_size = native_key->circuit_size; - this->log_circuit_size = numeric::get_msb(this->circuit_size); - this->num_public_inputs = native_key->num_public_inputs; - this->pub_inputs_offset = native_key->pub_inputs_offset; + this->circuit_size = FF::from_witness(builder, native_key->circuit_size); + // TODO(https://github.com/AztecProtocol/barretenberg/issues/1283): Use stdlib get_msb. + this->log_circuit_size = numeric::get_msb(native_key->circuit_size); + this->num_public_inputs = FF::from_witness(builder, native_key->num_public_inputs); + this->pub_inputs_offset = FF::from_witness(builder, native_key->pub_inputs_offset); for (auto [native_comm, comm] : zip_view(native_key->get_all(), this->get_all())) { comm = Commitment::from_witness(builder, native_comm); diff --git a/barretenberg/cpp/src/barretenberg/stdlib/translator_vm_verifier/translator_recursive_verifier.cpp b/barretenberg/cpp/src/barretenberg/stdlib/translator_vm_verifier/translator_recursive_verifier.cpp index 3f97cd1e81e0..7a1be373a1b2 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/translator_vm_verifier/translator_recursive_verifier.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/translator_vm_verifier/translator_recursive_verifier.cpp @@ -77,7 +77,7 @@ std::array TranslatorRecursiveVerifier_template receive_from_prover("circuit_size"); - if (static_cast(circuit_size.get_value()) != key->circuit_size) { + if (static_cast(circuit_size.get_value()) != static_cast(key->circuit_size.get_value())) { throw_or_abort( "TranslatorRecursiveVerifier::verify_proof: proof circuit size does not match verification key!"); } @@ -104,6 +104,7 @@ std::array TranslatorRecursiveVerifier_template receive_from_prover(commitment_labels.z_perm); // Execute Sumcheck Verifier + // TODO(https://github.com/AztecProtocol/barretenberg/issues/1283): Suspicious get_value(). const size_t log_circuit_size = numeric::get_msb(static_cast(circuit_size.get_value())); auto sumcheck = Sumcheck(log_circuit_size, transcript); FF alpha = transcript->template get_challenge("Sumcheck:alpha"); diff --git a/barretenberg/cpp/src/barretenberg/stdlib/translator_vm_verifier/translator_recursive_verifier.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/translator_vm_verifier/translator_recursive_verifier.test.cpp index 4434b8ed0d8c..2c33dbcce454 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/translator_vm_verifier/translator_recursive_verifier.test.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/translator_vm_verifier/translator_recursive_verifier.test.cpp @@ -108,9 +108,11 @@ template class TranslatorRecursiveTests : public ::te << "Recursive Verifier/Verifier manifest discrepency in round " << i; } - EXPECT_EQ(verifier.key->circuit_size, verification_key->circuit_size); - EXPECT_EQ(verifier.key->log_circuit_size, verification_key->log_circuit_size); - EXPECT_EQ(verifier.key->num_public_inputs, verification_key->num_public_inputs); + EXPECT_EQ(static_cast(verifier.key->circuit_size.get_value()), verification_key->circuit_size); + EXPECT_EQ(static_cast(verifier.key->log_circuit_size.get_value()), + verification_key->log_circuit_size); + EXPECT_EQ(static_cast(verifier.key->num_public_inputs.get_value()), + verification_key->num_public_inputs); for (auto [vk_poly, native_vk_poly] : zip_view(verifier.key->get_all(), verification_key->get_all())) { EXPECT_EQ(vk_poly.get_value(), native_vk_poly); } diff --git a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/mega_flavor.hpp b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/mega_flavor.hpp index bf3139d5e84f..22cdefb9481c 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/mega_flavor.hpp +++ b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/mega_flavor.hpp @@ -103,7 +103,7 @@ class MegaFlavor { * @brief A base class labelling precomputed entities and (ordered) subsets of interest. * @details Used to build the proving key and verification key. */ - template class PrecomputedEntities : public PrecomputedEntitiesBase { + template class PrecomputedEntities { public: bool operator==(const PrecomputedEntities&) const = default; using DataType = DataType_; @@ -429,7 +429,7 @@ class MegaFlavor { * circuits. * @todo TODO(https://github.com/AztecProtocol/barretenberg/issues/876) */ - class VerificationKey : public VerificationKey_, VerifierCommitmentKey> { + class VerificationKey : public VerificationKey_, VerifierCommitmentKey> { public: // Data pertaining to transfer of databus return data via public inputs of the proof being recursively verified DatabusPropagationData databus_propagation_data; diff --git a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/mega_recursive_flavor.hpp b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/mega_recursive_flavor.hpp index 7fa9a72337e4..12724f76f377 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/mega_recursive_flavor.hpp +++ b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/mega_recursive_flavor.hpp @@ -103,7 +103,7 @@ template class MegaRecursiveFlavor_ { * This differs from Mega in how we construct the commitments. */ class VerificationKey - : public VerificationKey_, VerifierCommitmentKey> { + : public VerificationKey_, VerifierCommitmentKey> { public: // Data pertaining to transfer of databus return data via public inputs of the proof DatabusPropagationData databus_propagation_data; @@ -118,10 +118,11 @@ template class MegaRecursiveFlavor_ { VerificationKey(CircuitBuilder* builder, const std::shared_ptr& native_key) { this->pcs_verification_key = native_key->pcs_verification_key; - this->circuit_size = native_key->circuit_size; - this->log_circuit_size = numeric::get_msb(this->circuit_size); - this->num_public_inputs = native_key->num_public_inputs; - this->pub_inputs_offset = native_key->pub_inputs_offset; + this->circuit_size = FF::from_witness(builder, native_key->circuit_size); + // TODO(https://github.com/AztecProtocol/barretenberg/issues/1283): Use stdlib get_msb. + this->log_circuit_size = FF::from_witness(builder, numeric::get_msb(native_key->circuit_size)); + this->num_public_inputs = FF::from_witness(builder, native_key->num_public_inputs); + this->pub_inputs_offset = FF::from_witness(builder, native_key->pub_inputs_offset); this->contains_pairing_point_accumulator = native_key->contains_pairing_point_accumulator; this->pairing_point_accumulator_public_input_indices = native_key->pairing_point_accumulator_public_input_indices; @@ -145,10 +146,11 @@ template class MegaRecursiveFlavor_ { size_t num_frs_read = 0; - this->circuit_size = uint64_t(deserialize_from_frs(builder, elements, num_frs_read).get_value()); - this->log_circuit_size = numeric::get_msb(this->circuit_size); - this->num_public_inputs = uint64_t(deserialize_from_frs(builder, elements, num_frs_read).get_value()); - this->pub_inputs_offset = uint64_t(deserialize_from_frs(builder, elements, num_frs_read).get_value()); + this->circuit_size = deserialize_from_frs(builder, elements, num_frs_read); + // TODO(https://github.com/AztecProtocol/barretenberg/issues/1283): Use stdlib get_msb. + this->log_circuit_size = numeric::get_msb(static_cast(this->circuit_size.get_value())); + this->num_public_inputs = deserialize_from_frs(builder, elements, num_frs_read); + this->pub_inputs_offset = deserialize_from_frs(builder, elements, num_frs_read); this->contains_pairing_point_accumulator = bool(deserialize_from_frs(builder, elements, num_frs_read).get_value()); diff --git a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_flavor.hpp b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_flavor.hpp index e48028eacb80..bc257faecf7a 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_flavor.hpp +++ b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_flavor.hpp @@ -129,7 +129,7 @@ class UltraFlavor { * @brief A base class labelling precomputed entities and (ordered) subsets of interest. * @details Used to build the proving key and verification key. */ - template class PrecomputedEntities : public PrecomputedEntitiesBase { + template class PrecomputedEntities { public: bool operator==(const PrecomputedEntities&) const = default; using DataType = DataType_; @@ -356,7 +356,7 @@ class UltraFlavor { * that, and split out separate PrecomputedPolynomials/Commitments data for clarity but also for portability of our * circuits. */ - class VerificationKey : public VerificationKey_, VerifierCommitmentKey> { + class VerificationKey : public VerificationKey_, VerifierCommitmentKey> { public: bool operator==(const VerificationKey&) const = default; VerificationKey() = default; diff --git a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_keccak_flavor.hpp b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_keccak_flavor.hpp index 65f9b029e84d..5ff26a6adedc 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_keccak_flavor.hpp +++ b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_keccak_flavor.hpp @@ -36,7 +36,7 @@ class UltraKeccakFlavor : public bb::UltraFlavor { */ // TODO(https://github.com/AztecProtocol/barretenberg/issues/1094): Add aggregation to the verifier contract so the // VerificationKey from UltraFlavor can be used - class VerificationKey : public VerificationKey_, VerifierCommitmentKey> { + class VerificationKey : public VerificationKey_, VerifierCommitmentKey> { public: VerificationKey() = default; VerificationKey(const size_t circuit_size, const size_t num_public_inputs) diff --git a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_recursive_flavor.hpp b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_recursive_flavor.hpp index 47e07280c343..c9c5eea31c48 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_recursive_flavor.hpp +++ b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_recursive_flavor.hpp @@ -106,7 +106,7 @@ template class UltraRecursiveFlavor_ { * circuits. */ class VerificationKey - : public VerificationKey_, VerifierCommitmentKey> { + : public VerificationKey_, VerifierCommitmentKey> { public: /** * @brief Construct a new Verification Key with stdlib types from a provided native verification key @@ -117,10 +117,11 @@ template class UltraRecursiveFlavor_ { VerificationKey(CircuitBuilder* builder, const std::shared_ptr& native_key) { this->pcs_verification_key = native_key->pcs_verification_key; - this->circuit_size = native_key->circuit_size; - this->log_circuit_size = numeric::get_msb(this->circuit_size); - this->num_public_inputs = native_key->num_public_inputs; - this->pub_inputs_offset = native_key->pub_inputs_offset; + this->circuit_size = FF::from_witness(builder, native_key->circuit_size); + // TODO(https://github.com/AztecProtocol/barretenberg/issues/1283): Use stdlib get_msb. + this->log_circuit_size = FF::from_witness(builder, numeric::get_msb(native_key->circuit_size)); + this->num_public_inputs = FF::from_witness(builder, native_key->num_public_inputs); + this->pub_inputs_offset = FF::from_witness(builder, native_key->pub_inputs_offset); this->contains_pairing_point_accumulator = native_key->contains_pairing_point_accumulator; this->pairing_point_accumulator_public_input_indices = native_key->pairing_point_accumulator_public_input_indices; @@ -143,9 +144,9 @@ template class UltraRecursiveFlavor_ { size_t num_frs_read = 0; - this->circuit_size = uint64_t(deserialize_from_frs(builder, elements, num_frs_read).get_value()); - this->num_public_inputs = uint64_t(deserialize_from_frs(builder, elements, num_frs_read).get_value()); - this->pub_inputs_offset = uint64_t(deserialize_from_frs(builder, elements, num_frs_read).get_value()); + this->circuit_size = deserialize_from_frs(builder, elements, num_frs_read); + this->num_public_inputs = deserialize_from_frs(builder, elements, num_frs_read); + this->pub_inputs_offset = deserialize_from_frs(builder, elements, num_frs_read); this->contains_pairing_point_accumulator = bool(deserialize_from_frs(builder, elements, num_frs_read).get_value()); diff --git a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_rollup_flavor.hpp b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_rollup_flavor.hpp index 75a324c4c2c1..8b633dd87e12 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_rollup_flavor.hpp +++ b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_rollup_flavor.hpp @@ -37,7 +37,7 @@ class UltraRollupFlavor : public bb::UltraFlavor { * that, and split out separate PrecomputedPolynomials/Commitments data for clarity but also for portability of our * circuits. */ - class VerificationKey : public VerificationKey_, VerifierCommitmentKey> { + class VerificationKey : public VerificationKey_, VerifierCommitmentKey> { public: virtual ~VerificationKey() = default; bool contains_ipa_claim; diff --git a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_rollup_recursive_flavor.hpp b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_rollup_recursive_flavor.hpp index 0f29dc95d1c4..d35cfba12ac1 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_rollup_recursive_flavor.hpp +++ b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_rollup_recursive_flavor.hpp @@ -51,7 +51,7 @@ template class UltraRollupRecursiveFlavor_ : public Ultra * circuits. */ class VerificationKey - : public VerificationKey_, VerifierCommitmentKey> { + : public VerificationKey_, VerifierCommitmentKey> { public: bool contains_ipa_claim; // needs to be a circuit constant IPAClaimPubInputIndices ipa_claim_public_input_indices; // needs to be a circuit constant @@ -67,10 +67,11 @@ template class UltraRollupRecursiveFlavor_ : public Ultra , ipa_claim_public_input_indices(native_key->ipa_claim_public_input_indices) { this->pcs_verification_key = native_key->pcs_verification_key; - this->circuit_size = native_key->circuit_size; - this->log_circuit_size = numeric::get_msb(this->circuit_size); - this->num_public_inputs = native_key->num_public_inputs; - this->pub_inputs_offset = native_key->pub_inputs_offset; + this->circuit_size = FF::from_witness(builder, native_key->circuit_size); + // TODO(https://github.com/AztecProtocol/barretenberg/issues/1283): Use stdlib get_msb. + this->log_circuit_size = FF::from_witness(builder, numeric::get_msb(native_key->circuit_size)); + this->num_public_inputs = FF::from_witness(builder, native_key->num_public_inputs); + this->pub_inputs_offset = FF::from_witness(builder, native_key->pub_inputs_offset); this->contains_pairing_point_accumulator = native_key->contains_pairing_point_accumulator; this->pairing_point_accumulator_public_input_indices = native_key->pairing_point_accumulator_public_input_indices; @@ -93,9 +94,9 @@ template class UltraRollupRecursiveFlavor_ : public Ultra size_t num_frs_read = 0; - this->circuit_size = uint64_t(deserialize_from_frs(builder, elements, num_frs_read).get_value()); - this->num_public_inputs = uint64_t(deserialize_from_frs(builder, elements, num_frs_read).get_value()); - this->pub_inputs_offset = uint64_t(deserialize_from_frs(builder, elements, num_frs_read).get_value()); + this->circuit_size = deserialize_from_frs(builder, elements, num_frs_read); + this->num_public_inputs = deserialize_from_frs(builder, elements, num_frs_read); + this->pub_inputs_offset = deserialize_from_frs(builder, elements, num_frs_read); this->contains_pairing_point_accumulator = bool(deserialize_from_frs(builder, elements, num_frs_read).get_value()); for (uint32_t& idx : this->pairing_point_accumulator_public_input_indices) { diff --git a/barretenberg/cpp/src/barretenberg/translator_vm/translator_flavor.hpp b/barretenberg/cpp/src/barretenberg/translator_vm/translator_flavor.hpp index 39e65785b735..8971000d542f 100644 --- a/barretenberg/cpp/src/barretenberg/translator_vm/translator_flavor.hpp +++ b/barretenberg/cpp/src/barretenberg/translator_vm/translator_flavor.hpp @@ -141,8 +141,9 @@ class TranslatorFlavor { * @brief A base class labelling precomputed entities and (ordered) subsets of interest. * @details Used to build the proving key and verification key. */ - template class PrecomputedEntities : public PrecomputedEntitiesBase { + template class PrecomputedEntities { public: + bool operator==(const PrecomputedEntities& other) const = default; using DataType = DataType_; DEFINE_FLAVOR_MEMBERS(DataType, ordered_extra_range_constraints_numerator, // column 0 @@ -694,7 +695,7 @@ class TranslatorFlavor { * resolve that, and split out separate PrecomputedPolynomials/Commitments data for clarity but also for * portability of our circuits. */ - class VerificationKey : public VerificationKey_, VerifierCommitmentKey> { + class VerificationKey : public VerificationKey_, VerifierCommitmentKey> { public: VerificationKey() = default; VerificationKey(const size_t circuit_size, const size_t num_public_inputs) diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/flavor.cpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/flavor.cpp index 7944617776c4..303db921572c 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/flavor.cpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/flavor.cpp @@ -87,16 +87,13 @@ AvmFlavor::PartiallyEvaluatedMultivariates::PartiallyEvaluatedMultivariates(cons AvmFlavor::ProvingKey::ProvingKey(const size_t circuit_size, const size_t num_public_inputs) : circuit_size(circuit_size) + , log_circuit_size(numeric::get_msb(circuit_size)) + , num_public_inputs(num_public_inputs) , evaluation_domain(bb::EvaluationDomain(circuit_size, circuit_size)) - , commitment_key(std::make_shared(circuit_size + 1)) -{ - // TODO: These come from PrecomputedEntitiesBase, ideal we'd just call that class's constructor. - this->log_circuit_size = numeric::get_msb(circuit_size); - this->num_public_inputs = num_public_inputs; - - // The proving key's polynomials are not allocated here because they are later overwritten - // AvmComposer::compute_witness(). We should probably refactor this flow. -}; + , commitment_key(std::make_shared(circuit_size + 1)){ + // The proving key's polynomials are not allocated here because they are later overwritten + // AvmComposer::compute_witness(). We should probably refactor this flow. + }; /** * @brief Serialize verification key to field elements diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/flavor.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/flavor.hpp index da29d29950df..75574328bbd0 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/flavor.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/flavor.hpp @@ -222,7 +222,7 @@ class AvmFlavor { "AVM circuit. In this case, modify AVM_VERIFICATION_LENGTH_IN_FIELDS \n" "in constants.nr accordingly."); - template class PrecomputedEntities : public PrecomputedEntitiesBase { + template class PrecomputedEntities { public: DEFINE_FLAVOR_MEMBERS(DataType, AVM_PRECOMPUTED_ENTITIES) DEFINE_GETTERS(DEFAULT_GETTERS, AVM_PRECOMPUTED_ENTITIES) @@ -297,6 +297,8 @@ class AvmFlavor { ProvingKey(const size_t circuit_size, const size_t num_public_inputs); size_t circuit_size; + size_t log_circuit_size; + size_t num_public_inputs; bb::EvaluationDomain evaluation_domain; std::shared_ptr commitment_key; @@ -313,7 +315,7 @@ class AvmFlavor { auto get_to_be_shifted() { return AvmFlavor::get_to_be_shifted(*this); } }; - class VerificationKey : public VerificationKey_, VerifierCommitmentKey> { + class VerificationKey : public VerificationKey_, VerifierCommitmentKey> { public: using FF = VerificationKey_::FF; static constexpr size_t NUM_PRECOMPUTED_COMMITMENTS = NUM_PRECOMPUTED_ENTITIES; diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/recursive_verifier.cpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/recursive_verifier.cpp index 9f2e6a043225..9f0b73897136 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/recursive_verifier.cpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/recursive_verifier.cpp @@ -34,7 +34,8 @@ Flavor::FF AvmRecursiveVerifier_::evaluate_public_input_column(const std auto coefficients = SharedShiftedVirtualZeroesArray{ .start_ = 0, .end_ = points.size(), - .virtual_size_ = key->circuit_size, // NOLINTNEXTLINE(cppcoreguidelines-avoid-c-arrays) + .virtual_size_ = + static_cast(key->circuit_size.get_value()), // NOLINTNEXTLINE(cppcoreguidelines-avoid-c-arrays) .backing_memory_ = std::static_pointer_cast(get_mem_slab(sizeof(FF) * points.size())), }; @@ -87,7 +88,7 @@ AvmRecursiveVerifier_::AggregationObject AvmRecursiveVerifier_:: VerifierCommitments commitments{ key }; const auto circuit_size = transcript->template receive_from_prover("circuit_size"); - if (static_cast(circuit_size.get_value()) != key->circuit_size) { + if (static_cast(circuit_size.get_value()) != static_cast(key->circuit_size.get_value())) { throw_or_abort("AvmRecursiveVerifier::verify_proof: proof circuit size does not match verification key!"); } diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/recursion/recursive_flavor.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/recursion/recursive_flavor.hpp index d0c56264c660..5e641e0900fd 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/recursion/recursive_flavor.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/recursion/recursive_flavor.hpp @@ -55,14 +55,14 @@ template class AvmRecursiveFlavor_ { }; class VerificationKey - : public VerificationKey_, VerifierCommitmentKey> { + : public VerificationKey_, VerifierCommitmentKey> { public: VerificationKey(CircuitBuilder* builder, const std::shared_ptr& native_key) { this->pcs_verification_key = native_key->pcs_verification_key; - this->circuit_size = native_key->circuit_size; - this->log_circuit_size = numeric::get_msb(this->circuit_size); - this->num_public_inputs = native_key->num_public_inputs; + this->circuit_size = FF::from_witness(builder, native_key->circuit_size); + this->log_circuit_size = FF::from_witness(builder, numeric::get_msb(native_key->circuit_size)); + this->num_public_inputs = FF::from_witness(builder, native_key->num_public_inputs); for (auto [native_comm, comm] : zip_view(native_key->get_all(), this->get_all())) { comm = Commitment::from_witness(builder, native_comm); diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/tests/recursive_verifier.test.cpp b/barretenberg/cpp/src/barretenberg/vm/avm/tests/recursive_verifier.test.cpp index a9d0d9231ccc..722c2cc8e47b 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/tests/recursive_verifier.test.cpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/tests/recursive_verifier.test.cpp @@ -131,8 +131,9 @@ TEST_F(AvmRecursiveTests, recursion) EXPECT_EQ(key_el, rec_key_el.get_value()); } - EXPECT_EQ(verifier.key->circuit_size, recursive_verifier.key->circuit_size); - EXPECT_EQ(verifier.key->num_public_inputs, recursive_verifier.key->num_public_inputs); + EXPECT_EQ(verifier.key->circuit_size, static_cast(recursive_verifier.key->circuit_size.get_value())); + EXPECT_EQ(verifier.key->num_public_inputs, + static_cast(recursive_verifier.key->num_public_inputs.get_value())); // Make a proof of the verification of an AVM proof const size_t srs_size = 1 << 23; diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/flavor.cpp b/barretenberg/cpp/src/barretenberg/vm2/generated/flavor.cpp index 1ba47e602da9..4bb587064583 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/flavor.cpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/flavor.cpp @@ -97,16 +97,13 @@ AvmFlavor::PartiallyEvaluatedMultivariates::PartiallyEvaluatedMultivariates(cons AvmFlavor::ProvingKey::ProvingKey(const size_t circuit_size, const size_t num_public_inputs) : circuit_size(circuit_size) + , log_circuit_size(numeric::get_msb(circuit_size)) + , num_public_inputs(num_public_inputs) , evaluation_domain(bb::EvaluationDomain(circuit_size, circuit_size)) - , commitment_key(std::make_shared(circuit_size + 1)) -{ - // TODO: These come from PrecomputedEntitiesBase, ideal we'd just call that class's constructor. - this->log_circuit_size = numeric::get_msb(circuit_size); - this->num_public_inputs = num_public_inputs; - - // The proving key's polynomials are not allocated here because they are later overwritten - // AvmComposer::compute_witness(). We should probably refactor this flow. -}; + , commitment_key(std::make_shared(circuit_size + 1)){ + // The proving key's polynomials are not allocated here because they are later overwritten + // AvmComposer::compute_witness(). We should probably refactor this flow. + }; /** * @brief Serialize verification key to field elements diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/flavor.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/flavor.hpp index 8ef02ec75c02..cde58955c8a5 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/flavor.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/flavor.hpp @@ -198,7 +198,7 @@ class AvmFlavor { (NUM_WITNESS_ENTITIES + 1) * NUM_FRS_COM + (NUM_ALL_ENTITIES + 1) * NUM_FRS_FR + CONST_PROOF_SIZE_LOG_N * (NUM_FRS_COM + NUM_FRS_FR * (BATCHED_RELATION_PARTIAL_LENGTH + 1)); - template class PrecomputedEntities : public PrecomputedEntitiesBase { + template class PrecomputedEntities { public: DEFINE_FLAVOR_MEMBERS(DataType, AVM2_PRECOMPUTED_ENTITIES) DEFINE_GETTERS(DEFAULT_GETTERS, AVM2_PRECOMPUTED_ENTITIES) @@ -273,6 +273,8 @@ class AvmFlavor { ProvingKey(const size_t circuit_size, const size_t num_public_inputs); size_t circuit_size; + size_t log_circuit_size; + size_t num_public_inputs; bb::EvaluationDomain evaluation_domain; std::shared_ptr commitment_key; @@ -289,7 +291,7 @@ class AvmFlavor { auto get_to_be_shifted() { return AvmFlavor::get_to_be_shifted(*this); } }; - class VerificationKey : public VerificationKey_, VerifierCommitmentKey> { + class VerificationKey : public VerificationKey_, VerifierCommitmentKey> { public: using FF = VerificationKey_::FF; static constexpr size_t NUM_PRECOMPUTED_COMMITMENTS = NUM_PRECOMPUTED_ENTITIES; diff --git a/bb-pilcom/bb-pil-backend/templates/flavor.cpp.hbs b/bb-pilcom/bb-pil-backend/templates/flavor.cpp.hbs index 1b649498a187..49dcf22d14da 100644 --- a/bb-pilcom/bb-pil-backend/templates/flavor.cpp.hbs +++ b/bb-pilcom/bb-pil-backend/templates/flavor.cpp.hbs @@ -96,13 +96,11 @@ AvmFlavor::PartiallyEvaluatedMultivariates::PartiallyEvaluatedMultivariates(cons AvmFlavor::ProvingKey::ProvingKey(const size_t circuit_size, const size_t num_public_inputs) : circuit_size(circuit_size) + , log_circuit_size(numeric::get_msb(circuit_size)) + , num_public_inputs(num_public_inputs) , evaluation_domain(bb::EvaluationDomain(circuit_size, circuit_size)) , commitment_key(std::make_shared(circuit_size + 1)) { - // TODO: These come from PrecomputedEntitiesBase, ideal we'd just call that class's constructor. - this->log_circuit_size = numeric::get_msb(circuit_size); - this->num_public_inputs = num_public_inputs; - // The proving key's polynomials are not allocated here because they are later overwritten // AvmComposer::compute_witness(). We should probably refactor this flow. }; diff --git a/bb-pilcom/bb-pil-backend/templates/flavor.hpp.hbs b/bb-pilcom/bb-pil-backend/templates/flavor.hpp.hbs index edd46a09a0ef..a1f60424e111 100644 --- a/bb-pilcom/bb-pil-backend/templates/flavor.hpp.hbs +++ b/bb-pilcom/bb-pil-backend/templates/flavor.hpp.hbs @@ -135,7 +135,7 @@ class AvmFlavor { "in constants.nr accordingly."); {{/if}} - template class PrecomputedEntities : public PrecomputedEntitiesBase { + template class PrecomputedEntities { public: DEFINE_FLAVOR_MEMBERS(DataType, {{shoutySnakeCase name}}_PRECOMPUTED_ENTITIES) DEFINE_GETTERS(DEFAULT_GETTERS, {{shoutySnakeCase name}}_PRECOMPUTED_ENTITIES) @@ -212,6 +212,8 @@ class AvmFlavor { ProvingKey(const size_t circuit_size, const size_t num_public_inputs); size_t circuit_size; + size_t log_circuit_size; + size_t num_public_inputs; bb::EvaluationDomain evaluation_domain; std::shared_ptr commitment_key; @@ -228,7 +230,7 @@ class AvmFlavor { auto get_to_be_shifted() { return AvmFlavor::get_to_be_shifted(*this); } }; - class VerificationKey : public VerificationKey_, VerifierCommitmentKey> { + class VerificationKey : public VerificationKey_, VerifierCommitmentKey> { public: using FF = VerificationKey_::FF; static constexpr size_t NUM_PRECOMPUTED_COMMITMENTS = NUM_PRECOMPUTED_ENTITIES;