46 constexpr size_t element_size = Codec::template calc_num_fields<T>();
48 auto element_span = std::span{ proof_data }.subspan(
offset, element_size);
50 return Codec::template deserialize_from_fields<T>(element_span);
55 auto element_fields = Codec::serialize_to_fields(element);
56 proof_data.insert(proof_data.end(), element_fields.begin(), element_fields.end());
100 w_l_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
101 w_r_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
102 w_o_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
105 w_4_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
107 z_perm_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
126 for (
size_t i = 0; i < log_n; ++i) {
132 this->
template deserialize_from_buffer<std::array<FF, NUM_ALL_ENTITIES>>(proof_data,
offset);
138 for (
size_t i = 0; i < log_n; ++i) {
147 for (
size_t i = 0; i < log_n - 1; ++i) {
150 for (
size_t i = 0; i < log_n; ++i) {
154 kzg_w_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
160 for (
size_t i = 0; i < log_n - 1; ++i) {
163 for (
size_t i = 0; i < log_n; ++i) {
176 for (
size_t i = 0; i < num_public_inputs; ++i) {
186 size_t old_size = proof_data.size();
224 this->clear_vectors();
226 for (
size_t i = 0; i < num_public_inputs; ++i) {
227 this->public_inputs.push_back(this->
template deserialize_from_buffer<FF>(proof_data,
offset));
229 hiding_polynomial_commitment = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
230 this->deserialize_ultra_witness_comms(proof_data,
offset);
231 libra_concatenation_commitment = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
232 libra_sum = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
235 for (
size_t i = 0; i < log_n; ++i) {
236 this->sumcheck_univariates.push_back(
240 libra_claimed_evaluation = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
241 this->sumcheck_evaluations =
242 this->
template deserialize_from_buffer<std::array<FF, Base::NUM_ALL_ENTITIES>>(proof_data,
offset);
243 libra_grand_sum_commitment = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
244 libra_quotient_commitment = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
247 for (
size_t i = 0; i < log_n - 1; ++i) {
248 this->gemini_fold_comms.push_back(this->
template deserialize_from_buffer<Commitment>(proof_data,
offset));
250 for (
size_t i = 0; i < log_n; ++i) {
251 this->gemini_fold_evals.push_back(this->
template deserialize_from_buffer<FF>(proof_data,
offset));
253 libra_concatenation_eval = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
254 libra_shifted_grand_sum_eval = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
255 libra_grand_sum_eval = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
256 libra_quotient_eval = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
257 this->shplonk_q_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
258 this->kzg_w_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
263 size_t old_size = proof_data.size();
266 for (
const auto& pi : this->public_inputs) {
267 Base::serialize_to_buffer(pi, proof_data);
269 Base::serialize_to_buffer(hiding_polynomial_commitment, proof_data);
270 this->serialize_ultra_witness_comms(proof_data);
271 Base::serialize_to_buffer(libra_concatenation_commitment, proof_data);
272 Base::serialize_to_buffer(libra_sum, proof_data);
275 for (
size_t i = 0; i < log_n; ++i) {
276 Base::serialize_to_buffer(this->sumcheck_univariates[i], proof_data);
278 Base::serialize_to_buffer(libra_claimed_evaluation, proof_data);
279 Base::serialize_to_buffer(this->sumcheck_evaluations, proof_data);
280 Base::serialize_to_buffer(libra_grand_sum_commitment, proof_data);
281 Base::serialize_to_buffer(libra_quotient_commitment, proof_data);
284 for (
size_t i = 0; i < log_n - 1; ++i) {
285 Base::serialize_to_buffer(this->gemini_fold_comms[i], proof_data);
287 for (
size_t i = 0; i < log_n; ++i) {
288 Base::serialize_to_buffer(this->gemini_fold_evals[i], proof_data);
290 Base::serialize_to_buffer(libra_concatenation_eval, proof_data);
291 Base::serialize_to_buffer(libra_shifted_grand_sum_eval, proof_data);
292 Base::serialize_to_buffer(libra_grand_sum_eval, proof_data);
293 Base::serialize_to_buffer(libra_quotient_eval, proof_data);
294 Base::serialize_to_buffer(this->shplonk_q_comm, proof_data);
295 Base::serialize_to_buffer(this->kzg_w_comm, proof_data);
306 using Base::BATCHED_RELATION_PARTIAL_LENGTH;
307 using Base::NUM_ALL_ENTITIES;
322 std::array<Commitment, Flavor::NUM_BUS_COLUMNS>
bus_comms;
340 public_inputs.clear();
341 sumcheck_univariates.clear();
342 gemini_fold_comms.clear();
343 gemini_fold_evals.clear();
349 w_l_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
350 w_r_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
351 w_o_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
352 ecc_op_wire_1_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
353 ecc_op_wire_2_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
354 ecc_op_wire_3_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
355 ecc_op_wire_4_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
356 for (
size_t i = 0; i < Flavor::NUM_BUS_COLUMNS; ++i) {
357 bus_comms[i] = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
358 bus_read_counts_comms[i] = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
360 if constexpr (Flavor::HasLogDerivLookup) {
361 lookup_read_counts_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
362 lookup_read_tags_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
364 w_4_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
365 if constexpr (Flavor::HasLogDerivLookup) {
366 lookup_inverses_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
368 for (
size_t i = 0; i < Flavor::NUM_BUS_COLUMNS; ++i) {
369 bus_inverses_comms[i] = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
371 z_perm_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
377 Base::serialize_to_buffer(w_l_comm, proof_data);
378 Base::serialize_to_buffer(w_r_comm, proof_data);
379 Base::serialize_to_buffer(w_o_comm, proof_data);
380 Base::serialize_to_buffer(ecc_op_wire_1_comm, proof_data);
381 Base::serialize_to_buffer(ecc_op_wire_2_comm, proof_data);
382 Base::serialize_to_buffer(ecc_op_wire_3_comm, proof_data);
383 Base::serialize_to_buffer(ecc_op_wire_4_comm, proof_data);
384 for (
size_t i = 0; i < Flavor::NUM_BUS_COLUMNS; ++i) {
385 Base::serialize_to_buffer(bus_comms[i], proof_data);
386 Base::serialize_to_buffer(bus_read_counts_comms[i], proof_data);
388 if constexpr (Flavor::HasLogDerivLookup) {
389 Base::serialize_to_buffer(lookup_read_counts_comm, proof_data);
390 Base::serialize_to_buffer(lookup_read_tags_comm, proof_data);
392 Base::serialize_to_buffer(w_4_comm, proof_data);
393 if constexpr (Flavor::HasLogDerivLookup) {
394 Base::serialize_to_buffer(lookup_inverses_comm, proof_data);
396 for (
size_t i = 0; i < Flavor::NUM_BUS_COLUMNS; ++i) {
397 Base::serialize_to_buffer(bus_inverses_comms[i], proof_data);
399 Base::serialize_to_buffer(z_perm_comm, proof_data);
405 for (
size_t i = 0; i < log_n; ++i) {
406 sumcheck_univariates.push_back(
410 sumcheck_evaluations =
411 this->
template deserialize_from_buffer<std::array<FF, NUM_ALL_ENTITIES>>(proof_data,
offset);
417 for (
size_t i = 0; i < log_n; ++i) {
418 Base::serialize_to_buffer(sumcheck_univariates[i], proof_data);
420 Base::serialize_to_buffer(sumcheck_evaluations, proof_data);
426 for (
size_t i = 0; i < log_n - 1; ++i) {
427 gemini_fold_comms.push_back(this->
template deserialize_from_buffer<Commitment>(proof_data,
offset));
429 for (
size_t i = 0; i < log_n; ++i) {
430 gemini_fold_evals.push_back(this->
template deserialize_from_buffer<FF>(proof_data,
offset));
432 shplonk_q_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
433 kzg_w_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
439 for (
size_t i = 0; i < log_n - 1; ++i) {
440 Base::serialize_to_buffer(gemini_fold_comms[i], proof_data);
442 for (
size_t i = 0; i < log_n; ++i) {
443 Base::serialize_to_buffer(gemini_fold_evals[i], proof_data);
445 Base::serialize_to_buffer(shplonk_q_comm, proof_data);
446 Base::serialize_to_buffer(kzg_w_comm, proof_data);
455 for (
size_t i = 0; i < num_public_inputs; ++i) {
456 public_inputs.push_back(this->
template deserialize_from_buffer<FF>(proof_data,
offset));
458 deserialize_mega_witness_comms(proof_data,
offset);
459 deserialize_sumcheck(proof_data,
offset, log_n);
460 deserialize_pcs(proof_data,
offset, log_n);
465 size_t old_size = proof_data.size();
468 for (
const auto& pi : public_inputs) {
469 Base::serialize_to_buffer(pi, proof_data);
471 serialize_mega_witness_comms(proof_data);
472 serialize_sumcheck(proof_data, log_n);
473 serialize_pcs(proof_data, log_n);
503 this->clear_vectors();
505 for (
size_t i = 0; i < num_public_inputs; ++i) {
506 this->public_inputs.push_back(this->
template deserialize_from_buffer<FF>(proof_data,
offset));
508 if constexpr (flavor_has_gemini_masking<Flavor>()) {
509 hiding_polynomial_commitment = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
511 this->deserialize_mega_witness_comms(proof_data,
offset);
512 libra_concatenation_commitment = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
513 libra_sum = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
516 for (
size_t i = 0; i < log_n; ++i) {
517 this->sumcheck_univariates.push_back(
521 libra_claimed_evaluation = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
522 this->sumcheck_evaluations =
523 this->
template deserialize_from_buffer<std::array<FF, Base::NUM_ALL_ENTITIES>>(proof_data,
offset);
524 libra_grand_sum_commitment = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
525 libra_quotient_commitment = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
528 for (
size_t i = 0; i < log_n - 1; ++i) {
529 this->gemini_fold_comms.push_back(this->
template deserialize_from_buffer<Commitment>(proof_data,
offset));
531 for (
size_t i = 0; i < log_n; ++i) {
532 this->gemini_fold_evals.push_back(this->
template deserialize_from_buffer<FF>(proof_data,
offset));
534 libra_concatenation_eval = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
535 libra_shifted_grand_sum_eval = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
536 libra_grand_sum_eval = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
537 libra_quotient_eval = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
538 this->shplonk_q_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
539 this->kzg_w_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
544 size_t old_size = proof_data.size();
547 for (
const auto& pi : this->public_inputs) {
548 Base::serialize_to_buffer(pi, proof_data);
550 if constexpr (flavor_has_gemini_masking<Flavor>()) {
551 Base::serialize_to_buffer(hiding_polynomial_commitment, proof_data);
553 this->serialize_mega_witness_comms(proof_data);
554 Base::serialize_to_buffer(libra_concatenation_commitment, proof_data);
555 Base::serialize_to_buffer(libra_sum, proof_data);
558 for (
size_t i = 0; i < log_n; ++i) {
559 Base::serialize_to_buffer(this->sumcheck_univariates[i], proof_data);
561 Base::serialize_to_buffer(libra_claimed_evaluation, proof_data);
562 Base::serialize_to_buffer(this->sumcheck_evaluations, proof_data);
563 Base::serialize_to_buffer(libra_grand_sum_commitment, proof_data);
564 Base::serialize_to_buffer(libra_quotient_commitment, proof_data);
567 for (
size_t i = 0; i < log_n - 1; ++i) {
568 Base::serialize_to_buffer(this->gemini_fold_comms[i], proof_data);
570 for (
size_t i = 0; i < log_n; ++i) {
571 Base::serialize_to_buffer(this->gemini_fold_evals[i], proof_data);
573 Base::serialize_to_buffer(libra_concatenation_eval, proof_data);
574 Base::serialize_to_buffer(libra_shifted_grand_sum_eval, proof_data);
575 Base::serialize_to_buffer(libra_grand_sum_eval, proof_data);
576 Base::serialize_to_buffer(libra_quotient_eval, proof_data);
577 Base::serialize_to_buffer(this->shplonk_q_comm, proof_data);
578 Base::serialize_to_buffer(this->kzg_w_comm, proof_data);
589 using Base::BATCHED_RELATION_PARTIAL_LENGTH;
590 using Base::NUM_ALL_ENTITIES;
596 static constexpr size_t NUM_BATCH_WITNESS_COMMS = Flavor::NUM_COMMITMENTS_IN_PROOF;
598 static constexpr size_t LOG_MINI_CIRCUIT_SIZE = Flavor::LOG_MINI_CIRCUIT_SIZE;
599 static constexpr size_t NUM_MINICIRCUIT_EVALUATIONS = Flavor::NUM_MINICIRCUIT_EVALUATIONS;
600 static constexpr size_t NUM_FULL_CIRCUIT_EVALUATIONS = Flavor::NUM_FULL_CIRCUIT_EVALUATIONS;
640 witness_comms.clear();
641 sumcheck_univariates.clear();
642 gemini_fold_comms.clear();
643 gemini_fold_evals.clear();
646 gemini_masking_poly_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
647 for (
size_t i = 0; i < NUM_BATCH_WITNESS_COMMS; ++i) {
648 witness_comms.push_back(this->
template deserialize_from_buffer<Commitment>(proof_data,
offset));
650 z_perm_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
653 libra_concatenation_commitment = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
654 libra_sum = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
657 for (
size_t i = 0; i < LOG_MINI_CIRCUIT_SIZE; ++i) {
658 sumcheck_univariates.push_back(
663 minicircuit_evaluations =
664 this->
template deserialize_from_buffer<std::array<FF, NUM_MINICIRCUIT_EVALUATIONS>>(proof_data,
offset);
666 for (
size_t i = LOG_MINI_CIRCUIT_SIZE; i < log_n; ++i) {
667 sumcheck_univariates.push_back(
672 full_circuit_evaluations =
673 this->
template deserialize_from_buffer<std::array<FF, NUM_FULL_CIRCUIT_EVALUATIONS>>(proof_data,
offset);
674 libra_claimed_evaluation = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
677 libra_grand_sum_commitment = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
678 libra_quotient_commitment = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
681 for (
size_t i = 0; i < log_n - 1; ++i) {
682 gemini_fold_comms.push_back(this->
template deserialize_from_buffer<Commitment>(proof_data,
offset));
684 for (
size_t i = 0; i < log_n; ++i) {
685 gemini_fold_evals.push_back(this->
template deserialize_from_buffer<FF>(proof_data,
offset));
689 libra_concatenation_eval = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
690 libra_shifted_grand_sum_eval = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
691 libra_grand_sum_eval = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
692 libra_quotient_eval = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
695 shplonk_q_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
696 kzg_w_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
701 size_t old_size = proof_data.size();
705 Base::serialize_to_buffer(gemini_masking_poly_comm, proof_data);
706 for (
const auto& comm : witness_comms) {
707 Base::serialize_to_buffer(comm, proof_data);
709 Base::serialize_to_buffer(z_perm_comm, proof_data);
712 Base::serialize_to_buffer(libra_concatenation_commitment, proof_data);
713 Base::serialize_to_buffer(libra_sum, proof_data);
716 for (
size_t i = 0; i < LOG_MINI_CIRCUIT_SIZE; ++i) {
717 Base::serialize_to_buffer(sumcheck_univariates[i], proof_data);
720 Base::serialize_to_buffer(minicircuit_evaluations, proof_data);
722 for (
size_t i = LOG_MINI_CIRCUIT_SIZE; i < log_n; ++i) {
723 Base::serialize_to_buffer(sumcheck_univariates[i], proof_data);
726 Base::serialize_to_buffer(full_circuit_evaluations, proof_data);
727 Base::serialize_to_buffer(libra_claimed_evaluation, proof_data);
730 Base::serialize_to_buffer(libra_grand_sum_commitment, proof_data);
731 Base::serialize_to_buffer(libra_quotient_commitment, proof_data);
734 for (
size_t i = 0; i < log_n - 1; ++i) {
735 Base::serialize_to_buffer(gemini_fold_comms[i], proof_data);
737 for (
size_t i = 0; i < log_n; ++i) {
738 Base::serialize_to_buffer(gemini_fold_evals[i], proof_data);
742 Base::serialize_to_buffer(libra_concatenation_eval, proof_data);
743 Base::serialize_to_buffer(libra_shifted_grand_sum_eval, proof_data);
744 Base::serialize_to_buffer(libra_grand_sum_eval, proof_data);
745 Base::serialize_to_buffer(libra_quotient_eval, proof_data);
748 Base::serialize_to_buffer(shplonk_q_comm, proof_data);
749 Base::serialize_to_buffer(kzg_w_comm, proof_data);
760 using Base::NUM_ALL_ENTITIES;
827 sumcheck_round_comms.clear();
828 sumcheck_round_eval_0s.clear();
829 sumcheck_round_eval_1s.clear();
830 gemini_fold_comms.clear();
831 gemini_fold_evals.clear();
834 gemini_masking_poly_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
836 wire_comms.push_back(this->
template deserialize_from_buffer<Commitment>(proof_data,
offset));
838 lookup_inverses_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
839 z_perm_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
842 libra_concatenation_commitment = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
843 libra_sum = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
846 for (
size_t i = 0; i < log_n; ++i) {
847 sumcheck_round_comms.push_back(this->
template deserialize_from_buffer<Commitment>(proof_data,
offset));
848 sumcheck_round_eval_0s.push_back(this->
template deserialize_from_buffer<FF>(proof_data,
offset));
849 sumcheck_round_eval_1s.push_back(this->
template deserialize_from_buffer<FF>(proof_data,
offset));
853 sumcheck_evaluations =
854 this->
template deserialize_from_buffer<std::array<FF, NUM_ALL_ENTITIES>>(proof_data,
offset);
857 libra_claimed_evaluation = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
858 libra_grand_sum_commitment = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
859 libra_quotient_commitment = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
862 libra_concatenation_eval = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
863 libra_shifted_grand_sum_eval = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
864 libra_grand_sum_eval = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
865 libra_quotient_eval = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
868 translation_masking_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
869 translation_op_eval = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
870 translation_Px_eval = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
871 translation_Py_eval = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
872 translation_z1_eval = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
873 translation_z2_eval = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
874 translation_masking_eval = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
875 translation_grand_sum_commitment = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
876 translation_quotient_commitment = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
877 translation_concatenation_eval = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
878 translation_shifted_grand_sum_eval = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
879 translation_grand_sum_eval = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
880 translation_quotient_eval = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
883 pow_mask_commitment = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
884 pow_mask_evaluation = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
887 final_shplonk_q_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
892 size_t old_size = proof_data.size();
896 Base::serialize_to_buffer(gemini_masking_poly_comm, proof_data);
897 for (
const auto& comm : wire_comms) {
898 Base::serialize_to_buffer(comm, proof_data);
900 Base::serialize_to_buffer(lookup_inverses_comm, proof_data);
901 Base::serialize_to_buffer(z_perm_comm, proof_data);
904 Base::serialize_to_buffer(libra_concatenation_commitment, proof_data);
905 Base::serialize_to_buffer(libra_sum, proof_data);
908 for (
size_t i = 0; i < log_n; ++i) {
909 Base::serialize_to_buffer(sumcheck_round_comms[i], proof_data);
910 Base::serialize_to_buffer(sumcheck_round_eval_0s[i], proof_data);
911 Base::serialize_to_buffer(sumcheck_round_eval_1s[i], proof_data);
915 Base::serialize_to_buffer(sumcheck_evaluations, proof_data);
918 Base::serialize_to_buffer(libra_claimed_evaluation, proof_data);
919 Base::serialize_to_buffer(libra_grand_sum_commitment, proof_data);
920 Base::serialize_to_buffer(libra_quotient_commitment, proof_data);
923 Base::serialize_to_buffer(libra_concatenation_eval, proof_data);
924 Base::serialize_to_buffer(libra_shifted_grand_sum_eval, proof_data);
925 Base::serialize_to_buffer(libra_grand_sum_eval, proof_data);
926 Base::serialize_to_buffer(libra_quotient_eval, proof_data);
929 Base::serialize_to_buffer(translation_masking_comm, proof_data);
930 Base::serialize_to_buffer(translation_op_eval, proof_data);
931 Base::serialize_to_buffer(translation_Px_eval, proof_data);
932 Base::serialize_to_buffer(translation_Py_eval, proof_data);
933 Base::serialize_to_buffer(translation_z1_eval, proof_data);
934 Base::serialize_to_buffer(translation_z2_eval, proof_data);
935 Base::serialize_to_buffer(translation_masking_eval, proof_data);
936 Base::serialize_to_buffer(translation_grand_sum_commitment, proof_data);
937 Base::serialize_to_buffer(translation_quotient_commitment, proof_data);
938 Base::serialize_to_buffer(translation_concatenation_eval, proof_data);
939 Base::serialize_to_buffer(translation_shifted_grand_sum_eval, proof_data);
940 Base::serialize_to_buffer(translation_grand_sum_eval, proof_data);
941 Base::serialize_to_buffer(translation_quotient_eval, proof_data);
944 Base::serialize_to_buffer(pow_mask_commitment, proof_data);
945 Base::serialize_to_buffer(pow_mask_evaluation, proof_data);
948 Base::serialize_to_buffer(final_shplonk_q_comm, proof_data);
#define BB_ASSERT_EQ(actual, expected,...)
#define BB_ASSERT_LTE(left, right,...)
std::vector< DataType > Proof
typename Curve::ScalarField FF
static constexpr size_t NUM_ALL_ENTITIES
typename G1::affine_element Commitment
static constexpr size_t NUM_WIRES
static constexpr size_t BATCHED_RELATION_PARTIAL_LENGTH
BaseTranscript< Codec, HashFunction > Transcript
A univariate polynomial represented by its values on {0, 1,..., domain_end - 1}.
Entry point for Barretenberg command-line interface.
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
Commitment libra_grand_sum_commitment
Commitment lookup_inverses_comm
Commitment translation_quotient_commitment
FF translation_grand_sum_eval
Commitment final_shplonk_q_comm
std::vector< Commitment > gemini_fold_comms
FF translation_quotient_eval
typename Flavor::Commitment Commitment
FF translation_shifted_grand_sum_eval
FF translation_masking_eval
Commitment gemini_masking_poly_comm
std::vector< Commitment > wire_comms
Commitment translation_grand_sum_commitment
void deserialize(ProofData &proof_data, size_t, size_t log_n)
Commitment shplonk_q_comm
std::vector< FF > sumcheck_round_eval_1s
FF libra_claimed_evaluation
Commitment libra_quotient_commitment
FF libra_concatenation_eval
FF translation_concatenation_eval
Commitment translation_masking_comm
std::vector< Commitment > sumcheck_round_comms
std::array< FF, NUM_ALL_ENTITIES > sumcheck_evaluations
Commitment libra_concatenation_commitment
FF libra_shifted_grand_sum_eval
std::vector< FF > gemini_fold_evals
typename Transcript::Proof ProofData
void serialize(ProofData &proof_data, size_t log_n) const
Commitment pow_mask_commitment
std::vector< FF > sumcheck_round_eval_0s
Commitment lookup_inverses_comm
Commitment ecc_op_wire_2_comm
Commitment ecc_op_wire_4_comm
std::array< Commitment, Flavor::NUM_BUS_COLUMNS > bus_inverses_comms
std::array< Commitment, Flavor::NUM_BUS_COLUMNS > bus_comms
void deserialize_mega_witness_comms(const ProofData &proof_data, size_t &offset)
Commitment ecc_op_wire_1_comm
typename Flavor::Commitment Commitment
Commitment lookup_read_counts_comm
Commitment shplonk_q_comm
void deserialize_pcs(const ProofData &proof_data, size_t &offset, size_t log_n)
Commitment lookup_read_tags_comm
std::vector< Commitment > gemini_fold_comms
Commitment ecc_op_wire_3_comm
std::vector< FF > gemini_fold_evals
std::array< Commitment, Flavor::NUM_BUS_COLUMNS > bus_read_counts_comms
void serialize(ProofData &proof_data, size_t log_n) const
void serialize_mega_witness_comms(ProofData &proof_data) const
void serialize_sumcheck(ProofData &proof_data, size_t log_n) const
void serialize_pcs(ProofData &proof_data, size_t log_n) const
std::array< FF, NUM_ALL_ENTITIES > sumcheck_evaluations
void deserialize(ProofData &proof_data, size_t num_public_inputs, size_t log_n)
void deserialize_sumcheck(const ProofData &proof_data, size_t &offset, size_t log_n)
std::vector< FF > public_inputs
std::vector< bb::Univariate< FF, BATCHED_RELATION_PARTIAL_LENGTH > > sumcheck_univariates
typename Transcript::Proof ProofData
void deserialize(ProofData &proof_data, size_t num_public_inputs, size_t log_n)
FF libra_claimed_evaluation
typename Flavor::Commitment Commitment
FF libra_shifted_grand_sum_eval
Commitment libra_grand_sum_commitment
Commitment libra_concatenation_commitment
Commitment hiding_polynomial_commitment
FF libra_concatenation_eval
typename Transcript::Proof ProofData
Commitment libra_quotient_commitment
void serialize(ProofData &proof_data, size_t log_n) const
static void serialize_to_buffer(const T &element, ProofData &proof_data)
static constexpr size_t NUM_ALL_ENTITIES
static T deserialize_from_buffer(const ProofData &proof_data, size_t &offset)
typename Flavor::Commitment Commitment
static constexpr size_t BATCHED_RELATION_PARTIAL_LENGTH
typename Transcript::Codec Codec
typename Transcript::Proof ProofData
typename Flavor::Transcript Transcript
Test utility for deserializing/serializing proof data into typed structures.
void deserialize(ProofData &proof_data, size_t, size_t log_n)
void serialize(ProofData &proof_data, size_t log_n) const
Commitment libra_grand_sum_commitment
Commitment gemini_masking_poly_comm
typename Flavor::Commitment Commitment
std::array< FF, NUM_FULL_CIRCUIT_EVALUATIONS > full_circuit_evaluations
Commitment libra_concatenation_commitment
std::array< FF, NUM_MINICIRCUIT_EVALUATIONS > minicircuit_evaluations
FF libra_shifted_grand_sum_eval
FF libra_claimed_evaluation
FF libra_concatenation_eval
std::vector< FF > gemini_fold_evals
std::vector< Commitment > gemini_fold_comms
std::vector< Commitment > witness_comms
Commitment shplonk_q_comm
typename Transcript::Proof ProofData
std::vector< bb::Univariate< FF, BATCHED_RELATION_PARTIAL_LENGTH > > sumcheck_univariates
Commitment libra_quotient_commitment
void serialize(ProofData &proof_data, size_t log_n) const
std::vector< Commitment > gemini_fold_comms
void deserialize_ultra_witness_comms(const ProofData &proof_data, size_t &offset)
std::array< FF, NUM_ALL_ENTITIES > sumcheck_evaluations
Commitment lookup_read_counts_comm
typename Flavor::Commitment Commitment
Commitment lookup_inverses_comm
void deserialize_sumcheck(const ProofData &proof_data, size_t &offset, size_t log_n)
void serialize_ultra_witness_comms(ProofData &proof_data) const
void deserialize(ProofData &proof_data, size_t num_public_inputs, size_t log_n)
std::vector< FF > gemini_fold_evals
Commitment shplonk_q_comm
Commitment lookup_read_tags_comm
std::vector< bb::Univariate< FF, BATCHED_RELATION_PARTIAL_LENGTH > > sumcheck_univariates
void serialize_pcs(ProofData &proof_data, size_t log_n) const
std::vector< FF > public_inputs
void deserialize_pcs(const ProofData &proof_data, size_t &offset, size_t log_n)
void serialize_sumcheck(ProofData &proof_data, size_t log_n) const
typename Transcript::Proof ProofData
FF libra_concatenation_eval
void serialize(ProofData &proof_data, size_t log_n) const
FF libra_shifted_grand_sum_eval
Commitment libra_quotient_commitment
typename Flavor::Commitment Commitment
FF libra_claimed_evaluation
Commitment hiding_polynomial_commitment
void deserialize(ProofData &proof_data, size_t num_public_inputs, size_t log_n)
Commitment libra_concatenation_commitment
Commitment libra_grand_sum_commitment
typename Transcript::Proof ProofData