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 polynomial commitments
111
112 // Accumulator and instance multivariate challenges
113 populate_field_elements<FF>(proof, Flavor::VIRTUAL_LOG_N * 2);
114
115 // Witness polynomial evaluations
116 populate_field_elements<FF>(proof, Flavor::NUM_WITNESS_ENTITIES);
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 // Gemini masking commitment
217 populate_field_elements_for_mock_commitments<Curve>(proof, 1);
218
219 // Gemini masking evaluation
220 populate_field_elements<FF>(proof, 1);
221 }
222
223 // Gemini fold commitments
224 const size_t NUM_GEMINI_FOLD_COMMITMENTS = const_proof_log_n - 1;
225 populate_field_elements_for_mock_commitments<Curve>(proof, NUM_GEMINI_FOLD_COMMITMENTS);
226
227 // Gemini fold evaluations
228 const size_t NUM_GEMINI_FOLD_EVALUATIONS = const_proof_log_n;
229 populate_field_elements<FF>(proof, NUM_GEMINI_FOLD_EVALUATIONS);
230
232 // Gemini P pos evaluation
233 populate_field_elements<FF>(proof, 1);
234
235 // Gemini P neg evaluation
236 populate_field_elements<FF>(proof, 1);
237 }
238
239 if constexpr (Flavor::HasZK) {
240 // NUM_SMALL_IPA_EVALUATIONS libra evals
241 populate_field_elements<FF>(proof, NUM_SMALL_IPA_EVALUATIONS);
242 }
243
244 // Shplonk batched quotient commitment
245 populate_field_elements_for_mock_commitments<Curve>(proof, /*num_commitments=*/1);
246 // KZG quotient commitment
247 populate_field_elements_for_mock_commitments<Curve>(proof, /*num_commitments=*/1);
248
249 return proof;
250}
251
257template <typename Flavor, class PublicInputs> HonkProof create_mock_honk_proof(const size_t inner_public_inputs_size)
258{
259 // Construct a Honk proof as the concatenation of an Oink proof and a Decider proof
260 HonkProof oink_proof = create_mock_oink_proof<Flavor, PublicInputs>(inner_public_inputs_size);
261 HonkProof decider_proof = create_mock_decider_proof<Flavor>();
262 HonkProof proof;
263 proof.reserve(oink_proof.size() + decider_proof.size());
264 proof.insert(proof.end(), oink_proof.begin(), oink_proof.end());
265 proof.insert(proof.end(), decider_proof.begin(), decider_proof.end());
266
267 if constexpr (HasIPAAccumulator<Flavor>) {
268 HonkProof ipa_proof = create_mock_ipa_proof();
269 proof.insert(proof.end(), ipa_proof.begin(), ipa_proof.end());
270 }
271 return proof;
272}
273
280template <typename Flavor>
282 size_t num_inner_public_inputs)
283{
285 using InnerProver = bb::UltraProver_<Flavor>;
287 using Builder = typename Flavor::CircuitBuilder;
288
289 // constuct a circuit with a single gate
291
293 uint32_t a_idx = builder.add_variable(a);
294
295 // have a big add gate added
298 fr d = a + b + c;
299 uint32_t b_idx = builder.add_variable(b);
300 uint32_t c_idx = builder.add_variable(c);
301 uint32_t d_idx = builder.add_variable(d);
302
303 builder.create_big_add_gate({ a_idx, b_idx, c_idx, d_idx, fr(1), fr(1), fr(1), fr(-1), fr(0) });
304
305 // Add the public inputs
306 for (size_t i = 0; i < num_inner_public_inputs; ++i) {
307 builder.add_public_variable(fr::random_element());
308 }
309
310 // Add the default pairing points
312
313 if constexpr (HasIPAAccumulator<Flavor>) {
314 // Create a fake ipa claim and proof
315 auto [stdlib_opening_claim, ipa_proof] =
316 IPA<stdlib::grumpkin<typename Flavor::CircuitBuilder>>::create_random_valid_ipa_claim_and_proof(builder);
317 stdlib_opening_claim.set_public();
318 builder.ipa_proof = ipa_proof;
319 }
320
321 // prove the circuit constructed above
322 // Create the decider proving key
323 auto decider_pk = std::make_shared<ProverInstance>(builder);
324
325 // Construct the Ultra VK
326 auto vk = std::make_shared<VerificationKey>(decider_pk->get_precomputed());
327 InnerProver prover(decider_pk, vk);
328 auto honk_proof = prover.construct_proof();
329 return std::pair(honk_proof, vk);
330}
331
336template <typename Flavor, class PublicInputs> HonkProof create_mock_pg_proof()
337{
338 // The first part of a PG proof is an Oink proof
339 HonkProof proof = create_mock_oink_proof<Flavor, PublicInputs>();
340
341 // Populate mock perturbator coefficients
342 populate_field_elements<fr>(proof, CONST_PG_LOG_N, /*value=*/fr::zero());
343
344 // Populate mock combiner quotient coefficients
345 size_t NUM_COEFF_COMBINER_QUOTIENT = computed_batched_extended_length<Flavor>() - NUM_INSTANCES;
346 populate_field_elements<fr>(proof, NUM_COEFF_COMBINER_QUOTIENT, /*value=*/fr::zero());
347
348 return proof;
349}
350
357{
358 Goblin::MergeProof proof;
359 proof.reserve(MERGE_PROOF_SIZE);
360
361 uint32_t mock_shift_size = 5; // Must be smaller than 32, otherwise pow raises an error
362
363 // Populate mock shift size
364 populate_field_elements<fr>(proof, 1, /*value=*/fr{ mock_shift_size });
365
366 // There are 8 entities in the merge protocol (4 columns x 2 components: T_j, g_j(X) = X^{l-1} t_j(X))
367 // and 8 evaluations (4 columns x 2 components: g_j(kappa), t_j(1/kappa))
368 const size_t NUM_TRANSCRIPT_ENTITIES = 8;
369 const size_t NUM_TRANSCRIPT_EVALUATIONS = 8;
370
371 // Transcript poly commitments
372 populate_field_elements_for_mock_commitments(proof, NUM_TRANSCRIPT_ENTITIES);
373
374 // Transcript poly evaluations
375 populate_field_elements(proof, NUM_TRANSCRIPT_EVALUATIONS);
376
377 // Shplonk proof: commitment to the quotient
379
380 // KZG proof: commitment to W
382
383 BB_ASSERT_EQ(proof.size(), MERGE_PROOF_SIZE);
384
385 return proof;
386}
387
388template <typename Builder> HonkProof create_mock_civc_proof(const size_t inner_public_inputs_size)
389{
390 HonkProof proof;
391
392 HonkProof mega_proof = create_mock_honk_proof<MegaZKFlavor, stdlib::recursion::honk::HidingKernelIO<Builder>>(
393 inner_public_inputs_size);
396 HonkProof translator_proof = create_mock_translator_proof();
397
398 ClientIVC::Proof civc_proof{ mega_proof, { merge_proof, eccvm_proof, translator_proof } };
399 proof = civc_proof.to_field_elements();
400
401 return proof;
402}
403
412{
413 using FF = ECCVMFlavor::FF;
414 HonkProof proof;
415
416 // 1. NUM_WITNESS_ENTITIES commitments
417 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, ECCVMFlavor::NUM_WITNESS_ENTITIES);
418
419 // 2. Libra concatenation commitment
420 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, /*num_commitments*/ 1);
421
422 // 3. Libra sum
423 populate_field_elements<FF>(proof, 1);
424
425 // 4. Sumcheck univariates commitments + 5. Sumcheck univariate evaluations
426 for (size_t idx = 0; idx < CONST_ECCVM_LOG_N; idx++) {
427 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, /*num_commitments=*/1);
428 populate_field_elements<FF>(proof, /*num_elements=*/2);
429 }
430
431 // 6. ALL_ENTITIES sumcheck evaluations
432 populate_field_elements<FF>(proof, ECCVMFlavor::NUM_ALL_ENTITIES);
433
434 // 7. Libra evaluation
435 populate_field_elements<FF>(proof, 1);
436
437 // 8. Libra grand sum commitment
438 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, /*num_commitments=*/1);
439
440 // 9. Libra quotient commitment
441 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, /*num_commitments=*/1);
442
443 // 10. Gemini masking commitment
444 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, /*num_commitments=*/1);
445
446 // 11. Gemini masking evaluations
447 populate_field_elements<FF>(proof, 1);
448
449 // 12. Gemini fold commitments
450 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof,
451 /*num_commitments=*/CONST_ECCVM_LOG_N - 1);
452
453 // 13. Gemini evaluations
454 populate_field_elements<FF>(proof, CONST_ECCVM_LOG_N);
455
456 // 14. NUM_SMALL_IPA_EVALUATIONS libra evals
457 populate_field_elements<FF>(proof, NUM_SMALL_IPA_EVALUATIONS);
458
459 // 15. Shplonk
460 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, /*num_commitments=*/1);
461
462 // 16. Translator concatenated masking term commitment
463 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, /*num_commitments=*/1);
464
465 // 17. Translator op evaluation
466 populate_field_elements<FF>(proof, 1);
467
468 // 18. Translator Px evaluation
469 populate_field_elements<FF>(proof, 1);
470
471 // 19. Translator Py evaluation
472 populate_field_elements<FF>(proof, 1);
473
474 // 20. Translator z1 evaluation
475 populate_field_elements<FF>(proof, 1);
476
477 // 21. Translator z2 evaluation
478 populate_field_elements<FF>(proof, 1);
479
480 // 22. Translator concatenated masking term evaluation
481 populate_field_elements<FF>(proof, 1);
482
483 // 23. Translator grand sum commitment
484 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, /*num_commitments=*/1);
485
486 // 24. Translator quotient commitment
487 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, /*num_commitments=*/1);
488
489 // 25. Translator concatenation evaluation
490 populate_field_elements<FF>(proof, 1);
491
492 // 26. Translator grand sum shift evaluation
493 populate_field_elements<FF>(proof, 1);
494
495 // 27. Translator grand sum evaluation
496 populate_field_elements<FF>(proof, 1);
497
498 // 28. Translator quotient evaluation
499 populate_field_elements<FF>(proof, 1);
500
501 // 29. Shplonk
502 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, /*num_commitments=*/1);
503
504 BB_ASSERT_EQ(proof.size(), ECCVMFlavor::PROOF_LENGTH_WITHOUT_PUB_INPUTS - IPA_PROOF_LENGTH);
505
506 return proof;
507}
508
517{
518 HonkProof proof;
519
520 // Commitments to L and R for CONST_ECCVM_LOG_N round
521 populate_field_elements_for_mock_commitments<curve::Grumpkin>(
522 proof, /*num_commitments=*/CONST_ECCVM_LOG_N + CONST_ECCVM_LOG_N);
523
524 // Commitment to G_0
525 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, /*num_commitments=*/1);
526
527 // a_0 evaluation (a_0 is in the base field of BN254)
528 populate_field_elements<curve::BN254::BaseField>(proof, 1);
529
530 BB_ASSERT_EQ(proof.size(), IPA_PROOF_LENGTH);
531
532 return proof;
533}
534
541{
542 using BF = TranslatorFlavor::BF;
544
545 HonkProof proof;
547
548 // 1. Accumulated result
549 populate_field_elements<BF>(proof, 1);
550
551 // 2. NUM_WITNESS_ENTITIES commitments
552 populate_field_elements_for_mock_commitments<Curve>(proof,
553 /*num_commitments=*/TranslatorFlavor::NUM_WITNESS_ENTITIES - 4);
554
555 // Insert decider proof
556 proof.insert(proof.end(), decider_proof.begin(), decider_proof.end());
557
559
560 return proof;
561}
562
570template <typename Flavor, class PublicInputs>
572 const size_t pub_inputs_offset,
573 const size_t inner_public_inputs_size)
574{
575 // Set relevant VK metadata and commitments
576 auto honk_verification_key = std::make_shared<typename Flavor::VerificationKey>();
577 honk_verification_key->log_circuit_size = bb::numeric::get_msb(dyadic_size);
578 honk_verification_key->num_public_inputs = inner_public_inputs_size + PublicInputs::PUBLIC_INPUTS_SIZE;
579 honk_verification_key->pub_inputs_offset = pub_inputs_offset; // must be set correctly
580
581 for (auto& commitment : honk_verification_key->get_all()) {
582 commitment = curve::BN254::AffineElement::one(); // arbitrary mock commitment
583 }
584
585 return honk_verification_key;
586}
587
593{
594 using FF = typename Flavor::FF;
595
596 // Set relevant VK metadata and commitments
597 auto verifier_instance = std::make_shared<VerifierInstance_<Flavor>>();
599 create_mock_honk_vk<Flavor, stdlib::recursion::honk::DefaultIO<typename Flavor::CircuitBuilder>>(
600 0, 0); // metadata does not need to be accurate
601 verifier_instance->vk = vk;
602 verifier_instance->is_complete = true;
603 verifier_instance->gate_challenges = std::vector<FF>(static_cast<size_t>(CONST_PG_LOG_N), FF::random_element());
604
605 for (auto& commitment : verifier_instance->witness_commitments.get_all()) {
606 commitment = curve::BN254::AffineElement::one(); // arbitrary mock commitment
607 }
608
609 return verifier_instance;
610}
611
612// Explicitly instantiate template functions
615template HonkProof create_mock_oink_proof<MegaFlavor, stdlib::recursion::honk::HidingKernelIO<MegaCircuitBuilder>>(
616 const size_t);
617
618template HonkProof create_mock_oink_proof<UltraFlavor, stdlib::recursion::honk::DefaultIO<UltraCircuitBuilder>>(
619 const size_t);
620template HonkProof create_mock_oink_proof<UltraZKFlavor, stdlib::recursion::honk::DefaultIO<UltraCircuitBuilder>>(
621 const size_t);
622template HonkProof create_mock_oink_proof<UltraFlavor, stdlib::recursion::honk::DefaultIO<MegaCircuitBuilder>>(
623 const size_t);
624template HonkProof create_mock_oink_proof<UltraZKFlavor, stdlib::recursion::honk::DefaultIO<MegaCircuitBuilder>>(
625 const size_t);
627
629
635
638template HonkProof create_mock_honk_proof<MegaFlavor, stdlib::recursion::honk::HidingKernelIO<MegaCircuitBuilder>>(
639 const size_t);
640
641template HonkProof create_mock_honk_proof<UltraFlavor, stdlib::recursion::honk::DefaultIO<UltraCircuitBuilder>>(
642 const size_t);
643template HonkProof create_mock_honk_proof<UltraZKFlavor, stdlib::recursion::honk::DefaultIO<UltraCircuitBuilder>>(
644 const size_t);
645template HonkProof create_mock_honk_proof<UltraFlavor, stdlib::recursion::honk::DefaultIO<MegaCircuitBuilder>>(
646 const size_t);
647template HonkProof create_mock_honk_proof<UltraZKFlavor, stdlib::recursion::honk::DefaultIO<MegaCircuitBuilder>>(
648 const size_t);
650
652 UltraFlavor>(size_t num_public_inputs);
654 UltraZKFlavor>(size_t num_public_inputs);
657
660template HonkProof create_mock_pg_proof<MegaFlavor, stdlib::recursion::honk::HidingKernelIO<MegaCircuitBuilder>>();
661
662template HonkProof create_mock_hyper_nova_proof<MegaFlavor, stdlib::recursion::honk::DefaultIO<MegaCircuitBuilder>>(
663 bool);
665
668
670 const size_t, const size_t, const size_t);
673 const size_t, const size_t, const size_t);
676 stdlib::recursion::honk::HidingKernelIO<MegaCircuitBuilder>>(const size_t, const size_t, const size_t);
679 stdlib::recursion::honk::HidingKernelIO<UltraCircuitBuilder>>(const size_t, const size_t, const size_t);
680
683 stdlib::recursion::honk::DefaultIO<UltraCircuitBuilder>>(const size_t, const size_t, const size_t);
686 stdlib::recursion::honk::DefaultIO<UltraCircuitBuilder>>(const size_t, const size_t, const size_t);
689 stdlib::recursion::honk::DefaultIO<MegaCircuitBuilder>>(const size_t, const size_t, const size_t);
692 stdlib::recursion::honk::DefaultIO<MegaCircuitBuilder>>(const size_t, const size_t, const size_t);
695 const size_t, const size_t, const size_t);
696
698
699} // namespace acir_format
#define BB_ASSERT_EQ(actual, expected,...)
Definition assert.hpp:88
typename Curve::ScalarField FF
static constexpr size_t NUM_ALL_ENTITIES
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:36
IPA (inner product argument) commitment scheme class.
Definition ipa.hpp:93
The verification key is responsible for storing the commitments to the precomputed (non-witness) poly...
Curve::ScalarField FF
MegaCircuitBuilder CircuitBuilder
curve::BN254 Curve
static constexpr size_t NUM_ALL_ENTITIES
static constexpr bool HasZK
static constexpr size_t NUM_WITNESS_ENTITIES
static constexpr size_t VIRTUAL_LOG_N
static constexpr size_t BATCHED_RELATION_PARTIAL_LENGTH
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 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.
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:123
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_pg_proof< MegaFlavor, stdlib::recursion::honk::KernelIO >()
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.
HonkProof create_mock_pg_proof()
Create a mock PG proof that has the correct structure but is not in general valid.
template HonkProof create_mock_civc_proof< MegaCircuitBuilder >(const size_t)
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)
template HonkProof create_mock_civc_proof< UltraCircuitBuilder >(const size_t)
Goblin::MergeProof create_mock_merge_proof()
Create a mock merge 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 >()
HonkProof create_mock_civc_proof(const size_t inner_public_inputs_size)
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.
HonkProof create_mock_pre_ipa_proof()
Create a mock pre-ipa proof which has the correct structure but is not necessarily valid.
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_multilinear_batch_proof()
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)
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()
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 HonkProof create_mock_pg_proof< MegaFlavor, stdlib::recursion::honk::AppIO >()
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)
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.
std::vector< fr > HonkProof
Definition proof.hpp:15
typename Flavor::FF FF
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 circuit (wh...
std::vector< FF > to_field_elements() const
Serialize proof to field elements.
static field random_element(numeric::RNG *engine=nullptr) noexcept
static constexpr field zero()
static void add_default_to_public_inputs(Builder &builder)
Adds default public inputs to the builder.