diff --git a/barretenberg/acir_tests/flows/honk_sol.sh b/barretenberg/acir_tests/flows/honk_sol.sh index da915de7ea3d..6733300d773c 100755 --- a/barretenberg/acir_tests/flows/honk_sol.sh +++ b/barretenberg/acir_tests/flows/honk_sol.sh @@ -11,8 +11,8 @@ export PROOF_AS_FIELDS="$(pwd)/proof_fields.json" # Create a proof, write the solidity contract, write the proof as fields in order to extract the public inputs $BIN prove_ultra_keccak_honk -o proof $FLAGS $BFLAG $BIN write_vk_ultra_keccak_honk -o vk $FLAGS $BFLAG -$BIN proof_as_fields_honk -k vk -c $CRS_PATH -p $PROOF -$BIN contract_ultra_honk -k vk -c $CRS_PATH -o Verifier.sol +$BIN proof_as_fields_honk -k vk $FLAGS -p $PROOF +$BIN contract_ultra_honk -k vk $FLAGS -o Verifier.sol # Export the paths to the environment variables for the js test runner export VERIFIER_PATH="$(pwd)/Verifier.sol" diff --git a/barretenberg/acir_tests/flows/sol.sh b/barretenberg/acir_tests/flows/sol.sh index 66f7833fb700..5ad0cd0f1549 100755 --- a/barretenberg/acir_tests/flows/sol.sh +++ b/barretenberg/acir_tests/flows/sol.sh @@ -1,14 +1,18 @@ #!/bin/sh set -eu +VFLAG=${VERBOSE:+-v} +BFLAG="-b ./target/program.json" +FLAGS="-c $CRS_PATH $VFLAG" + export PROOF="$(pwd)/proof" export PROOF_AS_FIELDS="$(pwd)/proof_fields.json" # Create a proof, write the solidity contract, write the proof as fields in order to extract the public inputs -$BIN prove -o proof -$BIN write_vk -o vk -$BIN proof_as_fields -k vk -c $CRS_PATH -p $PROOF -$BIN contract -k vk -c $CRS_PATH -b ./target/program.json -o Key.sol +$BIN prove -o proof $FLAGS +$BIN write_vk -o vk $FLAGS +$BIN proof_as_fields -k vk $FLAGS -p $PROOF +$BIN contract -k vk $FLAGS $BFLAG -o Key.sol # Export the paths to the environment variables for the js test runner export KEY_PATH="$(pwd)/Key.sol" diff --git a/barretenberg/cpp/src/barretenberg/bb/main.cpp b/barretenberg/cpp/src/barretenberg/bb/main.cpp index 032f2eacd553..22a9c290e5e5 100644 --- a/barretenberg/cpp/src/barretenberg/bb/main.cpp +++ b/barretenberg/cpp/src/barretenberg/bb/main.cpp @@ -159,16 +159,15 @@ bool proveAndVerify(const std::string& bytecodePath, const std::string& witnessP auto witness = get_witness(witnessPath); acir_proofs::AcirComposer acir_composer{ 0, verbose_logging }; - acir_composer.create_circuit(constraint_system, witness); - - init_bn254_crs(acir_composer.get_dyadic_circuit_size()); + acir_composer.create_finalized_circuit(constraint_system, witness); + init_bn254_crs(acir_composer.get_finalized_dyadic_circuit_size()); Timer pk_timer; acir_composer.init_proving_key(); write_benchmark("pk_construction_time", pk_timer.milliseconds(), "acir_test", current_dir); - write_benchmark("gate_count", acir_composer.get_total_circuit_size(), "acir_test", current_dir); - write_benchmark("subgroup_size", acir_composer.get_dyadic_circuit_size(), "acir_test", current_dir); + write_benchmark("gate_count", acir_composer.get_finalized_total_circuit_size(), "acir_test", current_dir); + write_benchmark("subgroup_size", acir_composer.get_finalized_dyadic_circuit_size(), "acir_test", current_dir); Timer proof_timer; auto proof = acir_composer.create_proof(); @@ -199,12 +198,9 @@ 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, honk_recursion); - auto num_extra_gates = builder.get_num_gates_added_to_ensure_nonzero_polynomials(); - size_t srs_size = builder.get_circuit_subgroup_size(builder.get_total_circuit_size() + num_extra_gates); - init_bn254_crs(srs_size); - // Construct Honk proof Prover prover{ builder }; + init_bn254_crs(prover.proving_key->proving_key.circuit_size); auto proof = prover.construct_proof(); // Verify Honk proof @@ -670,8 +666,8 @@ void prove(const std::string& bytecodePath, const std::string& witnessPath, cons auto witness = get_witness(witnessPath); acir_proofs::AcirComposer acir_composer{ 0, verbose_logging }; - acir_composer.create_circuit(constraint_system, witness); - init_bn254_crs(acir_composer.get_dyadic_circuit_size()); + acir_composer.create_finalized_circuit(constraint_system, witness); + init_bn254_crs(acir_composer.get_finalized_dyadic_circuit_size()); acir_composer.init_proving_key(); auto proof = acir_composer.create_proof(); @@ -689,6 +685,8 @@ void prove(const std::string& bytecodePath, const std::string& witnessPath, cons * * Communication: * - stdout: A JSON string of the number of ACIR opcodes and final backend circuit size. + * TODO(https://github.com/AztecProtocol/barretenberg/issues/1126): split this into separate Plonk and Honk functions as + * their gate count differs * * @param bytecodePath Path to the file containing the serialized circuit */ @@ -701,8 +699,9 @@ template void gateCount(const std::stri for (auto constraint_system : constraint_systems) { auto builder = acir_format::create_circuit( constraint_system, 0, {}, honk_recursion, std::make_shared(), true); - builder.finalize_circuit(); + builder.finalize_circuit(/*ensure_nonzero=*/true); size_t circuit_size = builder.num_gates; + vinfo("Calculated circuit size in gateCount: ", circuit_size); // Build individual circuit report std::string gates_per_opcode_str; @@ -778,8 +777,9 @@ void write_vk(const std::string& bytecodePath, const std::string& outputPath) { auto constraint_system = get_constraint_system(bytecodePath, false); acir_proofs::AcirComposer acir_composer{ 0, verbose_logging }; - acir_composer.create_circuit(constraint_system); - init_bn254_crs(acir_composer.get_dyadic_circuit_size()); + acir_composer.create_finalized_circuit(constraint_system); + acir_composer.finalize_circuit(); + init_bn254_crs(acir_composer.get_finalized_dyadic_circuit_size()); acir_composer.init_proving_key(); auto vk = acir_composer.init_verification_key(); auto serialized_vk = to_buffer(*vk); @@ -796,8 +796,9 @@ void write_pk(const std::string& bytecodePath, const std::string& outputPath) { auto constraint_system = get_constraint_system(bytecodePath, /*honk_recursion=*/false); acir_proofs::AcirComposer acir_composer{ 0, verbose_logging }; - acir_composer.create_circuit(constraint_system); - init_bn254_crs(acir_composer.get_dyadic_circuit_size()); + acir_composer.create_finalized_circuit(constraint_system); + acir_composer.finalize_circuit(); + init_bn254_crs(acir_composer.get_finalized_dyadic_circuit_size()); auto pk = acir_composer.init_proving_key(); auto serialized_pk = to_buffer(*pk); @@ -1089,12 +1090,9 @@ UltraProver_ compute_valid_prover(const std::string& bytecodePath, const } auto builder = acir_format::create_circuit(constraint_system, 0, witness, honk_recursion); - - auto num_extra_gates = builder.get_num_gates_added_to_ensure_nonzero_polynomials(); - size_t srs_size = builder.get_circuit_subgroup_size(builder.get_total_circuit_size() + num_extra_gates); - init_bn254_crs(srs_size); - - return Prover{ builder }; + auto prover = Prover{ builder }; + init_bn254_crs(prover.proving_key->proving_key.circuit_size); + return std::move(prover); } /** @@ -1219,12 +1217,9 @@ void write_recursion_inputs_honk(const std::string& bytecodePath, auto witness = get_witness(witnessPath); auto builder = acir_format::create_circuit(constraints, 0, witness, honk_recursion); - auto num_extra_gates = builder.get_num_gates_added_to_ensure_nonzero_polynomials(); - size_t srs_size = builder.get_circuit_subgroup_size(builder.get_total_circuit_size() + num_extra_gates); - init_bn254_crs(srs_size); - // Construct Honk proof and verification key Prover prover{ builder }; + init_bn254_crs(prover.proving_key->proving_key.circuit_size); std::vector proof = prover.construct_proof(); VerificationKey verification_key(prover.proving_key->proving_key); @@ -1306,8 +1301,9 @@ void prove_output_all(const std::string& bytecodePath, const std::string& witnes auto witness = get_witness(witnessPath); acir_proofs::AcirComposer acir_composer{ 0, verbose_logging }; - acir_composer.create_circuit(constraint_system, witness); - init_bn254_crs(acir_composer.get_dyadic_circuit_size()); + acir_composer.create_finalized_circuit(constraint_system, witness); + acir_composer.finalize_circuit(); + init_bn254_crs(acir_composer.get_finalized_dyadic_circuit_size()); acir_composer.init_proving_key(); auto proof = acir_composer.create_proof(); @@ -1371,12 +1367,9 @@ void prove_honk_output_all(const std::string& bytecodePath, auto builder = acir_format::create_circuit(constraint_system, 0, witness, honk_recursion); - auto num_extra_gates = builder.get_num_gates_added_to_ensure_nonzero_polynomials(); - size_t srs_size = builder.get_circuit_subgroup_size(builder.get_total_circuit_size() + num_extra_gates); - init_bn254_crs(srs_size); - // Construct Honk proof Prover prover{ builder }; + init_bn254_crs(prover.proving_key->proving_key.circuit_size); auto proof = prover.construct_proof(); // We have been given a directory, we will write the proof and verification key diff --git a/barretenberg/cpp/src/barretenberg/benchmark/goblin_bench/eccvm.bench.cpp b/barretenberg/cpp/src/barretenberg/benchmark/goblin_bench/eccvm.bench.cpp index 2688c61d9e35..44f7ee24fe38 100644 --- a/barretenberg/cpp/src/barretenberg/benchmark/goblin_bench/eccvm.bench.cpp +++ b/barretenberg/cpp/src/barretenberg/benchmark/goblin_bench/eccvm.bench.cpp @@ -25,8 +25,8 @@ Builder generate_trace(size_t target_num_gates) Fr x = Fr::random_element(); Fr y = Fr::random_element(); - // Each loop adds 163 gates. Note: builder.get_num_gates() is very expensive here (bug?) and it's actually painful - // to use a `while` loop + // Each loop adds 163 gates. Note: builder.get_estimated_num_finalized_gates() is very expensive here (bug?) and + // it's actually painful to use a `while` loop size_t num_iterations = target_num_gates / 163; for (size_t _ = 0; _ < num_iterations; _++) { op_queue->add_accumulate(a); diff --git a/barretenberg/cpp/src/barretenberg/circuit_checker/ultra_circuit_builder.test.cpp b/barretenberg/cpp/src/barretenberg/circuit_checker/ultra_circuit_builder.test.cpp index 4d1e0da2b372..e7a3b8eaf520 100644 --- a/barretenberg/cpp/src/barretenberg/circuit_checker/ultra_circuit_builder.test.cpp +++ b/barretenberg/cpp/src/barretenberg/circuit_checker/ultra_circuit_builder.test.cpp @@ -39,7 +39,8 @@ TEST(UltraCircuitConstructor, CopyConstructor) UltraCircuitBuilder duplicate_circuit_constructor{ circuit_constructor }; - EXPECT_EQ(duplicate_circuit_constructor.get_num_gates(), circuit_constructor.get_num_gates()); + EXPECT_EQ(duplicate_circuit_constructor.get_estimated_num_finalized_gates(), + circuit_constructor.get_estimated_num_finalized_gates()); EXPECT_TRUE(CircuitChecker::check(duplicate_circuit_constructor)); } @@ -860,7 +861,8 @@ TEST(UltraCircuitConstructor, Ram) // Test the builder copy constructor for a circuit with RAM gates UltraCircuitBuilder duplicate_circuit_constructor{ circuit_constructor }; - EXPECT_EQ(duplicate_circuit_constructor.get_num_gates(), circuit_constructor.get_num_gates()); + EXPECT_EQ(duplicate_circuit_constructor.get_estimated_num_finalized_gates(), + circuit_constructor.get_estimated_num_finalized_gates()); EXPECT_TRUE(CircuitChecker::check(duplicate_circuit_constructor)); } diff --git a/barretenberg/cpp/src/barretenberg/circuit_checker/ultra_circuit_checker.cpp b/barretenberg/cpp/src/barretenberg/circuit_checker/ultra_circuit_checker.cpp index ad032fd2840f..68ab4750c501 100644 --- a/barretenberg/cpp/src/barretenberg/circuit_checker/ultra_circuit_checker.cpp +++ b/barretenberg/cpp/src/barretenberg/circuit_checker/ultra_circuit_checker.cpp @@ -19,7 +19,7 @@ template bool UltraCircuitChecker::check(const Builder& build { // Create a copy of the input circuit and finalize it Builder builder{ builder_in }; - builder.finalize_circuit(); + builder.finalize_circuit(/*ensure_nonzero=*/true); // Test the ensure_nonzero gates as well // Construct a hash table for lookup table entries to efficiently determine if a lookup gate is valid LookupHashTable lookup_hash_table; diff --git a/barretenberg/cpp/src/barretenberg/crypto/merkle_tree/membership.test.cpp b/barretenberg/cpp/src/barretenberg/crypto/merkle_tree/membership.test.cpp index 3c6ebf06d87b..91299dabdba5 100644 --- a/barretenberg/cpp/src/barretenberg/crypto/merkle_tree/membership.test.cpp +++ b/barretenberg/cpp/src/barretenberg/crypto/merkle_tree/membership.test.cpp @@ -42,7 +42,7 @@ TEST(crypto_merkle_tree, test_check_membership) bool_ct is_member_ = check_membership(root, create_witness_hash_path(builder, db.get_hash_path(1)), field_ct(1), seven); - printf("num gates = %zu\n", builder.get_num_gates()); + printf("num gates = %zu\n", builder.get_estimated_num_finalized_gates()); bool result = CircuitChecker::check(builder); EXPECT_EQ(is_member.get_value(), true); @@ -71,7 +71,7 @@ TEST(crypto_merkle_tree, test_batch_update_membership) field_ct start_idx = field_ct(witness_ct(&builder, fr(4))); batch_update_membership(new_root, old_root, old_hash_path_1, values, start_idx); batch_update_membership(new_root, old_root, old_hash_path_2, values, start_idx); - printf("num gates = %zu\n", builder.get_num_gates()); + printf("num gates = %zu\n", builder.get_estimated_num_finalized_gates()); bool result = CircuitChecker::check(builder); EXPECT_EQ(result, true); } @@ -87,7 +87,7 @@ TEST(crypto_merkle_tree, test_assert_check_membership) assert_check_membership(root, create_witness_hash_path(builder, db.get_hash_path(0)), field_ct(0), zero); - printf("num gates = %zu\n", builder.get_num_gates()); + printf("num gates = %zu\n", builder.get_estimated_num_finalized_gates()); bool result = CircuitChecker::check(builder); EXPECT_EQ(result, true); @@ -105,7 +105,7 @@ TEST(crypto_merkle_tree, test_assert_check_membership_fail) assert_check_membership(root, create_witness_hash_path(builder, db.get_hash_path(0)), field_ct(1), zero); - printf("num gates = %zu\n", builder.get_num_gates()); + printf("num gates = %zu\n", builder.get_estimated_num_finalized_gates()); bool result = CircuitChecker::check(builder); EXPECT_EQ(result, false); @@ -132,7 +132,7 @@ TEST(crypto_merkle_tree, test_update_members) update_membership(new_root, new_value, old_root, old_path, old_value, zero); - printf("num gates = %zu\n", builder.get_num_gates()); + printf("num gates = %zu\n", builder.get_estimated_num_finalized_gates()); bool result = CircuitChecker::check(builder); EXPECT_EQ(result, true); @@ -156,7 +156,7 @@ TEST(crypto_merkle_tree, test_update_members) update_membership(new_root, new_value, old_root, new_path, old_value, zero); - printf("num gates = %zu\n", builder.get_num_gates()); + printf("num gates = %zu\n", builder.get_estimated_num_finalized_gates()); bool result = CircuitChecker::check(builder); EXPECT_EQ(result, true); @@ -179,7 +179,7 @@ TEST(crypto_merkle_tree, test_tree) assert_check_tree(root, values); - printf("num gates = %zu\n", builder.get_num_gates()); + printf("num gates = %zu\n", builder.get_estimated_num_finalized_gates()); bool result = CircuitChecker::check(builder); EXPECT_EQ(result, true); @@ -243,7 +243,7 @@ TEST(crypto_merkle_tree, test_update_memberships) update_memberships(old_root_ct, new_roots_ct, new_values_ct, old_values_ct, old_hash_paths_ct, old_indices_ct); - printf("num gates = %zu\n", builder.get_num_gates()); + printf("num gates = %zu\n", builder.get_estimated_num_finalized_gates()); bool result = CircuitChecker::check(builder); EXPECT_EQ(result, true); } diff --git a/barretenberg/cpp/src/barretenberg/dsl/acir_format/acir_format.hpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/acir_format.hpp index 73acc790bf0b..c7157edaf906 100644 --- a/barretenberg/cpp/src/barretenberg/dsl/acir_format/acir_format.hpp +++ b/barretenberg/cpp/src/barretenberg/dsl/acir_format/acir_format.hpp @@ -247,7 +247,7 @@ template class GateCounter { if (!collect_gates_per_opcode) { return 0; } - size_t new_gate_count = builder->get_num_gates(); + size_t new_gate_count = builder->get_estimated_num_finalized_gates(); size_t diff = new_gate_count - prev_gate_count; prev_gate_count = new_gate_count; return diff; diff --git a/barretenberg/cpp/src/barretenberg/dsl/acir_format/acir_integration.test.cpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/acir_integration.test.cpp index ecb9e319b205..4420223e9ddc 100644 --- a/barretenberg/cpp/src/barretenberg/dsl/acir_format/acir_integration.test.cpp +++ b/barretenberg/cpp/src/barretenberg/dsl/acir_format/acir_integration.test.cpp @@ -63,8 +63,8 @@ class AcirIntegrationTest : public ::testing::Test { Prover prover{ builder }; #ifdef LOG_SIZES builder.blocks.summarize(); - info("num gates = ", builder.get_num_gates()); - info("total circuit size = ", builder.get_total_circuit_size()); + info("num gates = ", builder.get_estimated_num_finalized_gates()); + info("total circuit size = ", builder.get_estimated_total_circuit_size()); info("circuit size = ", prover.proving_key->proving_key.circuit_size); info("log circuit size = ", prover.proving_key->proving_key.log_circuit_size); #endif @@ -83,8 +83,8 @@ class AcirIntegrationTest : public ::testing::Test { auto prover = composer.create_prover(builder); #ifdef LOG_SIZES // builder.blocks.summarize(); - // info("num gates = ", builder.get_num_gates()); - // info("total circuit size = ", builder.get_total_circuit_size()); + // info("num gates = ", builder.get_estimated_num_finalized_gates()); + // info("total circuit size = ", builder.get_estimated_total_circuit_size()); #endif auto proof = prover.construct_proof(); #ifdef LOG_SIZES diff --git a/barretenberg/cpp/src/barretenberg/dsl/acir_format/avm_recursion_constraint.test.cpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/avm_recursion_constraint.test.cpp index 963e9e47d29a..c47d6582c334 100644 --- a/barretenberg/cpp/src/barretenberg/dsl/acir_format/avm_recursion_constraint.test.cpp +++ b/barretenberg/cpp/src/barretenberg/dsl/acir_format/avm_recursion_constraint.test.cpp @@ -132,7 +132,7 @@ TEST_F(AcirAvmRecursionConstraint, TestBasicSingleAvmRecursionConstraint) layer_1_circuits.push_back(create_inner_circuit(public_inputs_vec)); auto layer_2_circuit = create_outer_circuit(layer_1_circuits, public_inputs_vec); - info("circuit gates = ", layer_2_circuit.get_num_gates()); + info("circuit gates = ", layer_2_circuit.get_estimated_num_finalized_gates()); auto proving_key = std::make_shared(layer_2_circuit); OuterProver prover(proving_key); diff --git a/barretenberg/cpp/src/barretenberg/dsl/acir_format/honk_recursion_constraint.test.cpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/honk_recursion_constraint.test.cpp index 37de3ddd6eec..d25ad841e5be 100644 --- a/barretenberg/cpp/src/barretenberg/dsl/acir_format/honk_recursion_constraint.test.cpp +++ b/barretenberg/cpp/src/barretenberg/dsl/acir_format/honk_recursion_constraint.test.cpp @@ -195,7 +195,7 @@ TEST_F(AcirHonkRecursionConstraint, TestBasicSingleHonkRecursionConstraint) auto layer_2_circuit = create_outer_circuit(layer_1_circuits); - info("circuit gates = ", layer_2_circuit.get_num_gates()); + info("circuit gates = ", layer_2_circuit.get_estimated_num_finalized_gates()); auto proving_key = std::make_shared(layer_2_circuit); Prover prover(proving_key); @@ -215,7 +215,7 @@ TEST_F(AcirHonkRecursionConstraint, TestBasicDoubleHonkRecursionConstraints) auto layer_2_circuit = create_outer_circuit(layer_1_circuits); - info("circuit gates = ", layer_2_circuit.get_num_gates()); + info("circuit gates = ", layer_2_circuit.get_estimated_num_finalized_gates()); auto proving_key = std::make_shared(layer_2_circuit); Prover prover(proving_key); @@ -273,7 +273,7 @@ TEST_F(AcirHonkRecursionConstraint, TestOneOuterRecursiveCircuit) auto layer_3_circuit = create_outer_circuit(layer_2_circuits); info("created second outer circuit"); - info("number of gates in layer 3 = ", layer_3_circuit.get_num_gates()); + info("number of gates in layer 3 = ", layer_3_circuit.get_estimated_num_finalized_gates()); auto proving_key = std::make_shared(layer_3_circuit); Prover prover(proving_key); @@ -303,7 +303,7 @@ TEST_F(AcirHonkRecursionConstraint, TestFullRecursiveComposition) auto layer_3_circuit = create_outer_circuit(layer_2_circuits); info("created third outer circuit"); - info("number of gates in layer 3 circuit = ", layer_3_circuit.get_num_gates()); + info("number of gates in layer 3 circuit = ", layer_3_circuit.get_estimated_num_finalized_gates()); auto proving_key = std::make_shared(layer_3_circuit); Prover prover(proving_key); diff --git a/barretenberg/cpp/src/barretenberg/dsl/acir_format/recursion_constraint.test.cpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/recursion_constraint.test.cpp index 988ab39ddb75..060d2d483aff 100644 --- a/barretenberg/cpp/src/barretenberg/dsl/acir_format/recursion_constraint.test.cpp +++ b/barretenberg/cpp/src/barretenberg/dsl/acir_format/recursion_constraint.test.cpp @@ -300,7 +300,7 @@ TEST_F(AcirRecursionConstraint, TestBasicDoubleRecursionConstraints) auto layer_2_circuit = create_outer_circuit(layer_1_circuits); - info("circuit gates = ", layer_2_circuit.get_num_gates()); + info("circuit gates = ", layer_2_circuit.get_estimated_num_finalized_gates()); auto layer_2_composer = Composer(); auto prover = layer_2_composer.create_ultra_with_keccak_prover(layer_2_circuit); @@ -357,7 +357,7 @@ TEST_F(AcirRecursionConstraint, TestOneOuterRecursiveCircuit) auto layer_3_circuit = create_outer_circuit(layer_2_circuits); info("created second outer circuit"); - info("number of gates in layer 3 = ", layer_3_circuit.get_num_gates()); + info("number of gates in layer 3 = ", layer_3_circuit.get_estimated_num_finalized_gates()); auto layer_3_composer = Composer(); auto prover = layer_3_composer.create_ultra_with_keccak_prover(layer_3_circuit); @@ -386,7 +386,7 @@ TEST_F(AcirRecursionConstraint, TestFullRecursiveComposition) auto layer_3_circuit = create_outer_circuit(layer_2_circuits); info("created third outer circuit"); - info("number of gates in layer 3 circuit = ", layer_3_circuit.get_num_gates()); + info("number of gates in layer 3 circuit = ", layer_3_circuit.get_estimated_num_finalized_gates()); auto layer_3_composer = Composer(); auto prover = layer_3_composer.create_ultra_with_keccak_prover(layer_3_circuit); diff --git a/barretenberg/cpp/src/barretenberg/dsl/acir_proofs/acir_composer.cpp b/barretenberg/cpp/src/barretenberg/dsl/acir_proofs/acir_composer.cpp index 3775ac65f836..341d06d35414 100644 --- a/barretenberg/cpp/src/barretenberg/dsl/acir_proofs/acir_composer.cpp +++ b/barretenberg/cpp/src/barretenberg/dsl/acir_proofs/acir_composer.cpp @@ -21,21 +21,23 @@ AcirComposer::AcirComposer(size_t size_hint, bool verbose) {} /** - * @brief Populate acir_composer-owned builder with circuit generated from constraint system and an optional witness + * @brief Populate acir_composer-owned builder with circuit generated from constraint system and an optional witness and + * finalize it * * @tparam Builder * @param constraint_system * @param witness */ template -void AcirComposer::create_circuit(acir_format::AcirFormat& constraint_system, - WitnessVector const& witness, - bool collect_gates_per_opcode) +void AcirComposer::create_finalized_circuit(acir_format::AcirFormat& constraint_system, + WitnessVector const& witness, + bool collect_gates_per_opcode) { vinfo("building circuit..."); builder_ = acir_format::create_circuit( constraint_system, size_hint_, witness, false, std::make_shared(), collect_gates_per_opcode); - vinfo("gates: ", builder_.get_total_circuit_size()); + finalize_circuit(); + vinfo("gates: ", builder_.get_estimated_total_circuit_size()); vinfo("circuit is recursive friendly: ", builder_.is_recursive_circuit); } @@ -146,8 +148,8 @@ std::vector AcirComposer::serialize_verification_key_into_fields() return acir_format::export_key_in_recursion_format(verification_key_); } -template void AcirComposer::create_circuit(acir_format::AcirFormat& constraint_system, - WitnessVector const& witness, - bool collect_gates_per_opcode); +template void AcirComposer::create_finalized_circuit(acir_format::AcirFormat& constraint_system, + WitnessVector const& witness, + bool collect_gates_per_opcode); } // namespace acir_proofs diff --git a/barretenberg/cpp/src/barretenberg/dsl/acir_proofs/acir_composer.hpp b/barretenberg/cpp/src/barretenberg/dsl/acir_proofs/acir_composer.hpp index f222381c429e..73ca0b11e114 100644 --- a/barretenberg/cpp/src/barretenberg/dsl/acir_proofs/acir_composer.hpp +++ b/barretenberg/cpp/src/barretenberg/dsl/acir_proofs/acir_composer.hpp @@ -17,9 +17,9 @@ class AcirComposer { AcirComposer(size_t size_hint = 0, bool verbose = true); template - void create_circuit(acir_format::AcirFormat& constraint_system, - WitnessVector const& witness = {}, - bool collect_gates_per_opcode = false); + void create_finalized_circuit(acir_format::AcirFormat& constraint_system, + WitnessVector const& witness = {}, + bool collect_gates_per_opcode = false); std::shared_ptr init_proving_key(); @@ -32,13 +32,19 @@ class AcirComposer { bool verify_proof(std::vector const& proof); std::string get_solidity_verifier(); - size_t get_total_circuit_size() { return builder_.get_total_circuit_size(); }; - size_t get_dyadic_circuit_size() { return builder_.get_circuit_subgroup_size(builder_.get_total_circuit_size()); }; + size_t get_finalized_total_circuit_size() { return builder_.get_finalized_total_circuit_size(); }; + size_t get_finalized_dyadic_circuit_size() + { + return builder_.get_circuit_subgroup_size(builder_.get_finalized_total_circuit_size()); + }; + size_t get_estimated_total_circuit_size() { return builder_.get_estimated_total_circuit_size(); }; std::vector serialize_proof_into_fields(std::vector const& proof, size_t num_inner_public_inputs); std::vector serialize_verification_key_into_fields(); + void finalize_circuit() { builder_.finalize_circuit(/*ensure_nonzero=*/false); } + private: acir_format::Builder builder_; size_t size_hint_; diff --git a/barretenberg/cpp/src/barretenberg/dsl/acir_proofs/c_bind.cpp b/barretenberg/cpp/src/barretenberg/dsl/acir_proofs/c_bind.cpp index 9c687f4146e3..48e9eb7ef141 100644 --- a/barretenberg/cpp/src/barretenberg/dsl/acir_proofs/c_bind.cpp +++ b/barretenberg/cpp/src/barretenberg/dsl/acir_proofs/c_bind.cpp @@ -13,17 +13,17 @@ #include #include -WASM_EXPORT void acir_get_circuit_sizes( - uint8_t const* acir_vec, bool const* honk_recursion, uint32_t* exact, uint32_t* total, uint32_t* subgroup) +WASM_EXPORT void acir_get_circuit_sizes(uint8_t const* acir_vec, + bool const* honk_recursion, + uint32_t* total, + uint32_t* subgroup) { auto constraint_system = acir_format::circuit_buf_to_acir_format(from_buffer>(acir_vec), *honk_recursion); auto builder = acir_format::create_circuit(constraint_system, 1 << 19, {}, *honk_recursion); - *exact = htonl((uint32_t)builder.get_num_gates()); - auto num_extra_gates = builder.get_num_gates_added_to_ensure_nonzero_polynomials(); - auto total_with_extra_gates = builder.get_total_circuit_size() + num_extra_gates; - *total = htonl((uint32_t)total_with_extra_gates); - *subgroup = htonl((uint32_t)builder.get_circuit_subgroup_size(builder.get_total_circuit_size())); + builder.finalize_circuit(/*ensure_nonzero=*/true); + *total = htonl((uint32_t)builder.get_finalized_total_circuit_size()); + *subgroup = htonl((uint32_t)builder.get_circuit_subgroup_size(builder.get_finalized_total_circuit_size())); } WASM_EXPORT void acir_new_acir_composer(uint32_t const* size_hint, out_ptr out) @@ -41,7 +41,7 @@ WASM_EXPORT void acir_init_proving_key(in_ptr acir_composer_ptr, uint8_t const* auto acir_composer = reinterpret_cast(*acir_composer_ptr); auto constraint_system = acir_format::circuit_buf_to_acir_format(from_buffer>(acir_vec), /*honk_recursion=*/false); - acir_composer->create_circuit(constraint_system); + acir_composer->create_finalized_circuit(constraint_system); acir_composer->init_proving_key(); } @@ -56,7 +56,7 @@ WASM_EXPORT void acir_create_proof(in_ptr acir_composer_ptr, acir_format::circuit_buf_to_acir_format(from_buffer>(acir_vec), /*honk_recursion=*/false); auto witness = acir_format::witness_buf_to_witness_data(from_buffer>(witness_vec)); - acir_composer->create_circuit(constraint_system, witness); + acir_composer->create_finalized_circuit(constraint_system, witness); acir_composer->init_proving_key(); auto proof_data = acir_composer->create_proof(); @@ -160,7 +160,7 @@ WASM_EXPORT void acir_get_proving_key(in_ptr acir_composer_ptr, uint8_t const* a auto acir_composer = reinterpret_cast(*acir_composer_ptr); auto constraint_system = acir_format::circuit_buf_to_acir_format(from_buffer>(acir_vec), /*honk_recursion=*/false); - acir_composer->create_circuit(constraint_system); + acir_composer->create_finalized_circuit(constraint_system); auto pk = acir_composer->init_proving_key(); // We flatten to a vector first, as that's how we treat it on the calling side. *out = to_heap_buffer(to_buffer(*pk)); diff --git a/barretenberg/cpp/src/barretenberg/dsl/acir_proofs/c_bind.hpp b/barretenberg/cpp/src/barretenberg/dsl/acir_proofs/c_bind.hpp index 2ccaab46f423..9015aeaf94d8 100644 --- a/barretenberg/cpp/src/barretenberg/dsl/acir_proofs/c_bind.hpp +++ b/barretenberg/cpp/src/barretenberg/dsl/acir_proofs/c_bind.hpp @@ -8,7 +8,6 @@ using namespace bb; WASM_EXPORT void acir_get_circuit_sizes(uint8_t const* constraint_system_buf, bool const* honk_recursion, - uint32_t* exact, uint32_t* total, uint32_t* subgroup); diff --git a/barretenberg/cpp/src/barretenberg/eccvm/eccvm_circuit_builder.hpp b/barretenberg/cpp/src/barretenberg/eccvm/eccvm_circuit_builder.hpp index 6121469064ad..69f4f1799e6f 100644 --- a/barretenberg/cpp/src/barretenberg/eccvm/eccvm_circuit_builder.hpp +++ b/barretenberg/cpp/src/barretenberg/eccvm/eccvm_circuit_builder.hpp @@ -208,7 +208,7 @@ class ECCVMCircuitBuilder { return result; } - [[nodiscard]] size_t get_num_gates() const + [[nodiscard]] size_t get_estimated_num_finalized_gates() const { // TODO(https://github.com/AztecProtocol/aztec-packages/issues/2218): Reduce the amount of computation needed // for this method diff --git a/barretenberg/cpp/src/barretenberg/eccvm/eccvm_flavor.hpp b/barretenberg/cpp/src/barretenberg/eccvm/eccvm_flavor.hpp index f2af55e8d132..0cf437903c60 100644 --- a/barretenberg/cpp/src/barretenberg/eccvm/eccvm_flavor.hpp +++ b/barretenberg/cpp/src/barretenberg/eccvm/eccvm_flavor.hpp @@ -672,7 +672,7 @@ class ECCVMFlavor { ProverPolynomials polynomials; // storage for all polynomials evaluated by the prover ProvingKey(const CircuitBuilder& builder) - : Base(builder.get_circuit_subgroup_size(builder.get_num_gates()), 0) + : Base(builder.get_circuit_subgroup_size(builder.get_estimated_num_finalized_gates()), 0) , polynomials(builder) {} }; diff --git a/barretenberg/cpp/src/barretenberg/examples/join_split/join_split.cpp b/barretenberg/cpp/src/barretenberg/examples/join_split/join_split.cpp index 8a547d057dff..ba12a128f0ac 100644 --- a/barretenberg/cpp/src/barretenberg/examples/join_split/join_split.cpp +++ b/barretenberg/cpp/src/barretenberg/examples/join_split/join_split.cpp @@ -20,7 +20,7 @@ Builder new_join_split_circuit(join_split_tx const& tx) info("public inputs: ", builder.public_inputs.size()); - info("num gates before finalization: ", builder.get_num_gates()); + info("num gates before finalization: ", builder.get_estimated_num_finalized_gates()); return builder; } 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 9ea4a5d8e022..1ef0dfe3305e 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 @@ -284,7 +284,9 @@ class join_split_tests : public ::testing::Test { if (circuit.failed()) { info("Logic failed: ", circuit.err()); } - return { !circuit.failed(), circuit.err(), circuit.get_public_inputs(), circuit.get_num_gates() }; + return { + !circuit.failed(), circuit.err(), circuit.get_public_inputs(), circuit.get_estimated_num_finalized_gates() + }; } verify_result sign_and_verify_logic(join_split_tx& tx, key_pair const& signing_key) @@ -706,7 +708,7 @@ TEST_F(join_split_tests, test_0_input_notes_and_detect_circuit_change) const uint256_t circuit_hash = circuit.hash_circuit(); // circuit is finalized now if (!CIRCUIT_CHANGE_EXPECTED) { - EXPECT_LT(circuit.get_num_gates(), DYADIC_CIRCUIT_SIZE) + EXPECT_LT(circuit.get_estimated_num_finalized_gates(), DYADIC_CIRCUIT_SIZE) << "The gate count for the join-split circuit has crossed a power-of-two boundary."; EXPECT_EQ(circuit_hash, CIRCUIT_HASH) << "The circuit hash for the join_split circuit has changed to: " << circuit_hash; diff --git a/barretenberg/cpp/src/barretenberg/examples/simple/simple.cpp b/barretenberg/cpp/src/barretenberg/examples/simple/simple.cpp index b7cc5ffe3c9b..8ad9a1685913 100644 --- a/barretenberg/cpp/src/barretenberg/examples/simple/simple.cpp +++ b/barretenberg/cpp/src/barretenberg/examples/simple/simple.cpp @@ -13,7 +13,7 @@ const size_t CIRCUIT_SIZE = 1 << 19; void build_circuit(Builder& builder) { - while (builder.get_num_gates() <= CIRCUIT_SIZE / 2) { + while (builder.get_estimated_num_finalized_gates() <= CIRCUIT_SIZE / 2) { stdlib::pedersen_hash::hash({ field_ct(witness_ct(&builder, 1)), field_ct(witness_ct(&builder, 1)) }); } } @@ -31,7 +31,7 @@ BuilderComposerPtrs create_builder_and_composer() } info("public inputs: ", builder->get_public_inputs().size()); - info("composer gates: ", builder->get_num_gates()); + info("composer gates: ", builder->get_estimated_num_finalized_gates()); info("computing proving key..."); auto composer = std::make_unique(); diff --git a/barretenberg/cpp/src/barretenberg/plonk/composer/ultra_composer.cpp b/barretenberg/cpp/src/barretenberg/plonk/composer/ultra_composer.cpp index 540712bb5882..34a63d3bf6df 100644 --- a/barretenberg/cpp/src/barretenberg/plonk/composer/ultra_composer.cpp +++ b/barretenberg/cpp/src/barretenberg/plonk/composer/ultra_composer.cpp @@ -142,23 +142,15 @@ UltraWithKeccakVerifier UltraComposer::create_ultra_with_keccak_verifier(Circuit return output_state; } -size_t UltraComposer::compute_dyadic_circuit_size(CircuitBuilder& circuit) -{ - const size_t filled_gates = circuit.num_gates + circuit.public_inputs.size(); - const size_t size_required_for_lookups = circuit.get_tables_size() + circuit.get_lookups_size(); - const size_t total_num_gates = std::max(filled_gates, size_required_for_lookups); - return circuit.get_circuit_subgroup_size(total_num_gates + NUM_RESERVED_GATES); -} - std::shared_ptr UltraComposer::compute_proving_key(CircuitBuilder& circuit) { if (circuit_proving_key) { return circuit_proving_key; } - circuit.finalize_circuit(); + circuit.finalize_circuit(/*ensure_nonzero=*/false); - const size_t subgroup_size = compute_dyadic_circuit_size(circuit); + const size_t subgroup_size = circuit.get_circuit_subgroup_size(circuit.get_finalized_total_circuit_size()); auto crs = srs::get_bn254_crs_factory()->get_prover_crs(subgroup_size + 1); // TODO(https://github.com/AztecProtocol/barretenberg/issues/392): Composer type diff --git a/barretenberg/cpp/src/barretenberg/plonk/composer/ultra_composer.hpp b/barretenberg/cpp/src/barretenberg/plonk/composer/ultra_composer.hpp index 3bad4a3b5d2e..f6f05cedf6ec 100644 --- a/barretenberg/cpp/src/barretenberg/plonk/composer/ultra_composer.hpp +++ b/barretenberg/cpp/src/barretenberg/plonk/composer/ultra_composer.hpp @@ -83,8 +83,6 @@ class UltraComposer { void add_table_column_selector_poly_to_proving_key(polynomial& small, const std::string& tag); - size_t compute_dyadic_circuit_size(CircuitBuilder& circuit_constructor); - /** * @brief Create a manifest object * diff --git a/barretenberg/cpp/src/barretenberg/smt_verification/circuit/subcircuits.cpp b/barretenberg/cpp/src/barretenberg/smt_verification/circuit/subcircuits.cpp index ddbd0cb06db6..808c4b2441d3 100644 --- a/barretenberg/cpp/src/barretenberg/smt_verification/circuit/subcircuits.cpp +++ b/barretenberg/cpp/src/barretenberg/smt_verification/circuit/subcircuits.cpp @@ -8,9 +8,9 @@ CircuitProps get_standard_range_constraint_circuit(size_t n) uint32_t a_idx = builder.add_variable(bb::fr(0xabbba)); builder.set_variable_name(a_idx, "a"); - size_t start_gate = builder.get_num_gates(); + size_t start_gate = builder.get_estimated_num_finalized_gates(); auto accumulators = builder.decompose_into_base4_accumulators(a_idx, n); - size_t num_gates = builder.get_num_gates() - start_gate; + size_t num_gates = builder.get_estimated_num_finalized_gates() - start_gate; // give names to accumulators for tests size_t num_accs = accumulators.size(); @@ -46,9 +46,9 @@ CircuitProps get_standard_logic_circuit(size_t n, bool is_xor) builder.set_variable_name(a_idx, "a"); builder.set_variable_name(b_idx, "b"); - size_t start_gate = builder.get_num_gates(); + size_t start_gate = builder.get_estimated_num_finalized_gates(); auto acc = builder.create_logic_constraint(a_idx, b_idx, n, is_xor); - size_t num_gates = builder.get_num_gates() - start_gate; + size_t num_gates = builder.get_estimated_num_finalized_gates() - start_gate; builder.set_variable_name(acc.out.back(), "c"); diff --git a/barretenberg/cpp/src/barretenberg/smt_verification/circuit/subcircuits.hpp b/barretenberg/cpp/src/barretenberg/smt_verification/circuit/subcircuits.hpp index e4fcfa845c98..d7ad62e70bd0 100644 --- a/barretenberg/cpp/src/barretenberg/smt_verification/circuit/subcircuits.hpp +++ b/barretenberg/cpp/src/barretenberg/smt_verification/circuit/subcircuits.hpp @@ -33,12 +33,12 @@ template CircuitProps get_standard_ror_circuit(T n, size_t sh) bb::StandardCircuitBuilder builder = bb::StandardCircuitBuilder(); bb::stdlib::uint a = witness_ct(&builder, n); - size_t start_gate = builder.get_num_gates(); + size_t start_gate = builder.get_estimated_num_finalized_gates(); auto b = a.ror(sh); builder.set_variable_name(a.get_witness_index(), "a"); builder.set_variable_name(b.get_witness_index(), "b"); - size_t num_gates = builder.get_num_gates() - start_gate; + size_t num_gates = builder.get_estimated_num_finalized_gates() - start_gate; CircuitSchema exported = unpack_from_buffer(builder.export_circuit()); // relative offsets in the circuit are calculated manually, according to decompose_into_base4_accumulators method @@ -61,12 +61,12 @@ template CircuitProps get_standard_shift_right_circuit(T n, uint32_ using witness_ct = bb::stdlib::witness_t; bb::StandardCircuitBuilder builder = bb::StandardCircuitBuilder(); bb::stdlib::uint a = witness_ct(&builder, n); - size_t start_gate = builder.get_num_gates(); + size_t start_gate = builder.get_estimated_num_finalized_gates(); auto b = a >> sh; builder.set_variable_name(a.get_witness_index(), "a"); builder.set_variable_name(b.get_witness_index(), "b"); - size_t num_gates = builder.get_num_gates() - start_gate; + size_t num_gates = builder.get_estimated_num_finalized_gates() - start_gate; CircuitSchema exported = unpack_from_buffer(builder.export_circuit()); // relative offsets in the circuit are calculated manually, according to decompose_into_base4_accumulators method @@ -85,12 +85,12 @@ template CircuitProps get_standard_shift_left_circuit(T n, uint32_t using witness_ct = bb::stdlib::witness_t; bb::StandardCircuitBuilder builder = bb::StandardCircuitBuilder(); bb::stdlib::uint a = witness_ct(&builder, n); - size_t start_gate = builder.get_num_gates(); + size_t start_gate = builder.get_estimated_num_finalized_gates(); auto b = a << sh; builder.set_variable_name(a.get_witness_index(), "a"); builder.set_variable_name(b.get_witness_index(), "b"); - size_t num_gates = builder.get_num_gates() - start_gate; + size_t num_gates = builder.get_estimated_num_finalized_gates() - start_gate; CircuitSchema exported = unpack_from_buffer(builder.export_circuit()); // relative offsets in the circuit are calculated manually, according to decompose_into_base4_accumulators method diff --git a/barretenberg/cpp/src/barretenberg/smt_verification/circuit/ultra_circuit.test.cpp b/barretenberg/cpp/src/barretenberg/smt_verification/circuit/ultra_circuit.test.cpp index 3c7912f116c7..714b7cff76ab 100644 --- a/barretenberg/cpp/src/barretenberg/smt_verification/circuit/ultra_circuit.test.cpp +++ b/barretenberg/cpp/src/barretenberg/smt_verification/circuit/ultra_circuit.test.cpp @@ -79,7 +79,7 @@ TEST(ultra_circuit, arithmetic) auto circuit_info = unpack_from_buffer(builder.export_circuit()); Solver s(circuit_info.modulus, ultra_solver_config); UltraCircuit cir(circuit_info, &s); - ASSERT_EQ(cir.get_num_gates(), builder.get_num_gates()); + ASSERT_EQ(cir.get_num_gates(), builder.get_estimated_num_finalized_gates()); cir["a"] == a.get_value(); cir["b"] == b.get_value(); @@ -119,7 +119,7 @@ TEST(ultra_circuit, elliptic_add) auto circuit_info = unpack_from_buffer(builder.export_circuit()); Solver s(circuit_info.modulus, ultra_solver_config); UltraCircuit cir(circuit_info, &s); - ASSERT_EQ(cir.get_num_gates(), builder.get_num_gates()); + ASSERT_EQ(cir.get_num_gates(), builder.get_estimated_num_finalized_gates()); cir["x1"] == builder.get_variable(x1); cir["x2"] == builder.get_variable(x2); @@ -166,7 +166,7 @@ TEST(ultra_circuit, elliptic_dbl) auto circuit_info = unpack_from_buffer(builder.export_circuit()); Solver s(circuit_info.modulus, ultra_solver_config); UltraCircuit cir(circuit_info, &s); - ASSERT_EQ(cir.get_num_gates(), builder.get_num_gates()); + ASSERT_EQ(cir.get_num_gates(), builder.get_estimated_num_finalized_gates()); cir["x1"] == builder.get_variable(x1); cir["y1"] == builder.get_variable(y1); @@ -196,12 +196,12 @@ TEST(ultra_circuit, ranges) uint_t a(witness_t(&builder, static_cast(bb::fr::random_element()))); builder.set_variable_name(a.get_witness_index(), "a"); - builder.finalize_circuit(); + builder.finalize_circuit(/*ensure_nonzero=*/false); // No need to add nonzero gates if we're not proving auto circuit_info = unpack_from_buffer(builder.export_circuit()); Solver s(circuit_info.modulus, ultra_solver_config); UltraCircuit cir(circuit_info, &s, TermType::BVTerm); - ASSERT_EQ(cir.get_num_gates(), builder.get_num_gates()); + ASSERT_EQ(cir.get_num_gates(), builder.get_estimated_num_finalized_gates()); cir["a"] == a.get_value(); s.print_assertions(); @@ -220,14 +220,14 @@ TEST(ultra_circuit, lookup_tables) builder.set_variable_name(a.get_witness_index(), "a"); builder.set_variable_name(b.get_witness_index(), "b"); builder.set_variable_name(c.get_witness_index(), "c"); - builder.finalize_circuit(); + builder.finalize_circuit(/*ensure_nonzero=*/false); // No need to add nonzero gates if we're not proving auto circuit_info = unpack_from_buffer(builder.export_circuit()); uint32_t modulus_base = 16; uint32_t bvsize = 32; Solver s(circuit_info.modulus, ultra_solver_config, modulus_base, bvsize); UltraCircuit cir(circuit_info, &s, TermType::BVTerm); - ASSERT_EQ(cir.get_num_gates(), builder.get_num_gates()); + ASSERT_EQ(cir.get_num_gates(), builder.get_estimated_num_finalized_gates()); cir["a"] == a.get_value(); cir["b"] == b.get_value(); diff --git a/barretenberg/cpp/src/barretenberg/stdlib/commitment/pedersen/pedersen.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/commitment/pedersen/pedersen.test.cpp index e0b7f4a19d7e..4eb61b95dffb 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/commitment/pedersen/pedersen.test.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/commitment/pedersen/pedersen.test.cpp @@ -46,7 +46,7 @@ template class StdlibPedersen : public testing::Test { auto out = pedersen_commitment::commit({ left, right }); - info("num gates = ", builder.get_num_gates()); + info("num gates = ", builder.get_estimated_num_finalized_gates()); bool result = CircuitChecker::check(builder); EXPECT_EQ(result, true); diff --git a/barretenberg/cpp/src/barretenberg/stdlib/encryption/aes128/aes128.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/encryption/aes128/aes128.test.cpp index 90959ee9ccc4..e510835f1448 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/encryption/aes128/aes128.test.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/encryption/aes128/aes128.test.cpp @@ -54,7 +54,7 @@ TEST(stdlib_aes128, encrypt_64_bytes) EXPECT_EQ(result[i].get_value(), expected[i]); } - std::cout << "num gates = " << builder.get_num_gates() << std::endl; + std::cout << "num gates = " << builder.get_estimated_num_finalized_gates() << std::endl; bool proof_result = CircuitChecker::check(builder); EXPECT_EQ(proof_result, true); diff --git a/barretenberg/cpp/src/barretenberg/stdlib/encryption/ecdsa/ecdsa.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/encryption/ecdsa/ecdsa.test.cpp index 5f3458416f04..b230f29da283 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/encryption/ecdsa/ecdsa.test.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/encryption/ecdsa/ecdsa.test.cpp @@ -50,8 +50,12 @@ TEST(stdlib_ecdsa, verify_signature) EXPECT_EQ(signature_result.get_value(), true); - std::cerr << "num gates = " << builder.get_num_gates() << std::endl; - benchmark_info(Builder::NAME_STRING, "ECDSA", "Signature Verification Test", "Gate Count", builder.get_num_gates()); + std::cerr << "num gates = " << builder.get_estimated_num_finalized_gates() << std::endl; + benchmark_info(Builder::NAME_STRING, + "ECDSA", + "Signature Verification Test", + "Gate Count", + builder.get_estimated_num_finalized_gates()); bool proof_result = CircuitChecker::check(builder); EXPECT_EQ(proof_result, true); } @@ -91,8 +95,12 @@ TEST(stdlib_ecdsa, verify_r1_signature) EXPECT_EQ(signature_result.get_value(), true); - std::cerr << "num gates = " << builder.get_num_gates() << std::endl; - benchmark_info(Builder::NAME_STRING, "ECDSA", "Signature Verification Test", "Gate Count", builder.get_num_gates()); + std::cerr << "num gates = " << builder.get_estimated_num_finalized_gates() << std::endl; + benchmark_info(Builder::NAME_STRING, + "ECDSA", + "Signature Verification Test", + "Gate Count", + builder.get_estimated_num_finalized_gates()); bool proof_result = CircuitChecker::check(builder); EXPECT_EQ(proof_result, true); } @@ -135,8 +143,12 @@ TEST(stdlib_ecdsa, ecdsa_verify_signature_noassert_succeed) EXPECT_EQ(signature_result.get_value(), true); - std::cerr << "num gates = " << builder.get_num_gates() << std::endl; - benchmark_info(Builder::NAME_STRING, "ECDSA", "Signature Verification Test", "Gate Count", builder.get_num_gates()); + std::cerr << "num gates = " << builder.get_estimated_num_finalized_gates() << std::endl; + benchmark_info(Builder::NAME_STRING, + "ECDSA", + "Signature Verification Test", + "Gate Count", + builder.get_estimated_num_finalized_gates()); bool proof_result = CircuitChecker::check(builder); EXPECT_EQ(proof_result, true); } @@ -179,8 +191,12 @@ TEST(stdlib_ecdsa, ecdsa_verify_signature_noassert_fail) EXPECT_EQ(signature_result.get_value(), false); - std::cerr << "num gates = " << builder.get_num_gates() << std::endl; - benchmark_info(Builder::NAME_STRING, "ECDSA", "Signature Verification Test", "Gate Count", builder.get_num_gates()); + std::cerr << "num gates = " << builder.get_estimated_num_finalized_gates() << std::endl; + benchmark_info(Builder::NAME_STRING, + "ECDSA", + "Signature Verification Test", + "Gate Count", + builder.get_estimated_num_finalized_gates()); bool proof_result = CircuitChecker::check(builder); EXPECT_EQ(proof_result, true); } diff --git a/barretenberg/cpp/src/barretenberg/stdlib/encryption/schnorr/schnorr.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/encryption/schnorr/schnorr.test.cpp index c2706b3adf4d..ea93c1c161da 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/encryption/schnorr/schnorr.test.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/encryption/schnorr/schnorr.test.cpp @@ -49,7 +49,7 @@ TEST(stdlib_schnorr, schnorr_verify_signature) byte_array_ct message(&builder, message_string); schnorr_verify_signature(message, pub_key, sig); - info("num gates = ", builder.get_num_gates()); + info("num gates = ", builder.get_estimated_num_finalized_gates()); bool result = CircuitChecker::check(builder); EXPECT_EQ(result, true); } @@ -91,7 +91,7 @@ TEST(stdlib_schnorr, verify_signature_failure) byte_array_ct message(&builder, message_string); schnorr_verify_signature(message, pub_key2_ct, sig); - info("num gates = ", builder.get_num_gates()); + info("num gates = ", builder.get_estimated_num_finalized_gates()); bool verification_result = CircuitChecker::check(builder); EXPECT_EQ(verification_result, false); @@ -126,7 +126,7 @@ TEST(stdlib_schnorr, schnorr_signature_verification_result) bool_ct signature_result = schnorr_signature_verification_result(message, pub_key, sig); EXPECT_EQ(signature_result.witness_bool, true); - info("num gates = ", builder.get_num_gates()); + info("num gates = ", builder.get_estimated_num_finalized_gates()); bool result = CircuitChecker::check(builder); EXPECT_EQ(result, true); @@ -169,7 +169,7 @@ TEST(stdlib_schnorr, signature_verification_result_failure) bool_ct signature_result = schnorr_signature_verification_result(message, pub_key2_ct, sig); EXPECT_EQ(signature_result.witness_bool, false); - info("num gates = ", builder.get_num_gates()); + info("num gates = ", builder.get_estimated_num_finalized_gates()); bool verification_result = CircuitChecker::check(builder); EXPECT_EQ(verification_result, true); diff --git a/barretenberg/cpp/src/barretenberg/stdlib/hash/blake2s/blake2s.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/hash/blake2s/blake2s.test.cpp index 1bba02baf908..db612c989da5 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/hash/blake2s/blake2s.test.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/hash/blake2s/blake2s.test.cpp @@ -29,7 +29,7 @@ using public_witness_t = public_witness_t; // EXPECT_EQ(output.get_value(), expected); -// info("num gates = %zu\n", builder.get_num_gates()); +// info("num gates = %zu\n", builder.get_estimated_num_finalized_gates()); // bool proof_result = CircuitChecker::check(builder); // EXPECT_EQ(proof_result, true); @@ -48,7 +48,7 @@ TEST(stdlib_blake2s, test_single_block_plookup) EXPECT_EQ(output.get_value(), std::vector(expected.begin(), expected.end())); - info("builder gates = ", builder.get_num_gates()); + info("builder gates = ", builder.get_estimated_num_finalized_gates()); bool proof_result = CircuitChecker::check(builder); EXPECT_EQ(proof_result, true); @@ -67,7 +67,7 @@ TEST(stdlib_blake2s, test_single_block_plookup) // EXPECT_EQ(output.get_value(), expected); -// info("num gates = %zu\n", builder.get_num_gates()); +// info("num gates = %zu\n", builder.get_estimated_num_finalized_gates()); // bool proof_result = CircuitChecker::check(builder); // EXPECT_EQ(proof_result, true); @@ -86,7 +86,7 @@ TEST(stdlib_blake2s, test_double_block_plookup) EXPECT_EQ(output.get_value(), std::vector(expected.begin(), expected.end())); - info("builder gates = ", builder.get_num_gates()); + info("builder gates = ", builder.get_estimated_num_finalized_gates()); bool proof_result = CircuitChecker::check(builder); EXPECT_EQ(proof_result, true); diff --git a/barretenberg/cpp/src/barretenberg/stdlib/hash/blake3s/blake3s.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/hash/blake3s/blake3s.test.cpp index 6e1b22e87522..1286fbc8e7e8 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/hash/blake3s/blake3s.test.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/hash/blake3s/blake3s.test.cpp @@ -27,7 +27,7 @@ TEST(stdlib_blake3s, test_single_block) EXPECT_EQ(output.get_value(), expected); - info("builder gates = ", builder.get_num_gates()); + info("builder gates = ", builder.get_estimated_num_finalized_gates()); bool proof_result = CircuitChecker::check(builder); EXPECT_EQ(proof_result, true); @@ -46,7 +46,7 @@ TEST(stdlib_blake3s, test_single_block_plookup) EXPECT_EQ(output.get_value(), expected); - info("builder gates = ", builder.get_num_gates()); + info("builder gates = ", builder.get_estimated_num_finalized_gates()); bool proof_result = CircuitChecker::check(builder); EXPECT_EQ(proof_result, true); @@ -65,7 +65,7 @@ TEST(stdlib_blake3s, test_double_block) EXPECT_EQ(output.get_value(), expected); - info("builder gates = ", builder.get_num_gates()); + info("builder gates = ", builder.get_estimated_num_finalized_gates()); bool proof_result = CircuitChecker::check(builder); EXPECT_EQ(proof_result, true); @@ -84,7 +84,7 @@ TEST(stdlib_blake3s, test_double_block_plookup) EXPECT_EQ(output.get_value(), expected); - info("builder gates = ", builder.get_num_gates()); + info("builder gates = ", builder.get_estimated_num_finalized_gates()); bool proof_result = CircuitChecker::check(builder); EXPECT_EQ(proof_result, true); diff --git a/barretenberg/cpp/src/barretenberg/stdlib/hash/keccak/keccak.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/hash/keccak/keccak.test.cpp index 9efb1679b66a..7c0c7ce2a4ac 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/hash/keccak/keccak.test.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/hash/keccak/keccak.test.cpp @@ -96,7 +96,7 @@ TEST(stdlib_keccak, keccak_rho_output_table) EXPECT_EQ(static_cast(result_msb.get_value()), expected_msb); }); - info("num gates = ", builder.get_num_gates()); + info("num gates = ", builder.get_estimated_num_finalized_gates()); bool proof_result = CircuitChecker::check(builder); EXPECT_EQ(proof_result, true); } @@ -132,7 +132,7 @@ TEST(stdlib_keccak, keccak_chi_output_table) EXPECT_EQ(static_cast(normalized.get_value()), normalized_native); EXPECT_EQ(static_cast(msb.get_value()), binary_native >> 63); } - info("num gates = n", builder.get_num_gates()); + info("num gates = n", builder.get_estimated_num_finalized_gates()); bool proof_result = CircuitChecker::check(builder); EXPECT_EQ(proof_result, true); } @@ -193,7 +193,7 @@ TEST(stdlib_keccak, test_single_block) EXPECT_EQ(output.get_value(), expected); - builder.print_num_gates(); + builder.print_num_estimated_finalized_gates(); bool proof_result = CircuitChecker::check(builder); EXPECT_EQ(proof_result, true); @@ -218,7 +218,7 @@ TEST(stdlib_keccak, test_double_block) EXPECT_EQ(output.get_value(), expected); - builder.print_num_gates(); + builder.print_num_estimated_finalized_gates(); bool proof_result = CircuitChecker::check(builder); EXPECT_EQ(proof_result, true); @@ -294,7 +294,7 @@ TEST(stdlib_keccak, test_permutation_opcode_single_block) EXPECT_EQ(output.get_value(), expected); - builder.print_num_gates(); + builder.print_num_estimated_finalized_gates(); bool proof_result = CircuitChecker::check(builder); EXPECT_EQ(proof_result, true); @@ -317,7 +317,7 @@ TEST(stdlib_keccak, test_permutation_opcode_double_block) EXPECT_EQ(output.get_value(), expected); - builder.print_num_gates(); + builder.print_num_estimated_finalized_gates(); bool proof_result = CircuitChecker::check(builder); EXPECT_EQ(proof_result, true); diff --git a/barretenberg/cpp/src/barretenberg/stdlib/hash/pedersen/pedersen.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/hash/pedersen/pedersen.test.cpp index 5b0a67b96e5c..cd5dc4399d73 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/hash/pedersen/pedersen.test.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/hash/pedersen/pedersen.test.cpp @@ -46,7 +46,7 @@ template class StdlibPedersen : public testing::Test { fr_ct out = pedersen_hash::hash({ left, right }); - info("num gates = ", builder.get_num_gates()); + info("num gates = ", builder.get_estimated_num_finalized_gates()); bool result = CircuitChecker::check(builder); EXPECT_EQ(result, true); @@ -77,7 +77,7 @@ template class StdlibPedersen : public testing::Test { fr_ct out_with_zero = pedersen_hash::hash({ out_1_with_zero, out_2 }); fr_ct out_with_r = pedersen_hash::hash({ out_1_with_r, out_2 }); - info("num gates = ", builder.get_num_gates()); + info("num gates = ", builder.get_estimated_num_finalized_gates()); bool result = CircuitChecker::check(builder); EXPECT_EQ(result, true); @@ -120,7 +120,7 @@ template class StdlibPedersen : public testing::Test { builder.set_public_input(left.witness_index); - info("num gates = ", builder.get_num_gates()); + info("num gates = ", builder.get_estimated_num_finalized_gates()); bool result = CircuitChecker::check(builder); EXPECT_EQ(result, true); @@ -145,7 +145,7 @@ template class StdlibPedersen : public testing::Test { EXPECT_EQ(result.get_value(), expected); - info("num gates = ", builder.get_num_gates()); + info("num gates = ", builder.get_estimated_num_finalized_gates()); bool proof_result = CircuitChecker::check(builder); EXPECT_EQ(proof_result, true); @@ -196,7 +196,7 @@ template class StdlibPedersen : public testing::Test { EXPECT_EQ(result.get_value(), expected); } - info("num gates = ", builder.get_num_gates()); + info("num gates = ", builder.get_estimated_num_finalized_gates()); bool proof_result = CircuitChecker::check(builder); EXPECT_EQ(proof_result, true); diff --git a/barretenberg/cpp/src/barretenberg/stdlib/hash/poseidon2/poseidon2.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/hash/poseidon2/poseidon2.test.cpp index a22998a2668a..8ffdbb9c315d 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/hash/poseidon2/poseidon2.test.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/hash/poseidon2/poseidon2.test.cpp @@ -72,7 +72,7 @@ template class StdlibPoseidon2 : public testing::Test { builder.set_public_input(left.witness_index); - info("num gates = ", builder.get_num_gates()); + info("num gates = ", builder.get_estimated_num_finalized_gates()); bool result = CircuitChecker::check(builder); EXPECT_EQ(result, true); @@ -99,7 +99,7 @@ template class StdlibPoseidon2 : public testing::Test { EXPECT_EQ(result.get_value(), expected); - info("num gates = ", builder.get_num_gates()); + info("num gates = ", builder.get_estimated_num_finalized_gates()); bool proof_result = CircuitChecker::check(builder); EXPECT_EQ(proof_result, true); diff --git a/barretenberg/cpp/src/barretenberg/stdlib/hash/sha256/sha256.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/hash/sha256/sha256.test.cpp index fbea15299652..de8d18649ce0 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/hash/sha256/sha256.test.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/hash/sha256/sha256.test.cpp @@ -135,7 +135,7 @@ std::array inner_block(std::array& w) // EXPECT_EQ(uint256_t(result[i].get_value()).data[0] & 0xffffffffUL, // uint256_t(expected[i]).data[0] & 0xffffffffUL); // } -// info("num gates = %zu\n", builder.get_num_gates()); +// info("num gates = %zu\n", builder.get_estimated_num_finalized_gates()); // auto prover = composer.create_prover(); @@ -167,7 +167,7 @@ TEST(stdlib_sha256, test_plookup_55_bytes) EXPECT_EQ(uint256_t(output[5].get_value()), 0xbde22ab0U); EXPECT_EQ(uint256_t(output[6].get_value()), 0x54a8fac7U); EXPECT_EQ(uint256_t(output[7].get_value()), 0x93791fc7U); - info("num gates = ", builder.get_num_gates()); + info("num gates = ", builder.get_estimated_num_finalized_gates()); bool proof_result = CircuitChecker::check(builder); EXPECT_EQ(proof_result, true); @@ -192,7 +192,7 @@ TEST(stdlib_sha256, test_55_bytes) EXPECT_EQ(output[5].get_value(), fr(0xbde22ab0ULL)); EXPECT_EQ(output[6].get_value(), fr(0x54a8fac7ULL)); EXPECT_EQ(output[7].get_value(), fr(0x93791fc7ULL)); - info("num gates = ", builder.get_num_gates()); + info("num gates = ", builder.get_estimated_num_finalized_gates()); bool proof_result = CircuitChecker::check(builder); EXPECT_EQ(proof_result, true); @@ -216,7 +216,7 @@ TEST(stdlib_sha256, test_NIST_vector_one_packed_byte_array) EXPECT_EQ(uint256_t(output[5].get_value()).data[0], (uint64_t)0x96177A9CU); EXPECT_EQ(uint256_t(output[6].get_value()).data[0], (uint64_t)0xB410FF61U); EXPECT_EQ(uint256_t(output[7].get_value()).data[0], (uint64_t)0xF20015ADU); - info("num gates = ", builder.get_num_gates()); + info("num gates = ", builder.get_estimated_num_finalized_gates()); bool proof_result = CircuitChecker::check(builder); EXPECT_EQ(proof_result, true); @@ -243,7 +243,7 @@ TEST(stdlib_sha256, test_NIST_vector_one) EXPECT_EQ(output[5].get_value(), fr(0x96177A9CULL)); EXPECT_EQ(output[6].get_value(), fr(0xB410FF61ULL)); EXPECT_EQ(output[7].get_value(), fr(0xF20015ADULL)); - info("num gates = ", builder.get_num_gates()); + info("num gates = ", builder.get_estimated_num_finalized_gates()); bool proof_result = CircuitChecker::check(builder); EXPECT_EQ(proof_result, true); @@ -267,7 +267,7 @@ TEST(stdlib_sha256, test_NIST_vector_two) EXPECT_EQ(output[5].get_value(), 0x64FF2167ULL); EXPECT_EQ(output[6].get_value(), 0xF6ECEDD4ULL); EXPECT_EQ(output[7].get_value(), 0x19DB06C1ULL); - info("num gates = ", builder.get_num_gates()); + info("num gates = ", builder.get_estimated_num_finalized_gates()); bool proof_result = CircuitChecker::check(builder); EXPECT_EQ(proof_result, true); @@ -292,7 +292,7 @@ TEST(stdlib_sha256, test_NIST_vector_three) EXPECT_EQ(output[5].get_value(), 0x7dc4b5aaULL); EXPECT_EQ(output[6].get_value(), 0xe11204c0ULL); EXPECT_EQ(output[7].get_value(), 0x8ffe732bULL); - info("num gates = ", builder.get_num_gates()); + info("num gates = ", builder.get_estimated_num_finalized_gates()); bool proof_result = CircuitChecker::check(builder); EXPECT_EQ(proof_result, true); @@ -318,7 +318,7 @@ TEST(stdlib_sha256, test_NIST_vector_four) EXPECT_EQ(output[6].get_value(), 0xbd56c61cULL); EXPECT_EQ(output[7].get_value(), 0xcccd9504ULL); - info("num gates = ", builder.get_num_gates()); + info("num gates = ", builder.get_estimated_num_finalized_gates()); bool proof_result = CircuitChecker::check(builder); EXPECT_EQ(proof_result, true); @@ -357,7 +357,7 @@ HEAVY_TEST(stdlib_sha256, test_NIST_vector_five) EXPECT_EQ(output[6].get_value(), 0xa519105aULL); EXPECT_EQ(output[7].get_value(), 0x1eadd6e4ULL); - info("num gates = ", builder.get_num_gates()); + info("num gates = ", builder.get_estimated_num_finalized_gates()); bool proof_result = CircuitChecker::check(builder); EXPECT_EQ(proof_result, true); 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 fe7c55710937..06119d1d0254 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 @@ -215,7 +215,7 @@ template class RecursiveVerifierTest : public testing aggregation_state agg_obj = init_default_aggregation_state(outer_circuit); auto pairing_points = verifier.verify_proof(inner_proof, agg_obj); - info("Recursive Verifier: num gates = ", outer_circuit.get_num_gates()); + info("Recursive Verifier: num gates = ", outer_circuit.get_estimated_num_finalized_gates()); // Check for a failure flag in the recursive verifier circuit EXPECT_EQ(outer_circuit.failed(), false) << outer_circuit.err(); diff --git a/barretenberg/cpp/src/barretenberg/stdlib/plonk_recursion/transcript/transcript.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/plonk_recursion/transcript/transcript.test.cpp index 6a24bd4da13e..8db063f95e56 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/plonk_recursion/transcript/transcript.test.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/plonk_recursion/transcript/transcript.test.cpp @@ -270,7 +270,7 @@ TEST(stdlib_transcript, validate_transcript) check_group_element("PI_Z"); check_group_element("PI_Z_OMEGA"); - info("builder gates = ", builder.get_num_gates()); + info("builder gates = ", builder.get_estimated_num_finalized_gates()); auto result = CircuitChecker::check(builder); EXPECT_EQ(result, true); diff --git a/barretenberg/cpp/src/barretenberg/stdlib/plonk_recursion/verifier/verifier.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/plonk_recursion/verifier/verifier.test.cpp index 033939939785..8f124540852b 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/plonk_recursion/verifier/verifier.test.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/plonk_recursion/verifier/verifier.test.cpp @@ -344,7 +344,7 @@ template class stdlib_verifier : public testing::Test { static void check_recursive_verification_circuit(OuterBuilder& outer_circuit, bool expected_result) { - info("number of gates in recursive verification circuit = ", outer_circuit.get_num_gates()); + info("number of gates in recursive verification circuit = ", outer_circuit.get_estimated_num_finalized_gates()); OuterComposer outer_composer; auto prover = outer_composer.create_prover(outer_circuit); auto verifier = outer_composer.create_verifier(outer_circuit); diff --git a/barretenberg/cpp/src/barretenberg/stdlib/primitives/bigfield/bigfield.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/bigfield/bigfield.test.cpp index b64208855c96..b2194698bf85 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/primitives/bigfield/bigfield.test.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/primitives/bigfield/bigfield.test.cpp @@ -125,10 +125,10 @@ template class stdlib_bigfield : public testing::Test { fr(uint256_t(inputs[1]).slice(fq_ct::NUM_LIMB_BITS * 2, fq_ct::NUM_LIMB_BITS * 4)))); b.set_origin_tag(challenge_origin_tag); - uint64_t before = builder.get_num_gates(); + uint64_t before = builder.get_estimated_num_finalized_gates(); fq_ct c = a * b; EXPECT_EQ(c.get_origin_tag(), first_two_merged_tag); - uint64_t after = builder.get_num_gates(); + uint64_t after = builder.get_estimated_num_finalized_gates(); // Don't profile 1st repetition. It sets up a lookup table, cost is not representative of a typical mul if (i == num_repetitions - 2) { std::cerr << "num gates per mul = " << after - before << std::endl; @@ -167,12 +167,12 @@ template class stdlib_bigfield : public testing::Test { fr(uint256_t(inputs[0]).slice(fq_ct::NUM_LIMB_BITS * 2, fq_ct::NUM_LIMB_BITS * 4)))); a.set_origin_tag(next_challenge_tag); - uint64_t before = builder.get_num_gates(); + uint64_t before = builder.get_estimated_num_finalized_gates(); fq_ct c = a.sqr(); // Squaring preserves tags EXPECT_EQ(a.get_origin_tag(), next_challenge_tag); - uint64_t after = builder.get_num_gates(); + uint64_t after = builder.get_estimated_num_finalized_gates(); if (i == num_repetitions - 1) { std::cerr << "num gates per mul = " << after - before << std::endl; benchmark_info(Builder::NAME_STRING, "Bigfield", "SQR", "Gate Count", after - before); @@ -218,12 +218,12 @@ template class stdlib_bigfield : public testing::Test { a.set_origin_tag(challenge_origin_tag); b.set_origin_tag(submitted_value_origin_tag); c.set_origin_tag(next_challenge_tag); - uint64_t before = builder.get_num_gates(); + uint64_t before = builder.get_estimated_num_finalized_gates(); fq_ct d = a.madd(b, { c }); // Madd merges tags EXPECT_EQ(d.get_origin_tag(), first_second_third_merged_tag); - uint64_t after = builder.get_num_gates(); + uint64_t after = builder.get_estimated_num_finalized_gates(); if (i == num_repetitions - 1) { std::cerr << "num gates per mul = " << after - before << std::endl; benchmark_info(Builder::NAME_STRING, "Bigfield", "MADD", "Gate Count", after - before); @@ -284,22 +284,22 @@ template class stdlib_bigfield : public testing::Test { mul_left[number_of_madds - 1].set_origin_tag(submitted_value_origin_tag); mul_right[number_of_madds - 1].set_origin_tag(challenge_origin_tag); to_add[number_of_madds - 1].set_origin_tag(next_challenge_tag); - uint64_t before = builder.get_num_gates(); + uint64_t before = builder.get_estimated_num_finalized_gates(); fq_ct f = fq_ct::mult_madd(mul_left, mul_right, to_add); // mult_madd merges tags EXPECT_EQ(f.get_origin_tag(), first_second_third_merged_tag); - uint64_t after = builder.get_num_gates(); + uint64_t after = builder.get_estimated_num_finalized_gates(); if (i == num_repetitions - 1) { std::cerr << "num gates with mult_madd = " << after - before << std::endl; benchmark_info(Builder::NAME_STRING, "Bigfield", "MULT_MADD", "Gate Count", after - before); } /** - before = builder.get_num_gates(); + before = builder.get_estimated_num_finalized_gates(); fq_ct f1(0); for (size_t j = 0; j < number_of_madds; j++) { f1 += mul_left[j] * mul_right[j] + to_add[j]; } - after = builder.get_num_gates(); + after = builder.get_estimated_num_finalized_gates(); if (i == num_repetitions - 1) { std::cerr << "num gates with regular multiply_add = " << after - before << std::endl; } @@ -351,11 +351,11 @@ template class stdlib_bigfield : public testing::Test { a.set_origin_tag(submitted_value_origin_tag); d.set_origin_tag(challenge_origin_tag); e.set_origin_tag(next_challenge_tag); - uint64_t before = builder.get_num_gates(); + uint64_t before = builder.get_estimated_num_finalized_gates(); fq_ct f = fq_ct::dual_madd(a, b, c, d, { e }); // dual_madd merges tags EXPECT_EQ(f.get_origin_tag(), first_second_third_merged_tag); - uint64_t after = builder.get_num_gates(); + uint64_t after = builder.get_estimated_num_finalized_gates(); if (i == num_repetitions - 1) { std::cerr << "num gates per mul = " << after - before << std::endl; } @@ -400,10 +400,10 @@ template class stdlib_bigfield : public testing::Test { fr(uint256_t(inputs[1]).slice(fq_ct::NUM_LIMB_BITS * 2, fq_ct::NUM_LIMB_BITS * 4)))); a.set_origin_tag(submitted_value_origin_tag); b.set_origin_tag(challenge_origin_tag); - uint64_t before = builder.get_num_gates(); + uint64_t before = builder.get_estimated_num_finalized_gates(); fq_ct c = a / b; EXPECT_EQ(c.get_origin_tag(), first_two_merged_tag); - uint64_t after = builder.get_num_gates(); + uint64_t after = builder.get_estimated_num_finalized_gates(); if (i == num_repetitions - 1) { std::cout << "num gates per div = " << after - before << std::endl; benchmark_info(Builder::NAME_STRING, "Bigfield", "DIV", "Gate Count", after - before); @@ -705,12 +705,12 @@ template class stdlib_bigfield : public testing::Test { fq_ct y2( witness_ct(&builder, fr(uint256_t(P2.y).slice(0, fq_ct::NUM_LIMB_BITS * 2))), witness_ct(&builder, fr(uint256_t(P2.y).slice(fq_ct::NUM_LIMB_BITS * 2, fq_ct::NUM_LIMB_BITS * 4)))); - uint64_t before = builder.get_num_gates(); + uint64_t before = builder.get_estimated_num_finalized_gates(); fq_ct lambda = (y2 - y1) / (x2 - x1); fq_ct x3 = lambda.sqr() - (x2 + x1); fq_ct y3 = (x1 - x3) * lambda - y1; - uint64_t after = builder.get_num_gates(); + uint64_t after = builder.get_estimated_num_finalized_gates(); std::cerr << "added gates = " << after - before << std::endl; g1::affine_element P3(g1::element(P1) + g1::element(P2)); fq expected_x = P3.x; @@ -1012,7 +1012,7 @@ template class stdlib_bigfield : public testing::Test { EXPECT_EQ(result.get_origin_tag(), first_two_merged_tag); - info("num gates = ", builder.get_num_gates()); + info("num gates = ", builder.get_estimated_num_finalized_gates()); bool check_result = CircuitChecker::check(builder); EXPECT_EQ(check_result, true); } @@ -1187,9 +1187,9 @@ TYPED_TEST(stdlib_bigfield, pow) // uint256_t(inputs[1]).slice(fq_ct::NUM_LIMB_BITS * 2, fq_ct::NUM_LIMB_BITS * // 4)))); // std::cerr << "starting mul" << std::endl; -// uint64_t before = builder.get_num_gates(); +// uint64_t before = builder.get_estimated_num_finalized_gates(); // fq_ct c = a * b; -// uint64_t after = builder.get_num_gates(); +// uint64_t after = builder.get_estimated_num_finalized_gates(); // if (i == num_repetitions - 1) { // std::cerr << "num gates per mul = " << after - before << std::endl; // } @@ -1227,9 +1227,9 @@ TYPED_TEST(stdlib_bigfield, pow) // fr( // uint256_t(inputs[0]).slice(fq_ct::NUM_LIMB_BITS * 2, fq_ct::NUM_LIMB_BITS * // 4)))); -// uint64_t before = builder.get_num_gates(); +// uint64_t before = builder.get_estimated_num_finalized_gates(); // fq_ct c = a.sqr(); -// uint64_t after = builder.get_num_gates(); +// uint64_t after = builder.get_estimated_num_finalized_gates(); // if (i == num_repetitions - 1) { // std::cerr << "num gates per sqr = " << after - before << std::endl; // } diff --git a/barretenberg/cpp/src/barretenberg/stdlib/primitives/biggroup/biggroup.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/biggroup/biggroup.test.cpp index 2c4a5d9640e0..2f7d5d5dd3bf 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/primitives/biggroup/biggroup.test.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/primitives/biggroup/biggroup.test.cpp @@ -48,7 +48,7 @@ template class stdlib_biggroup : public testing::Test { using bool_ct = stdlib::bool_t; static constexpr auto EXPECT_CIRCUIT_CORRECTNESS = [](Builder& builder, bool expected_result = true) { - info("num gates = ", builder.get_num_gates()); + info("num gates = ", builder.get_estimated_num_finalized_gates()); EXPECT_EQ(CircuitChecker::check(builder), expected_result); }; @@ -64,9 +64,9 @@ template class stdlib_biggroup : public testing::Test { element_ct a = element_ct::from_witness(&builder, input_a); element_ct b = element_ct::from_witness(&builder, input_b); - uint64_t before = builder.get_num_gates(); + uint64_t before = builder.get_estimated_num_finalized_gates(); element_ct c = a + b; - uint64_t after = builder.get_num_gates(); + uint64_t after = builder.get_estimated_num_finalized_gates(); if (i == num_repetitions - 1) { std::cout << "num gates per add = " << after - before << std::endl; benchmark_info(Builder::NAME_STRING, "Biggroup", "ADD", "Gate Count", after - before); @@ -288,9 +288,9 @@ template class stdlib_biggroup : public testing::Test { element_ct P = element_ct::from_witness(&builder, input); scalar_ct x = scalar_ct::from_witness(&builder, scalar); - std::cerr << "gates before mul " << builder.get_num_gates() << std::endl; + std::cerr << "gates before mul " << builder.get_estimated_num_finalized_gates() << std::endl; element_ct c = P * x; - std::cerr << "builder aftr mul " << builder.get_num_gates() << std::endl; + std::cerr << "builder aftr mul " << builder.get_estimated_num_finalized_gates() << std::endl; affine_element c_expected(element(input) * scalar); fq c_x_result(c.x.get_value().lo); @@ -738,9 +738,9 @@ template class stdlib_biggroup : public testing::Test { element_ct P = element_ct::from_witness(&builder, input); scalar_ct x = scalar_ct::from_witness(&builder, scalar); - std::cerr << "gates before mul " << builder.get_num_gates() << std::endl; + std::cerr << "gates before mul " << builder.get_estimated_num_finalized_gates() << std::endl; element_ct c = element_ct::wnaf_batch_mul({ P }, { x }); - std::cerr << "builder aftr mul " << builder.get_num_gates() << std::endl; + std::cerr << "builder aftr mul " << builder.get_estimated_num_finalized_gates() << std::endl; affine_element c_expected(element(input) * scalar); fq c_x_result(c.x.get_value().lo); @@ -908,10 +908,10 @@ template class stdlib_biggroup : public testing::Test { element_ct P = element_ct::from_witness(&builder, input); scalar_ct x = scalar_ct::from_witness(&builder, scalar); - std::cerr << "gates before mul " << builder.get_num_gates() << std::endl; + std::cerr << "gates before mul " << builder.get_estimated_num_finalized_gates() << std::endl; // Note: need >136 bits to complete this when working over bigfield element_ct c = element_ct::template wnaf_batch_mul<128>({ P }, { x }); - std::cerr << "builder aftr mul " << builder.get_num_gates() << std::endl; + std::cerr << "builder aftr mul " << builder.get_estimated_num_finalized_gates() << std::endl; affine_element c_expected(element(input) * scalar); fq c_x_result(c.x.get_value().lo); @@ -955,9 +955,9 @@ template class stdlib_biggroup : public testing::Test { scalar_ct x3 = scalar_ct::from_witness(&builder, scalar3); scalar_ct x4 = scalar_ct::from_witness(&builder, scalar4); - std::cerr << "gates before mul " << builder.get_num_gates() << std::endl; + std::cerr << "gates before mul " << builder.get_estimated_num_finalized_gates() << std::endl; element_ct c = element_ct::batch_mul({ P1, P2, P3, P4 }, { x1, x2, x3, x4 }, 128); - std::cerr << "builder aftr mul " << builder.get_num_gates() << std::endl; + std::cerr << "builder aftr mul " << builder.get_estimated_num_finalized_gates() << std::endl; element out = input1 * scalar1; out += (input2 * scalar2); diff --git a/barretenberg/cpp/src/barretenberg/stdlib/primitives/biggroup/biggroup_goblin.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/biggroup/biggroup_goblin.test.cpp index bca043bb0ece..9dd26890fbc6 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/primitives/biggroup/biggroup_goblin.test.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/primitives/biggroup/biggroup_goblin.test.cpp @@ -29,7 +29,7 @@ template class stdlib_biggroup_goblin : public testing::Test { using Builder = typename Curve::Builder; static constexpr auto EXPECT_CIRCUIT_CORRECTNESS = [](Builder& builder, bool expected_result = true) { - info("builder gates = ", builder.get_num_gates()); + info("builder gates = ", builder.get_estimated_num_finalized_gates()); EXPECT_EQ(CircuitChecker::check(builder), expected_result); }; diff --git a/barretenberg/cpp/src/barretenberg/stdlib/primitives/bool/bool.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/bool/bool.test.cpp index 575964a03429..fe2682617254 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/primitives/bool/bool.test.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/primitives/bool/bool.test.cpp @@ -28,7 +28,7 @@ TYPED_TEST(BoolTest, TestBasicOperations) STDLIB_TYPE_ALIASES auto builder = Builder(); - auto gates_before = builder.get_num_gates(); + auto gates_before = builder.get_estimated_num_finalized_gates(); bool_ct a = witness_ct(&builder, bb::fr::one()); bool_ct b = witness_ct(&builder, bb::fr::zero()); @@ -80,7 +80,7 @@ TYPED_TEST(BoolTest, TestBasicOperations) EXPECT_EQ(result, true); if (!IsSimulator) { - auto gates_after = builder.get_num_gates(); + auto gates_after = builder.get_estimated_num_finalized_gates(); EXPECT_EQ(gates_after - gates_before, 6UL); } } @@ -534,7 +534,7 @@ TYPED_TEST(BoolTest, ConditionalAssign) EXPECT_EQ(result.get_value(), condition ? left : right); } - info("num gates = ", builder.get_num_gates()); + info("num gates = ", builder.get_estimated_num_finalized_gates()); bool result = CircuitChecker::check(builder); EXPECT_EQ(result, true); } diff --git a/barretenberg/cpp/src/barretenberg/stdlib/primitives/field/array.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/field/array.test.cpp index 50d034c2590d..32663eccf02f 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/primitives/field/array.test.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/primitives/field/array.test.cpp @@ -38,7 +38,7 @@ template class stdlib_array : public testing::Test { auto filled_len = array_length(values_ct); EXPECT_EQ(filled_len.get_value(), filled); - info("num gates = ", builder.get_num_gates()); + info("num gates = ", builder.get_estimated_num_finalized_gates()); bool proof_result = CircuitChecker::check(builder); EXPECT_EQ(proof_result, true); } @@ -52,7 +52,7 @@ template class stdlib_array : public testing::Test { EXPECT_EQ(filled_len.get_value(), 0); EXPECT_TRUE(filled_len.is_constant()); - info("num gates = ", builder.get_num_gates()); + info("num gates = ", builder.get_estimated_num_finalized_gates()); bool proof_result = CircuitChecker::check(builder); EXPECT_EQ(proof_result, true); } @@ -97,7 +97,7 @@ template class stdlib_array : public testing::Test { auto popped = array_pop(values_ct); EXPECT_EQ(popped.get_value(), values[filled - 1]); - info("num gates = ", builder.get_num_gates()); + info("num gates = ", builder.get_estimated_num_finalized_gates()); bool proof_result = CircuitChecker::check(builder); EXPECT_EQ(proof_result, true); }; @@ -149,7 +149,7 @@ template class stdlib_array : public testing::Test { array_push(values_ct, value_ct); EXPECT_EQ(value_ct.get_value(), values_ct[filled].get_value()); - info("num gates = ", builder.get_num_gates()); + info("num gates = ", builder.get_estimated_num_finalized_gates()); bool proof_result = CircuitChecker::check(builder); EXPECT_EQ(proof_result, true); } @@ -189,7 +189,7 @@ template class stdlib_array : public testing::Test { EXPECT_EQ(num_pushes, ARRAY_LEN); - info("num gates = ", builder.get_num_gates()); + info("num gates = ", builder.get_estimated_num_finalized_gates()); bool proof_result = CircuitChecker::check(builder); EXPECT_EQ(proof_result, true); } @@ -246,7 +246,7 @@ template class stdlib_array : public testing::Test { is_empty = is_array_empty(values_ct); EXPECT_EQ(is_empty.get_value(), true); - info("num gates = ", builder.get_num_gates()); + info("num gates = ", builder.get_estimated_num_finalized_gates()); bool proof_result = CircuitChecker::check(builder); EXPECT_EQ(proof_result, true); }; @@ -278,7 +278,7 @@ template class stdlib_array : public testing::Test { bool proof_result = false; if (!builder.failed()) { - info("num gates = ", builder.get_num_gates()); + info("num gates = ", builder.get_estimated_num_finalized_gates()); proof_result = CircuitChecker::check(builder); } @@ -569,7 +569,7 @@ template class stdlib_array : public testing::Test { EXPECT_EQ(arr[2].get_values().first.get_value(), 3); EXPECT_EQ(arr[2].get_values().second.get_value(), 30); - info("num gates = ", builder.get_num_gates()); + info("num gates = ", builder.get_estimated_num_finalized_gates()); bool proof_result = CircuitChecker::check(builder); EXPECT_EQ(proof_result, true); } diff --git a/barretenberg/cpp/src/barretenberg/stdlib/primitives/field/field.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/field/field.test.cpp index eebf30dde7a8..8da6527284ca 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/primitives/field/field.test.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/primitives/field/field.test.cpp @@ -192,10 +192,10 @@ template class stdlib_field : public testing::Test { static void test_add_mul_with_constants() { Builder builder = Builder(); - auto gates_before = builder.get_num_gates(); + auto gates_before = builder.get_estimated_num_finalized_gates(); uint64_t expected = fidget(builder); if constexpr (!IsSimulator) { - auto gates_after = builder.get_num_gates(); + auto gates_after = builder.get_estimated_num_finalized_gates(); auto& block = builder.blocks.arithmetic; EXPECT_EQ(builder.get_variable(block.w_o()[block.size() - 1]), fr(expected)); info("Number of gates added", gates_after - gates_before); @@ -311,12 +311,12 @@ template class stdlib_field : public testing::Test { static void test_equality() { Builder builder = Builder(); - auto gates_before = builder.get_num_gates(); + auto gates_before = builder.get_estimated_num_finalized_gates(); field_ct a(witness_ct(&builder, 4)); field_ct b(witness_ct(&builder, 4)); bool_ct r = a == b; - auto gates_after = builder.get_num_gates(); + auto gates_after = builder.get_estimated_num_finalized_gates(); EXPECT_EQ(r.get_value(), true); fr x = r.get_value(); @@ -338,14 +338,14 @@ template class stdlib_field : public testing::Test { { Builder builder = Builder(); - auto gates_before = builder.get_num_gates(); + auto gates_before = builder.get_estimated_num_finalized_gates(); field_ct a(witness_ct(&builder, 4)); field_ct b(witness_ct(&builder, 3)); bool_ct r = a == b; EXPECT_EQ(r.get_value(), false); - auto gates_after = builder.get_num_gates(); + auto gates_after = builder.get_estimated_num_finalized_gates(); fr x = r.get_value(); EXPECT_EQ(x, fr(0)); @@ -366,7 +366,7 @@ template class stdlib_field : public testing::Test { { Builder builder = Builder(); - auto gates_before = builder.get_num_gates(); + auto gates_before = builder.get_estimated_num_finalized_gates(); field_ct a(witness_ct(&builder, 4)); field_ct b = 3; field_ct c = 7; @@ -374,7 +374,7 @@ template class stdlib_field : public testing::Test { EXPECT_EQ(r.get_value(), true); - auto gates_after = builder.get_num_gates(); + auto gates_after = builder.get_estimated_num_finalized_gates(); fr x = r.get_value(); EXPECT_EQ(x, fr(1)); @@ -424,10 +424,10 @@ template class stdlib_field : public testing::Test { field_ct d(&builder, fr::zero()); field_ct e(&builder, fr::one()); - const size_t old_n = builder.get_num_gates(); + const size_t old_n = builder.get_estimated_num_finalized_gates(); bool_ct d_zero = d.is_zero(); bool_ct e_zero = e.is_zero(); - const size_t new_n = builder.get_num_gates(); + const size_t new_n = builder.get_estimated_num_finalized_gates(); EXPECT_EQ(old_n, new_n); bool_ct a_zero = a.is_zero(); @@ -704,7 +704,7 @@ template class stdlib_field : public testing::Test { std::vector set = { a, b, c, d, e }; a.assert_is_in_set(set); - info("num gates = ", builder.get_num_gates()); + info("num gates = ", builder.get_estimated_num_finalized_gates()); bool result = CircuitChecker::check(builder); EXPECT_EQ(result, true); @@ -724,7 +724,7 @@ template class stdlib_field : public testing::Test { field_ct f(witness_ct(&builder, fr(6))); f.assert_is_in_set(set); - info("num gates = ", builder.get_num_gates()); + info("num gates = ", builder.get_estimated_num_finalized_gates()); bool result = CircuitChecker::check(builder); EXPECT_EQ(result, false); } @@ -743,7 +743,7 @@ template class stdlib_field : public testing::Test { EXPECT_EQ(result.get_value(), expected); - info("num gates = ", builder.get_num_gates()); + info("num gates = ", builder.get_estimated_num_finalized_gates()); bool check_result = CircuitChecker::check(builder); EXPECT_EQ(check_result, true); } @@ -761,7 +761,7 @@ template class stdlib_field : public testing::Test { EXPECT_EQ(result.get_value(), bb::fr(1)); - info("num gates = ", builder.get_num_gates()); + info("num gates = ", builder.get_estimated_num_finalized_gates()); bool check_result = CircuitChecker::check(builder); EXPECT_EQ(check_result, true); } @@ -778,7 +778,7 @@ template class stdlib_field : public testing::Test { field_ct result = base.pow(exponent); EXPECT_EQ(result.get_value(), base_val); - info("num gates = ", builder.get_num_gates()); + info("num gates = ", builder.get_estimated_num_finalized_gates()); bool check_result = CircuitChecker::check(builder); EXPECT_EQ(check_result, true); @@ -818,7 +818,7 @@ template class stdlib_field : public testing::Test { EXPECT_EQ(result.get_value(), expected); - info("num gates = ", builder.get_num_gates()); + info("num gates = ", builder.get_estimated_num_finalized_gates()); bool check_result = CircuitChecker::check(builder); EXPECT_EQ(check_result, true); } @@ -836,7 +836,7 @@ template class stdlib_field : public testing::Test { fr expected = base_val.pow(exponent_val); EXPECT_EQ(result.get_value(), expected); - info("num gates = ", builder.get_num_gates()); + info("num gates = ", builder.get_estimated_num_finalized_gates()); bool check_result = CircuitChecker::check(builder); EXPECT_EQ(check_result, true); @@ -877,7 +877,7 @@ template class stdlib_field : public testing::Test { if (!IsSimulator) { EXPECT_EQ(value_ct.get_witness_index() + 1, first_copy.get_witness_index()); EXPECT_EQ(value_ct.get_witness_index() + 2, second_copy.get_witness_index()); - info("num gates = ", builder.get_num_gates()); + info("num gates = ", builder.get_estimated_num_finalized_gates()); } bool result = CircuitChecker::check(builder); diff --git a/barretenberg/cpp/src/barretenberg/stdlib/primitives/group/cycle_group.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/group/cycle_group.test.cpp index 65f6ca0647cc..37a3c19f47c8 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/primitives/group/cycle_group.test.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/primitives/group/cycle_group.test.cpp @@ -143,11 +143,11 @@ TYPED_TEST(CycleGroupTest, TestDbl) auto lhs = TestFixture::generators[0]; cycle_group_ct a = cycle_group_ct::from_witness(&builder, lhs); cycle_group_ct c; - std::cout << "pre = " << builder.get_num_gates() << std::endl; + std::cout << "pre = " << builder.get_estimated_num_finalized_gates() << std::endl; for (size_t i = 0; i < 3; ++i) { c = a.dbl(); } - std::cout << "post = " << builder.get_num_gates() << std::endl; + std::cout << "post = " << builder.get_estimated_num_finalized_gates() << std::endl; AffineElement expected(Element(lhs).dbl()); AffineElement result = c.get_value(); EXPECT_EQ(result, expected); diff --git a/barretenberg/cpp/src/barretenberg/stdlib/primitives/uint/uint.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/uint/uint.test.cpp index 6a0c281f05dc..62a289025bae 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/primitives/uint/uint.test.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/primitives/uint/uint.test.cpp @@ -865,7 +865,7 @@ template class stdlib_uint : public testing::Test { sub_integers(true, false); sub_integers(true, true); - printf("builder gates = %zu\n", builder.get_num_gates()); + printf("builder gates = %zu\n", builder.get_estimated_num_finalized_gates()); bool proof_result = CircuitChecker::check(builder); EXPECT_EQ(proof_result, true); @@ -901,7 +901,7 @@ template class stdlib_uint : public testing::Test { mul_integers(true, false); mul_integers(true, true); - printf("builder gates = %zu\n", builder.get_num_gates()); + printf("builder gates = %zu\n", builder.get_estimated_num_finalized_gates()); bool proof_result = CircuitChecker::check(builder); EXPECT_EQ(proof_result, true); @@ -957,7 +957,7 @@ template class stdlib_uint : public testing::Test { divide_integers(true, false, false, true, false); divide_integers(true, true, false, true, false); - printf("builder gates = %zu\n", builder.get_num_gates()); + printf("builder gates = %zu\n", builder.get_estimated_num_finalized_gates()); bool proof_result = CircuitChecker::check(builder); EXPECT_EQ(proof_result, true); @@ -1008,7 +1008,7 @@ template class stdlib_uint : public testing::Test { mod_integers(true, false, false, true, false); mod_integers(true, true, false, true, false); - printf("builder gates = %zu\n", builder.get_num_gates()); + printf("builder gates = %zu\n", builder.get_estimated_num_finalized_gates()); bool proof_result = CircuitChecker::check(builder); EXPECT_EQ(proof_result, true); @@ -1203,7 +1203,7 @@ template class stdlib_uint : public testing::Test { and_integers(true, false); and_integers(true, true); - printf("builder gates = %zu\n", builder.get_num_gates()); + printf("builder gates = %zu\n", builder.get_estimated_num_finalized_gates()); bool proof_result = CircuitChecker::check(builder); EXPECT_EQ(proof_result, true); @@ -1238,7 +1238,7 @@ template class stdlib_uint : public testing::Test { xor_integers(true, false); xor_integers(true, true); - printf("builder gates = %zu\n", builder.get_num_gates()); + printf("builder gates = %zu\n", builder.get_estimated_num_finalized_gates()); bool proof_result = CircuitChecker::check(builder); EXPECT_EQ(proof_result, true); @@ -1277,7 +1277,7 @@ template class stdlib_uint : public testing::Test { or_integers(true, false); or_integers(true, true); - printf("builder gates = %zu\n", builder.get_num_gates()); + printf("builder gates = %zu\n", builder.get_estimated_num_finalized_gates()); bool proof_result = CircuitChecker::check(builder); EXPECT_EQ(proof_result, true); @@ -1307,7 +1307,7 @@ template class stdlib_uint : public testing::Test { not_integers(true, false); not_integers(true, true); - printf("builder gates = %zu\n", builder.get_num_gates()); + printf("builder gates = %zu\n", builder.get_estimated_num_finalized_gates()); bool proof_result = CircuitChecker::check(builder); EXPECT_EQ(proof_result, true); @@ -1346,7 +1346,7 @@ template class stdlib_uint : public testing::Test { compare_integers(false, true, false); // b > a compare_integers(true, false, false); // b = a - printf("builder gates = %zu\n", builder.get_num_gates()); + printf("builder gates = %zu\n", builder.get_estimated_num_finalized_gates()); bool proof_result = CircuitChecker::check(builder); EXPECT_EQ(proof_result, true); @@ -1387,7 +1387,7 @@ template class stdlib_uint : public testing::Test { compare_integers(false, true, false); compare_integers(true, false, false); - printf("builder gates = %zu\n", builder.get_num_gates()); + printf("builder gates = %zu\n", builder.get_estimated_num_finalized_gates()); bool proof_result = CircuitChecker::check(builder); EXPECT_EQ(proof_result, true); @@ -1427,7 +1427,7 @@ template class stdlib_uint : public testing::Test { compare_integers(false, true, false); compare_integers(true, false, false); - printf("builder gates = %zu\n", builder.get_num_gates()); + printf("builder gates = %zu\n", builder.get_estimated_num_finalized_gates()); bool proof_result = CircuitChecker::check(builder); EXPECT_EQ(proof_result, true); @@ -1468,7 +1468,7 @@ template class stdlib_uint : public testing::Test { compare_integers(false, true, false); compare_integers(true, false, false); - printf("builder gates = %zu\n", builder.get_num_gates()); + printf("builder gates = %zu\n", builder.get_estimated_num_finalized_gates()); bool proof_result = CircuitChecker::check(builder); EXPECT_EQ(proof_result, true); @@ -1509,7 +1509,7 @@ template class stdlib_uint : public testing::Test { compare_integers(false, true, false); compare_integers(true, false, false); - printf("builder gates = %zu\n", builder.get_num_gates()); + printf("builder gates = %zu\n", builder.get_estimated_num_finalized_gates()); bool proof_result = CircuitChecker::check(builder); EXPECT_EQ(proof_result, true); @@ -1550,7 +1550,7 @@ template class stdlib_uint : public testing::Test { compare_integers(false, true, false); compare_integers(true, false, false); - printf("builder gates = %zu\n", builder.get_num_gates()); + printf("builder gates = %zu\n", builder.get_estimated_num_finalized_gates()); bool proof_result = CircuitChecker::check(builder); EXPECT_EQ(proof_result, true); @@ -1578,7 +1578,7 @@ template class stdlib_uint : public testing::Test { not_integer(false); not_integer(false); - printf("builder gates = %zu\n", builder.get_num_gates()); + printf("builder gates = %zu\n", builder.get_estimated_num_finalized_gates()); bool proof_result = CircuitChecker::check(builder); EXPECT_EQ(proof_result, true); @@ -1606,7 +1606,7 @@ template class stdlib_uint : public testing::Test { shift_integer(true, i); } - printf("builder gates = %zu\n", builder.get_num_gates()); + printf("builder gates = %zu\n", builder.get_estimated_num_finalized_gates()); bool proof_result = CircuitChecker::check(builder); EXPECT_EQ(proof_result, true); @@ -1634,7 +1634,7 @@ template class stdlib_uint : public testing::Test { shift_integer(false, i); } - printf("builder gates = %zu\n", builder.get_num_gates()); + printf("builder gates = %zu\n", builder.get_estimated_num_finalized_gates()); bool proof_result = CircuitChecker::check(builder); EXPECT_EQ(proof_result, true); @@ -1666,7 +1666,7 @@ template class stdlib_uint : public testing::Test { ror_integer(false, i); } - printf("builder gates = %zu\n", builder.get_num_gates()); + printf("builder gates = %zu\n", builder.get_estimated_num_finalized_gates()); bool proof_result = CircuitChecker::check(builder); EXPECT_EQ(proof_result, true); @@ -1698,7 +1698,7 @@ template class stdlib_uint : public testing::Test { rol_integer(false, i); } - printf("builder gates = %zu\n", builder.get_num_gates()); + printf("builder gates = %zu\n", builder.get_estimated_num_finalized_gates()); bool proof_result = CircuitChecker::check(builder); EXPECT_EQ(proof_result, true); @@ -1731,7 +1731,7 @@ template class stdlib_uint : public testing::Test { bit_test(false); bit_test(true); - printf("builder gates = %zu\n", builder.get_num_gates()); + printf("builder gates = %zu\n", builder.get_estimated_num_finalized_gates()); bool proof_result = CircuitChecker::check(builder); EXPECT_EQ(proof_result, true); @@ -1939,7 +1939,7 @@ TEST(stdlib_uint32, test_accumulators_plookup_uint32) EXPECT_EQ(result, expected); } - info("builder gates = ", builder.get_num_gates()); + info("builder gates = ", builder.get_estimated_num_finalized_gates()); bool proof_result = CircuitChecker::check(builder); EXPECT_EQ(proof_result, true); diff --git a/barretenberg/cpp/src/barretenberg/stdlib/protogalaxy_verifier/protogalaxy_recursive_verifier.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/protogalaxy_verifier/protogalaxy_recursive_verifier.test.cpp index 31a30ee77bb4..84a1b22d0364 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/protogalaxy_verifier/protogalaxy_recursive_verifier.test.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/protogalaxy_verifier/protogalaxy_recursive_verifier.test.cpp @@ -299,7 +299,7 @@ template class ProtogalaxyRecursiveTests : public tes auto recursive_verifier_accumulator = verifier.verify_folding_proof(stdlib_proof); auto native_verifier_acc = std::make_shared(recursive_verifier_accumulator->get_value()); - info("Folding Recursive Verifier: num gates = ", folding_circuit.get_num_gates()); + info("Folding Recursive Verifier: num gates = ", folding_circuit.get_estimated_num_finalized_gates()); // Check for a failure flag in the recursive verifier circuit EXPECT_EQ(folding_circuit.failed(), false) << folding_circuit.err(); @@ -454,7 +454,8 @@ template class ProtogalaxyRecursiveTests : public tes // Check that the proofs are the same size and that the verifier circuits have the same number of gates EXPECT_EQ(proof_1.size(), proof_2.size()); - EXPECT_EQ(verifier_circuit_1.get_num_gates(), verifier_circuit_2.get_num_gates()); + EXPECT_EQ(verifier_circuit_1.get_estimated_num_finalized_gates(), + verifier_circuit_2.get_estimated_num_finalized_gates()); // The circuit blocks (selectors + wires) fully determine the circuit - check that they are identical if constexpr (!IsSimulator) { diff --git a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/circuit_builder_base.hpp b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/circuit_builder_base.hpp index e07be8067560..12ab5e5b5437 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/circuit_builder_base.hpp +++ b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/circuit_builder_base.hpp @@ -62,8 +62,9 @@ template class CircuitBuilderBase { bool operator==(const CircuitBuilderBase& other) const = default; - virtual size_t get_num_gates() const; - virtual void print_num_gates() const; + virtual size_t get_num_finalized_gates() const; + virtual size_t get_estimated_num_finalized_gates() const; + virtual void print_num_estimated_finalized_gates() const; virtual size_t get_num_variables() const; // TODO(#216)(Adrian): Feels wrong to let the zero_idx be changed. uint32_t zero_idx = 0; diff --git a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/circuit_builder_base_impl.hpp b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/circuit_builder_base_impl.hpp index 93640e9a8eba..f6efc04109da 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/circuit_builder_base_impl.hpp +++ b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/circuit_builder_base_impl.hpp @@ -13,12 +13,17 @@ template CircuitBuilderBase::CircuitBuilderBase(size_t size_ real_variable_tags.reserve(size_hint * 3); } -template size_t CircuitBuilderBase::get_num_gates() const +template size_t CircuitBuilderBase::get_num_finalized_gates() const { return num_gates; } -template void CircuitBuilderBase::print_num_gates() const +template size_t CircuitBuilderBase::get_estimated_num_finalized_gates() const +{ + return num_gates; +} + +template void CircuitBuilderBase::print_num_estimated_finalized_gates() const { std::cout << num_gates << std::endl; } diff --git a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/circuit_simulator.hpp b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/circuit_simulator.hpp index 7734a0d90d53..a7708cbf03c6 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/circuit_simulator.hpp +++ b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/circuit_simulator.hpp @@ -76,7 +76,7 @@ class CircuitSimulatorBN254 { void fix_witness([[maybe_unused]] const uint32_t witness_index, [[maybe_unused]] const bb::fr& witness_value){}; - [[nodiscard]] size_t get_num_gates() const { return 0; } + [[nodiscard]] size_t get_estimated_num_finalized_gates() const { return 0; } void create_add_gate([[maybe_unused]] const add_triple_& in){}; void create_mul_gate([[maybe_unused]] const mul_triple_& in){}; diff --git a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/mega_circuit_builder.hpp b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/mega_circuit_builder.hpp index 3663dcb15994..0ac5518efe20 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/mega_circuit_builder.hpp +++ b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/mega_circuit_builder.hpp @@ -109,7 +109,7 @@ template class MegaCircuitBuilder_ : public UltraCircuitBuilder_ class MegaCircuitBuilder_ : public UltraCircuitBuilder_>::get_num_gates(); + auto num_ultra_gates = UltraCircuitBuilder_>::get_estimated_num_finalized_gates(); auto num_goblin_ecc_op_gates = this->blocks.ecc_op.size(); return num_ultra_gates + num_goblin_ecc_op_gates; } @@ -141,9 +141,9 @@ template class MegaCircuitBuilder_ : public UltraCircuitBuilder_ builder; // instantiate new builder - size_t num_gates_prior = builder.get_num_gates(); + size_t num_gates_prior = builder.get_estimated_num_finalized_gates(); builder.add_ultra_and_mega_gates_to_ensure_all_polys_are_non_zero(); - size_t num_gates_post = builder.get_num_gates(); // accounts for finalization gates + size_t num_gates_post = builder.get_estimated_num_finalized_gates(); // accounts for finalization gates return num_gates_post - num_gates_prior; } @@ -152,14 +152,14 @@ template class MegaCircuitBuilder_ : public UltraCircuitBuilder_>::get_num_gates_split_into_components( + UltraCircuitBuilder_>::get_num_estimated_gates_split_into_components( count, rangecount, romcount, ramcount, nnfcount); auto num_goblin_ecc_op_gates = this->blocks.ecc_op.size(); 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 9ded09c1b666..180908807e54 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 @@ -2866,7 +2866,7 @@ void UltraCircuitBuilder_::create_poseidon2_internal_gate(const poseidon2_in template uint256_t UltraCircuitBuilder_::hash_circuit() { - finalize_circuit(); + finalize_circuit(/*ensure_nonzero=*/false); size_t sum_of_block_sizes(0); for (auto& block : blocks.get()) { diff --git a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_circuit_builder.hpp b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_circuit_builder.hpp index 83d036761c11..cdf460d035fd 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_circuit_builder.hpp +++ b/barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_circuit_builder.hpp @@ -421,7 +421,7 @@ class UltraCircuitBuilder_ : public CircuitBuilderBasenum_gates; @@ -581,6 +581,16 @@ class UltraCircuitBuilder_ : public CircuitBuilderBasenum_gates; + } + /** * @brief Get the final number of gates in a circuit, which consists of the sum of: * 1) Current number number of actual gates @@ -596,7 +606,7 @@ class UltraCircuitBuilder_ : public CircuitBuilderBase builder; // instantiate new builder - size_t num_gates_prior = builder.get_num_gates(); + size_t num_gates_prior = builder.get_estimated_num_finalized_gates(); builder.add_gates_to_ensure_all_polys_are_non_zero(); - size_t num_gates_post = builder.get_num_gates(); // accounts for finalization gates + size_t num_gates_post = builder.get_estimated_num_finalized_gates(); // accounts for finalization gates return num_gates_post - num_gates_prior; } @@ -654,7 +664,26 @@ class UltraCircuitBuilder_ : public CircuitBuilderBasepublic_inputs.size(); + info("num_filled_gates: ", num_filled_gates); + return std::max(minimum_circuit_size, num_filled_gates) + NUM_RESERVED_GATES; + } + + /** + * @brief Get the estimated size of the circuit if it was finalized now * * @details This method estimates the size of the circuit without rounding up to the next power of 2. It takes into * account the possibility that the tables will dominate the size and checks both the estimated plookup argument @@ -662,10 +691,10 @@ class UltraCircuitBuilder_ : public CircuitBuilderBasepublic_inputs.size(); + auto num_filled_gates = get_estimated_num_finalized_gates() + this->public_inputs.size(); return std::max(minimum_circuit_size, num_filled_gates) + NUM_RESERVED_GATES; } @@ -673,14 +702,14 @@ class UltraCircuitBuilder_ : public CircuitBuilderBase class DeciderProvingKey_ { std::shared_ptr commitment_key = nullptr) { BB_OP_COUNT_TIME_NAME("DeciderProvingKey(Circuit&)"); - circuit.finalize_circuit(/* ensure_nonzero = */ true); + circuit.finalize_circuit(/*ensure_nonzero=*/true); // Set flag indicating whether the polynomials will be constructed with fixed block sizes for each gate type const bool is_structured = (trace_structure != TraceStructure::NONE); diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/circuit_builder.cpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/circuit_builder.cpp index af82fc926108..22914cecf497 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/circuit_builder.cpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/circuit_builder.cpp @@ -17,7 +17,7 @@ namespace bb { AvmCircuitBuilder::ProverPolynomials AvmCircuitBuilder::compute_polynomials() const { - const size_t num_rows = get_num_gates(); + const size_t num_rows = get_estimated_num_finalized_gates(); const size_t circuit_subgroup_size = get_circuit_subgroup_size(); ASSERT(num_rows <= circuit_subgroup_size); ProverPolynomials polys; @@ -730,7 +730,7 @@ bool AvmCircuitBuilder::check_circuit() const auto polys = compute_polynomials(); // We'll only check up to the generated trace which might be << than the circuit subgroup size. - const size_t num_rows = get_num_gates(); + const size_t num_rows = get_estimated_num_finalized_gates(); // Checks that we will run. using SignalErrorFn = const std::function&; diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/circuit_builder.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/circuit_builder.hpp index 528b0428dc01..a59e1044b0bb 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/circuit_builder.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/circuit_builder.hpp @@ -35,7 +35,7 @@ class AvmCircuitBuilder { bool check_circuit() const; - size_t get_num_gates() const { return num_rows; } + size_t get_estimated_num_finalized_gates() const { return num_rows; } size_t get_circuit_subgroup_size() const { return CIRCUIT_SUBGROUP_SIZE; } diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/recursion/avm_recursive_verifier.test.cpp b/barretenberg/cpp/src/barretenberg/vm/avm/recursion/avm_recursive_verifier.test.cpp index 5280e49e6161..10c446347397 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/recursion/avm_recursive_verifier.test.cpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/recursion/avm_recursive_verifier.test.cpp @@ -55,7 +55,7 @@ class AvmRecursiveTests : public ::testing::Test { builder.set_trace(std::move(trace)); builder.check_circuit(); - vinfo("inner builder - num gates: ", builder.get_num_gates()); + vinfo("inner builder - num gates: ", builder.get_estimated_num_finalized_gates()); return builder; } diff --git a/barretenberg/ts/src/barretenberg/backend.ts b/barretenberg/ts/src/barretenberg/backend.ts index 9d1fd1a2b673..243ee8dc1b3b 100644 --- a/barretenberg/ts/src/barretenberg/backend.ts +++ b/barretenberg/ts/src/barretenberg/backend.ts @@ -20,10 +20,7 @@ export class UltraPlonkBackend { const honkRecursion = false; // eslint-disable-next-line @typescript-eslint/no-unused-vars - const [_exact, _total, subgroupSize] = await api.acirGetCircuitSizes( - this.acirUncompressedBytecode, - honkRecursion, - ); + const [_total, subgroupSize] = await api.acirGetCircuitSizes(this.acirUncompressedBytecode, honkRecursion); await api.initSRSForCircuitSize(subgroupSize); this.acirComposer = await api.acirNewAcirComposer(subgroupSize); diff --git a/barretenberg/ts/src/barretenberg/index.ts b/barretenberg/ts/src/barretenberg/index.ts index cb8c6607751f..1d225f6f0601 100644 --- a/barretenberg/ts/src/barretenberg/index.ts +++ b/barretenberg/ts/src/barretenberg/index.ts @@ -62,7 +62,7 @@ export class Barretenberg extends BarretenbergApi { async acirInitSRS(bytecode: Uint8Array, honkRecursion: boolean): Promise { // eslint-disable-next-line @typescript-eslint/no-unused-vars - const [_exact, _total, subgroupSize] = await this.acirGetCircuitSizes(bytecode, honkRecursion); + const [_total, subgroupSize] = await this.acirGetCircuitSizes(bytecode, honkRecursion); return this.initSRSForCircuitSize(subgroupSize); } diff --git a/barretenberg/ts/src/barretenberg_api/index.ts b/barretenberg/ts/src/barretenberg_api/index.ts index b55c29b5f9c6..d25b0adbc319 100644 --- a/barretenberg/ts/src/barretenberg_api/index.ts +++ b/barretenberg/ts/src/barretenberg_api/index.ts @@ -333,7 +333,7 @@ export class BarretenbergApi { honkRecursion: boolean, ): Promise<[number, number, number]> { const inArgs = [constraintSystemBuf, honkRecursion].map(serializeBufferable); - const outTypes: OutputType[] = [NumberDeserializer(), NumberDeserializer(), NumberDeserializer()]; + const outTypes: OutputType[] = [NumberDeserializer(), NumberDeserializer()]; const result = await this.wasm.callWasmExport( 'acir_get_circuit_sizes', inArgs, @@ -909,7 +909,7 @@ export class BarretenbergApiSync { acirGetCircuitSizes(constraintSystemBuf: Uint8Array, honkRecursion: boolean): [number, number, number] { const inArgs = [constraintSystemBuf, honkRecursion].map(serializeBufferable); - const outTypes: OutputType[] = [NumberDeserializer(), NumberDeserializer(), NumberDeserializer()]; + const outTypes: OutputType[] = [NumberDeserializer(), NumberDeserializer()]; const result = this.wasm.callWasmExport( 'acir_get_circuit_sizes', inArgs, diff --git a/barretenberg/ts/src/main.ts b/barretenberg/ts/src/main.ts index 1899cd1b97e3..736ee0b7bf7f 100755 --- a/barretenberg/ts/src/main.ts +++ b/barretenberg/ts/src/main.ts @@ -33,6 +33,7 @@ function getBytecode(bytecodePath: string) { return decompressed; } +// TODO(https://github.com/AztecProtocol/barretenberg/issues/1126): split this into separate Plonk and Honk functions as their gate count differs async function getGatesUltra(bytecodePath: string, honkRecursion: boolean, api: Barretenberg) { const { total } = await computeCircuitSize(bytecodePath, honkRecursion, api); return total; @@ -47,8 +48,8 @@ function getWitness(witnessPath: string) { async function computeCircuitSize(bytecodePath: string, honkRecursion: boolean, api: Barretenberg) { debug(`computing circuit size...`); const bytecode = getBytecode(bytecodePath); - const [exact, total, subgroup] = await api.acirGetCircuitSizes(bytecode, honkRecursion); - return { exact, total, subgroup }; + const [total, subgroup] = await api.acirGetCircuitSizes(bytecode, honkRecursion); + return { total, subgroup }; } async function initUltraPlonk(bytecodePath: string, crsPath: string, subgroupSizeOverride = -1, honkRecursion = false) { diff --git a/bb-pilcom/bb-pil-backend/templates/circuit_builder.cpp.hbs b/bb-pilcom/bb-pil-backend/templates/circuit_builder.cpp.hbs index 53215800f862..d3628a4c0aef 100644 --- a/bb-pilcom/bb-pil-backend/templates/circuit_builder.cpp.hbs +++ b/bb-pilcom/bb-pil-backend/templates/circuit_builder.cpp.hbs @@ -16,7 +16,7 @@ namespace bb { {{name}}CircuitBuilder::ProverPolynomials {{name}}CircuitBuilder::compute_polynomials() const { - const size_t num_rows = get_num_gates(); + const size_t num_rows = get_estimated_num_finalized_gates(); const size_t circuit_subgroup_size = get_circuit_subgroup_size(); ASSERT(num_rows <= circuit_subgroup_size); ProverPolynomials polys; @@ -77,7 +77,7 @@ bool {{name}}CircuitBuilder::check_circuit() const { auto polys = compute_polynomials(); // We'll only check up to the generated trace which might be << than the circuit subgroup size. - const size_t num_rows = get_num_gates(); + const size_t num_rows = get_estimated_num_finalized_gates(); // Checks that we will run. using SignalErrorFn = const std::function&; diff --git a/bb-pilcom/bb-pil-backend/templates/circuit_builder.hpp.hbs b/bb-pilcom/bb-pil-backend/templates/circuit_builder.hpp.hbs index 4e2cfec72a45..21f51569bccd 100644 --- a/bb-pilcom/bb-pil-backend/templates/circuit_builder.hpp.hbs +++ b/bb-pilcom/bb-pil-backend/templates/circuit_builder.hpp.hbs @@ -35,7 +35,7 @@ class {{name}}CircuitBuilder { bool check_circuit() const; - size_t get_num_gates() const { return num_rows; } + size_t get_estimated_num_finalized_gates() const { return num_rows; } size_t get_circuit_subgroup_size() const { return CIRCUIT_SUBGROUP_SIZE; }