From 9df73e4c9e6e1718c440e865a0627ebd70c973d6 Mon Sep 17 00:00:00 2001 From: vezenovm Date: Thu, 2 May 2024 18:20:31 +0000 Subject: [PATCH 1/9] bump gates buffer to account for gate estimation in goblin ultra honk --- barretenberg/acir_tests/run_acir_tests.sh | 2 +- barretenberg/cpp/src/barretenberg/bb/main.cpp | 30 +++++++++++++++++-- .../sumcheck/instance/prover_instance.hpp | 4 ++- .../barretenberg/ultra_honk/ultra_prover.cpp | 1 + 4 files changed, 33 insertions(+), 4 deletions(-) diff --git a/barretenberg/acir_tests/run_acir_tests.sh b/barretenberg/acir_tests/run_acir_tests.sh index e75f8fb1a6b..88189a43438 100755 --- a/barretenberg/acir_tests/run_acir_tests.sh +++ b/barretenberg/acir_tests/run_acir_tests.sh @@ -35,7 +35,7 @@ export BIN CRS_PATH VERBOSE BRANCH cd acir_tests # Convert them to array -SKIP_ARRAY=(diamond_deps_0 workspace workspace_default_member witness_compression) +SKIP_ARRAY=(diamond_deps_0 workspace workspace_default_member) function test() { cd $1 diff --git a/barretenberg/cpp/src/barretenberg/bb/main.cpp b/barretenberg/cpp/src/barretenberg/bb/main.cpp index 8ff5c5ba338..f3819d0cb04 100644 --- a/barretenberg/cpp/src/barretenberg/bb/main.cpp +++ b/barretenberg/cpp/src/barretenberg/bb/main.cpp @@ -579,6 +579,27 @@ bool avm_verify(const std::filesystem::path& proof_path) return true; } +template size_t compute_dyadic_size(typename Flavor::CircuitBuilder& circuit) +{ + + // minimum circuit size due to lookup argument + const size_t min_size_due_to_lookups = circuit.get_tables_size() + circuit.get_lookups_size(); + + // minimum size of execution trace due to everything else + size_t min_size_of_execution_trace = circuit.public_inputs.size() + circuit.num_gates; + if constexpr (IsGoblinFlavor) { + min_size_of_execution_trace += circuit.blocks.ecc_op.size(); + } + + // The number of gates is the maximum required by the lookup argument or everything else, plus an optional zero row + // to allow for shifts. + size_t num_zero_rows = Flavor::has_zero_row ? 1 : 0; + size_t total_num_gates = num_zero_rows + std::max(min_size_due_to_lookups, min_size_of_execution_trace); + + // Next power of 2 (dyadic circuit size) + return circuit.get_circuit_subgroup_size(total_num_gates); +} + /** * @brief Creates a proof for an ACIR circuit * @@ -601,8 +622,11 @@ void prove_honk(const std::string& bytecodePath, const std::string& witnessPath, auto builder = acir_format::create_circuit(constraint_system, 0, witness); - const size_t additional_gates_buffer = 15; // conservatively large to be safe + // TODO(https://github.com/AztecProtocol/aztec-packages/issues/6161): Make the total circuit size estimation more + // accurate for GoblinUltraHonk so that we can remove this magic buffer + const size_t additional_gates_buffer = 30; // conservatively large to be safe size_t srs_size = builder.get_circuit_subgroup_size(builder.get_total_circuit_size() + additional_gates_buffer); + init_bn254_crs(srs_size); // Construct Honk proof @@ -672,7 +696,9 @@ template void write_vk_honk(const std::string& bytecodePa auto constraint_system = get_constraint_system(bytecodePath); auto builder = acir_format::create_circuit(constraint_system, 0, {}); - const size_t additional_gates_buffer = 15; // conservatively large to be safe + // TODO(https://github.com/AztecProtocol/aztec-packages/issues/6161): Make the total circuit size estimation more + // accurate for GoblinUltraHonk so that we can remove this magic buffer + const size_t additional_gates_buffer = 30; // conservatively large to be safe size_t srs_size = builder.get_circuit_subgroup_size(builder.get_total_circuit_size() + additional_gates_buffer); init_bn254_crs(srs_size); diff --git a/barretenberg/cpp/src/barretenberg/sumcheck/instance/prover_instance.hpp b/barretenberg/cpp/src/barretenberg/sumcheck/instance/prover_instance.hpp index 48b5c8e4ff3..41cd16d1da4 100644 --- a/barretenberg/cpp/src/barretenberg/sumcheck/instance/prover_instance.hpp +++ b/barretenberg/cpp/src/barretenberg/sumcheck/instance/prover_instance.hpp @@ -37,6 +37,8 @@ template class ProverInstance_ { bool is_accumulator = false; + size_t dyadic_circuit_size = 0; // final power-of-2 circuit size + // The folding parameters (\vec{β}, e) which are set for accumulators (i.e. relaxed instances). std::vector gate_challenges; FF target_sum; @@ -46,6 +48,7 @@ template class ProverInstance_ { BB_OP_COUNT_TIME_NAME("ProverInstance(Circuit&)"); circuit.add_gates_to_ensure_all_polys_are_non_zero(); circuit.finalize_circuit(); + // If using a structured trace, ensure that no block exceeds the fixed size if (is_structured) { for (auto& block : circuit.blocks.get()) { @@ -99,7 +102,6 @@ template class ProverInstance_ { private: static constexpr size_t num_zero_rows = Flavor::has_zero_row ? 1 : 0; static constexpr size_t NUM_WIRES = Circuit::NUM_WIRES; - size_t dyadic_circuit_size = 0; // final power-of-2 circuit size size_t compute_dyadic_size(Circuit&); diff --git a/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_prover.cpp b/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_prover.cpp index 92166a00142..7030f194cb4 100644 --- a/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_prover.cpp +++ b/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_prover.cpp @@ -77,6 +77,7 @@ template HonkProof& UltraProver_::construct_proof OinkProver oink_prover(instance->proving_key, transcript); auto [proving_key, relation_params, alphas] = oink_prover.prove(); instance->proving_key = std::move(proving_key); + instance->relation_parameters = std::move(relation_params); instance->alphas = alphas; From 8aaaf0c057b9f7a239ddb264a3cf9687fdd0321c Mon Sep 17 00:00:00 2001 From: vezenovm Date: Thu, 2 May 2024 18:22:50 +0000 Subject: [PATCH 2/9] remove dyadic size --- barretenberg/cpp/src/barretenberg/bb/main.cpp | 21 ------------------- 1 file changed, 21 deletions(-) diff --git a/barretenberg/cpp/src/barretenberg/bb/main.cpp b/barretenberg/cpp/src/barretenberg/bb/main.cpp index f3819d0cb04..3f57d848caa 100644 --- a/barretenberg/cpp/src/barretenberg/bb/main.cpp +++ b/barretenberg/cpp/src/barretenberg/bb/main.cpp @@ -579,27 +579,6 @@ bool avm_verify(const std::filesystem::path& proof_path) return true; } -template size_t compute_dyadic_size(typename Flavor::CircuitBuilder& circuit) -{ - - // minimum circuit size due to lookup argument - const size_t min_size_due_to_lookups = circuit.get_tables_size() + circuit.get_lookups_size(); - - // minimum size of execution trace due to everything else - size_t min_size_of_execution_trace = circuit.public_inputs.size() + circuit.num_gates; - if constexpr (IsGoblinFlavor) { - min_size_of_execution_trace += circuit.blocks.ecc_op.size(); - } - - // The number of gates is the maximum required by the lookup argument or everything else, plus an optional zero row - // to allow for shifts. - size_t num_zero_rows = Flavor::has_zero_row ? 1 : 0; - size_t total_num_gates = num_zero_rows + std::max(min_size_due_to_lookups, min_size_of_execution_trace); - - // Next power of 2 (dyadic circuit size) - return circuit.get_circuit_subgroup_size(total_num_gates); -} - /** * @brief Creates a proof for an ACIR circuit * From fd339953ace02186c677f68106c51cb42cb76187 Mon Sep 17 00:00:00 2001 From: vezenovm Date: Thu, 2 May 2024 18:25:05 +0000 Subject: [PATCH 3/9] cleanup --- .../cpp/src/barretenberg/sumcheck/instance/prover_instance.hpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/barretenberg/cpp/src/barretenberg/sumcheck/instance/prover_instance.hpp b/barretenberg/cpp/src/barretenberg/sumcheck/instance/prover_instance.hpp index 41cd16d1da4..828c6de0c9e 100644 --- a/barretenberg/cpp/src/barretenberg/sumcheck/instance/prover_instance.hpp +++ b/barretenberg/cpp/src/barretenberg/sumcheck/instance/prover_instance.hpp @@ -37,8 +37,6 @@ template class ProverInstance_ { bool is_accumulator = false; - size_t dyadic_circuit_size = 0; // final power-of-2 circuit size - // The folding parameters (\vec{β}, e) which are set for accumulators (i.e. relaxed instances). std::vector gate_challenges; FF target_sum; From b1c112fb8b873f3d86ff135d71fb3d0edabf987b Mon Sep 17 00:00:00 2001 From: vezenovm Date: Thu, 2 May 2024 18:28:23 +0000 Subject: [PATCH 4/9] bring back removed field --- .../cpp/src/barretenberg/sumcheck/instance/prover_instance.hpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/barretenberg/cpp/src/barretenberg/sumcheck/instance/prover_instance.hpp b/barretenberg/cpp/src/barretenberg/sumcheck/instance/prover_instance.hpp index 828c6de0c9e..41cd16d1da4 100644 --- a/barretenberg/cpp/src/barretenberg/sumcheck/instance/prover_instance.hpp +++ b/barretenberg/cpp/src/barretenberg/sumcheck/instance/prover_instance.hpp @@ -37,6 +37,8 @@ template class ProverInstance_ { bool is_accumulator = false; + size_t dyadic_circuit_size = 0; // final power-of-2 circuit size + // The folding parameters (\vec{β}, e) which are set for accumulators (i.e. relaxed instances). std::vector gate_challenges; FF target_sum; From 546c99d10578df8e666f76afd3b75860b861dd0b Mon Sep 17 00:00:00 2001 From: vezenovm Date: Thu, 2 May 2024 18:28:55 +0000 Subject: [PATCH 5/9] move dyadic size back to private --- .../cpp/src/barretenberg/sumcheck/instance/prover_instance.hpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/barretenberg/cpp/src/barretenberg/sumcheck/instance/prover_instance.hpp b/barretenberg/cpp/src/barretenberg/sumcheck/instance/prover_instance.hpp index 41cd16d1da4..c30999fe761 100644 --- a/barretenberg/cpp/src/barretenberg/sumcheck/instance/prover_instance.hpp +++ b/barretenberg/cpp/src/barretenberg/sumcheck/instance/prover_instance.hpp @@ -37,8 +37,6 @@ template class ProverInstance_ { bool is_accumulator = false; - size_t dyadic_circuit_size = 0; // final power-of-2 circuit size - // The folding parameters (\vec{β}, e) which are set for accumulators (i.e. relaxed instances). std::vector gate_challenges; FF target_sum; @@ -102,6 +100,7 @@ template class ProverInstance_ { private: static constexpr size_t num_zero_rows = Flavor::has_zero_row ? 1 : 0; static constexpr size_t NUM_WIRES = Circuit::NUM_WIRES; + size_t dyadic_circuit_size = 0; // final power-of-2 circuit size size_t compute_dyadic_size(Circuit&); From 954a4469cda2dc9ac6f91ee373324cb440d351c7 Mon Sep 17 00:00:00 2001 From: vezenovm Date: Thu, 2 May 2024 18:46:43 +0000 Subject: [PATCH 6/9] remove additional gates buffer and call add_gates_to_ensure_all_polys_are_non_zero inside of --- barretenberg/cpp/src/barretenberg/bb/main.cpp | 10 ++-------- .../src/barretenberg/dsl/acir_format/acir_format.cpp | 4 ++++ .../goblin_ultra_circuit_builder.cpp | 5 ++++- .../barretenberg/sumcheck/instance/prover_instance.hpp | 1 - 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/barretenberg/cpp/src/barretenberg/bb/main.cpp b/barretenberg/cpp/src/barretenberg/bb/main.cpp index 3f57d848caa..9cccbe85cf0 100644 --- a/barretenberg/cpp/src/barretenberg/bb/main.cpp +++ b/barretenberg/cpp/src/barretenberg/bb/main.cpp @@ -601,10 +601,7 @@ void prove_honk(const std::string& bytecodePath, const std::string& witnessPath, auto builder = acir_format::create_circuit(constraint_system, 0, witness); - // TODO(https://github.com/AztecProtocol/aztec-packages/issues/6161): Make the total circuit size estimation more - // accurate for GoblinUltraHonk so that we can remove this magic buffer - const size_t additional_gates_buffer = 30; // conservatively large to be safe - size_t srs_size = builder.get_circuit_subgroup_size(builder.get_total_circuit_size() + additional_gates_buffer); + size_t srs_size = builder.get_circuit_subgroup_size(builder.get_total_circuit_size()); init_bn254_crs(srs_size); @@ -675,10 +672,7 @@ template void write_vk_honk(const std::string& bytecodePa auto constraint_system = get_constraint_system(bytecodePath); auto builder = acir_format::create_circuit(constraint_system, 0, {}); - // TODO(https://github.com/AztecProtocol/aztec-packages/issues/6161): Make the total circuit size estimation more - // accurate for GoblinUltraHonk so that we can remove this magic buffer - const size_t additional_gates_buffer = 30; // conservatively large to be safe - size_t srs_size = builder.get_circuit_subgroup_size(builder.get_total_circuit_size() + additional_gates_buffer); + size_t srs_size = builder.get_circuit_subgroup_size(builder.get_total_circuit_size()); init_bn254_crs(srs_size); ProverInstance prover_inst(builder); diff --git a/barretenberg/cpp/src/barretenberg/dsl/acir_format/acir_format.cpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/acir_format.cpp index 73699047852..96ddd4337e5 100644 --- a/barretenberg/cpp/src/barretenberg/dsl/acir_format/acir_format.cpp +++ b/barretenberg/cpp/src/barretenberg/dsl/acir_format/acir_format.cpp @@ -226,6 +226,8 @@ UltraCircuitBuilder create_circuit(const AcirFormat& constraint_system, size_t s bool has_valid_witness_assignments = !witness.empty(); build_constraints(builder, constraint_system, has_valid_witness_assignments); + builder.finalize_circuit(); + return builder; }; @@ -252,6 +254,8 @@ GoblinUltraCircuitBuilder create_circuit(const AcirFormat& constraint_system, bool has_valid_witness_assignments = !witness.empty(); acir_format::build_constraints(builder, constraint_system, has_valid_witness_assignments); + builder.finalize_circuit(); + return builder; }; diff --git a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/goblin_ultra_circuit_builder.cpp b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/goblin_ultra_circuit_builder.cpp index 84258f30cb6..b84e2818e26 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/goblin_ultra_circuit_builder.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/goblin_ultra_circuit_builder.cpp @@ -12,7 +12,10 @@ namespace bb { template void GoblinUltraCircuitBuilder_::finalize_circuit() { - UltraCircuitBuilder_>::finalize_circuit(); + if (!this->circuit_finalized) { + add_gates_to_ensure_all_polys_are_non_zero(); + UltraCircuitBuilder_>::finalize_circuit(); + } } /** diff --git a/barretenberg/cpp/src/barretenberg/sumcheck/instance/prover_instance.hpp b/barretenberg/cpp/src/barretenberg/sumcheck/instance/prover_instance.hpp index c30999fe761..dfed89eabc8 100644 --- a/barretenberg/cpp/src/barretenberg/sumcheck/instance/prover_instance.hpp +++ b/barretenberg/cpp/src/barretenberg/sumcheck/instance/prover_instance.hpp @@ -44,7 +44,6 @@ template class ProverInstance_ { ProverInstance_(Circuit& circuit, bool is_structured = false) { BB_OP_COUNT_TIME_NAME("ProverInstance(Circuit&)"); - circuit.add_gates_to_ensure_all_polys_are_non_zero(); circuit.finalize_circuit(); // If using a structured trace, ensure that no block exceeds the fixed size From f2ba7f03a5dd0cc41eab96712cb0cda64ee4d638 Mon Sep 17 00:00:00 2001 From: vezenovm Date: Thu, 2 May 2024 19:46:16 +0000 Subject: [PATCH 7/9] add_gates_to_ensure_all_polys_are_non_zero into finalize for ultra --- barretenberg/cpp/src/barretenberg/bb/main.cpp | 5 +---- .../stdlib_circuit_builders/goblin_ultra_circuit_builder.cpp | 3 --- .../stdlib_circuit_builders/ultra_circuit_builder.cpp | 1 + 3 files changed, 2 insertions(+), 7 deletions(-) diff --git a/barretenberg/cpp/src/barretenberg/bb/main.cpp b/barretenberg/cpp/src/barretenberg/bb/main.cpp index 9cccbe85cf0..9db639ea0a5 100644 --- a/barretenberg/cpp/src/barretenberg/bb/main.cpp +++ b/barretenberg/cpp/src/barretenberg/bb/main.cpp @@ -164,10 +164,7 @@ bool proveAndVerifyHonkAcirFormat(acir_format::AcirFormat constraint_system, aci // Construct a bberg circuit from the acir representation auto builder = acir_format::create_circuit(constraint_system, 0, witness); - // TODO(https://github.com/AztecProtocol/barretenberg/issues/811): Add a buffer to the expected circuit size to - // account for the addition of "gates to ensure nonzero polynomials" (in Honk only). - const size_t additional_gates_buffer = 15; // conservatively large to be safe - size_t srs_size = builder.get_circuit_subgroup_size(builder.get_total_circuit_size() + additional_gates_buffer); + size_t srs_size = builder.get_circuit_subgroup_size(builder.get_total_circuit_size()); init_bn254_crs(srs_size); // Construct Honk proof diff --git a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/goblin_ultra_circuit_builder.cpp b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/goblin_ultra_circuit_builder.cpp index b84e2818e26..4ebcc201a40 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/goblin_ultra_circuit_builder.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/goblin_ultra_circuit_builder.cpp @@ -28,9 +28,6 @@ template void GoblinUltraCircuitBuilder_::finalize_circuit() // polynomials is zero, which is required for them to be shiftable. template void GoblinUltraCircuitBuilder_::add_gates_to_ensure_all_polys_are_non_zero() { - // Most polynomials are handled via the conventional Ultra method - UltraCircuitBuilder_>::add_gates_to_ensure_all_polys_are_non_zero(); - // All that remains is to handle databus related and poseidon2 related polynomials. In what follows we populate the // calldata with some mock data then constuct a single calldata read gate diff --git a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_circuit_builder.cpp b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_circuit_builder.cpp index 258a0dfed15..b23e41e4b6c 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_circuit_builder.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_circuit_builder.cpp @@ -40,6 +40,7 @@ template void UltraCircuitBuilder_:: * our circuit is finalized, and we must not to execute these functions again. */ if (!circuit_finalized) { + add_gates_to_ensure_all_polys_are_non_zero(); process_non_native_field_multiplications(); process_ROM_arrays(); process_RAM_arrays(); From f83c4f873381cdf685e69907ab7973b0ebb1cfcc Mon Sep 17 00:00:00 2001 From: vezenovm Date: Thu, 2 May 2024 20:04:20 +0000 Subject: [PATCH 8/9] new join split hash --- .../src/barretenberg/examples/join_split/join_split.test.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/barretenberg/cpp/src/barretenberg/examples/join_split/join_split.test.cpp b/barretenberg/cpp/src/barretenberg/examples/join_split/join_split.test.cpp index 773c69d8941..8d8c239eaec 100644 --- a/barretenberg/cpp/src/barretenberg/examples/join_split/join_split.test.cpp +++ b/barretenberg/cpp/src/barretenberg/examples/join_split/join_split.test.cpp @@ -701,7 +701,7 @@ TEST_F(join_split_tests, test_0_input_notes_and_detect_circuit_change) // The below part detects any changes in the join-split circuit constexpr size_t DYADIC_CIRCUIT_SIZE = 1 << 16; - constexpr uint256_t CIRCUIT_HASH("0x470358e4d91c4c5296ef788b1165b2c439cd498f49c3f99386b002753ca3d0ee"); + constexpr uint256_t CIRCUIT_HASH("0xc9d7e9c29d8555514b4ee1ed5cccc6da7e5a81585c6404f7ce379404f07414ec"); const uint256_t circuit_hash = circuit.hash_circuit(); // circuit is finalized now From ab281527c99c8e66c71636295ba4139ffcf132ad Mon Sep 17 00:00:00 2001 From: vezenovm Date: Thu, 2 May 2024 20:44:36 +0000 Subject: [PATCH 9/9] comment and rename --- .../goblin_ultra_circuit_builder.cpp | 8 +++++--- .../goblin_ultra_circuit_builder.hpp | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/goblin_ultra_circuit_builder.cpp b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/goblin_ultra_circuit_builder.cpp index 4ebcc201a40..58542f3e151 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/goblin_ultra_circuit_builder.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/goblin_ultra_circuit_builder.cpp @@ -13,20 +13,22 @@ namespace bb { template void GoblinUltraCircuitBuilder_::finalize_circuit() { if (!this->circuit_finalized) { - add_gates_to_ensure_all_polys_are_non_zero(); + add_goblin_gates_to_ensure_all_polys_are_non_zero(); UltraCircuitBuilder_>::finalize_circuit(); } } /** - * @brief Ensure all polynomials have at least one non-zero coefficient to avoid commiting to the zero-polynomial + * @brief Ensure all polynomials have at least one non-zero coefficient to avoid commiting to the zero-polynomial. + * This only adds gates for the Goblin polynomials. Most polynomials are handled via the Ultra method, + * which should be done by a separate call to the Ultra builder's non zero polynomial gates method. * * @param in Structure containing variables and witness selectors */ // TODO(#423): This function adds valid (but arbitrary) gates to ensure that the circuit which includes // them will not result in any zero-polynomials. It also ensures that the first coefficient of the wire // polynomials is zero, which is required for them to be shiftable. -template void GoblinUltraCircuitBuilder_::add_gates_to_ensure_all_polys_are_non_zero() +template void GoblinUltraCircuitBuilder_::add_goblin_gates_to_ensure_all_polys_are_non_zero() { // All that remains is to handle databus related and poseidon2 related polynomials. In what follows we populate the // calldata with some mock data then constuct a single calldata read gate diff --git a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/goblin_ultra_circuit_builder.hpp b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/goblin_ultra_circuit_builder.hpp index bcd6ee219c7..33f5373cc14 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/goblin_ultra_circuit_builder.hpp +++ b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/goblin_ultra_circuit_builder.hpp @@ -109,7 +109,7 @@ template class GoblinUltraCircuitBuilder_ : public UltraCircuitBui } void finalize_circuit(); - void add_gates_to_ensure_all_polys_are_non_zero(); + void add_goblin_gates_to_ensure_all_polys_are_non_zero(); size_t get_num_constant_gates() const override { return 0; }