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
112// WORKTODO: use these methods in places where this logic is duplicated
113template <typename Flavor> HonkProof create_mock_pcs_proof()
114{
115 using FF = Flavor::FF;
116 using Curve = Flavor::Curve;
117 HonkProof proof;
118
119 // Gemini fold commitments
120 const size_t NUM_GEMINI_FOLD_COMMITMENTS = Flavor::VIRTUAL_LOG_N - 1;
121 populate_field_elements_for_mock_commitments<Curve>(proof, NUM_GEMINI_FOLD_COMMITMENTS);
122
123 // Gemini fold evaluations
124 const size_t NUM_GEMINI_FOLD_EVALUATIONS = Flavor::VIRTUAL_LOG_N;
125 populate_field_elements<FF>(proof, NUM_GEMINI_FOLD_EVALUATIONS);
126
128 // Gemini P pos evaluation
129 populate_field_elements<FF>(proof, 1);
130
131 // Gemini P neg evaluation
132 populate_field_elements<FF>(proof, 1);
133 }
134
135 if constexpr (Flavor::HasZK) {
136 // NUM_SMALL_IPA_EVALUATIONS libra evals
137 populate_field_elements<FF>(proof, NUM_SMALL_IPA_EVALUATIONS);
138 }
139
140 // Shplonk batched quotient commitment
141 populate_field_elements_for_mock_commitments<Curve>(proof, /*num_commitments=*/1);
142 // KZG quotient commitment
143 populate_field_elements_for_mock_commitments<Curve>(proof, /*num_commitments=*/1);
144
145 return proof;
146}
147
148template <typename Flavor> HonkProof create_mock_decider_proof()
149{
150 using FF = Flavor::FF;
151 using Curve = Flavor::Curve;
152 HonkProof proof;
153
154 constexpr size_t const_proof_log_n = []() {
156 return MEGA_AVM_LOG_N;
157 } else {
158 return Flavor::VIRTUAL_LOG_N;
159 }
160 }();
161
162 if constexpr (Flavor::HasZK) {
163 // Libra concatenation commitment
164 populate_field_elements_for_mock_commitments<Curve>(proof, 1);
165
166 // Libra sum
167 populate_field_elements<FF>(proof, 1);
168 }
169
170 // Sumcheck univariates
171 const size_t TOTAL_SIZE_SUMCHECK_UNIVARIATES = const_proof_log_n * Flavor::BATCHED_RELATION_PARTIAL_LENGTH;
172 populate_field_elements<FF>(proof, TOTAL_SIZE_SUMCHECK_UNIVARIATES);
173
174 // Sumcheck multilinear evaluations
175 populate_field_elements<FF>(proof, Flavor::NUM_ALL_ENTITIES);
176
177 if constexpr (Flavor::HasZK) {
178 // Libra claimed evaluation
179 populate_field_elements<FF>(proof, 1);
180
181 // Libra grand sum commitment
182 populate_field_elements_for_mock_commitments<Curve>(proof, 1);
183
184 // Libra quotient commitment
185 populate_field_elements_for_mock_commitments<Curve>(proof, 1);
186 }
187
188 // Gemini fold commitments
189 const size_t NUM_GEMINI_FOLD_COMMITMENTS = const_proof_log_n - 1;
190 populate_field_elements_for_mock_commitments<Curve>(proof, NUM_GEMINI_FOLD_COMMITMENTS);
191
192 // Gemini fold evaluations
193 const size_t NUM_GEMINI_FOLD_EVALUATIONS = const_proof_log_n;
194 populate_field_elements<FF>(proof, NUM_GEMINI_FOLD_EVALUATIONS);
195
197 // Gemini P pos evaluation
198 populate_field_elements<FF>(proof, 1);
199
200 // Gemini P neg evaluation
201 populate_field_elements<FF>(proof, 1);
202 }
203
204 if constexpr (Flavor::HasZK) {
205 // NUM_SMALL_IPA_EVALUATIONS libra evals
206 populate_field_elements<FF>(proof, NUM_SMALL_IPA_EVALUATIONS);
207 }
208
209 // Shplonk batched quotient commitment
210 populate_field_elements_for_mock_commitments<Curve>(proof, /*num_commitments=*/1);
211 // KZG quotient commitment
212 populate_field_elements_for_mock_commitments<Curve>(proof, /*num_commitments=*/1);
213
214 return proof;
215}
216
217template <typename Flavor, class PublicInputs> HonkProof create_mock_honk_proof(const size_t acir_public_inputs_size)
218{
219 // Construct a Honk proof as the concatenation of an Oink proof and a Decider proof
220 HonkProof oink_proof = create_mock_oink_proof<Flavor, PublicInputs>(acir_public_inputs_size);
221 HonkProof decider_proof = create_mock_decider_proof<Flavor>();
222 HonkProof proof;
223 proof.reserve(oink_proof.size() + decider_proof.size());
224 proof.insert(proof.end(), oink_proof.begin(), oink_proof.end());
225 proof.insert(proof.end(), decider_proof.begin(), decider_proof.end());
226
227 if constexpr (PublicInputs::HasIPA) {
228 HonkProof ipa_proof = create_mock_ipa_proof();
229 proof.insert(proof.end(), ipa_proof.begin(), ipa_proof.end());
230 }
231 return proof;
232}
233
235{
236 size_t proof_length =
238 // Construct an AVM proof as the padded concatenation of an Oink proof and a Decider proof
239 HonkProof oink_proof =
240 create_mock_oink_proof<bb::avm2::AvmFlavor, stdlib::recursion::honk::DefaultIO<UltraCircuitBuilder>>(
241 /*acir_public_inputs_size=*/0);
243
244 HonkProof proof;
245 proof.reserve(proof_length);
246 proof.insert(proof.end(),
247 oink_proof.begin() +
248 bb::DefaultIO::PUBLIC_INPUTS_SIZE, // Skip the Oink public inputs as they are not needed
249 oink_proof.end());
250 proof.insert(proof.end(), decider_proof.begin(), decider_proof.end());
251
252 BB_ASSERT_LTE(proof.size(), proof_length); // Sanity check
253 proof.resize(proof_length, 0); // Pad the proof to the required length (if needed)
254
255 return proof;
256}
257
258template <typename Flavor, typename IO>
260 const size_t acir_public_inputs_size)
261{
263 using InnerProver = bb::UltraProver_<Flavor>;
265 using Builder = typename Flavor::CircuitBuilder;
266
267 // Construct a circuit with a single gate
269
273 fr d = a + b + c;
274
275 uint32_t a_idx = builder.add_variable(a);
276 uint32_t b_idx = builder.add_variable(b);
277 uint32_t c_idx = builder.add_variable(c);
278 uint32_t d_idx = builder.add_variable(d);
279
280 builder.create_big_add_gate({ a_idx, b_idx, c_idx, d_idx, fr(1), fr(1), fr(1), fr(-1), fr(0) });
281
282 // Add the public inputs
283 for (size_t i = 0; i < acir_public_inputs_size; ++i) {
284 builder.add_public_variable(fr::random_element());
285 }
286
287 IO::add_default(builder);
288
289 // prove the circuit constructed above
290 // Create the decider proving key
291 auto decider_pk = std::make_shared<ProverInstance>(builder);
292
293 // Construct the Ultra VK
294 auto vk = std::make_shared<VerificationKey>(decider_pk->get_precomputed());
295 InnerProver prover(decider_pk, vk);
296 auto honk_proof = prover.construct_proof();
297 return std::pair(honk_proof, vk);
298}
299
301{
302 Goblin::MergeProof proof;
303 proof.reserve(MERGE_PROOF_SIZE);
304
305 uint32_t mock_shift_size = 5; // Must be smaller than 32, otherwise pow raises an error
306
307 // Populate mock shift size
308 populate_field_elements<fr>(proof, 1, /*value=*/fr{ mock_shift_size });
309
310 // Populate mock merged table commitments and batched degree check polynomial commitment
312
313 // Populate evaluations (3 * NUM_WIRES + 1: left, right, and merged tables, plus batched degree check polynomial)
314 populate_field_elements(proof, 13);
315
316 // Shplonk proof: commitment to the quotient
318
319 // KZG proof: commitment to W
321
322 BB_ASSERT_EQ(proof.size(), MERGE_PROOF_SIZE);
323
324 return proof;
325}
326
335{
336 using FF = ECCVMFlavor::FF;
337 HonkProof proof;
338
339 // 1. NUM_WITNESS_ENTITIES + 1 commitments (includes gemini_masking_poly)
340 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, ECCVMFlavor::NUM_WITNESS_ENTITIES + 1);
341
342 // 2. Libra concatenation commitment
343 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, /*num_commitments*/ 1);
344
345 // 3. Libra sum
346 populate_field_elements<FF>(proof, 1);
347
348 // 4. Sumcheck univariates commitments + 5. Sumcheck univariate evaluations
349 for (size_t idx = 0; idx < CONST_ECCVM_LOG_N; idx++) {
350 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, /*num_commitments=*/1);
351 populate_field_elements<FF>(proof, /*num_elements=*/2);
352 }
353
354 // 6. ALL_ENTITIES sumcheck evaluations
355 populate_field_elements<FF>(proof, ECCVMFlavor::NUM_ALL_ENTITIES);
356
357 // 7. Libra evaluation
358 populate_field_elements<FF>(proof, 1);
359
360 // 8. Libra grand sum commitment
361 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, /*num_commitments=*/1);
362
363 // 9. Libra quotient commitment
364 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, /*num_commitments=*/1);
365
366 // 10. Gemini fold commitments
367 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof,
368 /*num_commitments=*/CONST_ECCVM_LOG_N - 1);
369
370 // 11. Gemini evaluations
371 populate_field_elements<FF>(proof, CONST_ECCVM_LOG_N);
372
373 // 12. NUM_SMALL_IPA_EVALUATIONS libra evals
374 populate_field_elements<FF>(proof, NUM_SMALL_IPA_EVALUATIONS);
375
376 // 13. Shplonk
377 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, /*num_commitments=*/1);
378
379 // 14. Translator concatenated masking term commitment
380 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, /*num_commitments=*/1);
381
382 // 15. Translator op evaluation
383 populate_field_elements<FF>(proof, 1);
384
385 // 16. Translator Px evaluation
386 populate_field_elements<FF>(proof, 1);
387
388 // 17. Translator Py evaluation
389 populate_field_elements<FF>(proof, 1);
390
391 // 18. Translator z1 evaluation
392 populate_field_elements<FF>(proof, 1);
393
394 // 19. Translator z2 evaluation
395 populate_field_elements<FF>(proof, 1);
396
397 // 20. Translator concatenated masking term evaluation
398 populate_field_elements<FF>(proof, 1);
399
400 // 21. Translator grand sum commitment
401 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, /*num_commitments=*/1);
402
403 // 22. Translator quotient commitment
404 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, /*num_commitments=*/1);
405
406 // 23. Translator concatenation evaluation
407 populate_field_elements<FF>(proof, 1);
408
409 // 24. Translator grand sum shift evaluation
410 populate_field_elements<FF>(proof, 1);
411
412 // 25. Translator grand sum evaluation
413 populate_field_elements<FF>(proof, 1);
414
415 // 26. Translator quotient evaluation
416 populate_field_elements<FF>(proof, 1);
417
418 // 27. Shplonk
419 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, /*num_commitments=*/1);
420
422
423 return proof;
424}
425
427{
428 HonkProof proof;
429
430 // Commitments to L and R for CONST_ECCVM_LOG_N round
431 populate_field_elements_for_mock_commitments<curve::Grumpkin>(
432 proof, /*num_commitments=*/CONST_ECCVM_LOG_N + CONST_ECCVM_LOG_N);
433
434 // Commitment to G_0
435 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, /*num_commitments=*/1);
436
437 // a_0 evaluation (a_0 is in the base field of BN254)
438 populate_field_elements<curve::BN254::BaseField>(proof, 1);
439
440 BB_ASSERT_EQ(proof.size(), IPA_PROOF_LENGTH);
441
442 return proof;
443}
444
446{
448
449 HonkProof proof;
450
451 // 1. NUM_WITNESS_ENTITIES commitments (includes gemini masking, wires, ordered range constraints, z_perm; excludes
452 // 2 interleaved)
453 populate_field_elements_for_mock_commitments<Curve>(proof,
454 /*num_commitments=*/TranslatorFlavor::NUM_WITNESS_ENTITIES - 3 -
456
457 // 3. Decider proof (Libra + sumcheck + Gemini + PCS)
459 proof.insert(proof.end(), decider_proof.begin(), decider_proof.end());
460
462
463 return proof;
464}
465
466template <typename Builder> HonkProof create_mock_chonk_proof(const size_t acir_public_inputs_size)
467{
468 HonkProof proof;
469
470 HonkProof mega_proof =
471 create_mock_honk_proof<MegaZKFlavor, stdlib::recursion::honk::HidingKernelIO<Builder>>(acir_public_inputs_size);
473 HonkProof eccvm_proof{ create_mock_eccvm_proof() };
474 HonkProof ipa_proof = create_mock_ipa_proof();
475 HonkProof translator_proof = create_mock_translator_proof();
476
477 ChonkProof chonk_proof{ mega_proof, GoblinProof{ merge_proof, eccvm_proof, ipa_proof, translator_proof } };
478 proof = chonk_proof.to_field_elements();
479
480 return proof;
481}
482
483template <typename Flavor, class PublicInputs>
485 const size_t acir_public_inputs_size)
486{
487 // Set relevant VK metadata and commitments
488 auto honk_verification_key = std::make_shared<typename Flavor::VerificationKey>();
489 honk_verification_key->log_circuit_size = bb::numeric::get_msb(dyadic_size);
490 honk_verification_key->num_public_inputs = acir_public_inputs_size + PublicInputs::PUBLIC_INPUTS_SIZE;
491 honk_verification_key->pub_inputs_offset = NUM_ZERO_ROWS;
492
493 for (auto& commitment : honk_verification_key->get_all()) {
494 commitment = curve::BN254::AffineElement::one(); // arbitrary mock commitment
495 }
496
497 return honk_verification_key;
498}
499
500// Explicitly instantiate template functions
503template HonkProof create_mock_oink_proof<MegaFlavor, stdlib::recursion::honk::HidingKernelIO<MegaCircuitBuilder>>(
504 const size_t);
505
506template HonkProof create_mock_oink_proof<UltraFlavor, stdlib::recursion::honk::DefaultIO<UltraCircuitBuilder>>(
507 const size_t);
508template HonkProof create_mock_oink_proof<UltraZKFlavor, stdlib::recursion::honk::DefaultIO<UltraCircuitBuilder>>(
509 const size_t);
510template HonkProof create_mock_oink_proof<UltraFlavor, stdlib::recursion::honk::DefaultIO<MegaCircuitBuilder>>(
511 const size_t);
512template HonkProof create_mock_oink_proof<UltraZKFlavor, stdlib::recursion::honk::DefaultIO<MegaCircuitBuilder>>(
513 const size_t);
515
516template HonkProof create_mock_oink_proof<avm2::AvmFlavor, stdlib::recursion::honk::DefaultIO<UltraCircuitBuilder>>(
517 const size_t);
518
520
526
529template HonkProof create_mock_honk_proof<MegaFlavor, stdlib::recursion::honk::HidingKernelIO<MegaCircuitBuilder>>(
530 const size_t);
531
532template HonkProof create_mock_honk_proof<UltraFlavor, stdlib::recursion::honk::DefaultIO<UltraCircuitBuilder>>(
533 const size_t);
534template HonkProof create_mock_honk_proof<UltraZKFlavor, stdlib::recursion::honk::DefaultIO<UltraCircuitBuilder>>(
535 const size_t);
536template HonkProof create_mock_honk_proof<UltraFlavor, stdlib::recursion::honk::DefaultIO<MegaCircuitBuilder>>(
537 const size_t);
538template HonkProof create_mock_honk_proof<UltraZKFlavor, stdlib::recursion::honk::DefaultIO<MegaCircuitBuilder>>(
539 const size_t);
541
543construct_arbitrary_valid_honk_proof_and_vk<UltraFlavor, stdlib::recursion::honk::DefaultIO<UltraCircuitBuilder>>(
544 const size_t);
546construct_arbitrary_valid_honk_proof_and_vk<UltraZKFlavor, stdlib::recursion::honk::DefaultIO<UltraCircuitBuilder>>(
547 const size_t);
550
553
556
558 const size_t, const size_t);
561 const size_t, const size_t);
568
583 const size_t, const size_t);
584
585} // 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. See more in Sumcheck Outline.
Base Native verification key class.
Definition flavor.hpp:172
A ProverInstance is normally constructed from a finalized circuit and it contains all the information...
static constexpr size_t NUM_WITNESS_ENTITIES
static constexpr size_t NUM_OP_QUEUE_WIRES
static constexpr size_t PROOF_LENGTH
Child class of UltraFlavor that runs with ZK Sumcheck.
static constexpr size_t COMPUTED_AVM_PROOF_LENGTH_IN_FIELDS
Definition flavor.hpp:98
AvmFlavorSettings::FF FF
Definition flavor.hpp:42
FixedVKAndHash_< PrecomputedEntities< Commitment >, FF, typename constraining::AvmHardCodedVKAndHash > VerificationKey
Verification key of the AVM. It is fixed and reconstructed from precomputed values.
Definition flavor.hpp:225
static constexpr bool HasZK
Definition flavor.hpp:56
static constexpr size_t NUM_WITNESS_ENTITIES
Definition flavor.hpp:61
static constexpr size_t BATCHED_RELATION_PARTIAL_LENGTH
Definition flavor.hpp:89
static constexpr size_t NUM_ALL_ENTITIES
Definition flavor.hpp:64
AvmFlavorSettings::Curve Curve
Definition flavor.hpp:38
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 for structures that contain data parameterized by the fundamental polynomials of...
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 >()
template HonkProof create_mock_decider_proof< TranslatorFlavor >()
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...
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:47
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:174
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