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.
13
14namespace acir_format {
15
16using namespace bb;
17
18template <class Curve>
19void populate_field_elements_for_mock_commitments(std::vector<fr>& fields, const size_t& num_commitments)
20{
21 auto mock_commitment = Curve::AffineElement::one();
22 std::vector<fr> mock_commitment_frs = FrCodec::serialize_to_fields(mock_commitment);
23 for (size_t i = 0; i < num_commitments; ++i) {
24 for (const fr& val : mock_commitment_frs) {
25 fields.emplace_back(val);
26 }
27 }
28}
29
30template <class FF>
31void populate_field_elements(std::vector<fr>& fields, const size_t& num_elements, std::optional<FF> value)
32{
33 for (size_t i = 0; i < num_elements; ++i) {
34 std::vector<fr> field_elements = value.has_value() ? FrCodec::serialize_to_fields(value.value())
36 fields.insert(fields.end(), field_elements.begin(), field_elements.end());
37 }
38}
39
40template <typename Flavor, class PublicInputs> HonkProof create_mock_oink_proof(const size_t acir_public_inputs_size)
41{
42 HonkProof proof;
43
44 // Populate mock public inputs
45 typename PublicInputs::Builder builder;
46 PublicInputs::add_default(builder);
47
48 // Populate the proof with as many public inputs as required from the ACIR constraints
49 populate_field_elements<fr>(proof, acir_public_inputs_size);
50
51 // Populate the proof with the public inputs added from barretenberg
52 for (const auto& pub : builder.public_inputs()) {
53 proof.emplace_back(builder.get_variable(pub));
54 }
55
56 // Populate mock witness polynomial commitments
58
59 return proof;
60}
61
62template <typename Flavor> HonkProof create_mock_sumcheck_proof()
63{
64 using FF = typename Flavor::FF;
65 HonkProof proof;
66
67 // Sumcheck univariates
68 const size_t TOTAL_SIZE_SUMCHECK_UNIVARIATES = Flavor::VIRTUAL_LOG_N * Flavor::BATCHED_RELATION_PARTIAL_LENGTH;
69 populate_field_elements<FF>(proof, TOTAL_SIZE_SUMCHECK_UNIVARIATES);
70
71 // Sumcheck multilinear evaluations
72 populate_field_elements<FF>(proof, Flavor::NUM_ALL_ENTITIES);
73
74 return proof;
75}
76
78{
80 using FF = typename Flavor::FF;
81 HonkProof proof;
82
83 // Populate mock witness accumulator commitments
85
86 // Accumulator multivariate challenges
87 populate_field_elements<FF>(proof, Flavor::VIRTUAL_LOG_N);
88
89 // Witness accumulator polynomial evaluations
90 populate_field_elements<FF>(proof, Flavor::NUM_WITNESS_ENTITIES / 2);
91
92 // Sumcheck proof
93 HonkProof sumcheck_proof = create_mock_sumcheck_proof<Flavor>();
94
95 proof.insert(proof.end(), sumcheck_proof.begin(), sumcheck_proof.end());
96
97 return proof;
98}
99
100template <typename Flavor, class PublicInputs> HonkProof create_mock_hyper_nova_proof(bool include_fold)
101{
102 HonkProof oink_proof = create_mock_oink_proof<Flavor, PublicInputs>(/*acir_public_inputs_size=*/0);
103 HonkProof sumcheck_proof = create_mock_sumcheck_proof<Flavor>();
104 HonkProof multilinear_batch_proof;
105 if (include_fold) {
106 multilinear_batch_proof = create_mock_multilinear_batch_proof();
107 }
108 HonkProof proof;
109 proof.reserve(oink_proof.size() + sumcheck_proof.size() + multilinear_batch_proof.size());
110 proof.insert(proof.end(), oink_proof.begin(), oink_proof.end());
111 proof.insert(proof.end(), sumcheck_proof.begin(), sumcheck_proof.end());
112 proof.insert(proof.end(), multilinear_batch_proof.begin(), multilinear_batch_proof.end());
113
114 return proof;
115}
116
117// WORKTODO: use these methods in places where this logic is duplicated
118template <typename Flavor> HonkProof create_mock_pcs_proof()
119{
120 using FF = Flavor::FF;
121 using Curve = Flavor::Curve;
122 HonkProof proof;
123
124 // Gemini fold commitments
125 const size_t NUM_GEMINI_FOLD_COMMITMENTS = Flavor::VIRTUAL_LOG_N - 1;
126 populate_field_elements_for_mock_commitments<Curve>(proof, NUM_GEMINI_FOLD_COMMITMENTS);
127
128 // Gemini fold evaluations
129 const size_t NUM_GEMINI_FOLD_EVALUATIONS = Flavor::VIRTUAL_LOG_N;
130 populate_field_elements<FF>(proof, NUM_GEMINI_FOLD_EVALUATIONS);
131
133 // Gemini P pos evaluation
134 populate_field_elements<FF>(proof, 1);
135
136 // Gemini P neg evaluation
137 populate_field_elements<FF>(proof, 1);
138 }
139
140 if constexpr (Flavor::HasZK) {
141 // NUM_SMALL_IPA_EVALUATIONS libra evals
142 populate_field_elements<FF>(proof, NUM_SMALL_IPA_EVALUATIONS);
143 }
144
145 // Shplonk batched quotient commitment
146 populate_field_elements_for_mock_commitments<Curve>(proof, /*num_commitments=*/1);
147 // KZG quotient commitment
148 populate_field_elements_for_mock_commitments<Curve>(proof, /*num_commitments=*/1);
149
150 return proof;
151}
152
153template <typename Flavor> HonkProof create_mock_decider_proof()
154{
155 using FF = Flavor::FF;
156 using Curve = Flavor::Curve;
157 HonkProof proof;
158
159 constexpr size_t const_proof_log_n = []() {
161 return MEGA_AVM_LOG_N;
162 } else {
163 return Flavor::VIRTUAL_LOG_N;
164 }
165 }();
166
167 if constexpr (Flavor::HasZK) {
168 // Libra concatenation commitment
169 populate_field_elements_for_mock_commitments<Curve>(proof, 1);
170
171 // Libra sum
172 populate_field_elements<FF>(proof, 1);
173 }
174
175 // Sumcheck univariates
176 const size_t TOTAL_SIZE_SUMCHECK_UNIVARIATES = const_proof_log_n * Flavor::BATCHED_RELATION_PARTIAL_LENGTH;
177 populate_field_elements<FF>(proof, TOTAL_SIZE_SUMCHECK_UNIVARIATES);
178
179 // Sumcheck multilinear evaluations
180 populate_field_elements<FF>(proof, Flavor::NUM_ALL_ENTITIES);
181
182 if constexpr (Flavor::HasZK) {
183 // Libra claimed evaluation
184 populate_field_elements<FF>(proof, 1);
185
186 // Libra grand sum commitment
187 populate_field_elements_for_mock_commitments<Curve>(proof, 1);
188
189 // Libra quotient commitment
190 populate_field_elements_for_mock_commitments<Curve>(proof, 1);
191 }
192
193 // Gemini fold commitments
194 const size_t NUM_GEMINI_FOLD_COMMITMENTS = const_proof_log_n - 1;
195 populate_field_elements_for_mock_commitments<Curve>(proof, NUM_GEMINI_FOLD_COMMITMENTS);
196
197 // Gemini fold evaluations
198 const size_t NUM_GEMINI_FOLD_EVALUATIONS = const_proof_log_n;
199 populate_field_elements<FF>(proof, NUM_GEMINI_FOLD_EVALUATIONS);
200
202 // Gemini P pos evaluation
203 populate_field_elements<FF>(proof, 1);
204
205 // Gemini P neg evaluation
206 populate_field_elements<FF>(proof, 1);
207 }
208
209 if constexpr (Flavor::HasZK) {
210 // NUM_SMALL_IPA_EVALUATIONS libra evals
211 populate_field_elements<FF>(proof, NUM_SMALL_IPA_EVALUATIONS);
212 }
213
214 // Shplonk batched quotient commitment
215 populate_field_elements_for_mock_commitments<Curve>(proof, /*num_commitments=*/1);
216 // KZG quotient commitment
217 populate_field_elements_for_mock_commitments<Curve>(proof, /*num_commitments=*/1);
218
219 return proof;
220}
221
222template <typename Flavor, class PublicInputs> HonkProof create_mock_honk_proof(const size_t acir_public_inputs_size)
223{
224 // Construct a Honk proof as the concatenation of an Oink proof and a Decider proof
225 HonkProof oink_proof = create_mock_oink_proof<Flavor, PublicInputs>(acir_public_inputs_size);
226 HonkProof decider_proof = create_mock_decider_proof<Flavor>();
227 HonkProof proof;
228 proof.reserve(oink_proof.size() + decider_proof.size());
229 proof.insert(proof.end(), oink_proof.begin(), oink_proof.end());
230 proof.insert(proof.end(), decider_proof.begin(), decider_proof.end());
231
232 if constexpr (HasIPAAccumulator<Flavor>) {
233 HonkProof ipa_proof = create_mock_ipa_proof();
234 proof.insert(proof.end(), ipa_proof.begin(), ipa_proof.end());
235 }
236 return proof;
237}
238
240{
241 size_t proof_length =
243 // Construct an AVM proof as the padded concatenation of an Oink proof and a Decider proof
244 HonkProof oink_proof =
245 create_mock_oink_proof<bb::avm2::AvmFlavor, stdlib::recursion::honk::DefaultIO<UltraCircuitBuilder>>(
246 /*acir_public_inputs_size=*/0);
248
249 HonkProof proof;
250 proof.reserve(proof_length);
251 proof.insert(proof.end(),
252 oink_proof.begin() +
253 bb::DefaultIO::PUBLIC_INPUTS_SIZE, // Skip the Oink public inputs as they are not needed
254 oink_proof.end());
255 proof.insert(proof.end(), decider_proof.begin(), decider_proof.end());
256
257 BB_ASSERT_LTE(proof.size(), proof_length); // Sanity check
258 proof.resize(proof_length, 0); // Pad the proof to the required length (if needed)
259
260 return proof;
261}
262
263template <typename Flavor>
265 const size_t acir_public_inputs_size)
266{
268 using InnerProver = bb::UltraProver_<Flavor>;
270 using Builder = typename Flavor::CircuitBuilder;
271
272 // Construct a circuit with a single gate
274
278 fr d = a + b + c;
279
280 uint32_t a_idx = builder.add_variable(a);
281 uint32_t b_idx = builder.add_variable(b);
282 uint32_t c_idx = builder.add_variable(c);
283 uint32_t d_idx = builder.add_variable(d);
284
285 builder.create_big_add_gate({ a_idx, b_idx, c_idx, d_idx, fr(1), fr(1), fr(1), fr(-1), fr(0) });
286
287 // Add the public inputs
288 for (size_t i = 0; i < acir_public_inputs_size; ++i) {
289 builder.add_public_variable(fr::random_element());
290 }
291
292 // Add the default pairing points and IPA claim
293 if constexpr (HasIPAAccumulator<Flavor>) {
295 } else {
297 }
298
299 // prove the circuit constructed above
300 // Create the decider proving key
301 auto decider_pk = std::make_shared<ProverInstance>(builder);
302
303 // Construct the Ultra VK
304 auto vk = std::make_shared<VerificationKey>(decider_pk->get_precomputed());
305 InnerProver prover(decider_pk, vk);
306 auto honk_proof = prover.construct_proof();
307 return std::pair(honk_proof, vk);
308}
309
311{
312 Goblin::MergeProof proof;
313 proof.reserve(MERGE_PROOF_SIZE);
314
315 uint32_t mock_shift_size = 5; // Must be smaller than 32, otherwise pow raises an error
316
317 // Populate mock shift size
318 populate_field_elements<fr>(proof, 1, /*value=*/fr{ mock_shift_size });
319
320 // Populate mock merged table commitments and batched degree check polynomial commitment
322
323 // Populate evaluations (3 * NUM_WIRES + 1: left, right, and merged tables, plus batched degree check polynomial)
324 populate_field_elements(proof, 13);
325
326 // Shplonk proof: commitment to the quotient
328
329 // KZG proof: commitment to W
331
332 BB_ASSERT_EQ(proof.size(), MERGE_PROOF_SIZE);
333
334 return proof;
335}
336
345{
346 using FF = ECCVMFlavor::FF;
347 HonkProof proof;
348
349 // 1. NUM_WITNESS_ENTITIES + 1 commitments (includes gemini_masking_poly)
350 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, ECCVMFlavor::NUM_WITNESS_ENTITIES + 1);
351
352 // 2. Libra concatenation commitment
353 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, /*num_commitments*/ 1);
354
355 // 3. Libra sum
356 populate_field_elements<FF>(proof, 1);
357
358 // 4. Sumcheck univariates commitments + 5. Sumcheck univariate evaluations
359 for (size_t idx = 0; idx < CONST_ECCVM_LOG_N; idx++) {
360 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, /*num_commitments=*/1);
361 populate_field_elements<FF>(proof, /*num_elements=*/2);
362 }
363
364 // 6. ALL_ENTITIES sumcheck evaluations
365 populate_field_elements<FF>(proof, ECCVMFlavor::NUM_ALL_ENTITIES);
366
367 // 7. Libra evaluation
368 populate_field_elements<FF>(proof, 1);
369
370 // 8. Libra grand sum commitment
371 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, /*num_commitments=*/1);
372
373 // 9. Libra quotient commitment
374 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, /*num_commitments=*/1);
375
376 // 10. Gemini fold commitments
377 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof,
378 /*num_commitments=*/CONST_ECCVM_LOG_N - 1);
379
380 // 11. Gemini evaluations
381 populate_field_elements<FF>(proof, CONST_ECCVM_LOG_N);
382
383 // 12. NUM_SMALL_IPA_EVALUATIONS libra evals
384 populate_field_elements<FF>(proof, NUM_SMALL_IPA_EVALUATIONS);
385
386 // 13. Shplonk
387 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, /*num_commitments=*/1);
388
389 // 14. Translator concatenated masking term commitment
390 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, /*num_commitments=*/1);
391
392 // 15. Translator op evaluation
393 populate_field_elements<FF>(proof, 1);
394
395 // 16. Translator Px evaluation
396 populate_field_elements<FF>(proof, 1);
397
398 // 17. Translator Py evaluation
399 populate_field_elements<FF>(proof, 1);
400
401 // 18. Translator z1 evaluation
402 populate_field_elements<FF>(proof, 1);
403
404 // 19. Translator z2 evaluation
405 populate_field_elements<FF>(proof, 1);
406
407 // 20. Translator concatenated masking term evaluation
408 populate_field_elements<FF>(proof, 1);
409
410 // 21. Translator grand sum commitment
411 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, /*num_commitments=*/1);
412
413 // 22. Translator quotient commitment
414 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, /*num_commitments=*/1);
415
416 // 23. Translator concatenation evaluation
417 populate_field_elements<FF>(proof, 1);
418
419 // 24. Translator grand sum shift evaluation
420 populate_field_elements<FF>(proof, 1);
421
422 // 25. Translator grand sum evaluation
423 populate_field_elements<FF>(proof, 1);
424
425 // 26. Translator quotient evaluation
426 populate_field_elements<FF>(proof, 1);
427
428 // 27. Shplonk
429 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, /*num_commitments=*/1);
430
432
433 return proof;
434}
435
437{
438 HonkProof proof;
439
440 // Commitments to L and R for CONST_ECCVM_LOG_N round
441 populate_field_elements_for_mock_commitments<curve::Grumpkin>(
442 proof, /*num_commitments=*/CONST_ECCVM_LOG_N + CONST_ECCVM_LOG_N);
443
444 // Commitment to G_0
445 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, /*num_commitments=*/1);
446
447 // a_0 evaluation (a_0 is in the base field of BN254)
448 populate_field_elements<curve::BN254::BaseField>(proof, 1);
449
450 BB_ASSERT_EQ(proof.size(), IPA_PROOF_LENGTH);
451
452 return proof;
453}
454
456{
458
459 HonkProof proof;
460
461 // 1. NUM_WITNESS_ENTITIES commitments (includes gemini masking, wires, ordered range constraints, z_perm; excludes
462 // 2 interleaved)
463 populate_field_elements_for_mock_commitments<Curve>(proof,
464 /*num_commitments=*/TranslatorFlavor::NUM_WITNESS_ENTITIES - 3 -
466
467 // 3. Decider proof (Libra + sumcheck + Gemini + PCS)
469 proof.insert(proof.end(), decider_proof.begin(), decider_proof.end());
470
472
473 return proof;
474}
475
476template <typename Builder> HonkProof create_mock_chonk_proof(const size_t acir_public_inputs_size)
477{
478 HonkProof proof;
479
480 HonkProof mega_proof =
481 create_mock_honk_proof<MegaZKFlavor, stdlib::recursion::honk::HidingKernelIO<Builder>>(acir_public_inputs_size);
483 HonkProof eccvm_proof{ create_mock_eccvm_proof() };
484 HonkProof ipa_proof = create_mock_ipa_proof();
485 HonkProof translator_proof = create_mock_translator_proof();
486
487 ChonkProof chonk_proof{ mega_proof, GoblinProof{ merge_proof, eccvm_proof, ipa_proof, translator_proof } };
488 proof = chonk_proof.to_field_elements();
489
490 return proof;
491}
492
493template <typename Flavor, class PublicInputs>
495 const size_t acir_public_inputs_size)
496{
497 // Set relevant VK metadata and commitments
498 auto honk_verification_key = std::make_shared<typename Flavor::VerificationKey>();
499 honk_verification_key->log_circuit_size = bb::numeric::get_msb(dyadic_size);
500 honk_verification_key->num_public_inputs = acir_public_inputs_size + PublicInputs::PUBLIC_INPUTS_SIZE;
501 honk_verification_key->pub_inputs_offset = NUM_ZERO_ROWS;
502
503 for (auto& commitment : honk_verification_key->get_all()) {
504 commitment = curve::BN254::AffineElement::one(); // arbitrary mock commitment
505 }
506
507 return honk_verification_key;
508}
509
510// Explicitly instantiate template functions
513template HonkProof create_mock_oink_proof<MegaFlavor, stdlib::recursion::honk::HidingKernelIO<MegaCircuitBuilder>>(
514 const size_t);
515
516template HonkProof create_mock_oink_proof<UltraFlavor, stdlib::recursion::honk::DefaultIO<UltraCircuitBuilder>>(
517 const size_t);
518template HonkProof create_mock_oink_proof<UltraZKFlavor, stdlib::recursion::honk::DefaultIO<UltraCircuitBuilder>>(
519 const size_t);
520template HonkProof create_mock_oink_proof<UltraFlavor, stdlib::recursion::honk::DefaultIO<MegaCircuitBuilder>>(
521 const size_t);
522template HonkProof create_mock_oink_proof<UltraZKFlavor, stdlib::recursion::honk::DefaultIO<MegaCircuitBuilder>>(
523 const size_t);
525
526template HonkProof create_mock_oink_proof<avm2::AvmFlavor, stdlib::recursion::honk::DefaultIO<UltraCircuitBuilder>>(
527 const size_t);
528
530
537
540template HonkProof create_mock_honk_proof<MegaFlavor, stdlib::recursion::honk::HidingKernelIO<MegaCircuitBuilder>>(
541 const size_t);
542
543template HonkProof create_mock_honk_proof<UltraFlavor, stdlib::recursion::honk::DefaultIO<UltraCircuitBuilder>>(
544 const size_t);
545template HonkProof create_mock_honk_proof<UltraZKFlavor, stdlib::recursion::honk::DefaultIO<UltraCircuitBuilder>>(
546 const size_t);
547template HonkProof create_mock_honk_proof<UltraFlavor, stdlib::recursion::honk::DefaultIO<MegaCircuitBuilder>>(
548 const size_t);
549template HonkProof create_mock_honk_proof<UltraZKFlavor, stdlib::recursion::honk::DefaultIO<MegaCircuitBuilder>>(
550 const size_t);
552
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 NUM_WITNESS_ENTITIES
static constexpr size_t PROOF_LENGTH_WITHOUT_PUB_INPUTS
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_WITHOUT_PUB_INPUTS
UltraRollupFlavor extends UltraFlavor with IPA proof support.
Child class of UltraFlavor that runs with ZK Sumcheck.
static constexpr size_t COMPUTED_AVM_PROOF_LENGTH_IN_FIELDS
Definition flavor.hpp:102
AvmFlavorSettings::FF FF
Definition flavor.hpp:36
static constexpr bool HasZK
Definition flavor.hpp:50
static constexpr size_t NUM_WITNESS_ENTITIES
Definition flavor.hpp:55
static constexpr size_t BATCHED_RELATION_PARTIAL_LENGTH
Definition flavor.hpp:93
static constexpr size_t NUM_ALL_ENTITIES
Definition flavor.hpp:58
AvmFlavorSettings::Curve Curve
Definition flavor.hpp:32
Manages the data that is propagated on the public inputs of an application/function circuit.
static void add_default(Builder &builder)
Add default public inputs when they are not present.
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.
static void add_default(Builder &builder)
Add default public inputs when they are not present.
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...
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_decider_proof< UltraRollupFlavor >()
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 >()
template std::pair< HonkProof, std::shared_ptr< UltraRollupFlavor::VerificationKey > > construct_arbitrary_valid_honk_proof_and_vk< UltraRollupFlavor >(const size_t)
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 std::pair< HonkProof, std::shared_ptr< UltraFlavor::VerificationKey > > construct_arbitrary_valid_honk_proof_and_vk< UltraFlavor >(const size_t)
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_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.
template HonkProof create_mock_oink_proof< UltraRollupFlavor, stdlib::recursion::honk::RollupIO >(const size_t)
HonkProof create_mock_multilinear_batch_proof()
Create a mock multilinear batching sumcheck proof that has the correct structure but is not in genera...
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 ...
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)
template HonkProof create_mock_honk_proof< UltraRollupFlavor, stdlib::recursion::honk::RollupIO >(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< MegaFlavor, stdlib::recursion::honk::KernelIO >(const size_t)
template std::pair< HonkProof, std::shared_ptr< UltraZKFlavor::VerificationKey > > construct_arbitrary_valid_honk_proof_and_vk< UltraZKFlavor >(const size_t)
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