Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
mock_verifier_inputs.cpp
Go to the documentation of this file.
8
9namespace acir_format {
10
11using namespace bb;
12
13template <class Curve>
14void populate_field_elements_for_mock_commitments(std::vector<fr>& fields, const size_t& num_commitments)
15{
16 auto mock_commitment = Curve::AffineElement::one();
17 std::vector<fr> mock_commitment_frs = FrCodec::serialize_to_fields(mock_commitment);
18 for (size_t i = 0; i < num_commitments; ++i) {
19 for (const fr& val : mock_commitment_frs) {
20 fields.emplace_back(val);
21 }
22 }
23}
24
25template <class FF>
26void populate_field_elements(std::vector<fr>& fields, const size_t& num_elements, std::optional<FF> value)
27{
28 for (size_t i = 0; i < num_elements; ++i) {
29 std::vector<fr> field_elements = value.has_value() ? FrCodec::serialize_to_fields(value.value())
31 fields.insert(fields.end(), field_elements.begin(), field_elements.end());
32 }
33}
34
35template <typename Flavor, class PublicInputs> HonkProof create_mock_oink_proof(const size_t acir_public_inputs_size)
36{
37 HonkProof proof;
38
39 // Populate mock public inputs
40 typename PublicInputs::Builder builder;
41 PublicInputs::add_default(builder);
42
43 // Populate the proof with as many public inputs as required from the ACIR constraints
44 populate_field_elements<fr>(proof, acir_public_inputs_size);
45
46 // Populate the proof with the public inputs added from barretenberg
47 for (const auto& pub : builder.public_inputs()) {
48 proof.emplace_back(builder.get_variable(pub));
49 }
50
51 // Populate mock witness polynomial commitments
53
54 return proof;
55}
56
57template <typename Flavor> HonkProof create_mock_sumcheck_proof()
58{
59 using FF = typename Flavor::FF;
60 HonkProof proof;
61
62 // Sumcheck univariates
63 const size_t TOTAL_SIZE_SUMCHECK_UNIVARIATES = Flavor::VIRTUAL_LOG_N * Flavor::BATCHED_RELATION_PARTIAL_LENGTH;
64 populate_field_elements<FF>(proof, TOTAL_SIZE_SUMCHECK_UNIVARIATES);
65
66 // Sumcheck multilinear evaluations
67 populate_field_elements<FF>(proof, Flavor::NUM_ALL_ENTITIES);
68
69 return proof;
70}
71
73{
75 using FF = typename Flavor::FF;
76 HonkProof proof;
77
78 // Populate mock accumulator commitments (non_shifted + shifted)
79 populate_field_elements_for_mock_commitments(proof, Flavor::NUM_ACCUMULATOR_COMMITMENTS);
80
81 // Accumulator multivariate challenges
82 populate_field_elements<FF>(proof, Flavor::VIRTUAL_LOG_N);
83
84 // Accumulator polynomial evaluations (non_shifted + shifted)
85 populate_field_elements<FF>(proof, Flavor::NUM_ACCUMULATOR_EVALUATIONS);
86
87 // Sumcheck proof
88 HonkProof sumcheck_proof = create_mock_sumcheck_proof<Flavor>();
89
90 proof.insert(proof.end(), sumcheck_proof.begin(), sumcheck_proof.end());
91
92 return proof;
93}
94
95template <typename Flavor, class PublicInputs> HonkProof create_mock_hyper_nova_proof(bool include_fold)
96{
97 HonkProof oink_proof = create_mock_oink_proof<Flavor, PublicInputs>(/*acir_public_inputs_size=*/0);
98 HonkProof sumcheck_proof = create_mock_sumcheck_proof<Flavor>();
99 HonkProof multilinear_batch_proof;
100 if (include_fold) {
101 multilinear_batch_proof = create_mock_multilinear_batch_proof();
102 }
103 HonkProof proof;
104 proof.reserve(oink_proof.size() + sumcheck_proof.size() + multilinear_batch_proof.size());
105 proof.insert(proof.end(), oink_proof.begin(), oink_proof.end());
106 proof.insert(proof.end(), sumcheck_proof.begin(), sumcheck_proof.end());
107 proof.insert(proof.end(), multilinear_batch_proof.begin(), multilinear_batch_proof.end());
108
109 return proof;
110}
111
112template <typename Flavor> HonkProof create_mock_pcs_proof()
113{
114 using FF = Flavor::FF;
115 using Curve = Flavor::Curve;
116 HonkProof proof;
117
118 // Gemini fold commitments
119 const size_t NUM_GEMINI_FOLD_COMMITMENTS = Flavor::VIRTUAL_LOG_N - 1;
120 populate_field_elements_for_mock_commitments<Curve>(proof, NUM_GEMINI_FOLD_COMMITMENTS);
121
122 // Gemini fold evaluations
123 const size_t NUM_GEMINI_FOLD_EVALUATIONS = Flavor::VIRTUAL_LOG_N;
124 populate_field_elements<FF>(proof, NUM_GEMINI_FOLD_EVALUATIONS);
125
126 if constexpr (Flavor::HasZK) {
127 // NUM_SMALL_IPA_EVALUATIONS libra evals
128 populate_field_elements<FF>(proof, NUM_SMALL_IPA_EVALUATIONS);
129 }
130
131 // Shplonk batched quotient commitment
132 populate_field_elements_for_mock_commitments<Curve>(proof, /*num_commitments=*/1);
133 // KZG quotient commitment
134 populate_field_elements_for_mock_commitments<Curve>(proof, /*num_commitments=*/1);
135
136 return proof;
137}
138
139template <typename Flavor> HonkProof create_mock_decider_proof()
140{
141 using FF = Flavor::FF;
142 using Curve = Flavor::Curve;
143 HonkProof proof;
144
145 constexpr size_t const_proof_log_n = []() {
147 return MEGA_AVM_LOG_N;
148 } else {
149 return Flavor::VIRTUAL_LOG_N;
150 }
151 }();
152
153 if constexpr (Flavor::HasZK) {
154 // Libra concatenation commitment
155 populate_field_elements_for_mock_commitments<Curve>(proof, 1);
156
157 // Libra sum
158 populate_field_elements<FF>(proof, 1);
159 }
160
161 // Sumcheck univariates
162 const size_t TOTAL_SIZE_SUMCHECK_UNIVARIATES = const_proof_log_n * Flavor::BATCHED_RELATION_PARTIAL_LENGTH;
163 populate_field_elements<FF>(proof, TOTAL_SIZE_SUMCHECK_UNIVARIATES);
164
165 // Sumcheck multilinear evaluations
166 populate_field_elements<FF>(proof, Flavor::NUM_ALL_ENTITIES);
167
168 if constexpr (Flavor::HasZK) {
169 // Libra claimed evaluation
170 populate_field_elements<FF>(proof, 1);
171
172 // Libra grand sum commitment
173 populate_field_elements_for_mock_commitments<Curve>(proof, 1);
174
175 // Libra quotient commitment
176 populate_field_elements_for_mock_commitments<Curve>(proof, 1);
177 }
178
179 // Gemini fold commitments
180 const size_t NUM_GEMINI_FOLD_COMMITMENTS = const_proof_log_n - 1;
181 populate_field_elements_for_mock_commitments<Curve>(proof, NUM_GEMINI_FOLD_COMMITMENTS);
182
183 // Gemini fold evaluations
184 const size_t NUM_GEMINI_FOLD_EVALUATIONS = const_proof_log_n;
185 populate_field_elements<FF>(proof, NUM_GEMINI_FOLD_EVALUATIONS);
186
187 if constexpr (Flavor::HasZK) {
188 // NUM_SMALL_IPA_EVALUATIONS libra evals
189 populate_field_elements<FF>(proof, NUM_SMALL_IPA_EVALUATIONS);
190 }
191
192 // Shplonk batched quotient commitment
193 populate_field_elements_for_mock_commitments<Curve>(proof, /*num_commitments=*/1);
194 // KZG quotient commitment
195 populate_field_elements_for_mock_commitments<Curve>(proof, /*num_commitments=*/1);
196
197 return proof;
198}
199
200template <typename Flavor, class PublicInputs> HonkProof create_mock_honk_proof(const size_t acir_public_inputs_size)
201{
202 // Construct a Honk proof as the concatenation of an Oink proof and a Decider proof
203 HonkProof oink_proof = create_mock_oink_proof<Flavor, PublicInputs>(acir_public_inputs_size);
204 HonkProof decider_proof = create_mock_decider_proof<Flavor>();
205 HonkProof proof;
206 proof.reserve(oink_proof.size() + decider_proof.size());
207 proof.insert(proof.end(), oink_proof.begin(), oink_proof.end());
208 proof.insert(proof.end(), decider_proof.begin(), decider_proof.end());
209
210 if constexpr (PublicInputs::HasIPA) {
211 HonkProof ipa_proof = create_mock_ipa_proof();
212 proof.insert(proof.end(), ipa_proof.begin(), ipa_proof.end());
213 }
214 return proof;
215}
216
218{
219 size_t proof_length =
221 // Construct an AVM proof as the padded concatenation of an Oink proof and a Decider proof
222 HonkProof oink_proof =
223 create_mock_oink_proof<bb::avm2::AvmFlavor, stdlib::recursion::honk::DefaultIO<UltraCircuitBuilder>>(
224 /*acir_public_inputs_size=*/0);
226
227 HonkProof proof;
228 proof.reserve(proof_length);
229 proof.insert(proof.end(),
230 oink_proof.begin() +
231 bb::DefaultIO::PUBLIC_INPUTS_SIZE, // Skip the Oink public inputs as they are not needed
232 oink_proof.end());
233 proof.insert(proof.end(), decider_proof.begin(), decider_proof.end());
234
235 BB_ASSERT_LTE(proof.size(), proof_length); // Sanity check
236 proof.resize(proof_length, 0); // Pad the proof to the required length (if needed)
237
238 return proof;
239}
240
241template <typename Flavor, typename IO>
243 const size_t acir_public_inputs_size)
244{
246 using InnerProver = bb::UltraProver_<Flavor>;
248 using Builder = typename Flavor::CircuitBuilder;
249
250 // Construct a circuit with a single gate
252
256 fr d = a + b + c;
257
258 uint32_t a_idx = builder.add_variable(a);
259 uint32_t b_idx = builder.add_variable(b);
260 uint32_t c_idx = builder.add_variable(c);
261 uint32_t d_idx = builder.add_variable(d);
262
263 builder.create_big_add_gate({ a_idx, b_idx, c_idx, d_idx, fr(1), fr(1), fr(1), fr(-1), fr(0) });
264
265 // Add the public inputs
266 for (size_t i = 0; i < acir_public_inputs_size; ++i) {
267 builder.add_public_variable(fr::random_element());
268 }
269
270 IO::add_default(builder);
271
272 // prove the circuit constructed above
273 // Create the decider proving key
274 auto decider_pk = std::make_shared<ProverInstance>(builder);
275
276 // Construct the Ultra VK
277 auto vk = std::make_shared<VerificationKey>(decider_pk->get_precomputed());
278 InnerProver prover(decider_pk, vk);
279 auto honk_proof = prover.construct_proof();
280 return std::pair(honk_proof, vk);
281}
282
284{
285 Goblin::MergeProof proof;
286 proof.reserve(MERGE_PROOF_SIZE);
287
288 uint32_t mock_shift_size = 5; // Must be smaller than 32, otherwise pow raises an error
289
290 // Populate mock shift size
291 populate_field_elements<fr>(proof, 1, /*value=*/fr{ mock_shift_size });
292
293 // Populate mock merged table commitments and batched degree check polynomial commitment
295
296 // Populate evaluations (3 * NUM_WIRES + 1: left, right, and merged tables, plus batched degree check polynomial)
297 populate_field_elements(proof, 13);
298
299 // Shplonk proof: commitment to the quotient
301
302 // KZG proof: commitment to W
304
305 BB_ASSERT_EQ(proof.size(), MERGE_PROOF_SIZE);
306
307 return proof;
308}
309
318{
319 using FF = ECCVMFlavor::FF;
320 HonkProof proof;
321
322 // 1. NUM_WITNESS_ENTITIES + 1 commitments (includes gemini_masking_poly)
323 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, ECCVMFlavor::NUM_WITNESS_ENTITIES + 1);
324
325 // 2. Libra concatenation commitment
326 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, /*num_commitments*/ 1);
327
328 // 3. Libra sum
329 populate_field_elements<FF>(proof, 1);
330
331 // 4. Sumcheck univariates commitments + 5. Sumcheck univariate evaluations
332 for (size_t idx = 0; idx < CONST_ECCVM_LOG_N; idx++) {
333 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, /*num_commitments=*/1);
334 populate_field_elements<FF>(proof, /*num_elements=*/2);
335 }
336
337 // 6. ALL_ENTITIES sumcheck evaluations
338 populate_field_elements<FF>(proof, ECCVMFlavor::NUM_ALL_ENTITIES);
339
340 // 7. Libra evaluation
341 populate_field_elements<FF>(proof, 1);
342
343 // 8. Libra grand sum commitment
344 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, /*num_commitments=*/1);
345
346 // 9. Libra quotient commitment
347 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, /*num_commitments=*/1);
348
349 // 10. Gemini fold commitments
350 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof,
351 /*num_commitments=*/CONST_ECCVM_LOG_N - 1);
352
353 // 11. Gemini evaluations
354 populate_field_elements<FF>(proof, CONST_ECCVM_LOG_N);
355
356 // 12. NUM_SMALL_IPA_EVALUATIONS libra evals
357 populate_field_elements<FF>(proof, NUM_SMALL_IPA_EVALUATIONS);
358
359 // 13. Shplonk
360 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, /*num_commitments=*/1);
361
362 // 14. Translator concatenated masking term commitment
363 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, /*num_commitments=*/1);
364
365 // 15. Translator op evaluation
366 populate_field_elements<FF>(proof, 1);
367
368 // 16. Translator Px evaluation
369 populate_field_elements<FF>(proof, 1);
370
371 // 17. Translator Py evaluation
372 populate_field_elements<FF>(proof, 1);
373
374 // 18. Translator z1 evaluation
375 populate_field_elements<FF>(proof, 1);
376
377 // 19. Translator z2 evaluation
378 populate_field_elements<FF>(proof, 1);
379
380 // 20. Translator concatenated masking term evaluation
381 populate_field_elements<FF>(proof, 1);
382
383 // 21. Translator grand sum commitment
384 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, /*num_commitments=*/1);
385
386 // 22. Translator quotient commitment
387 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, /*num_commitments=*/1);
388
389 // 23. Translator concatenation evaluation
390 populate_field_elements<FF>(proof, 1);
391
392 // 24. Translator grand sum shift evaluation
393 populate_field_elements<FF>(proof, 1);
394
395 // 25. Translator grand sum evaluation
396 populate_field_elements<FF>(proof, 1);
397
398 // 26. Translator quotient evaluation
399 populate_field_elements<FF>(proof, 1);
400
401 // 27. Shplonk
402 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, /*num_commitments=*/1);
403
405
406 return proof;
407}
408
410{
411 HonkProof proof;
412
413 // Commitments to L and R for CONST_ECCVM_LOG_N round
414 populate_field_elements_for_mock_commitments<curve::Grumpkin>(
415 proof, /*num_commitments=*/CONST_ECCVM_LOG_N + CONST_ECCVM_LOG_N);
416
417 // Commitment to G_0
418 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, /*num_commitments=*/1);
419
420 // a_0 evaluation (a_0 is in the base field of BN254)
421 populate_field_elements<curve::BN254::BaseField>(proof, 1);
422
423 BB_ASSERT_EQ(proof.size(), IPA_PROOF_LENGTH);
424
425 return proof;
426}
427
429{
430 using Flavor = TranslatorFlavor;
431 using Curve = Flavor::Curve;
432 using FF = Flavor::FF;
433
434 HonkProof proof;
435
436 // 1. Gemini masking poly commitment
437 populate_field_elements_for_mock_commitments<Curve>(proof, /*num_commitments=*/1);
438
439 // 2. Wire commitments: concatenated(5) + ordered(5) = 10
440 populate_field_elements_for_mock_commitments<Curve>(proof, /*num_commitments=*/Flavor::NUM_COMMITMENTS_IN_PROOF);
441
442 // 3. Z_PERM commitment
443 populate_field_elements_for_mock_commitments<Curve>(proof, /*num_commitments=*/1);
444
445 // 4. Libra concatenation commitment
446 populate_field_elements_for_mock_commitments<Curve>(proof, /*num_commitments=*/1);
447
448 // 5. Libra sum
449 populate_field_elements<FF>(proof, 1);
450
451 // 6. Sumcheck univariates
452 populate_field_elements<FF>(proof, Flavor::CONST_TRANSLATOR_LOG_N * Flavor::BATCHED_RELATION_PARTIAL_LENGTH);
453
454 // 7. Sumcheck evaluations (computable precomputed and reconstructed concat evals excluded)
455 populate_field_elements<FF>(proof, Flavor::NUM_SENT_EVALUATIONS);
456
457 // 8. Libra claimed evaluation
458 populate_field_elements<FF>(proof, 1);
459
460 // 9. Libra grand sum commitment
461 populate_field_elements_for_mock_commitments<Curve>(proof, /*num_commitments=*/1);
462
463 // 10. Libra quotient commitment
464 populate_field_elements_for_mock_commitments<Curve>(proof, /*num_commitments=*/1);
465
466 // 11-15. PCS proof (Gemini fold commitments/evaluations, libra evals, Shplonk, KZG)
467 HonkProof pcs_proof = create_mock_pcs_proof<Flavor>();
468 proof.insert(proof.end(), pcs_proof.begin(), pcs_proof.end());
469
470 BB_ASSERT_EQ(proof.size(), Flavor::PROOF_LENGTH);
471
472 return proof;
473}
474
475template <typename Builder> HonkProof create_mock_chonk_proof(const size_t acir_public_inputs_size)
476{
477 HonkProof proof;
478
479 HonkProof mega_proof =
480 create_mock_honk_proof<MegaZKFlavor, stdlib::recursion::honk::HidingKernelIO<Builder>>(acir_public_inputs_size);
482 HonkProof eccvm_proof{ create_mock_eccvm_proof() };
483 HonkProof ipa_proof = create_mock_ipa_proof();
484 HonkProof translator_proof = create_mock_translator_proof();
485
486 ChonkProof chonk_proof{ mega_proof, GoblinProof{ merge_proof, eccvm_proof, ipa_proof, translator_proof } };
487 proof = chonk_proof.to_field_elements();
488
489 return proof;
490}
491
492template <typename Flavor, class PublicInputs>
494 const size_t acir_public_inputs_size)
495{
496 // Set relevant VK metadata and commitments
497 auto honk_verification_key = std::make_shared<typename Flavor::VerificationKey>();
498 honk_verification_key->log_circuit_size = bb::numeric::get_msb(dyadic_size);
499 honk_verification_key->num_public_inputs = acir_public_inputs_size + PublicInputs::PUBLIC_INPUTS_SIZE;
500 honk_verification_key->pub_inputs_offset = NUM_ZERO_ROWS;
501
502 for (auto& commitment : honk_verification_key->get_all()) {
503 commitment = curve::BN254::AffineElement::one(); // arbitrary mock commitment
504 }
505
506 return honk_verification_key;
507}
508
509// Explicitly instantiate template functions
512template HonkProof create_mock_oink_proof<MegaFlavor, stdlib::recursion::honk::HidingKernelIO<MegaCircuitBuilder>>(
513 const size_t);
514
515template HonkProof create_mock_oink_proof<UltraFlavor, stdlib::recursion::honk::DefaultIO<UltraCircuitBuilder>>(
516 const size_t);
517template HonkProof create_mock_oink_proof<UltraZKFlavor, stdlib::recursion::honk::DefaultIO<UltraCircuitBuilder>>(
518 const size_t);
519template HonkProof create_mock_oink_proof<UltraFlavor, stdlib::recursion::honk::DefaultIO<MegaCircuitBuilder>>(
520 const size_t);
521template HonkProof create_mock_oink_proof<UltraZKFlavor, stdlib::recursion::honk::DefaultIO<MegaCircuitBuilder>>(
522 const size_t);
524
525template HonkProof create_mock_oink_proof<avm2::AvmFlavor, stdlib::recursion::honk::DefaultIO<UltraCircuitBuilder>>(
526 const size_t);
527
530
535
538template HonkProof create_mock_honk_proof<MegaFlavor, stdlib::recursion::honk::HidingKernelIO<MegaCircuitBuilder>>(
539 const size_t);
540
541template HonkProof create_mock_honk_proof<UltraFlavor, stdlib::recursion::honk::DefaultIO<UltraCircuitBuilder>>(
542 const size_t);
543template HonkProof create_mock_honk_proof<UltraZKFlavor, stdlib::recursion::honk::DefaultIO<UltraCircuitBuilder>>(
544 const size_t);
545template HonkProof create_mock_honk_proof<UltraFlavor, stdlib::recursion::honk::DefaultIO<MegaCircuitBuilder>>(
546 const size_t);
547template HonkProof create_mock_honk_proof<UltraZKFlavor, stdlib::recursion::honk::DefaultIO<MegaCircuitBuilder>>(
548 const size_t);
550
552construct_arbitrary_valid_honk_proof_and_vk<UltraFlavor, stdlib::recursion::honk::DefaultIO<UltraCircuitBuilder>>(
553 const size_t);
555construct_arbitrary_valid_honk_proof_and_vk<UltraZKFlavor, stdlib::recursion::honk::DefaultIO<UltraCircuitBuilder>>(
556 const size_t);
559
562
565
567 const size_t, const size_t);
570 const size_t, const size_t);
577
592 const size_t, const size_t);
593
594} // namespace acir_format
#define BB_ASSERT_EQ(actual, expected,...)
Definition assert.hpp:83
#define BB_ASSERT_LTE(left, right,...)
Definition assert.hpp:158
#define AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED
static constexpr size_t PUBLIC_INPUTS_SIZE
typename Curve::ScalarField FF
static constexpr size_t NUM_ALL_ENTITIES
ECCVMCircuitBuilder CircuitBuilder
static constexpr size_t PROOF_LENGTH
static constexpr size_t NUM_WITNESS_ENTITIES
static std::vector< fr > serialize_to_fields(const T &val)
Conversion from transcript values to bb::frs.
MergeProver::MergeProof MergeProof
Definition goblin.hpp:40
Child class of MegaFlavor that runs with ZK Sumcheck.
Base Native verification key class.
Definition flavor.hpp:135
Contains all the information required by a Honk prover to create a proof, constructed from a finalize...
Child class of UltraFlavor that runs with ZK Sumcheck.
static constexpr size_t COMPUTED_AVM_PROOF_LENGTH_IN_FIELDS
Definition flavor.hpp:99
AvmFlavorSettings::FF FF
Definition flavor.hpp:43
FixedVKAndHash_< PrecomputedEntities< Commitment >, FF, typename constraining::AvmHardCodedVKAndHash > VerificationKey
Verification key of the AVM. It is fixed and reconstructed from precomputed values.
Definition flavor.hpp:226
static constexpr bool HasZK
Definition flavor.hpp:57
static constexpr size_t NUM_WITNESS_ENTITIES
Definition flavor.hpp:62
static constexpr size_t BATCHED_RELATION_PARTIAL_LENGTH
Definition flavor.hpp:90
static constexpr size_t NUM_ALL_ENTITIES
Definition flavor.hpp:65
AvmFlavorSettings::Curve Curve
Definition flavor.hpp:39
Manages the data that is propagated on the public inputs of an application/function circuit.
Manages the data that is propagated on the public inputs of a hiding kernel circuit.
Manages the data that is propagated on the public inputs of a kernel circuit.
The data that is propagated on the public inputs of a rollup circuit.
AluTraceBuilder builder
Definition alu.test.cpp:124
FF a
FF b
Base class templates shared across Honk flavors.
ProverInstance_< UltraKeccakFlavor > ProverInstance
template std::shared_ptr< MegaFlavor::VerificationKey > create_mock_honk_vk< MegaFlavor, stdlib::recursion::honk::AppIO >(const size_t, const size_t)
template HonkProof create_mock_chonk_proof< UltraCircuitBuilder >(const size_t)
HonkProof create_mock_honk_proof(const size_t acir_public_inputs_size)
Create a mock honk proof that has the correct structure but is not in general valid.
HonkProof create_mock_oink_proof(const size_t acir_public_inputs_size)
Create a mock oink proof that has the correct structure but is not in general valid.
void populate_field_elements(std::vector< fr > &fields, const size_t &num_elements, std::optional< FF > value)
Helper to populate a field buffer with some number of field elements.
template HonkProof create_mock_decider_proof< UltraZKFlavor >()
HonkProof create_mock_chonk_proof(const size_t acir_public_inputs_size)
Create a mock Chonk proof which has the correct structure but is not necessarily valid.
template HonkProof create_mock_honk_proof< MegaFlavor, stdlib::recursion::honk::KernelIO >(const size_t)
Goblin::MergeProof create_mock_merge_proof()
Create a mock merge proof which has the correct structure but is not necessarily valid.
HonkProof create_mock_eccvm_proof()
Create a mock pre-ipa proof which has the correct structure but is not necessarily valid.
HonkProof create_mock_translator_proof()
Create a mock Translator proof which has the correct structure but is not necessarily valid.
template HonkProof create_mock_hyper_nova_proof< MegaFlavor, stdlib::recursion::honk::AppIO >(bool)
void populate_field_elements_for_mock_commitments(std::vector< fr > &fields, const size_t &num_commitments)
Helper to populate a field buffer with fields corresponding to some number of mock commitment values.
template HonkProof create_mock_decider_proof< avm2::AvmFlavor >()
template HonkProof create_mock_pcs_proof< MegaFlavor >()
template HonkProof create_mock_hyper_nova_proof< MegaFlavor, stdlib::recursion::honk::KernelIO >(bool)
template HonkProof create_mock_honk_proof< UltraFlavor, stdlib::recursion::honk::RollupIO >(const size_t)
template std::pair< HonkProof, std::shared_ptr< UltraFlavor::VerificationKey > > construct_arbitrary_valid_honk_proof_and_vk< UltraFlavor, stdlib::recursion::honk::RollupIO >(const size_t)
template HonkProof create_mock_oink_proof< MegaFlavor, stdlib::recursion::honk::AppIO >(const size_t)
HonkProof create_mock_hyper_nova_proof(bool include_fold)
Create a mock Hypernova proof that has the correct structure but is not in general valid.
template HonkProof create_mock_honk_proof< MegaFlavor, stdlib::recursion::honk::AppIO >(const size_t)
HonkProof create_mock_decider_proof()
Create a mock decider proof that has the correct structure but is not in general valid.
HonkProof create_mock_multilinear_batch_proof()
Create a mock multilinear batching sumcheck proof that has the correct structure but is not in genera...
template HonkProof create_mock_pcs_proof< TranslatorFlavor >()
HonkProof create_mock_avm_proof_without_pub_inputs(const bool add_padding)
Create a mock AVM proof without public inputs that has the correct structure but is not in general va...
template HonkProof create_mock_decider_proof< UltraFlavor >()
HonkProof create_mock_pcs_proof()
Create a mock PCS proof that has the correct structure but is not in general valid.
template HonkProof create_mock_chonk_proof< MegaCircuitBuilder >(const size_t)
HonkProof create_mock_sumcheck_proof()
Create a mock sumcheck proof that has the correct structure but is not in general valid.
template HonkProof create_mock_oink_proof< UltraFlavor, stdlib::recursion::honk::RollupIO >(const size_t)
template HonkProof create_mock_oink_proof< MegaFlavor, stdlib::recursion::honk::KernelIO >(const size_t)
std::pair< HonkProof, std::shared_ptr< typename Flavor::VerificationKey > > construct_arbitrary_valid_honk_proof_and_vk(const size_t acir_public_inputs_size)
Create a valid honk proof and vk for a circuit with a single big add gate. Adds random public inputs ...
std::shared_ptr< typename Flavor::VerificationKey > create_mock_honk_vk(const size_t dyadic_size, const size_t acir_public_inputs_size)
Create a mock VK that has the correct structure.
HonkProof create_mock_ipa_proof()
Create a mock ipa proof which has the correct structure but is not necessarily valid.
template HonkProof create_mock_decider_proof< MegaFlavor >()
AvmFlavorSettings::FF FF
Definition field.hpp:10
constexpr T get_msb(const T in)
Definition get_msb.hpp:49
Entry point for Barretenberg command-line interface.
Definition api.hpp:5
std::vector< fr > HonkProof
Definition proof.hpp:15
field< Bn254FrParams > fr
Definition fr.hpp:155
VerifierCommitmentKey< Curve > vk
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
Definition tuple.hpp:13
static field random_element(numeric::RNG *engine=nullptr) noexcept