diff --git a/barretenberg/cpp/scripts/test_civc_standalone_vks_havent_changed.sh b/barretenberg/cpp/scripts/test_civc_standalone_vks_havent_changed.sh index 3ecdb6146f8c..1a8d35839688 100755 --- a/barretenberg/cpp/scripts/test_civc_standalone_vks_havent_changed.sh +++ b/barretenberg/cpp/scripts/test_civc_standalone_vks_havent_changed.sh @@ -11,7 +11,7 @@ cd .. # - Generate a hash for versioning: sha256sum bb-civc-inputs.tar.gz # - Upload the compressed results: aws s3 cp bb-civc-inputs.tar.gz s3://aztec-ci-artifacts/protocol/bb-civc-inputs-[hash(0:8)].tar.gz # Note: In case of the "Test suite failed to run ... Unexpected token 'with' " error, need to run: docker pull aztecprotocol/build:3.0 -pinned_civc_inputs_url="https://aztec-ci-artifacts.s3.us-east-2.amazonaws.com/protocol/bb-civc-inputs-79e2c5e0.tar.gz" +pinned_civc_inputs_url="https://aztec-ci-artifacts.s3.us-east-2.amazonaws.com/protocol/bb-civc-inputs-ff124547.tar.gz" # For easily rerunning the inputs generation if [[ "${1:-}" == "--update_inputs" ]]; then diff --git a/barretenberg/cpp/src/barretenberg/dsl/acir_format/avm2_recursion_constraint.cpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/avm2_recursion_constraint.cpp index 267ecda45532..71f13acefdc2 100644 --- a/barretenberg/cpp/src/barretenberg/dsl/acir_format/avm2_recursion_constraint.cpp +++ b/barretenberg/cpp/src/barretenberg/dsl/acir_format/avm2_recursion_constraint.cpp @@ -65,8 +65,8 @@ void create_dummy_vkey_and_proof(Builder& builder, // (Flavor::NUM_FRS_COM + Flavor::NUM_FRS_FR * (Flavor::BATCHED_RELATION_PARTIAL_LENGTH + 1)); const auto log_circuit_size = CONST_PROOF_SIZE_LOG_N; - // First key field is circuit size - builder.set_variable(key_fields[0].witness_index, 1 << log_circuit_size); + // First key field is log circuit size + builder.set_variable(key_fields[0].witness_index, log_circuit_size); // Second key field is number of public inputs builder.set_variable(key_fields[1].witness_index, public_inputs_size); diff --git a/barretenberg/cpp/src/barretenberg/dsl/acir_format/mock_verifier_inputs.cpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/mock_verifier_inputs.cpp index dca385c80d7f..1ece4124f736 100644 --- a/barretenberg/cpp/src/barretenberg/dsl/acir_format/mock_verifier_inputs.cpp +++ b/barretenberg/cpp/src/barretenberg/dsl/acir_format/mock_verifier_inputs.cpp @@ -219,7 +219,7 @@ std::shared_ptr create_mock_honk_vk(const size { // Set relevant VK metadata and commitments auto honk_verification_key = std::make_shared(); - honk_verification_key->circuit_size = dyadic_size; + honk_verification_key->log_circuit_size = bb::numeric::get_msb(dyadic_size); honk_verification_key->num_public_inputs = num_public_inputs; honk_verification_key->pub_inputs_offset = pub_inputs_offset; // must be set correctly diff --git a/barretenberg/cpp/src/barretenberg/eccvm/eccvm_flavor.hpp b/barretenberg/cpp/src/barretenberg/eccvm/eccvm_flavor.hpp index 4a6396ee04f1..ebd8808c16b2 100644 --- a/barretenberg/cpp/src/barretenberg/eccvm/eccvm_flavor.hpp +++ b/barretenberg/cpp/src/barretenberg/eccvm/eccvm_flavor.hpp @@ -824,7 +824,6 @@ class ECCVMFlavor { VerificationKey(const std::shared_ptr& proving_key) { - this->circuit_size = 1UL << CONST_ECCVM_LOG_N; this->log_circuit_size = CONST_ECCVM_LOG_N; this->num_public_inputs = 0; this->pub_inputs_offset = 0; @@ -877,13 +876,8 @@ class ECCVMFlavor { // from MSGPACK and the verification key. // Don't statically check for object completeness. using MSGPACK_NO_STATIC_CHECK = std::true_type; - MSGPACK_FIELDS(circuit_size, - log_circuit_size, - num_public_inputs, - pub_inputs_offset, - lagrange_first, - lagrange_second, - lagrange_last); + MSGPACK_FIELDS( + log_circuit_size, num_public_inputs, pub_inputs_offset, lagrange_first, lagrange_second, lagrange_last); }; /** diff --git a/barretenberg/cpp/src/barretenberg/flavor/flavor.hpp b/barretenberg/cpp/src/barretenberg/flavor/flavor.hpp index 0c8e4958b996..7729811a8b10 100644 --- a/barretenberg/cpp/src/barretenberg/flavor/flavor.hpp +++ b/barretenberg/cpp/src/barretenberg/flavor/flavor.hpp @@ -151,7 +151,6 @@ template class NativeVerificationKey_ : public PrecomputedCommitments { public: using Commitment = typename PrecomputedCommitments::DataType; - uint64_t circuit_size = 0; uint64_t log_circuit_size = 0; uint64_t num_public_inputs = 0; uint64_t pub_inputs_offset = 0; @@ -161,7 +160,6 @@ class NativeVerificationKey_ : public PrecomputedCommitments { NativeVerificationKey_() = default; NativeVerificationKey_(const size_t circuit_size, const size_t num_public_inputs) { - this->circuit_size = circuit_size; this->log_circuit_size = numeric::get_msb(circuit_size); this->num_public_inputs = num_public_inputs; }; @@ -182,7 +180,7 @@ class NativeVerificationKey_ : public PrecomputedCommitments { std::vector elements; - serialize_to_field_buffer(this->circuit_size, elements); + serialize_to_field_buffer(this->log_circuit_size, elements); serialize_to_field_buffer(this->num_public_inputs, elements); serialize_to_field_buffer(this->pub_inputs_offset, elements); @@ -218,7 +216,7 @@ class NativeVerificationKey_ : public PrecomputedCommitments { */ virtual fr add_hash_to_transcript(const std::string& domain_separator, Transcript& transcript) const { - transcript.add_to_independent_hash_buffer(domain_separator + "vk_circuit_size", this->circuit_size); + transcript.add_to_independent_hash_buffer(domain_separator + "vk_log_circuit_size", this->log_circuit_size); transcript.add_to_independent_hash_buffer(domain_separator + "vk_num_public_inputs", this->num_public_inputs); transcript.add_to_independent_hash_buffer(domain_separator + "vk_pub_inputs_offset", this->pub_inputs_offset); @@ -244,7 +242,6 @@ class StdlibVerificationKey_ : public PrecomputedCommitments { using FF = stdlib::field_t; using Commitment = typename PrecomputedCommitments::DataType; using Transcript = BaseTranscript>; - FF circuit_size; FF log_circuit_size; FF num_public_inputs; FF pub_inputs_offset = 0; @@ -254,7 +251,6 @@ class StdlibVerificationKey_ : public PrecomputedCommitments { StdlibVerificationKey_() = default; StdlibVerificationKey_(const size_t circuit_size, const size_t num_public_inputs) { - this->circuit_size = circuit_size; this->log_circuit_size = numeric::get_msb(circuit_size); this->num_public_inputs = num_public_inputs; }; @@ -275,7 +271,7 @@ class StdlibVerificationKey_ : public PrecomputedCommitments { std::vector elements; - serialize_to_field_buffer(this->circuit_size, elements); + serialize_to_field_buffer(this->log_circuit_size, elements); serialize_to_field_buffer(this->num_public_inputs, elements); serialize_to_field_buffer(this->pub_inputs_offset, elements); @@ -312,7 +308,7 @@ class StdlibVerificationKey_ : public PrecomputedCommitments { */ virtual FF add_hash_to_transcript(const std::string& domain_separator, Transcript& transcript) const { - transcript.add_to_independent_hash_buffer(domain_separator + "vk_circuit_size", this->circuit_size); + transcript.add_to_independent_hash_buffer(domain_separator + "vk_log_circuit_size", this->log_circuit_size); transcript.add_to_independent_hash_buffer(domain_separator + "vk_num_public_inputs", this->num_public_inputs); transcript.add_to_independent_hash_buffer(domain_separator + "vk_pub_inputs_offset", this->pub_inputs_offset); for (const Commitment& commitment : this->get_all()) { diff --git a/barretenberg/cpp/src/barretenberg/flavor/mega_flavor.hpp b/barretenberg/cpp/src/barretenberg/flavor/mega_flavor.hpp index cdcba97922a1..2c72ea4c11be 100644 --- a/barretenberg/cpp/src/barretenberg/flavor/mega_flavor.hpp +++ b/barretenberg/cpp/src/barretenberg/flavor/mega_flavor.hpp @@ -431,7 +431,7 @@ class MegaFlavor { public: // Serialized Verification Key length in fields static constexpr size_t VERIFICATION_KEY_LENGTH = - /* 1. Metadata (circuit_size, num_public_inputs, pub_inputs_offset) */ (3 * num_frs_fr) + + /* 1. Metadata (log_circuit_size, num_public_inputs, pub_inputs_offset) */ (3 * num_frs_fr) + /* 2. NUM_PRECOMPUTED_ENTITIES commitments */ (NUM_PRECOMPUTED_ENTITIES * num_frs_comm); VerificationKey() = default; @@ -443,8 +443,7 @@ class MegaFlavor { void set_metadata(const MetaData& metadata) { - this->circuit_size = metadata.dyadic_size; - this->log_circuit_size = numeric::get_msb(this->circuit_size); + this->log_circuit_size = numeric::get_msb(metadata.dyadic_size); this->num_public_inputs = metadata.num_public_inputs; this->pub_inputs_offset = metadata.pub_inputs_offset; } @@ -461,8 +460,7 @@ class MegaFlavor { // Don't statically check for object completeness. using MSGPACK_NO_STATIC_CHECK = std::true_type; - MSGPACK_FIELDS(circuit_size, - log_circuit_size, + MSGPACK_FIELDS(log_circuit_size, num_public_inputs, pub_inputs_offset, q_m, diff --git a/barretenberg/cpp/src/barretenberg/flavor/mega_recursive_flavor.hpp b/barretenberg/cpp/src/barretenberg/flavor/mega_recursive_flavor.hpp index 179f193a3477..44ec55f925f1 100644 --- a/barretenberg/cpp/src/barretenberg/flavor/mega_recursive_flavor.hpp +++ b/barretenberg/cpp/src/barretenberg/flavor/mega_recursive_flavor.hpp @@ -126,9 +126,7 @@ template class MegaRecursiveFlavor_ { */ VerificationKey(CircuitBuilder* builder, const std::shared_ptr& native_key) { - 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->log_circuit_size = FF::from_witness(builder, native_key->log_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); @@ -150,9 +148,7 @@ template class MegaRecursiveFlavor_ { size_t num_frs_read = 0; - 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->log_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); diff --git a/barretenberg/cpp/src/barretenberg/flavor/ultra_flavor.hpp b/barretenberg/cpp/src/barretenberg/flavor/ultra_flavor.hpp index 2ba7c930c864..637b307ec7e2 100644 --- a/barretenberg/cpp/src/barretenberg/flavor/ultra_flavor.hpp +++ b/barretenberg/cpp/src/barretenberg/flavor/ultra_flavor.hpp @@ -468,7 +468,7 @@ class UltraFlavor { public: // Serialized Verification Key length in fields static constexpr size_t VERIFICATION_KEY_LENGTH = - /* 1. Metadata (circuit_size, num_public_inputs, pub_inputs_offset) */ (3 * num_frs_fr) + + /* 1. Metadata (log_circuit_size, num_public_inputs, pub_inputs_offset) */ (3 * num_frs_fr) + /* 2. NUM_PRECOMPUTED_ENTITIES commitments */ (NUM_PRECOMPUTED_ENTITIES * num_frs_comm); bool operator==(const VerificationKey&) const = default; @@ -479,8 +479,7 @@ class UltraFlavor { VerificationKey(const PrecomputedData& precomputed) { - this->circuit_size = precomputed.metadata.dyadic_size; - this->log_circuit_size = numeric::get_msb(this->circuit_size); + this->log_circuit_size = numeric::get_msb(precomputed.metadata.dyadic_size); this->num_public_inputs = precomputed.metadata.num_public_inputs; this->pub_inputs_offset = precomputed.metadata.pub_inputs_offset; @@ -494,8 +493,7 @@ class UltraFlavor { using MSGPACK_NO_STATIC_CHECK = std::true_type; // For serialising and deserialising data - MSGPACK_FIELDS(circuit_size, - log_circuit_size, + MSGPACK_FIELDS(log_circuit_size, num_public_inputs, pub_inputs_offset, q_m, diff --git a/barretenberg/cpp/src/barretenberg/flavor/ultra_keccak_flavor.hpp b/barretenberg/cpp/src/barretenberg/flavor/ultra_keccak_flavor.hpp index 05a9b08c6abc..2eb0b2bedbbb 100644 --- a/barretenberg/cpp/src/barretenberg/flavor/ultra_keccak_flavor.hpp +++ b/barretenberg/cpp/src/barretenberg/flavor/ultra_keccak_flavor.hpp @@ -55,8 +55,7 @@ class UltraKeccakFlavor : public bb::UltraFlavor { VerificationKey(const PrecomputedData& precomputed) { - this->circuit_size = precomputed.metadata.dyadic_size; - this->log_circuit_size = numeric::get_msb(this->circuit_size); + this->log_circuit_size = numeric::get_msb(precomputed.metadata.dyadic_size); this->num_public_inputs = precomputed.metadata.num_public_inputs; this->pub_inputs_offset = precomputed.metadata.pub_inputs_offset; @@ -81,7 +80,8 @@ class UltraKeccakFlavor : public bb::UltraFlavor { // TODO(https://github.com/AztecProtocol/barretenberg/issues/1427): We need to update this function to look // like UltraFlavor's add_hash_to_transcript. Alternatively, the VerificationKey class will go away when we // add pairing point aggregation to the solidity verifier. - transcript.add_to_hash_buffer(domain_separator + "vk_circuit_size", this->circuit_size); + uint64_t circuit_size = 1 << this->log_circuit_size; + transcript.add_to_hash_buffer(domain_separator + "vk_log_circuit_size", circuit_size); transcript.add_to_hash_buffer(domain_separator + "vk_num_public_inputs", this->num_public_inputs); transcript.add_to_hash_buffer(domain_separator + "vk_pub_inputs_offset", this->pub_inputs_offset); return 0; @@ -91,8 +91,7 @@ class UltraKeccakFlavor : public bb::UltraFlavor { using MSGPACK_NO_STATIC_CHECK = std::true_type; // For serialising and deserialising data - MSGPACK_FIELDS(circuit_size, - log_circuit_size, + MSGPACK_FIELDS(log_circuit_size, num_public_inputs, pub_inputs_offset, q_m, diff --git a/barretenberg/cpp/src/barretenberg/flavor/ultra_recursive_flavor.hpp b/barretenberg/cpp/src/barretenberg/flavor/ultra_recursive_flavor.hpp index b64cb59fdd54..4c0f77253b9a 100644 --- a/barretenberg/cpp/src/barretenberg/flavor/ultra_recursive_flavor.hpp +++ b/barretenberg/cpp/src/barretenberg/flavor/ultra_recursive_flavor.hpp @@ -127,9 +127,7 @@ template class UltraRecursiveFlavor_ { */ VerificationKey(CircuitBuilder* builder, const std::shared_ptr& native_key) { - 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->log_circuit_size = FF::from_witness(builder, native_key->log_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); @@ -151,12 +149,7 @@ template class UltraRecursiveFlavor_ { size_t num_frs_read = 0; - this->circuit_size = deserialize_from_frs(builder, elements, num_frs_read); - // TODO(https://github.com/AztecProtocol/barretenberg/issues/1364): Improve VKs. log_circuit_size must be a - // witness to make the Recursive Verifier circuit constant. Seems that other members also need to be turned - // into witnesses. - this->log_circuit_size = - FF::from_witness(&builder, numeric::get_msb(static_cast(this->circuit_size.get_value()))); + this->log_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); diff --git a/barretenberg/cpp/src/barretenberg/flavor/ultra_rollup_flavor.hpp b/barretenberg/cpp/src/barretenberg/flavor/ultra_rollup_flavor.hpp index 915c7bf4ebf0..ffaf008dadbe 100644 --- a/barretenberg/cpp/src/barretenberg/flavor/ultra_rollup_flavor.hpp +++ b/barretenberg/cpp/src/barretenberg/flavor/ultra_rollup_flavor.hpp @@ -42,8 +42,7 @@ class UltraRollupFlavor : public bb::UltraFlavor { VerificationKey(const PrecomputedData& precomputed) { - this->circuit_size = precomputed.metadata.dyadic_size; - this->log_circuit_size = numeric::get_msb(this->circuit_size); + this->log_circuit_size = numeric::get_msb(precomputed.metadata.dyadic_size); this->num_public_inputs = precomputed.metadata.num_public_inputs; this->pub_inputs_offset = precomputed.metadata.pub_inputs_offset; @@ -57,8 +56,7 @@ class UltraRollupFlavor : public bb::UltraFlavor { using MSGPACK_NO_STATIC_CHECK = std::true_type; // For serialising and deserialising data - MSGPACK_FIELDS(circuit_size, - log_circuit_size, + MSGPACK_FIELDS(log_circuit_size, num_public_inputs, pub_inputs_offset, q_m, diff --git a/barretenberg/cpp/src/barretenberg/flavor/ultra_rollup_recursive_flavor.hpp b/barretenberg/cpp/src/barretenberg/flavor/ultra_rollup_recursive_flavor.hpp index 75d880785157..ae438fb4871f 100644 --- a/barretenberg/cpp/src/barretenberg/flavor/ultra_rollup_recursive_flavor.hpp +++ b/barretenberg/cpp/src/barretenberg/flavor/ultra_rollup_recursive_flavor.hpp @@ -70,9 +70,7 @@ template class UltraRollupRecursiveFlavor_ : public Ultra */ VerificationKey(CircuitBuilder* builder, const std::shared_ptr& native_key) { - 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->log_circuit_size = FF::from_witness(builder, native_key->log_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); @@ -94,12 +92,7 @@ template class UltraRollupRecursiveFlavor_ : public Ultra size_t num_frs_read = 0; - this->circuit_size = deserialize_from_frs(builder, elements, num_frs_read); - // TODO(https://github.com/AztecProtocol/barretenberg/issues/1364): Improve VKs. log_circuit_size must be a - // witness to make the Recursive Verifier circuit constant. Seems that other members also need to be turned - // into witnesses. - this->log_circuit_size = - FF::from_witness(&builder, numeric::get_msb(static_cast(this->circuit_size.get_value()))); + this->log_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); diff --git a/barretenberg/cpp/src/barretenberg/honk/library/grand_product_delta.hpp b/barretenberg/cpp/src/barretenberg/honk/library/grand_product_delta.hpp index 1e6c487bda96..20ee235765c4 100644 --- a/barretenberg/cpp/src/barretenberg/honk/library/grand_product_delta.hpp +++ b/barretenberg/cpp/src/barretenberg/honk/library/grand_product_delta.hpp @@ -25,8 +25,8 @@ template typename Flavor::FF compute_public_input_delta(std::span public_inputs, const typename Flavor::FF& beta, const typename Flavor::FF& gamma, - const auto domain_size, - size_t offset = 0) + const typename Flavor::FF& log_domain_size, + const typename Flavor::FF& offset = 0) { using Field = typename Flavor::FF; Field numerator = Field(1); @@ -57,15 +57,16 @@ typename Flavor::FF compute_public_input_delta(std::spancircuit_size, "N"); + print_u256_const(1 << key->log_circuit_size, "N"); print_u256_const(key->log_circuit_size, "LOG_N"); print_u256_const(key->num_public_inputs, "NUMBER_OF_PUBLIC_INPUTS"); os << "" "library " << class_name << " {\n" " function loadVerificationKey() internal pure returns (Honk.VerificationKey memory) {\n" " Honk.VerificationKey memory vk = Honk.VerificationKey({\n"; - print_u256(key->circuit_size, "circuitSize"); + print_u256(1 << key->log_circuit_size, "circuitSize"); print_u256(key->log_circuit_size, "logCircuitSize"); print_u256(key->num_public_inputs, "publicInputsSize"); print_g1(key->q_l, "ql"); diff --git a/barretenberg/cpp/src/barretenberg/protogalaxy/protogalaxy_verifier.cpp b/barretenberg/cpp/src/barretenberg/protogalaxy/protogalaxy_verifier.cpp index 94752f6f682d..5f8022d423b1 100644 --- a/barretenberg/cpp/src/barretenberg/protogalaxy/protogalaxy_verifier.cpp +++ b/barretenberg/cpp/src/barretenberg/protogalaxy/protogalaxy_verifier.cpp @@ -116,7 +116,6 @@ std::shared_ptr ProtogalaxyVerifier // Set the accumulator circuit size data based on the max of the keys being accumulated const size_t accumulator_log_circuit_size = keys_to_fold.get_max_log_circuit_size(); next_accumulator->vk->log_circuit_size = accumulator_log_circuit_size; - next_accumulator->vk->circuit_size = 1 << accumulator_log_circuit_size; // Compute next folding parameters const auto [vanishing_polynomial_at_challenge, lagranges] = 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 ff1cba94a406..725326d0c6ab 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 @@ -112,10 +112,8 @@ class ECCVMRecursiveFlavor { : pcs_verification_key(builder, 1UL << CONST_ECCVM_LOG_N, native_key->pcs_verification_key) { - // TODO(https://github.com/AztecProtocol/barretenberg/issues/1324): Remove `circuit_size` and - // `log_circuit_size` from MSGPACK and the verification key. - this->circuit_size = BF{ 1UL << CONST_ECCVM_LOG_N }; - this->circuit_size.convert_constant_to_fixed_witness(builder); + // TODO(https://github.com/AztecProtocol/barretenberg/issues/1324): Remove `log_circuit_size` from MSGPACK + // and the verification key. this->log_circuit_size = BF{ static_cast(CONST_ECCVM_LOG_N) }; this->log_circuit_size.convert_constant_to_fixed_witness(builder); this->num_public_inputs = BF::from_witness(builder, native_key->num_public_inputs); 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 4809534b0bdc..2ed5365757a7 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 @@ -117,7 +117,6 @@ class ECCVMRecursiveTests : public ::testing::Test { } // Ensure verification key is the same - 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()), 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 b1d4471658c8..c16ea8595407 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 @@ -48,8 +48,6 @@ DeciderRecursiveVerifier_::PairingPoints DeciderRecursiveVerifier_(accumulator->vk_and_hash->vk->log_circuit_size); - constrain_log_circuit_size(padding_indicator_array, accumulator->vk_and_hash->vk->circuit_size); - Sumcheck sumcheck(transcript, accumulator->alphas, accumulator->target_sum); SumcheckOutput output = 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 b24bbab2768b..6dbbf37ec9d6 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 @@ -106,13 +106,11 @@ 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, - decider_vk->vk_and_hash->vk->circuit_size, - static_cast(decider_vk->vk_and_hash->vk->pub_inputs_offset.get_value())); + const FF public_input_delta = compute_public_input_delta(public_inputs, + beta, + gamma, + decider_vk->vk_and_hash->vk->log_circuit_size, + decider_vk->vk_and_hash->vk->pub_inputs_offset); // 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 84d3385979f8..4ac4a0fbccb2 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 @@ -100,8 +100,6 @@ UltraRecursiveVerifier_::Output UltraRecursiveVerifier_::verify_ const auto padding_indicator_array = compute_padding_indicator_array(key->vk_and_hash->vk->log_circuit_size); - constrain_log_circuit_size(padding_indicator_array, key->vk_and_hash->vk->circuit_size); - Sumcheck sumcheck(transcript, key->alphas); // 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 4df80f3572e8..9c7d4667d37a 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 @@ -130,8 +130,6 @@ template class RecursiveVerifierTest : public testing RecursiveVerifier verifier{ &outer_circuit, stdlib_vk_and_hash }; // Spot check some values in the recursive VK to ensure it was constructed correctly - EXPECT_EQ(static_cast(verifier.key->vk_and_hash->vk->circuit_size.get_value()), - honk_vk->circuit_size); EXPECT_EQ(static_cast(verifier.key->vk_and_hash->vk->log_circuit_size.get_value()), honk_vk->log_circuit_size); EXPECT_EQ(static_cast(verifier.key->vk_and_hash->vk->num_public_inputs.get_value()), @@ -268,7 +266,7 @@ template class RecursiveVerifierTest : public testing } // Check the size of the recursive verifier if constexpr (std::same_as>) { - uint32_t NUM_GATES_EXPECTED = 870390; + uint32_t NUM_GATES_EXPECTED = 870522; BB_ASSERT_EQ(static_cast(outer_circuit.get_num_finalized_gates()), NUM_GATES_EXPECTED, "MegaZKHonk Recursive verifier changed in Ultra gate count! Update this value if you " diff --git a/barretenberg/cpp/src/barretenberg/stdlib/honk_verifier/ultra_verification_keys_comparator.hpp b/barretenberg/cpp/src/barretenberg/stdlib/honk_verifier/ultra_verification_keys_comparator.hpp index 25d4c8bcc422..d2b6b23d6e76 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/honk_verifier/ultra_verification_keys_comparator.hpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/honk_verifier/ultra_verification_keys_comparator.hpp @@ -51,7 +51,7 @@ static void compare_ultra_blocks_and_verification_keys( } } - BB_ASSERT_EQ(verification_keys[0]->circuit_size, verification_keys[1]->circuit_size); + BB_ASSERT_EQ(verification_keys[0]->log_circuit_size, verification_keys[1]->log_circuit_size); BB_ASSERT_EQ(verification_keys[0]->num_public_inputs, verification_keys[1]->num_public_inputs); BB_ASSERT_EQ(verification_keys[0]->pub_inputs_offset, verification_keys[1]->pub_inputs_offset); diff --git a/barretenberg/cpp/src/barretenberg/stdlib/protogalaxy_verifier/protogalaxy_recursive_verifier.cpp b/barretenberg/cpp/src/barretenberg/stdlib/protogalaxy_verifier/protogalaxy_recursive_verifier.cpp index c6ee89b19877..6d93eda97f64 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/protogalaxy_verifier/protogalaxy_recursive_verifier.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/protogalaxy_verifier/protogalaxy_recursive_verifier.cpp @@ -185,9 +185,8 @@ std::shared_ptr ProtogalaxyRecursiv accumulator->gate_challenges = update_gate_challenges(perturbator_challenge, accumulator->gate_challenges, deltas); // Set the accumulator circuit size data based on the max of the keys being accumulated - auto [accumulator_circuit_size, accumulator_log_circuit_size] = keys_to_fold.get_max_circuit_size_and_log_size(); + FF accumulator_log_circuit_size = keys_to_fold.get_max_log_circuit_size(); accumulator->vk_and_hash->vk->log_circuit_size = accumulator_log_circuit_size; - accumulator->vk_and_hash->vk->circuit_size = accumulator_circuit_size; // Fold the relation parameters for (auto [combination, to_combine] : zip_view(accumulator->alphas, keys_to_fold.get_alphas())) { 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 705c74322c5e..2e859734e59a 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 @@ -111,9 +111,9 @@ template class RecursiveDeciderVerificationKey_ { NativeDeciderVerificationKey get_value() { using NativeVerificationKey = typename Flavor::NativeFlavor::VerificationKey; - auto native_honk_vk = std::make_shared( - static_cast(vk_and_hash->vk->circuit_size.get_value()), - static_cast(vk_and_hash->vk->num_public_inputs.get_value())); + auto native_honk_vk = std::make_shared(); + native_honk_vk->log_circuit_size = static_cast(vk_and_hash->vk->log_circuit_size.get_value()); + native_honk_vk->num_public_inputs = static_cast(vk_and_hash->vk->num_public_inputs.get_value()); native_honk_vk->pub_inputs_offset = static_cast(vk_and_hash->vk->pub_inputs_offset.get_value()); for (auto [vk, final_decider_vk] : zip_view(vk_and_hash->vk->get_all(), native_honk_vk->get_all())) { 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 f21dad9f97d9..47c0f5f639f3 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,24 +45,24 @@ template struct RecursiveDeciderVerific } /** - * @brief Get the max circuit size (and corresponding log circuit size) from the set of decider verification keys + * @brief Get the max log circuit size from the set of decider verification keys * - * @return {max circuit size, max log circuit size} + * @return max log circuit size * @todo TODO(https://github.com/AztecProtocol/barretenberg/issues/1283): Suspicious get_value(). */ - std::pair get_max_circuit_size_and_log_size() const + FF get_max_log_circuit_size() const { // Find the key with the largest circuit size and reaturn its circuit size and log circuit size auto* max_key = _data[0].get(); - size_t max_circuit_size = - static_cast(static_cast(max_key->vk_and_hash->vk->circuit_size.get_value())); + size_t max_log_circuit_size = + static_cast(static_cast(max_key->vk_and_hash->vk->log_circuit_size.get_value())); for (const auto& key : _data) { - if (static_cast(static_cast(key->vk_and_hash->vk->circuit_size.get_value())) > - max_circuit_size) { + if (static_cast(static_cast(key->vk_and_hash->vk->log_circuit_size.get_value())) > + max_log_circuit_size) { max_key = key.get(); } } - return { max_key->vk_and_hash->vk->circuit_size, max_key->vk_and_hash->vk->log_circuit_size }; + return max_key->vk_and_hash->vk->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 8b211de9a04b..e86198418361 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 @@ -110,10 +110,8 @@ class TranslatorRecursiveFlavor { public: VerificationKey(CircuitBuilder* builder, const std::shared_ptr& native_key) { - // TODO(https://github.com/AztecProtocol/barretenberg/issues/1324): Remove `circuit_size` and - // `log_circuit_size` from MSGPACK and the verification key. - this->circuit_size = FF{ 1UL << TranslatorFlavor::CONST_TRANSLATOR_LOG_N }; - this->circuit_size.convert_constant_to_fixed_witness(builder); + // TODO(https://github.com/AztecProtocol/barretenberg/issues/1324): Remove `log_circuit_size` from MSGPACK + // and the verification key. this->log_circuit_size = FF{ uint64_t(TranslatorFlavor::CONST_TRANSLATOR_LOG_N) }; this->log_circuit_size.convert_constant_to_fixed_witness(builder); this->num_public_inputs = FF::from_witness(builder, native_key->num_public_inputs); 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 deabaded2a97..7febead18098 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 @@ -115,7 +115,6 @@ class TranslatorRecursiveTests : public ::testing::Test { << "Recursive Verifier/Verifier manifest discrepency in round " << i; } - 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()), diff --git a/barretenberg/cpp/src/barretenberg/translator_vm/translator_flavor.hpp b/barretenberg/cpp/src/barretenberg/translator_vm/translator_flavor.hpp index c6020fae23d2..16867239ba17 100644 --- a/barretenberg/cpp/src/barretenberg/translator_vm/translator_flavor.hpp +++ b/barretenberg/cpp/src/barretenberg/translator_vm/translator_flavor.hpp @@ -774,7 +774,6 @@ class TranslatorFlavor { VerificationKey(const std::shared_ptr& proving_key) { - this->circuit_size = 1UL << CONST_TRANSLATOR_LOG_N; this->log_circuit_size = CONST_TRANSLATOR_LOG_N; this->num_public_inputs = 0; this->pub_inputs_offset = 0; diff --git a/barretenberg/cpp/src/barretenberg/ultra_honk/oink_prover.cpp b/barretenberg/cpp/src/barretenberg/ultra_honk/oink_prover.cpp index 5ed951406f7a..12ae4e808540 100644 --- a/barretenberg/cpp/src/barretenberg/ultra_honk/oink_prover.cpp +++ b/barretenberg/cpp/src/barretenberg/ultra_honk/oink_prover.cpp @@ -228,7 +228,7 @@ template void OinkProver::execute_grand_produ WitnessComputation::compute_grand_product_polynomial(proving_key->polynomials, proving_key->public_inputs, proving_key->pub_inputs_offset(), - proving_key->dyadic_size(), + proving_key->log_dyadic_size(), proving_key->active_region_data, proving_key->relation_parameters, proving_key->get_final_active_wire_idx() + 1); diff --git a/barretenberg/cpp/src/barretenberg/ultra_honk/oink_verifier.cpp b/barretenberg/cpp/src/barretenberg/ultra_honk/oink_verifier.cpp index 9133f9338732..212c4618e68b 100644 --- a/barretenberg/cpp/src/barretenberg/ultra_honk/oink_verifier.cpp +++ b/barretenberg/cpp/src/barretenberg/ultra_honk/oink_verifier.cpp @@ -137,12 +137,11 @@ template void OinkVerifier::execute_log_deriv */ template void OinkVerifier::execute_grand_product_computation_round() { - const FF public_input_delta = - compute_public_input_delta(public_inputs, - relation_parameters.beta, - relation_parameters.gamma, - verification_key->vk->circuit_size, - static_cast(verification_key->vk->pub_inputs_offset)); + const FF public_input_delta = compute_public_input_delta(public_inputs, + relation_parameters.beta, + relation_parameters.gamma, + verification_key->vk->log_circuit_size, + verification_key->vk->pub_inputs_offset); relation_parameters.public_input_delta = public_input_delta; diff --git a/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_transcript.test.cpp b/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_transcript.test.cpp index 5333a173a927..b99e9e0daee3 100644 --- a/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_transcript.test.cpp +++ b/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_transcript.test.cpp @@ -68,7 +68,7 @@ template class UltraTranscriptTests : public ::testing::Test { manifest_expected.add_entry(round, "vk_hash", frs_per_Fr); } else { size_t frs_per_uint32 = bb::field_conversion::calc_num_bn254_frs(); - manifest_expected.add_entry(round, "vk_circuit_size", frs_per_uint32); + manifest_expected.add_entry(round, "vk_log_circuit_size", frs_per_uint32); manifest_expected.add_entry(round, "vk_num_public_inputs", frs_per_uint32); manifest_expected.add_entry(round, "vk_pub_inputs_offset", frs_per_uint32); } diff --git a/barretenberg/cpp/src/barretenberg/ultra_honk/witness_computation.cpp b/barretenberg/cpp/src/barretenberg/ultra_honk/witness_computation.cpp index 8494e9c39ab0..4e15f1b7d926 100644 --- a/barretenberg/cpp/src/barretenberg/ultra_honk/witness_computation.cpp +++ b/barretenberg/cpp/src/barretenberg/ultra_honk/witness_computation.cpp @@ -102,13 +102,13 @@ template void WitnessComputation::compute_grand_product_polynomial(Flavor::ProverPolynomials& polynomials, std::vector& public_inputs, const size_t pub_inputs_offset, - const size_t circuit_size, + const size_t log_circuit_size, ActiveRegionData& active_region_data, RelationParameters& relation_parameters, size_t size_override) { relation_parameters.public_input_delta = compute_public_input_delta( - public_inputs, relation_parameters.beta, relation_parameters.gamma, circuit_size, pub_inputs_offset); + public_inputs, relation_parameters.beta, relation_parameters.gamma, log_circuit_size, pub_inputs_offset); // Compute permutation grand product polynomial compute_grand_product>( @@ -145,7 +145,7 @@ void WitnessComputation::complete_proving_key_for_test( compute_grand_product_polynomial(decider_pk->polynomials, decider_pk->public_inputs, decider_pk->pub_inputs_offset(), - decider_pk->dyadic_size(), + decider_pk->log_dyadic_size(), decider_pk->active_region_data, decider_pk->relation_parameters, decider_pk->get_final_active_wire_idx() + 1); diff --git a/barretenberg/cpp/src/barretenberg/vm2/constraining/flavor.cpp b/barretenberg/cpp/src/barretenberg/vm2/constraining/flavor.cpp index d8e0d3446fff..e373a5447cbd 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/constraining/flavor.cpp +++ b/barretenberg/cpp/src/barretenberg/vm2/constraining/flavor.cpp @@ -111,7 +111,7 @@ AvmFlavor::ProvingKey::ProvingKey(const size_t circuit_size, const size_t num_pu */ std::vector AvmFlavor::VerificationKey::to_field_elements() const { - std::vector elements = { FF(circuit_size), FF(num_public_inputs) }; + std::vector elements = { FF(log_circuit_size), FF(num_public_inputs) }; for (auto const& comm : get_all()) { std::vector comm_as_fields = field_conversion::convert_to_bn254_frs(comm); diff --git a/barretenberg/cpp/src/barretenberg/vm2/constraining/recursion/recursive_flavor.hpp b/barretenberg/cpp/src/barretenberg/vm2/constraining/recursion/recursive_flavor.hpp index 20bc7d2f530e..14271dd1a8df 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/constraining/recursion/recursive_flavor.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/constraining/recursion/recursive_flavor.hpp @@ -67,8 +67,7 @@ class AvmRecursiveFlavor { public: VerificationKey(CircuitBuilder* builder, const std::shared_ptr& native_key) { - 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->log_circuit_size = FF::from_witness(builder, native_key->log_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())) { @@ -88,9 +87,9 @@ class AvmRecursiveFlavor { size_t num_frs_FF = stdlib::field_conversion::calc_num_bn254_frs(); size_t num_frs_Comm = stdlib::field_conversion::calc_num_bn254_frs(); - this->circuit_size = uint64_t(stdlib::field_conversion::convert_from_bn254_frs( - builder, elements.subspan(num_frs_read, num_frs_FF)) - .get_value()); + this->log_circuit_size = uint64_t(stdlib::field_conversion::convert_from_bn254_frs( + builder, elements.subspan(num_frs_read, num_frs_FF)) + .get_value()); num_frs_read += num_frs_FF; this->num_public_inputs = uint64_t(stdlib::field_conversion::convert_from_bn254_frs( builder, elements.subspan(num_frs_read, num_frs_FF)) diff --git a/barretenberg/cpp/src/barretenberg/vm2/constraining/recursion/recursive_verifier.cpp b/barretenberg/cpp/src/barretenberg/vm2/constraining/recursion/recursive_verifier.cpp index e59771ae76fd..ada5fcd1cdef 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/constraining/recursion/recursive_verifier.cpp +++ b/barretenberg/cpp/src/barretenberg/vm2/constraining/recursion/recursive_verifier.cpp @@ -32,10 +32,11 @@ AvmRecursiveVerifier::AvmRecursiveVerifier(Builder& builder, const std::shared_p AvmRecursiveVerifier::FF AvmRecursiveVerifier::evaluate_public_input_column(const std::vector& points, const std::vector& challenges) { + size_t circuit_size = 1 << static_cast(key->log_circuit_size.get_value()); auto coefficients = SharedShiftedVirtualZeroesArray{ .start_ = 0, .end_ = points.size(), - .virtual_size_ = static_cast(key->circuit_size.get_value()), + .virtual_size_ = circuit_size, .backing_memory_ = BackingMemory::allocate(points.size()), }; @@ -94,7 +95,8 @@ AvmRecursiveVerifier::PairingPoints AvmRecursiveVerifier::verify_proof( VerifierCommitments commitments{ key }; const auto circuit_size = transcript->template receive_from_prover("circuit_size"); - if (static_cast(circuit_size.get_value()) != static_cast(key->circuit_size.get_value())) { + uint32_t vk_circuit_size = 1 << static_cast(key->log_circuit_size.get_value()); + if (static_cast(circuit_size.get_value()) != vk_circuit_size) { throw_or_abort("AvmRecursiveVerifier::verify_proof: proof circuit size does not match verification key!"); } diff --git a/barretenberg/cpp/src/barretenberg/vm2/constraining/verifier.cpp b/barretenberg/cpp/src/barretenberg/vm2/constraining/verifier.cpp index 21b1bc99ed7e..eac6b5f79622 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/constraining/verifier.cpp +++ b/barretenberg/cpp/src/barretenberg/vm2/constraining/verifier.cpp @@ -30,7 +30,8 @@ using FF = AvmFlavor::FF; // Evaluate the given public input column over the multivariate challenge points inline FF AvmVerifier::evaluate_public_input_column(const std::vector& points, std::vector challenges) { - Polynomial polynomial(points, key->circuit_size); + const size_t circuit_size = 1 << key->log_circuit_size; + Polynomial polynomial(points, circuit_size); return polynomial.evaluate_mle(challenges); } @@ -58,8 +59,8 @@ bool AvmVerifier::verify_proof(const HonkProof& proof, const std::vectortemplate receive_from_prover("circuit_size"); - if (circuit_size != key->circuit_size) { - vinfo("Circuit size mismatch: expected", key->circuit_size, " got ", circuit_size); + if (circuit_size != (1 << key->log_circuit_size)) { + vinfo("Circuit size mismatch: expected", (1 << key->log_circuit_size), " got ", circuit_size); return false; } diff --git a/barretenberg/cpp/src/barretenberg/vm2/proving_helper.cpp b/barretenberg/cpp/src/barretenberg/vm2/proving_helper.cpp index 9775f28c1832..d61955b421d1 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/proving_helper.cpp +++ b/barretenberg/cpp/src/barretenberg/vm2/proving_helper.cpp @@ -43,16 +43,13 @@ std::shared_ptr AvmProvingHelper::create_verificat using VerificationKey = AvmVerifier::VerificationKey; std::vector vk_as_fields = many_from_buffer(vk_data); - auto circuit_size = static_cast(vk_as_fields[0]); + auto log_circuit_size = static_cast(vk_as_fields[0]); auto num_public_inputs = static_cast(vk_as_fields[1]); std::span vk_span(vk_as_fields); + uint64_t circuit_size = 1UL << log_circuit_size; vinfo("vk fields size: ", vk_as_fields.size()); - vinfo("circuit size: ", - circuit_size, - " (next or eq power: 2^", - numeric::get_msb(numeric::round_up_power_2(circuit_size)), - ")"); + vinfo("dyadic circuit size: ", circuit_size); // WARNING: The number of public inputs in the verification key is always 0! // Apparently we use some other mechanism to check the public inputs.