45 constexpr size_t element_size = Codec::template calc_num_fields<T>();
47 auto element_span = std::span{ proof_data }.subspan(
offset, element_size);
49 return Codec::template deserialize_from_fields<T>(element_span);
54 auto element_fields = Codec::serialize_to_fields(element);
55 proof_data.insert(proof_data.end(), element_fields.begin(), element_fields.end());
99 w_l_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
100 w_r_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
101 w_o_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
104 w_4_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
106 z_perm_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
125 for (
size_t i = 0; i < log_n; ++i) {
131 this->
template deserialize_from_buffer<std::array<FF, NUM_ALL_ENTITIES>>(proof_data,
offset);
137 for (
size_t i = 0; i < log_n; ++i) {
146 for (
size_t i = 0; i < log_n - 1; ++i) {
149 for (
size_t i = 0; i < log_n; ++i) {
153 kzg_w_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
159 for (
size_t i = 0; i < log_n - 1; ++i) {
162 for (
size_t i = 0; i < log_n; ++i) {
175 for (
size_t i = 0; i < num_public_inputs; ++i) {
185 size_t old_size = proof_data.size();
223 this->clear_vectors();
225 for (
size_t i = 0; i < num_public_inputs; ++i) {
226 this->public_inputs.push_back(this->
template deserialize_from_buffer<FF>(proof_data,
offset));
228 hiding_polynomial_commitment = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
229 this->deserialize_ultra_witness_comms(proof_data,
offset);
230 libra_concatenation_commitment = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
231 libra_sum = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
234 for (
size_t i = 0; i < log_n; ++i) {
235 this->sumcheck_univariates.push_back(
239 libra_claimed_evaluation = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
240 this->sumcheck_evaluations =
241 this->
template deserialize_from_buffer<std::array<FF, Base::NUM_ALL_ENTITIES>>(proof_data,
offset);
242 libra_grand_sum_commitment = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
243 libra_quotient_commitment = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
246 for (
size_t i = 0; i < log_n - 1; ++i) {
247 this->gemini_fold_comms.push_back(this->
template deserialize_from_buffer<Commitment>(proof_data,
offset));
249 for (
size_t i = 0; i < log_n; ++i) {
250 this->gemini_fold_evals.push_back(this->
template deserialize_from_buffer<FF>(proof_data,
offset));
252 libra_concatenation_eval = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
253 libra_shifted_grand_sum_eval = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
254 libra_grand_sum_eval = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
255 libra_quotient_eval = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
256 this->shplonk_q_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
257 this->kzg_w_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
262 size_t old_size = proof_data.size();
265 for (
const auto& pi : this->public_inputs) {
266 Base::serialize_to_buffer(pi, proof_data);
268 Base::serialize_to_buffer(hiding_polynomial_commitment, proof_data);
269 this->serialize_ultra_witness_comms(proof_data);
270 Base::serialize_to_buffer(libra_concatenation_commitment, proof_data);
271 Base::serialize_to_buffer(libra_sum, proof_data);
274 for (
size_t i = 0; i < log_n; ++i) {
275 Base::serialize_to_buffer(this->sumcheck_univariates[i], proof_data);
277 Base::serialize_to_buffer(libra_claimed_evaluation, proof_data);
278 Base::serialize_to_buffer(this->sumcheck_evaluations, proof_data);
279 Base::serialize_to_buffer(libra_grand_sum_commitment, proof_data);
280 Base::serialize_to_buffer(libra_quotient_commitment, proof_data);
283 for (
size_t i = 0; i < log_n - 1; ++i) {
284 Base::serialize_to_buffer(this->gemini_fold_comms[i], proof_data);
286 for (
size_t i = 0; i < log_n; ++i) {
287 Base::serialize_to_buffer(this->gemini_fold_evals[i], proof_data);
289 Base::serialize_to_buffer(libra_concatenation_eval, proof_data);
290 Base::serialize_to_buffer(libra_shifted_grand_sum_eval, proof_data);
291 Base::serialize_to_buffer(libra_grand_sum_eval, proof_data);
292 Base::serialize_to_buffer(libra_quotient_eval, proof_data);
293 Base::serialize_to_buffer(this->shplonk_q_comm, proof_data);
294 Base::serialize_to_buffer(this->kzg_w_comm, proof_data);
305 using Base::BATCHED_RELATION_PARTIAL_LENGTH;
306 using Base::NUM_ALL_ENTITIES;
347 public_inputs.clear();
348 sumcheck_univariates.clear();
349 gemini_fold_comms.clear();
350 gemini_fold_evals.clear();
356 w_l_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
357 w_r_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
358 w_o_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
359 ecc_op_wire_1_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
360 ecc_op_wire_2_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
361 ecc_op_wire_3_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
362 ecc_op_wire_4_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
363 calldata_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
364 calldata_read_counts_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
365 calldata_read_tags_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
366 secondary_calldata_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
367 secondary_calldata_read_counts_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
368 secondary_calldata_read_tags_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
369 return_data_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
370 return_data_read_counts_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
371 return_data_read_tags_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
372 lookup_read_counts_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
373 lookup_read_tags_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
374 w_4_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
375 lookup_inverses_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
376 calldata_inverses_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
377 secondary_calldata_inverses_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
378 return_data_inverses_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
379 z_perm_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
385 Base::serialize_to_buffer(w_l_comm, proof_data);
386 Base::serialize_to_buffer(w_r_comm, proof_data);
387 Base::serialize_to_buffer(w_o_comm, proof_data);
388 Base::serialize_to_buffer(ecc_op_wire_1_comm, proof_data);
389 Base::serialize_to_buffer(ecc_op_wire_2_comm, proof_data);
390 Base::serialize_to_buffer(ecc_op_wire_3_comm, proof_data);
391 Base::serialize_to_buffer(ecc_op_wire_4_comm, proof_data);
392 Base::serialize_to_buffer(calldata_comm, proof_data);
393 Base::serialize_to_buffer(calldata_read_counts_comm, proof_data);
394 Base::serialize_to_buffer(calldata_read_tags_comm, proof_data);
395 Base::serialize_to_buffer(secondary_calldata_comm, proof_data);
396 Base::serialize_to_buffer(secondary_calldata_read_counts_comm, proof_data);
397 Base::serialize_to_buffer(secondary_calldata_read_tags_comm, proof_data);
398 Base::serialize_to_buffer(return_data_comm, proof_data);
399 Base::serialize_to_buffer(return_data_read_counts_comm, proof_data);
400 Base::serialize_to_buffer(return_data_read_tags_comm, proof_data);
401 Base::serialize_to_buffer(lookup_read_counts_comm, proof_data);
402 Base::serialize_to_buffer(lookup_read_tags_comm, proof_data);
403 Base::serialize_to_buffer(w_4_comm, proof_data);
404 Base::serialize_to_buffer(lookup_inverses_comm, proof_data);
405 Base::serialize_to_buffer(calldata_inverses_comm, proof_data);
406 Base::serialize_to_buffer(secondary_calldata_inverses_comm, proof_data);
407 Base::serialize_to_buffer(return_data_inverses_comm, proof_data);
408 Base::serialize_to_buffer(z_perm_comm, proof_data);
414 for (
size_t i = 0; i < log_n; ++i) {
415 sumcheck_univariates.push_back(
419 sumcheck_evaluations =
420 this->
template deserialize_from_buffer<std::array<FF, NUM_ALL_ENTITIES>>(proof_data,
offset);
426 for (
size_t i = 0; i < log_n; ++i) {
427 Base::serialize_to_buffer(sumcheck_univariates[i], proof_data);
429 Base::serialize_to_buffer(sumcheck_evaluations, proof_data);
435 for (
size_t i = 0; i < log_n - 1; ++i) {
436 gemini_fold_comms.push_back(this->
template deserialize_from_buffer<Commitment>(proof_data,
offset));
438 for (
size_t i = 0; i < log_n; ++i) {
439 gemini_fold_evals.push_back(this->
template deserialize_from_buffer<FF>(proof_data,
offset));
441 shplonk_q_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
442 kzg_w_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
448 for (
size_t i = 0; i < log_n - 1; ++i) {
449 Base::serialize_to_buffer(gemini_fold_comms[i], proof_data);
451 for (
size_t i = 0; i < log_n; ++i) {
452 Base::serialize_to_buffer(gemini_fold_evals[i], proof_data);
454 Base::serialize_to_buffer(shplonk_q_comm, proof_data);
455 Base::serialize_to_buffer(kzg_w_comm, proof_data);
464 for (
size_t i = 0; i < num_public_inputs; ++i) {
465 public_inputs.push_back(this->
template deserialize_from_buffer<FF>(proof_data,
offset));
467 deserialize_mega_witness_comms(proof_data,
offset);
468 deserialize_sumcheck(proof_data,
offset, log_n);
469 deserialize_pcs(proof_data,
offset, log_n);
474 size_t old_size = proof_data.size();
477 for (
const auto& pi : public_inputs) {
478 Base::serialize_to_buffer(pi, proof_data);
480 serialize_mega_witness_comms(proof_data);
481 serialize_sumcheck(proof_data, log_n);
482 serialize_pcs(proof_data, log_n);
512 this->clear_vectors();
514 for (
size_t i = 0; i < num_public_inputs; ++i) {
515 this->public_inputs.push_back(this->
template deserialize_from_buffer<FF>(proof_data,
offset));
517 hiding_polynomial_commitment = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
518 this->deserialize_mega_witness_comms(proof_data,
offset);
519 libra_concatenation_commitment = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
520 libra_sum = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
523 for (
size_t i = 0; i < log_n; ++i) {
524 this->sumcheck_univariates.push_back(
528 libra_claimed_evaluation = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
529 this->sumcheck_evaluations =
530 this->
template deserialize_from_buffer<std::array<FF, Base::NUM_ALL_ENTITIES>>(proof_data,
offset);
531 libra_grand_sum_commitment = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
532 libra_quotient_commitment = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
535 for (
size_t i = 0; i < log_n - 1; ++i) {
536 this->gemini_fold_comms.push_back(this->
template deserialize_from_buffer<Commitment>(proof_data,
offset));
538 for (
size_t i = 0; i < log_n; ++i) {
539 this->gemini_fold_evals.push_back(this->
template deserialize_from_buffer<FF>(proof_data,
offset));
541 libra_concatenation_eval = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
542 libra_shifted_grand_sum_eval = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
543 libra_grand_sum_eval = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
544 libra_quotient_eval = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
545 this->shplonk_q_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
546 this->kzg_w_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
551 size_t old_size = proof_data.size();
554 for (
const auto& pi : this->public_inputs) {
555 Base::serialize_to_buffer(pi, proof_data);
557 Base::serialize_to_buffer(hiding_polynomial_commitment, proof_data);
558 this->serialize_mega_witness_comms(proof_data);
559 Base::serialize_to_buffer(libra_concatenation_commitment, proof_data);
560 Base::serialize_to_buffer(libra_sum, proof_data);
563 for (
size_t i = 0; i < log_n; ++i) {
564 Base::serialize_to_buffer(this->sumcheck_univariates[i], proof_data);
566 Base::serialize_to_buffer(libra_claimed_evaluation, proof_data);
567 Base::serialize_to_buffer(this->sumcheck_evaluations, proof_data);
568 Base::serialize_to_buffer(libra_grand_sum_commitment, proof_data);
569 Base::serialize_to_buffer(libra_quotient_commitment, proof_data);
572 for (
size_t i = 0; i < log_n - 1; ++i) {
573 Base::serialize_to_buffer(this->gemini_fold_comms[i], proof_data);
575 for (
size_t i = 0; i < log_n; ++i) {
576 Base::serialize_to_buffer(this->gemini_fold_evals[i], proof_data);
578 Base::serialize_to_buffer(libra_concatenation_eval, proof_data);
579 Base::serialize_to_buffer(libra_shifted_grand_sum_eval, proof_data);
580 Base::serialize_to_buffer(libra_grand_sum_eval, proof_data);
581 Base::serialize_to_buffer(libra_quotient_eval, proof_data);
582 Base::serialize_to_buffer(this->shplonk_q_comm, proof_data);
583 Base::serialize_to_buffer(this->kzg_w_comm, proof_data);
594 using Base::BATCHED_RELATION_PARTIAL_LENGTH;
595 using Base::NUM_ALL_ENTITIES;
601 static constexpr size_t NUM_BATCH_WITNESS_COMMS = Flavor::NUM_COMMITMENTS_IN_PROOF;
603 static constexpr size_t LOG_MINI_CIRCUIT_SIZE = Flavor::LOG_MINI_CIRCUIT_SIZE;
604 static constexpr size_t NUM_MINICIRCUIT_EVALUATIONS = Flavor::NUM_MINICIRCUIT_EVALUATIONS;
605 static constexpr size_t NUM_FULL_CIRCUIT_EVALUATIONS = Flavor::NUM_FULL_CIRCUIT_EVALUATIONS;
645 witness_comms.clear();
646 sumcheck_univariates.clear();
647 gemini_fold_comms.clear();
648 gemini_fold_evals.clear();
651 gemini_masking_poly_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
652 for (
size_t i = 0; i < NUM_BATCH_WITNESS_COMMS; ++i) {
653 witness_comms.push_back(this->
template deserialize_from_buffer<Commitment>(proof_data,
offset));
655 z_perm_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
658 libra_concatenation_commitment = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
659 libra_sum = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
662 for (
size_t i = 0; i < LOG_MINI_CIRCUIT_SIZE; ++i) {
663 sumcheck_univariates.push_back(
668 minicircuit_evaluations =
669 this->
template deserialize_from_buffer<std::array<FF, NUM_MINICIRCUIT_EVALUATIONS>>(proof_data,
offset);
671 for (
size_t i = LOG_MINI_CIRCUIT_SIZE; i < log_n; ++i) {
672 sumcheck_univariates.push_back(
677 full_circuit_evaluations =
678 this->
template deserialize_from_buffer<std::array<FF, NUM_FULL_CIRCUIT_EVALUATIONS>>(proof_data,
offset);
679 libra_claimed_evaluation = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
682 libra_grand_sum_commitment = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
683 libra_quotient_commitment = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
686 for (
size_t i = 0; i < log_n - 1; ++i) {
687 gemini_fold_comms.push_back(this->
template deserialize_from_buffer<Commitment>(proof_data,
offset));
689 for (
size_t i = 0; i < log_n; ++i) {
690 gemini_fold_evals.push_back(this->
template deserialize_from_buffer<FF>(proof_data,
offset));
694 libra_concatenation_eval = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
695 libra_shifted_grand_sum_eval = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
696 libra_grand_sum_eval = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
697 libra_quotient_eval = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
700 shplonk_q_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
701 kzg_w_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
706 size_t old_size = proof_data.size();
710 Base::serialize_to_buffer(gemini_masking_poly_comm, proof_data);
711 for (
const auto& comm : witness_comms) {
712 Base::serialize_to_buffer(comm, proof_data);
714 Base::serialize_to_buffer(z_perm_comm, proof_data);
717 Base::serialize_to_buffer(libra_concatenation_commitment, proof_data);
718 Base::serialize_to_buffer(libra_sum, proof_data);
721 for (
size_t i = 0; i < LOG_MINI_CIRCUIT_SIZE; ++i) {
722 Base::serialize_to_buffer(sumcheck_univariates[i], proof_data);
725 Base::serialize_to_buffer(minicircuit_evaluations, proof_data);
727 for (
size_t i = LOG_MINI_CIRCUIT_SIZE; i < log_n; ++i) {
728 Base::serialize_to_buffer(sumcheck_univariates[i], proof_data);
731 Base::serialize_to_buffer(full_circuit_evaluations, proof_data);
732 Base::serialize_to_buffer(libra_claimed_evaluation, proof_data);
735 Base::serialize_to_buffer(libra_grand_sum_commitment, proof_data);
736 Base::serialize_to_buffer(libra_quotient_commitment, proof_data);
739 for (
size_t i = 0; i < log_n - 1; ++i) {
740 Base::serialize_to_buffer(gemini_fold_comms[i], proof_data);
742 for (
size_t i = 0; i < log_n; ++i) {
743 Base::serialize_to_buffer(gemini_fold_evals[i], proof_data);
747 Base::serialize_to_buffer(libra_concatenation_eval, proof_data);
748 Base::serialize_to_buffer(libra_shifted_grand_sum_eval, proof_data);
749 Base::serialize_to_buffer(libra_grand_sum_eval, proof_data);
750 Base::serialize_to_buffer(libra_quotient_eval, proof_data);
753 Base::serialize_to_buffer(shplonk_q_comm, proof_data);
754 Base::serialize_to_buffer(kzg_w_comm, proof_data);
765 using Base::NUM_ALL_ENTITIES;
828 sumcheck_round_comms.clear();
829 sumcheck_round_eval_0s.clear();
830 sumcheck_round_eval_1s.clear();
831 gemini_fold_comms.clear();
832 gemini_fold_evals.clear();
835 gemini_masking_poly_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
837 wire_comms.push_back(this->
template deserialize_from_buffer<Commitment>(proof_data,
offset));
839 lookup_inverses_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
840 z_perm_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
843 libra_concatenation_commitment = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
844 libra_sum = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
847 for (
size_t i = 0; i < log_n; ++i) {
848 sumcheck_round_comms.push_back(this->
template deserialize_from_buffer<Commitment>(proof_data,
offset));
849 sumcheck_round_eval_0s.push_back(this->
template deserialize_from_buffer<FF>(proof_data,
offset));
850 sumcheck_round_eval_1s.push_back(this->
template deserialize_from_buffer<FF>(proof_data,
offset));
854 sumcheck_evaluations =
855 this->
template deserialize_from_buffer<std::array<FF, NUM_ALL_ENTITIES>>(proof_data,
offset);
858 libra_claimed_evaluation = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
859 libra_grand_sum_commitment = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
860 libra_quotient_commitment = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
863 for (
size_t i = 0; i < log_n - 1; ++i) {
864 gemini_fold_comms.push_back(this->
template deserialize_from_buffer<Commitment>(proof_data,
offset));
866 for (
size_t i = 0; i < log_n; ++i) {
867 gemini_fold_evals.push_back(this->
template deserialize_from_buffer<FF>(proof_data,
offset));
871 libra_concatenation_eval = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
872 libra_shifted_grand_sum_eval = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
873 libra_grand_sum_eval = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
874 libra_quotient_eval = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
877 shplonk_q_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
880 translation_masking_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
881 translation_op_eval = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
882 translation_Px_eval = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
883 translation_Py_eval = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
884 translation_z1_eval = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
885 translation_z2_eval = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
886 translation_masking_eval = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
887 translation_grand_sum_commitment = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
888 translation_quotient_commitment = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
889 translation_concatenation_eval = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
890 translation_shifted_grand_sum_eval = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
891 translation_grand_sum_eval = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
892 translation_quotient_eval = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
895 final_shplonk_q_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
900 size_t old_size = proof_data.size();
904 Base::serialize_to_buffer(gemini_masking_poly_comm, proof_data);
905 for (
const auto& comm : wire_comms) {
906 Base::serialize_to_buffer(comm, proof_data);
908 Base::serialize_to_buffer(lookup_inverses_comm, proof_data);
909 Base::serialize_to_buffer(z_perm_comm, proof_data);
912 Base::serialize_to_buffer(libra_concatenation_commitment, proof_data);
913 Base::serialize_to_buffer(libra_sum, proof_data);
916 for (
size_t i = 0; i < log_n; ++i) {
917 Base::serialize_to_buffer(sumcheck_round_comms[i], proof_data);
918 Base::serialize_to_buffer(sumcheck_round_eval_0s[i], proof_data);
919 Base::serialize_to_buffer(sumcheck_round_eval_1s[i], proof_data);
923 Base::serialize_to_buffer(sumcheck_evaluations, proof_data);
926 Base::serialize_to_buffer(libra_claimed_evaluation, proof_data);
927 Base::serialize_to_buffer(libra_grand_sum_commitment, proof_data);
928 Base::serialize_to_buffer(libra_quotient_commitment, proof_data);
931 for (
size_t i = 0; i < log_n - 1; ++i) {
932 Base::serialize_to_buffer(gemini_fold_comms[i], proof_data);
934 for (
size_t i = 0; i < log_n; ++i) {
935 Base::serialize_to_buffer(gemini_fold_evals[i], proof_data);
939 Base::serialize_to_buffer(libra_concatenation_eval, proof_data);
940 Base::serialize_to_buffer(libra_shifted_grand_sum_eval, proof_data);
941 Base::serialize_to_buffer(libra_grand_sum_eval, proof_data);
942 Base::serialize_to_buffer(libra_quotient_eval, proof_data);
945 Base::serialize_to_buffer(shplonk_q_comm, proof_data);
948 Base::serialize_to_buffer(translation_masking_comm, proof_data);
949 Base::serialize_to_buffer(translation_op_eval, proof_data);
950 Base::serialize_to_buffer(translation_Px_eval, proof_data);
951 Base::serialize_to_buffer(translation_Py_eval, proof_data);
952 Base::serialize_to_buffer(translation_z1_eval, proof_data);
953 Base::serialize_to_buffer(translation_z2_eval, proof_data);
954 Base::serialize_to_buffer(translation_masking_eval, proof_data);
955 Base::serialize_to_buffer(translation_grand_sum_commitment, proof_data);
956 Base::serialize_to_buffer(translation_quotient_commitment, proof_data);
957 Base::serialize_to_buffer(translation_concatenation_eval, proof_data);
958 Base::serialize_to_buffer(translation_shifted_grand_sum_eval, proof_data);
959 Base::serialize_to_buffer(translation_grand_sum_eval, proof_data);
960 Base::serialize_to_buffer(translation_quotient_eval, proof_data);
963 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
std::vector< FF > sumcheck_round_eval_0s
Commitment lookup_inverses_comm
Commitment return_data_comm
Commitment ecc_op_wire_2_comm
Commitment ecc_op_wire_4_comm
Commitment secondary_calldata_inverses_comm
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
Commitment calldata_read_counts_comm
std::vector< Commitment > gemini_fold_comms
Commitment ecc_op_wire_3_comm
std::vector< FF > gemini_fold_evals
Commitment secondary_calldata_read_counts_comm
void serialize(ProofData &proof_data, size_t log_n) const
Commitment return_data_inverses_comm
void serialize_mega_witness_comms(ProofData &proof_data) const
void serialize_sumcheck(ProofData &proof_data, size_t log_n) const
Commitment secondary_calldata_comm
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)
Commitment return_data_read_tags_comm
void deserialize_sumcheck(const ProofData &proof_data, size_t &offset, size_t log_n)
std::vector< FF > public_inputs
Commitment calldata_read_tags_comm
Commitment calldata_inverses_comm
Commitment secondary_calldata_read_tags_comm
std::vector< bb::Univariate< FF, BATCHED_RELATION_PARTIAL_LENGTH > > sumcheck_univariates
typename Transcript::Proof ProofData
Commitment return_data_read_counts_comm
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