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.
1// === AUDIT STATUS ===
2// internal: { status: not started, auditors: [], date: YYYY-MM-DD }
3// external_1: { status: not started, auditors: [], date: YYYY-MM-DD }
4// external_2: { status: not started, auditors: [], date: YYYY-MM-DD }
5// =====================
6
17#include "proof_surgeon.hpp"
19
20namespace acir_format {
21
22using namespace bb;
23
30template <class Curve = curve::BN254>
31void populate_field_elements_for_mock_commitments(std::vector<fr>& fields, const size_t& num_commitments)
32{
33 auto mock_commitment = Curve::AffineElement::one();
34 std::vector<fr> mock_commitment_frs = FrCodec::serialize_to_fields(mock_commitment);
35 for (size_t i = 0; i < num_commitments; ++i) {
36 for (const fr& val : mock_commitment_frs) {
37 fields.emplace_back(val);
38 }
39 }
40}
41
49template <class FF = curve::BN254::ScalarField>
50void populate_field_elements(std::vector<fr>& fields,
51 const size_t& num_elements,
53{
54 for (size_t i = 0; i < num_elements; ++i) {
55 std::vector<fr> field_elements = value.has_value() ? FrCodec::serialize_to_fields(value.value())
57 fields.insert(fields.end(), field_elements.begin(), field_elements.end());
58 }
59}
60
66template <typename Flavor, class PublicInputs> HonkProof create_mock_oink_proof(const size_t inner_public_inputs_size)
67{
68 HonkProof proof;
69
70 // Populate mock public inputs
71 typename PublicInputs::Builder builder;
72 PublicInputs::add_default(builder);
73
74 // Populate the proof with as many public inputs as required from the ACIR constraints
75 populate_field_elements<fr>(proof, inner_public_inputs_size);
76
77 // Populate the proof with the public inputs added from barretenberg
78 for (const auto& pub : builder.public_inputs()) {
79 proof.emplace_back(builder.get_variable(pub));
80 }
81
82 // Populate mock witness polynomial commitments
84
85 return proof;
86}
87
88template <typename Flavor> HonkProof create_mock_sumcheck_proof()
89{
90 using FF = typename Flavor::FF;
91 HonkProof proof;
92
93 // Sumcheck univariates
94 const size_t TOTAL_SIZE_SUMCHECK_UNIVARIATES = Flavor::VIRTUAL_LOG_N * Flavor::BATCHED_RELATION_PARTIAL_LENGTH;
95 populate_field_elements<FF>(proof, TOTAL_SIZE_SUMCHECK_UNIVARIATES);
96
97 // Sumcheck multilinear evaluations
98 populate_field_elements<FF>(proof, Flavor::NUM_ALL_ENTITIES);
99
100 return proof;
101}
102
104{
106 using FF = typename Flavor::FF;
107 HonkProof proof;
108
109 // Populate mock witness accumulator commitments
111
112 // Accumulator multivariate challenges
113 populate_field_elements<FF>(proof, Flavor::VIRTUAL_LOG_N);
114
115 // Witness accumulator polynomial evaluations
116 populate_field_elements<FF>(proof, Flavor::NUM_WITNESS_ENTITIES / 2);
117
118 // Sumcheck proof
119 HonkProof sumcheck_proof = create_mock_sumcheck_proof<Flavor>();
120
121 proof.insert(proof.end(), sumcheck_proof.begin(), sumcheck_proof.end());
122
123 return proof;
124}
125
126template <typename Flavor, class PublicInputs> HonkProof create_mock_hyper_nova_proof(bool include_fold)
127{
128 HonkProof oink_proof = create_mock_oink_proof<Flavor, PublicInputs>(/*inner_public_inputs_size=*/0);
129 HonkProof sumcheck_proof = create_mock_sumcheck_proof<Flavor>();
130 HonkProof multilinear_batch_proof;
131 if (include_fold) {
132 multilinear_batch_proof = create_mock_multilinear_batch_proof();
133 }
134 HonkProof proof;
135 proof.reserve(oink_proof.size() + sumcheck_proof.size() + multilinear_batch_proof.size());
136 proof.insert(proof.end(), oink_proof.begin(), oink_proof.end());
137 proof.insert(proof.end(), sumcheck_proof.begin(), sumcheck_proof.end());
138 proof.insert(proof.end(), multilinear_batch_proof.begin(), multilinear_batch_proof.end());
139
140 return proof;
141}
142
143// WORKTODO: use these methods in places where this logic is duplicated
144template <typename Flavor> HonkProof create_mock_pcs_proof()
145{
146 using FF = Flavor::FF;
147 using Curve = Flavor::Curve;
148 HonkProof proof;
149
150 // Gemini fold commitments
151 const size_t NUM_GEMINI_FOLD_COMMITMENTS = Flavor::VIRTUAL_LOG_N - 1;
152 populate_field_elements_for_mock_commitments<Curve>(proof, NUM_GEMINI_FOLD_COMMITMENTS);
153
154 // Gemini fold evaluations
155 const size_t NUM_GEMINI_FOLD_EVALUATIONS = Flavor::VIRTUAL_LOG_N;
156 populate_field_elements<FF>(proof, NUM_GEMINI_FOLD_EVALUATIONS);
157
159 // Gemini P pos evaluation
160 populate_field_elements<FF>(proof, 1);
161
162 // Gemini P neg evaluation
163 populate_field_elements<FF>(proof, 1);
164 }
165
166 if constexpr (Flavor::HasZK) {
167 // NUM_SMALL_IPA_EVALUATIONS libra evals
168 populate_field_elements<FF>(proof, NUM_SMALL_IPA_EVALUATIONS);
169 }
170
171 // Shplonk batched quotient commitment
172 populate_field_elements_for_mock_commitments<Curve>(proof, /*num_commitments=*/1);
173 // KZG quotient commitment
174 populate_field_elements_for_mock_commitments<Curve>(proof, /*num_commitments=*/1);
175
176 return proof;
177}
178
183template <typename Flavor> HonkProof create_mock_decider_proof()
184{
185 using FF = Flavor::FF;
186 using Curve = Flavor::Curve;
187 HonkProof proof;
188
189 constexpr size_t const_proof_log_n = Flavor::VIRTUAL_LOG_N;
190
191 if constexpr (Flavor::HasZK) {
192 // Libra concatenation commitment
193 populate_field_elements_for_mock_commitments<Curve>(proof, 1);
194
195 // Libra sum
196 populate_field_elements<FF>(proof, 1);
197 }
198
199 // Sumcheck univariates
200 const size_t TOTAL_SIZE_SUMCHECK_UNIVARIATES = const_proof_log_n * Flavor::BATCHED_RELATION_PARTIAL_LENGTH;
201 populate_field_elements<FF>(proof, TOTAL_SIZE_SUMCHECK_UNIVARIATES);
202
203 // Sumcheck multilinear evaluations
204 populate_field_elements<FF>(proof, Flavor::NUM_ALL_ENTITIES);
205
206 if constexpr (Flavor::HasZK) {
207 // Libra claimed evaluation
208 populate_field_elements<FF>(proof, 1);
209
210 // Libra grand sum commitment
211 populate_field_elements_for_mock_commitments<Curve>(proof, 1);
212
213 // Libra quotient commitment
214 populate_field_elements_for_mock_commitments<Curve>(proof, 1);
215 }
216
217 // Gemini fold commitments
218 const size_t NUM_GEMINI_FOLD_COMMITMENTS = const_proof_log_n - 1;
219 populate_field_elements_for_mock_commitments<Curve>(proof, NUM_GEMINI_FOLD_COMMITMENTS);
220
221 // Gemini fold evaluations
222 const size_t NUM_GEMINI_FOLD_EVALUATIONS = const_proof_log_n;
223 populate_field_elements<FF>(proof, NUM_GEMINI_FOLD_EVALUATIONS);
224
226 // Gemini P pos evaluation
227 populate_field_elements<FF>(proof, 1);
228
229 // Gemini P neg evaluation
230 populate_field_elements<FF>(proof, 1);
231 }
232
233 if constexpr (Flavor::HasZK) {
234 // NUM_SMALL_IPA_EVALUATIONS libra evals
235 populate_field_elements<FF>(proof, NUM_SMALL_IPA_EVALUATIONS);
236 }
237
238 // Shplonk batched quotient commitment
239 populate_field_elements_for_mock_commitments<Curve>(proof, /*num_commitments=*/1);
240 // KZG quotient commitment
241 populate_field_elements_for_mock_commitments<Curve>(proof, /*num_commitments=*/1);
242
243 return proof;
244}
245
251template <typename Flavor, class PublicInputs> HonkProof create_mock_honk_proof(const size_t inner_public_inputs_size)
252{
253 // Construct a Honk proof as the concatenation of an Oink proof and a Decider proof
254 HonkProof oink_proof = create_mock_oink_proof<Flavor, PublicInputs>(inner_public_inputs_size);
255 HonkProof decider_proof = create_mock_decider_proof<Flavor>();
256 HonkProof proof;
257 proof.reserve(oink_proof.size() + decider_proof.size());
258 proof.insert(proof.end(), oink_proof.begin(), oink_proof.end());
259 proof.insert(proof.end(), decider_proof.begin(), decider_proof.end());
260
261 if constexpr (HasIPAAccumulator<Flavor>) {
262 HonkProof ipa_proof = create_mock_ipa_proof();
263 proof.insert(proof.end(), ipa_proof.begin(), ipa_proof.end());
264 }
265 return proof;
266}
267
274template <typename Flavor>
276 size_t num_inner_public_inputs)
277{
279 using InnerProver = bb::UltraProver_<Flavor>;
281 using Builder = typename Flavor::CircuitBuilder;
282
283 // constuct a circuit with a single gate
285
287 uint32_t a_idx = builder.add_variable(a);
288
289 // have a big add gate added
292 fr d = a + b + c;
293 uint32_t b_idx = builder.add_variable(b);
294 uint32_t c_idx = builder.add_variable(c);
295 uint32_t d_idx = builder.add_variable(d);
296
297 builder.create_big_add_gate({ a_idx, b_idx, c_idx, d_idx, fr(1), fr(1), fr(1), fr(-1), fr(0) });
298
299 // Add the public inputs
300 for (size_t i = 0; i < num_inner_public_inputs; ++i) {
301 builder.add_public_variable(fr::random_element());
302 }
303
304 // Add the default pairing points and IPA claim
305 if constexpr (HasIPAAccumulator<Flavor>) {
307 } else {
309 }
310
311 // prove the circuit constructed above
312 // Create the decider proving key
313 auto decider_pk = std::make_shared<ProverInstance>(builder);
314
315 // Construct the Ultra VK
316 auto vk = std::make_shared<VerificationKey>(decider_pk->get_precomputed());
317 InnerProver prover(decider_pk, vk);
318 auto honk_proof = prover.construct_proof();
319 return std::pair(honk_proof, vk);
320}
321
328{
329 Goblin::MergeProof proof;
330 proof.reserve(MERGE_PROOF_SIZE);
331
332 uint32_t mock_shift_size = 5; // Must be smaller than 32, otherwise pow raises an error
333
334 // Populate mock shift size
335 populate_field_elements<fr>(proof, 1, /*value=*/fr{ mock_shift_size });
336
337 // Populate mock merged table commitments and batched degree check polynomial commitment
339
340 // Populate evaluations (3 * NUM_WIRES + 1: left, right, and merged tables, plus batched degree check polynomial)
341 populate_field_elements(proof, 13);
342
343 // Shplonk proof: commitment to the quotient
345
346 // KZG proof: commitment to W
348
349 BB_ASSERT_EQ(proof.size(), MERGE_PROOF_SIZE);
350
351 return proof;
352}
353
354template <typename Builder> HonkProof create_mock_chonk_proof(const size_t inner_public_inputs_size)
355{
356 HonkProof proof;
357
358 HonkProof mega_proof = create_mock_honk_proof<MegaZKFlavor, stdlib::recursion::honk::HidingKernelIO<Builder>>(
359 inner_public_inputs_size);
361 HonkProof eccvm_proof{ create_mock_eccvm_proof() };
362 HonkProof ipa_proof = create_mock_ipa_proof();
363 HonkProof translator_proof = create_mock_translator_proof();
364
365 Chonk::Proof chonk_proof{ mega_proof, { merge_proof, eccvm_proof, ipa_proof, translator_proof } };
366 proof = chonk_proof.to_field_elements();
367
368 return proof;
369}
370
379{
380 using FF = ECCVMFlavor::FF;
381 HonkProof proof;
382
383 // 1. NUM_WITNESS_ENTITIES + 1 commitments (includes gemini_masking_poly)
384 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, ECCVMFlavor::NUM_WITNESS_ENTITIES + 1);
385
386 // 2. Libra concatenation commitment
387 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, /*num_commitments*/ 1);
388
389 // 3. Libra sum
390 populate_field_elements<FF>(proof, 1);
391
392 // 4. Sumcheck univariates commitments + 5. Sumcheck univariate evaluations
393 for (size_t idx = 0; idx < CONST_ECCVM_LOG_N; idx++) {
394 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, /*num_commitments=*/1);
395 populate_field_elements<FF>(proof, /*num_elements=*/2);
396 }
397
398 // 6. ALL_ENTITIES sumcheck evaluations
399 populate_field_elements<FF>(proof, ECCVMFlavor::NUM_ALL_ENTITIES);
400
401 // 7. Libra evaluation
402 populate_field_elements<FF>(proof, 1);
403
404 // 8. Libra grand sum commitment
405 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, /*num_commitments=*/1);
406
407 // 9. Libra quotient commitment
408 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, /*num_commitments=*/1);
409
410 // 10. Gemini fold commitments
411 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof,
412 /*num_commitments=*/CONST_ECCVM_LOG_N - 1);
413
414 // 11. Gemini evaluations
415 populate_field_elements<FF>(proof, CONST_ECCVM_LOG_N);
416
417 // 12. NUM_SMALL_IPA_EVALUATIONS libra evals
418 populate_field_elements<FF>(proof, NUM_SMALL_IPA_EVALUATIONS);
419
420 // 13. Shplonk
421 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, /*num_commitments=*/1);
422
423 // 14. Translator concatenated masking term commitment
424 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, /*num_commitments=*/1);
425
426 // 15. Translator op evaluation
427 populate_field_elements<FF>(proof, 1);
428
429 // 16. Translator Px evaluation
430 populate_field_elements<FF>(proof, 1);
431
432 // 17. Translator Py evaluation
433 populate_field_elements<FF>(proof, 1);
434
435 // 18. Translator z1 evaluation
436 populate_field_elements<FF>(proof, 1);
437
438 // 19. Translator z2 evaluation
439 populate_field_elements<FF>(proof, 1);
440
441 // 20. Translator concatenated masking term evaluation
442 populate_field_elements<FF>(proof, 1);
443
444 // 21. Translator grand sum commitment
445 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, /*num_commitments=*/1);
446
447 // 22. Translator quotient commitment
448 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, /*num_commitments=*/1);
449
450 // 23. Translator concatenation evaluation
451 populate_field_elements<FF>(proof, 1);
452
453 // 24. Translator grand sum shift evaluation
454 populate_field_elements<FF>(proof, 1);
455
456 // 25. Translator grand sum evaluation
457 populate_field_elements<FF>(proof, 1);
458
459 // 26. Translator quotient evaluation
460 populate_field_elements<FF>(proof, 1);
461
462 // 27. Shplonk
463 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, /*num_commitments=*/1);
464
466
467 return proof;
468}
469
478{
479 HonkProof proof;
480
481 // Commitments to L and R for CONST_ECCVM_LOG_N round
482 populate_field_elements_for_mock_commitments<curve::Grumpkin>(
483 proof, /*num_commitments=*/CONST_ECCVM_LOG_N + CONST_ECCVM_LOG_N);
484
485 // Commitment to G_0
486 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, /*num_commitments=*/1);
487
488 // a_0 evaluation (a_0 is in the base field of BN254)
489 populate_field_elements<curve::BN254::BaseField>(proof, 1);
490
491 BB_ASSERT_EQ(proof.size(), IPA_PROOF_LENGTH);
492
493 return proof;
494}
495
502{
504
505 HonkProof proof;
506
507 // 1. NUM_WITNESS_ENTITIES commitments (includes gemini masking, wires, ordered range constraints, z_perm; excludes
508 // 2 interleaved)
509 populate_field_elements_for_mock_commitments<Curve>(proof,
510 /*num_commitments=*/TranslatorFlavor::NUM_WITNESS_ENTITIES - 3 -
512
513 // 3. Decider proof (Libra + sumcheck + Gemini + PCS)
515 proof.insert(proof.end(), decider_proof.begin(), decider_proof.end());
516
518
519 return proof;
520}
521
529template <typename Flavor, class PublicInputs>
531 const size_t pub_inputs_offset,
532 const size_t inner_public_inputs_size)
533{
534 // Set relevant VK metadata and commitments
535 auto honk_verification_key = std::make_shared<typename Flavor::VerificationKey>();
536 honk_verification_key->log_circuit_size = bb::numeric::get_msb(dyadic_size);
537 honk_verification_key->num_public_inputs = inner_public_inputs_size + PublicInputs::PUBLIC_INPUTS_SIZE;
538 honk_verification_key->pub_inputs_offset = pub_inputs_offset; // must be set correctly
539
540 for (auto& commitment : honk_verification_key->get_all()) {
541 commitment = curve::BN254::AffineElement::one(); // arbitrary mock commitment
542 }
543
544 return honk_verification_key;
545}
546
552{
553 using FF = typename Flavor::FF;
554
555 // Set relevant VK metadata and commitments
556 auto verifier_instance = std::make_shared<VerifierInstance_<Flavor>>();
558 create_mock_honk_vk<Flavor, stdlib::recursion::honk::DefaultIO<typename Flavor::CircuitBuilder>>(
559 0, 0); // metadata does not need to be accurate
560 verifier_instance->vk = vk;
561 verifier_instance->is_complete = true;
562 verifier_instance->gate_challenges =
563 std::vector<FF>(static_cast<size_t>(CONST_FOLDING_LOG_N), FF::random_element());
564
565 for (auto& commitment : verifier_instance->witness_commitments.get_all()) {
566 commitment = curve::BN254::AffineElement::one(); // arbitrary mock commitment
567 }
568
569 return verifier_instance;
570}
571
572// Explicitly instantiate template functions
575template HonkProof create_mock_oink_proof<MegaFlavor, stdlib::recursion::honk::HidingKernelIO<MegaCircuitBuilder>>(
576 const size_t);
577
578template HonkProof create_mock_oink_proof<UltraFlavor, stdlib::recursion::honk::DefaultIO<UltraCircuitBuilder>>(
579 const size_t);
580template HonkProof create_mock_oink_proof<UltraZKFlavor, stdlib::recursion::honk::DefaultIO<UltraCircuitBuilder>>(
581 const size_t);
582template HonkProof create_mock_oink_proof<UltraFlavor, stdlib::recursion::honk::DefaultIO<MegaCircuitBuilder>>(
583 const size_t);
584template HonkProof create_mock_oink_proof<UltraZKFlavor, stdlib::recursion::honk::DefaultIO<MegaCircuitBuilder>>(
585 const size_t);
587
589
595
598template HonkProof create_mock_honk_proof<MegaFlavor, stdlib::recursion::honk::HidingKernelIO<MegaCircuitBuilder>>(
599 const size_t);
600
601template HonkProof create_mock_honk_proof<UltraFlavor, stdlib::recursion::honk::DefaultIO<UltraCircuitBuilder>>(
602 const size_t);
603template HonkProof create_mock_honk_proof<UltraZKFlavor, stdlib::recursion::honk::DefaultIO<UltraCircuitBuilder>>(
604 const size_t);
605template HonkProof create_mock_honk_proof<UltraFlavor, stdlib::recursion::honk::DefaultIO<MegaCircuitBuilder>>(
606 const size_t);
607template HonkProof create_mock_honk_proof<UltraZKFlavor, stdlib::recursion::honk::DefaultIO<MegaCircuitBuilder>>(
608 const size_t);
610
612 UltraFlavor>(size_t num_public_inputs);
614 UltraZKFlavor>(size_t num_public_inputs);
617
618// template HonkProof create_mock_pg_proof<MegaFlavor, stdlib::recursion::honk::AppIO>();
619// template HonkProof create_mock_pg_proof<MegaFlavor, stdlib::recursion::honk::KernelIO>();
620// template HonkProof create_mock_pg_proof<MegaFlavor, stdlib::recursion::honk::HidingKernelIO<MegaCircuitBuilder>>();
621
622template HonkProof create_mock_hyper_nova_proof<MegaFlavor, stdlib::recursion::honk::DefaultIO<MegaCircuitBuilder>>(
623 bool);
625
628
630 const size_t, const size_t, const size_t);
633 const size_t, const size_t, const size_t);
636 stdlib::recursion::honk::HidingKernelIO<MegaCircuitBuilder>>(const size_t, const size_t, const size_t);
639 stdlib::recursion::honk::HidingKernelIO<UltraCircuitBuilder>>(const size_t, const size_t, const size_t);
640
643 stdlib::recursion::honk::DefaultIO<UltraCircuitBuilder>>(const size_t, const size_t, const size_t);
646 stdlib::recursion::honk::DefaultIO<UltraCircuitBuilder>>(const size_t, const size_t, const size_t);
649 stdlib::recursion::honk::DefaultIO<MegaCircuitBuilder>>(const size_t, const size_t, const size_t);
652 stdlib::recursion::honk::DefaultIO<MegaCircuitBuilder>>(const size_t, const size_t, const size_t);
655 const size_t, const size_t, const size_t);
656
658
659} // namespace acir_format
#define BB_ASSERT_EQ(actual, expected,...)
Definition assert.hpp:77
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:35
Child class of MegaFlavor that runs with ZK Sumcheck. See more in Sumcheck Outline.
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
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...
UltraKeccakFlavor::VerificationKey VerificationKey
template HonkProof create_mock_decider_proof< UltraRollupFlavor >()
template HonkProof create_mock_chonk_proof< UltraCircuitBuilder >(const size_t)
std::shared_ptr< typename Flavor::VerificationKey > create_mock_honk_vk(const size_t dyadic_size, const size_t pub_inputs_offset, const size_t inner_public_inputs_size)
Create a mock MegaHonk VK that has the correct structure.
template HonkProof create_mock_decider_proof< UltraZKFlavor >()
template HonkProof create_mock_decider_proof< TranslatorFlavor >()
HonkProof create_mock_oink_proof(const size_t inner_public_inputs_size)
Create a mock oink proof that has the correct structure but is not in general 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.
void populate_field_elements(std::vector< fr > &fields, const size_t &num_elements, std::optional< FF > value=std::nullopt)
Helper to populate a field buffer with some number of field elements.
HonkProof create_mock_translator_proof()
Create a mock translator proof which has the correct structure but is not necessarily valid.
template HonkProof create_mock_pcs_proof< MegaFlavor >()
std::pair< HonkProof, std::shared_ptr< typename Flavor::VerificationKey > > construct_honk_proof_for_simple_circuit(size_t num_inner_public_inputs)
Create a verifiable honk proof for a circuit with a single big add gate. Adds random public inputs to...
template HonkProof create_mock_hyper_nova_proof< MegaFlavor, stdlib::recursion::honk::KernelIO >(bool)
std::shared_ptr< VerifierInstance_< Flavor > > create_mock_verifier_instance()
Create a mock instance for initilization of a mock verifier accumulator.
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_oink_proof< MegaFlavor, stdlib::recursion::honk::AppIO >(const size_t)
HonkProof create_mock_hyper_nova_proof(bool include_fold)
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()
template std::pair< HonkProof, std::shared_ptr< UltraRollupFlavor::VerificationKey > > construct_honk_proof_for_simple_circuit< UltraRollupFlavor >(size_t num_public_inputs)
template HonkProof create_mock_decider_proof< UltraFlavor >()
HonkProof create_mock_pcs_proof()
template HonkProof create_mock_chonk_proof< MegaCircuitBuilder >(const size_t)
HonkProof create_mock_honk_proof(const size_t inner_public_inputs_size)
Create a mock honk proof that has the correct structure but is not in general valid.
template HonkProof create_mock_honk_proof< UltraRollupFlavor, stdlib::recursion::honk::RollupIO >(const size_t)
HonkProof create_mock_sumcheck_proof()
template std::shared_ptr< VerifierInstance_< MegaFlavor > > create_mock_verifier_instance< MegaFlavor >()
template HonkProof create_mock_oink_proof< MegaFlavor, stdlib::recursion::honk::KernelIO >(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)
HonkProof create_mock_chonk_proof(const size_t inner_public_inputs_size)
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
A full proof for the IVC scheme containing a Mega proof showing correctness of the Hiding kernel (whi...
Definition chonk.hpp:91
std::vector< FF > to_field_elements() const
Serialize proof to field elements.
Definition chonk.cpp:559
static field random_element(numeric::RNG *engine=nullptr) noexcept