@@ -40,30 +40,21 @@ class GoblinRecursiveVerifierTests : public testing::Test {
4040 *
4141 * @return ProverOutput
4242 */
43- static ProverOutput create_goblin_prover_output (Builder* outer_builder = nullptr , const size_t NUM_CIRCUITS = 3 )
43+ static ProverOutput create_goblin_prover_output (Builder* outer_builder = nullptr ,
44+ [[maybe_unused]] const size_t NUM_CIRCUITS = 3 )
4445 {
4546
47+ // TODO: do something here which is going to be painful
4648 Goblin goblin;
47- // Construct and accumulate multiple circuits
48- for (size_t idx = 0 ; idx < NUM_CIRCUITS - 1 ; ++idx) {
49- MegaCircuitBuilder builder{ goblin.op_queue };
50- GoblinMockCircuits::construct_simple_circuit (builder);
51- goblin.prove_merge ();
52- }
53-
54- Goblin goblin_final;
55- goblin_final.op_queue = goblin.op_queue ;
56- MegaCircuitBuilder builder{ goblin_final.op_queue };
57- GoblinMockCircuits::construct_simple_circuit (builder, /* last_circuit=*/ true );
49+ GoblinMockCircuits::construct_and_merge_mock_circuits (goblin, 5 );
5850
5951 // Merge the ecc ops from the newly constructed circuit
60- goblin_final.op_queue ->merge ();
61-
52+ auto goblin_proof = goblin.prove (MergeSettings::APPEND);
6253 // Subtable values and commitments - needed for (Recursive)MergeVerifier
6354 MergeCommitments merge_commitments;
64- auto t_current = goblin_final .op_queue ->construct_current_ultra_ops_subtable_columns ();
65- auto T_prev = goblin_final .op_queue ->construct_previous_ultra_ops_table_columns ();
66- CommitmentKey<curve::BN254> pcs_commitment_key (goblin_final .op_queue ->get_ultra_ops_table_num_rows ());
55+ auto t_current = goblin .op_queue ->construct_current_ultra_ops_subtable_columns ();
56+ auto T_prev = goblin .op_queue ->construct_previous_ultra_ops_table_columns ();
57+ CommitmentKey<curve::BN254> pcs_commitment_key (goblin .op_queue ->get_ultra_ops_table_num_rows ());
6758 for (size_t idx = 0 ; idx < MegaFlavor::NUM_WIRES; idx++) {
6859 merge_commitments.t_commitments [idx] = pcs_commitment_key.commit (t_current[idx]);
6960 merge_commitments.T_prev_commitments [idx] = pcs_commitment_key.commit (T_prev[idx]);
@@ -80,7 +71,7 @@ class GoblinRecursiveVerifierTests : public testing::Test {
8071 }
8172
8273 // Output is a goblin proof plus ECCVM/Translator verification keys
83- return { goblin_final. prove () ,
74+ return { goblin_proof ,
8475 { std::make_shared<ECCVMVK>(), std::make_shared<TranslatorVK>() },
8576 merge_commitments,
8677 recursive_merge_commitments };
@@ -97,7 +88,7 @@ TEST_F(GoblinRecursiveVerifierTests, NativeVerification)
9788
9889 std::shared_ptr<Goblin::Transcript> verifier_transcript = std::make_shared<Goblin::Transcript>();
9990
100- EXPECT_TRUE (Goblin::verify (proof, merge_commitments, verifier_transcript));
91+ EXPECT_TRUE (Goblin::verify (proof, merge_commitments, verifier_transcript, MergeSettings::APPEND ));
10192}
10293
10394/* *
@@ -112,7 +103,7 @@ TEST_F(GoblinRecursiveVerifierTests, Basic)
112103 create_goblin_prover_output (&builder);
113104
114105 GoblinRecursiveVerifier verifier{ &builder, verifier_input };
115- GoblinRecursiveVerifierOutput output = verifier.verify (proof, recursive_merge_commitments);
106+ GoblinRecursiveVerifierOutput output = verifier.verify (proof, recursive_merge_commitments, MergeSettings::APPEND );
116107 output.points_accumulator .set_public ();
117108
118109 info (" Recursive Verifier: num gates = " , builder.num_gates );
@@ -146,7 +137,8 @@ TEST_F(GoblinRecursiveVerifierTests, IndependentVKHash)
146137 create_goblin_prover_output (&builder, inner_size);
147138
148139 GoblinRecursiveVerifier verifier{ &builder, verifier_input };
149- GoblinRecursiveVerifierOutput output = verifier.verify (proof, recursive_merge_commitments);
140+ GoblinRecursiveVerifierOutput output =
141+ verifier.verify (proof, recursive_merge_commitments, MergeSettings::APPEND);
150142 output.points_accumulator .set_public ();
151143
152144 info (" Recursive Verifier: num gates = " , builder.num_gates );
@@ -231,7 +223,8 @@ TEST_F(GoblinRecursiveVerifierTests, TranslatorFailure)
231223 }
232224
233225 GoblinRecursiveVerifier verifier{ &builder, verifier_input };
234- [[maybe_unused]] auto goblin_rec_verifier_output = verifier.verify (tampered_proof, recursive_merge_commitments);
226+ [[maybe_unused]] auto goblin_rec_verifier_output =
227+ verifier.verify (tampered_proof, recursive_merge_commitments, MergeSettings::APPEND);
235228 EXPECT_FALSE (CircuitChecker::check (builder));
236229 }
237230 // Tamper with the Translator proof non-preamble values
@@ -258,7 +251,8 @@ TEST_F(GoblinRecursiveVerifierTests, TranslatorFailure)
258251 }
259252
260253 GoblinRecursiveVerifier verifier{ &builder, verifier_input };
261- [[maybe_unused]] auto goblin_rec_verifier_output = verifier.verify (tampered_proof, recursive_merge_commitments);
254+ [[maybe_unused]] auto goblin_rec_verifier_output =
255+ verifier.verify (tampered_proof, recursive_merge_commitments, MergeSettings::APPEND);
262256 EXPECT_FALSE (CircuitChecker::check (builder));
263257 }
264258}
@@ -281,7 +275,8 @@ TEST_F(GoblinRecursiveVerifierTests, TranslationEvaluationsFailure)
281275 proof.eccvm_proof .pre_ipa_proof [op_limb_index] += 1 ;
282276
283277 GoblinRecursiveVerifier verifier{ &builder, verifier_input };
284- [[maybe_unused]] auto goblin_rec_verifier_output = verifier.verify (proof, recursive_merge_commitments);
278+ [[maybe_unused]] auto goblin_rec_verifier_output =
279+ verifier.verify (proof, recursive_merge_commitments, MergeSettings::APPEND);
285280
286281 EXPECT_FALSE (CircuitChecker::check (builder));
287282}
@@ -306,7 +301,7 @@ TEST_F(GoblinRecursiveVerifierTests, TranslatorMergeConsistencyFailure)
306301 std::shared_ptr<Goblin::Transcript> verifier_transcript = std::make_shared<Goblin::Transcript>();
307302
308303 // Check natively that the proof is correct.
309- EXPECT_TRUE (Goblin::verify (proof, merge_commitments, verifier_transcript));
304+ EXPECT_TRUE (Goblin::verify (proof, merge_commitments, verifier_transcript, MergeSettings::APPEND ));
310305
311306 // TODO(https://github.com/AztecProtocol/barretenberg/issues/1298):
312307 // Better recursion testing - create more flexible proof tampering tests.
@@ -333,7 +328,8 @@ TEST_F(GoblinRecursiveVerifierTests, TranslatorMergeConsistencyFailure)
333328 // Construct and check the Goblin Recursive Verifier circuit
334329
335330 GoblinRecursiveVerifier verifier{ &builder, verifier_input };
336- [[maybe_unused]] auto goblin_rec_verifier_output = verifier.verify (proof, recursive_merge_commitments);
331+ [[maybe_unused]] auto goblin_rec_verifier_output =
332+ verifier.verify (proof, recursive_merge_commitments, MergeSettings::APPEND);
337333
338334 EXPECT_FALSE (CircuitChecker::check (builder));
339335 }
0 commit comments