Skip to content

Commit 2d8028a

Browse files
committed
perf: split ultra honk test circuit helper
1 parent db34cbc commit 2d8028a

5 files changed

Lines changed: 54 additions & 17 deletions

File tree

barretenberg/cpp/src/barretenberg/ultra_honk/databus.test.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@
55

66
#include "barretenberg/circuit_checker/circuit_checker.hpp"
77
#include "barretenberg/common/log.hpp"
8-
#include "barretenberg/goblin/mock_circuits.hpp"
98
#include "barretenberg/honk/prover_instance_inspector.hpp"
109
#include "barretenberg/stdlib_circuit_builders/mega_circuit_builder.hpp"
1110
#include "barretenberg/stdlib_circuit_builders/ultra_circuit_builder.hpp"
1211

12+
#include "barretenberg/ultra_honk/mega_circuit_test_helper.hpp"
1313
#include "barretenberg/ultra_honk/ultra_prover.hpp"
1414
#include "barretenberg/ultra_honk/ultra_verifier.hpp"
1515

@@ -48,7 +48,7 @@ template <typename Flavor> class DataBusTests : public ::testing::Test {
4848
{
4949
auto op_queue = std::make_shared<bb::ECCOpQueue>();
5050
auto builder = MegaCircuitBuilder{ op_queue };
51-
GoblinMockCircuits::construct_simple_circuit(builder);
51+
MegaCircuitTestHelper::construct_simple_circuit(builder);
5252
return builder;
5353
}
5454

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
#pragma once
2+
3+
#include "barretenberg/numeric/random/engine.hpp"
4+
#include "barretenberg/stdlib/special_public_inputs/special_public_inputs.hpp"
5+
#include "barretenberg/stdlib_circuit_builders/mega_circuit_builder.hpp"
6+
#include "barretenberg/stdlib_circuit_builders/mock_circuits.hpp"
7+
8+
namespace bb {
9+
10+
class MegaCircuitTestHelper {
11+
public:
12+
using Curve = curve::BN254;
13+
using FF = Curve::ScalarField;
14+
using Point = Curve::AffineElement;
15+
16+
static void add_some_ecc_op_gates(MegaCircuitBuilder& builder)
17+
{
18+
auto& engine = numeric::get_debug_randomness();
19+
20+
for (size_t i = 0; i < 3; ++i) {
21+
auto point = Point::random_element(&engine);
22+
auto scalar = FF::random_element(&engine);
23+
builder.queue_ecc_add_accum(point);
24+
builder.queue_ecc_mul_accum(point, scalar);
25+
}
26+
builder.queue_ecc_eq();
27+
}
28+
29+
static void construct_simple_circuit(MegaCircuitBuilder& builder)
30+
{
31+
add_some_ecc_op_gates(builder);
32+
MockCircuits::construct_arithmetic_circuit(builder);
33+
stdlib::recursion::honk::DefaultIO<MegaCircuitBuilder>::add_default(builder);
34+
}
35+
};
36+
37+
} // namespace bb

barretenberg/cpp/src/barretenberg/ultra_honk/mega_honk.test.cpp

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,12 @@
33
#include <gtest/gtest.h>
44

55
#include "barretenberg/common/log.hpp"
6-
#include "barretenberg/goblin/mock_circuits.hpp"
76
#include "barretenberg/honk/proof_length.hpp"
87
#include "barretenberg/honk/relation_checker.hpp"
98
#include "barretenberg/stdlib_circuit_builders/mega_circuit_builder.hpp"
9+
#include "barretenberg/stdlib_circuit_builders/mock_circuits.hpp"
1010
#include "barretenberg/stdlib_circuit_builders/ultra_circuit_builder.hpp"
11+
#include "barretenberg/ultra_honk/mega_circuit_test_helper.hpp"
1112
#include "barretenberg/ultra_honk/oink_prover.hpp"
1213
#include "barretenberg/ultra_honk/ultra_prover.hpp"
1314
#include "barretenberg/ultra_honk/ultra_verifier.hpp"
@@ -90,7 +91,7 @@ TYPED_TEST(MegaHonkTests, Basic)
9091
using Flavor = TypeParam;
9192
typename Flavor::CircuitBuilder builder;
9293

93-
GoblinMockCircuits::construct_simple_circuit(builder);
94+
MegaCircuitTestHelper::construct_simple_circuit(builder);
9495

9596
// Construct and verify Honk proof
9697
bool honk_verified = this->construct_and_verify_honk_proof(builder);
@@ -115,7 +116,7 @@ TYPED_TEST(MegaHonkTests, DynamicVirtualSizeIncrease)
115116
using Prover = UltraProver_<Flavor>;
116117
using Verifier = UltraVerifier_<Flavor, DefaultIO>;
117118

118-
GoblinMockCircuits::construct_simple_circuit(builder);
119+
MegaCircuitTestHelper::construct_simple_circuit(builder);
119120

120121
auto builder_copy = builder;
121122

@@ -179,7 +180,7 @@ TYPED_TEST(MegaHonkTests, PolySwap)
179180

180181
// Construct a simple circuit and make a copy of it
181182
Builder builder;
182-
GoblinMockCircuits::construct_simple_circuit(builder);
183+
MegaCircuitTestHelper::construct_simple_circuit(builder);
183184
auto builder_copy = builder;
184185

185186
// Construct two identical proving keys
@@ -238,7 +239,7 @@ TYPED_TEST(MegaHonkTests, DyadicSizeJumpsToProtectMaskingArea)
238239

239240
// Determine the baseline dyadic size (with ECC ops + finalization overhead, no extra user gates)
240241
Builder baseline_builder;
241-
GoblinMockCircuits::construct_simple_circuit(baseline_builder);
242+
MegaCircuitTestHelper::construct_simple_circuit(baseline_builder);
242243
auto baseline_instance = std::make_shared<ProverInstance>(baseline_builder);
243244
const size_t baseline_dyadic = baseline_instance->dyadic_size();
244245

@@ -248,7 +249,7 @@ TYPED_TEST(MegaHonkTests, DyadicSizeJumpsToProtectMaskingArea)
248249
bool found_jump = false;
249250
for (size_t num_extra_gates = 0; num_extra_gates <= baseline_dyadic; num_extra_gates++) {
250251
Builder builder;
251-
GoblinMockCircuits::construct_simple_circuit(builder);
252+
MegaCircuitTestHelper::construct_simple_circuit(builder);
252253
if (num_extra_gates > 0) {
253254
MockCircuits::add_arithmetic_gates(builder, num_extra_gates);
254255
}
@@ -266,7 +267,7 @@ TYPED_TEST(MegaHonkTests, DyadicSizeJumpsToProtectMaskingArea)
266267

267268
// Prove and verify at the tightest packing (right before the jump)
268269
Builder tight_builder;
269-
GoblinMockCircuits::construct_simple_circuit(tight_builder);
270+
MegaCircuitTestHelper::construct_simple_circuit(tight_builder);
270271
MockCircuits::add_arithmetic_gates(tight_builder, num_extra_gates - 1);
271272
bool verified = this->construct_and_verify_honk_proof(tight_builder);
272273
EXPECT_TRUE(verified);
@@ -296,7 +297,7 @@ TYPED_TEST(MegaHonkTests, WitnessPolynomialsMasked)
296297
using Builder = typename Flavor::CircuitBuilder;
297298

298299
Builder builder;
299-
GoblinMockCircuits::construct_simple_circuit(builder);
300+
MegaCircuitTestHelper::construct_simple_circuit(builder);
300301
auto prover_instance = std::make_shared<ProverInstance_<Flavor>>(builder);
301302

302303
auto check_masked = [](const auto& poly, const std::string& label) {

barretenberg/cpp/src/barretenberg/ultra_honk/oink_prover.test.cpp

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
#include "barretenberg/ultra_honk/oink_prover.hpp"
2-
#include "barretenberg/goblin/mock_circuits.hpp"
3-
#include "barretenberg/stdlib_circuit_builders/mock_circuits.hpp"
2+
#include "barretenberg/ultra_honk/mega_circuit_test_helper.hpp"
43
#include "barretenberg/ultra_honk/oink_verifier.hpp"
54
#include "barretenberg/ultra_honk/prover_instance.hpp"
65

@@ -29,7 +28,7 @@ class OinkTests : public ::testing::Test {
2928
TEST_F(OinkTests, OinkProverIsDeterministic)
3029
{
3130
Builder circuit;
32-
GoblinMockCircuits::construct_simple_circuit(circuit);
31+
MegaCircuitTestHelper::construct_simple_circuit(circuit);
3332
auto prover_instance = std::make_shared<ProverInstance>(circuit);
3433
auto verification_key = std::make_shared<VerificationKey>(prover_instance->get_precomputed());
3534

@@ -75,7 +74,7 @@ TEST_F(OinkTests, OinkProverIsDeterministic)
7574
TEST_F(OinkTests, OinkProverCommitments)
7675
{
7776
Builder circuit;
78-
GoblinMockCircuits::construct_simple_circuit(circuit);
77+
MegaCircuitTestHelper::construct_simple_circuit(circuit);
7978
auto prover_instance = std::make_shared<ProverInstance>(circuit);
8079
auto verification_key = std::make_shared<VerificationKey>(prover_instance->get_precomputed());
8180
auto vk_and_hash = std::make_shared<typename Flavor::VKAndHash>(verification_key);

barretenberg/cpp/src/barretenberg/ultra_honk/zk_boundary.test.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@
1313
*/
1414
#include <gtest/gtest.h>
1515

16-
#include "barretenberg/goblin/mock_circuits.hpp"
1716
#include "barretenberg/honk/relation_checker.hpp"
1817
#include "barretenberg/relations/ecc_op_queue_relation.hpp"
18+
#include "barretenberg/ultra_honk/mega_circuit_test_helper.hpp"
1919
#include "barretenberg/ultra_honk/oink_prover.hpp"
2020
#include "barretenberg/ultra_honk/ultra_prover.hpp"
2121
#include "barretenberg/ultra_honk/ultra_verifier.hpp"
@@ -42,7 +42,7 @@ class ZKBoundaryTests : public ::testing::Test {
4242
static std::shared_ptr<ProverInstance> build_instance()
4343
{
4444
Builder builder;
45-
GoblinMockCircuits::construct_simple_circuit(builder);
45+
MegaCircuitTestHelper::construct_simple_circuit(builder);
4646
return std::make_shared<ProverInstance>(builder);
4747
}
4848

@@ -207,7 +207,7 @@ TEST_F(ZKBoundaryTests, ProveAndVerifyMegaZK)
207207
TEST_F(ZKBoundaryTests, CorruptionInActiveRegionFailsProof)
208208
{
209209
Builder builder;
210-
GoblinMockCircuits::construct_simple_circuit(builder);
210+
MegaCircuitTestHelper::construct_simple_circuit(builder);
211211

212212
// Build two instances from the same circuit
213213
auto builder_copy = builder;

0 commit comments

Comments
 (0)