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