43 constexpr size_t element_size = Codec::template calc_num_fields<T>();
45 auto element_span = std::span{ proof_data }.subspan(
offset, element_size);
47 return Codec::template deserialize_from_fields<T>(element_span);
52 auto element_fields = Codec::serialize_to_fields(element);
53 proof_data.insert(proof_data.end(), element_fields.begin(), element_fields.end());
97 w_l_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
98 w_r_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
99 w_o_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
102 w_4_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
104 z_perm_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
123 for (
size_t i = 0; i < log_n; ++i) {
129 this->
template deserialize_from_buffer<std::array<FF, NUM_ALL_ENTITIES>>(proof_data,
offset);
135 for (
size_t i = 0; i < log_n; ++i) {
144 for (
size_t i = 0; i < log_n - 1; ++i) {
147 for (
size_t i = 0; i < log_n; ++i) {
151 kzg_w_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
157 for (
size_t i = 0; i < log_n - 1; ++i) {
160 for (
size_t i = 0; i < log_n; ++i) {
173 for (
size_t i = 0; i < num_public_inputs; ++i) {
183 size_t old_size = proof_data.size();
221 this->clear_vectors();
223 for (
size_t i = 0; i < num_public_inputs; ++i) {
224 this->public_inputs.push_back(this->
template deserialize_from_buffer<FF>(proof_data,
offset));
226 hiding_polynomial_commitment = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
227 this->deserialize_ultra_witness_comms(proof_data,
offset);
228 libra_concatenation_commitment = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
229 libra_sum = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
232 for (
size_t i = 0; i < log_n; ++i) {
233 this->sumcheck_univariates.push_back(
237 libra_claimed_evaluation = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
238 this->sumcheck_evaluations =
239 this->
template deserialize_from_buffer<std::array<FF, Base::NUM_ALL_ENTITIES>>(proof_data,
offset);
240 libra_grand_sum_commitment = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
241 libra_quotient_commitment = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
244 for (
size_t i = 0; i < log_n - 1; ++i) {
245 this->gemini_fold_comms.push_back(this->
template deserialize_from_buffer<Commitment>(proof_data,
offset));
247 for (
size_t i = 0; i < log_n; ++i) {
248 this->gemini_fold_evals.push_back(this->
template deserialize_from_buffer<FF>(proof_data,
offset));
250 libra_concatenation_eval = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
251 libra_shifted_grand_sum_eval = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
252 libra_grand_sum_eval = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
253 libra_quotient_eval = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
254 this->shplonk_q_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
255 this->kzg_w_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
260 size_t old_size = proof_data.size();
263 for (
const auto& pi : this->public_inputs) {
264 Base::serialize_to_buffer(pi, proof_data);
266 Base::serialize_to_buffer(hiding_polynomial_commitment, proof_data);
267 this->serialize_ultra_witness_comms(proof_data);
268 Base::serialize_to_buffer(libra_concatenation_commitment, proof_data);
269 Base::serialize_to_buffer(libra_sum, proof_data);
272 for (
size_t i = 0; i < log_n; ++i) {
273 Base::serialize_to_buffer(this->sumcheck_univariates[i], proof_data);
275 Base::serialize_to_buffer(libra_claimed_evaluation, proof_data);
276 Base::serialize_to_buffer(this->sumcheck_evaluations, proof_data);
277 Base::serialize_to_buffer(libra_grand_sum_commitment, proof_data);
278 Base::serialize_to_buffer(libra_quotient_commitment, proof_data);
281 for (
size_t i = 0; i < log_n - 1; ++i) {
282 Base::serialize_to_buffer(this->gemini_fold_comms[i], proof_data);
284 for (
size_t i = 0; i < log_n; ++i) {
285 Base::serialize_to_buffer(this->gemini_fold_evals[i], proof_data);
287 Base::serialize_to_buffer(libra_concatenation_eval, proof_data);
288 Base::serialize_to_buffer(libra_shifted_grand_sum_eval, proof_data);
289 Base::serialize_to_buffer(libra_grand_sum_eval, proof_data);
290 Base::serialize_to_buffer(libra_quotient_eval, proof_data);
291 Base::serialize_to_buffer(this->shplonk_q_comm, proof_data);
292 Base::serialize_to_buffer(this->kzg_w_comm, proof_data);
303 using Base::BATCHED_RELATION_PARTIAL_LENGTH;
304 using Base::NUM_ALL_ENTITIES;
345 public_inputs.clear();
346 sumcheck_univariates.clear();
347 gemini_fold_comms.clear();
348 gemini_fold_evals.clear();
354 w_l_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
355 w_r_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
356 w_o_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
357 ecc_op_wire_1_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
358 ecc_op_wire_2_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
359 ecc_op_wire_3_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
360 ecc_op_wire_4_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
361 calldata_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
362 calldata_read_counts_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
363 calldata_read_tags_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
364 secondary_calldata_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
365 secondary_calldata_read_counts_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
366 secondary_calldata_read_tags_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
367 return_data_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
368 return_data_read_counts_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
369 return_data_read_tags_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
370 lookup_read_counts_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
371 lookup_read_tags_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
372 w_4_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
373 lookup_inverses_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
374 calldata_inverses_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
375 secondary_calldata_inverses_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
376 return_data_inverses_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
377 z_perm_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
383 Base::serialize_to_buffer(w_l_comm, proof_data);
384 Base::serialize_to_buffer(w_r_comm, proof_data);
385 Base::serialize_to_buffer(w_o_comm, proof_data);
386 Base::serialize_to_buffer(ecc_op_wire_1_comm, proof_data);
387 Base::serialize_to_buffer(ecc_op_wire_2_comm, proof_data);
388 Base::serialize_to_buffer(ecc_op_wire_3_comm, proof_data);
389 Base::serialize_to_buffer(ecc_op_wire_4_comm, proof_data);
390 Base::serialize_to_buffer(calldata_comm, proof_data);
391 Base::serialize_to_buffer(calldata_read_counts_comm, proof_data);
392 Base::serialize_to_buffer(calldata_read_tags_comm, proof_data);
393 Base::serialize_to_buffer(secondary_calldata_comm, proof_data);
394 Base::serialize_to_buffer(secondary_calldata_read_counts_comm, proof_data);
395 Base::serialize_to_buffer(secondary_calldata_read_tags_comm, proof_data);
396 Base::serialize_to_buffer(return_data_comm, proof_data);
397 Base::serialize_to_buffer(return_data_read_counts_comm, proof_data);
398 Base::serialize_to_buffer(return_data_read_tags_comm, proof_data);
399 Base::serialize_to_buffer(lookup_read_counts_comm, proof_data);
400 Base::serialize_to_buffer(lookup_read_tags_comm, proof_data);
401 Base::serialize_to_buffer(w_4_comm, proof_data);
402 Base::serialize_to_buffer(lookup_inverses_comm, proof_data);
403 Base::serialize_to_buffer(calldata_inverses_comm, proof_data);
404 Base::serialize_to_buffer(secondary_calldata_inverses_comm, proof_data);
405 Base::serialize_to_buffer(return_data_inverses_comm, proof_data);
406 Base::serialize_to_buffer(z_perm_comm, proof_data);
412 for (
size_t i = 0; i < log_n; ++i) {
413 sumcheck_univariates.push_back(
417 sumcheck_evaluations =
418 this->
template deserialize_from_buffer<std::array<FF, NUM_ALL_ENTITIES>>(proof_data,
offset);
424 for (
size_t i = 0; i < log_n; ++i) {
425 Base::serialize_to_buffer(sumcheck_univariates[i], proof_data);
427 Base::serialize_to_buffer(sumcheck_evaluations, proof_data);
433 for (
size_t i = 0; i < log_n - 1; ++i) {
434 gemini_fold_comms.push_back(this->
template deserialize_from_buffer<Commitment>(proof_data,
offset));
436 for (
size_t i = 0; i < log_n; ++i) {
437 gemini_fold_evals.push_back(this->
template deserialize_from_buffer<FF>(proof_data,
offset));
439 shplonk_q_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
440 kzg_w_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
446 for (
size_t i = 0; i < log_n - 1; ++i) {
447 Base::serialize_to_buffer(gemini_fold_comms[i], proof_data);
449 for (
size_t i = 0; i < log_n; ++i) {
450 Base::serialize_to_buffer(gemini_fold_evals[i], proof_data);
452 Base::serialize_to_buffer(shplonk_q_comm, proof_data);
453 Base::serialize_to_buffer(kzg_w_comm, proof_data);
462 for (
size_t i = 0; i < num_public_inputs; ++i) {
463 public_inputs.push_back(this->
template deserialize_from_buffer<FF>(proof_data,
offset));
465 deserialize_mega_witness_comms(proof_data,
offset);
466 deserialize_sumcheck(proof_data,
offset, log_n);
467 deserialize_pcs(proof_data,
offset, log_n);
472 size_t old_size = proof_data.size();
475 for (
const auto& pi : public_inputs) {
476 Base::serialize_to_buffer(pi, proof_data);
478 serialize_mega_witness_comms(proof_data);
479 serialize_sumcheck(proof_data, log_n);
480 serialize_pcs(proof_data, log_n);
510 this->clear_vectors();
512 for (
size_t i = 0; i < num_public_inputs; ++i) {
513 this->public_inputs.push_back(this->
template deserialize_from_buffer<FF>(proof_data,
offset));
515 hiding_polynomial_commitment = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
516 this->deserialize_mega_witness_comms(proof_data,
offset);
517 libra_concatenation_commitment = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
518 libra_sum = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
521 for (
size_t i = 0; i < log_n; ++i) {
522 this->sumcheck_univariates.push_back(
526 libra_claimed_evaluation = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
527 this->sumcheck_evaluations =
528 this->
template deserialize_from_buffer<std::array<FF, Base::NUM_ALL_ENTITIES>>(proof_data,
offset);
529 libra_grand_sum_commitment = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
530 libra_quotient_commitment = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
533 for (
size_t i = 0; i < log_n - 1; ++i) {
534 this->gemini_fold_comms.push_back(this->
template deserialize_from_buffer<Commitment>(proof_data,
offset));
536 for (
size_t i = 0; i < log_n; ++i) {
537 this->gemini_fold_evals.push_back(this->
template deserialize_from_buffer<FF>(proof_data,
offset));
539 libra_concatenation_eval = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
540 libra_shifted_grand_sum_eval = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
541 libra_grand_sum_eval = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
542 libra_quotient_eval = this->
template deserialize_from_buffer<FF>(proof_data,
offset);
543 this->shplonk_q_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
544 this->kzg_w_comm = this->
template deserialize_from_buffer<Commitment>(proof_data,
offset);
549 size_t old_size = proof_data.size();
552 for (
const auto& pi : this->public_inputs) {
553 Base::serialize_to_buffer(pi, proof_data);
555 Base::serialize_to_buffer(hiding_polynomial_commitment, proof_data);
556 this->serialize_mega_witness_comms(proof_data);
557 Base::serialize_to_buffer(libra_concatenation_commitment, proof_data);
558 Base::serialize_to_buffer(libra_sum, proof_data);
561 for (
size_t i = 0; i < log_n; ++i) {
562 Base::serialize_to_buffer(this->sumcheck_univariates[i], proof_data);
564 Base::serialize_to_buffer(libra_claimed_evaluation, proof_data);
565 Base::serialize_to_buffer(this->sumcheck_evaluations, proof_data);
566 Base::serialize_to_buffer(libra_grand_sum_commitment, proof_data);
567 Base::serialize_to_buffer(libra_quotient_commitment, proof_data);
570 for (
size_t i = 0; i < log_n - 1; ++i) {
571 Base::serialize_to_buffer(this->gemini_fold_comms[i], proof_data);
573 for (
size_t i = 0; i < log_n; ++i) {
574 Base::serialize_to_buffer(this->gemini_fold_evals[i], proof_data);
576 Base::serialize_to_buffer(libra_concatenation_eval, proof_data);
577 Base::serialize_to_buffer(libra_shifted_grand_sum_eval, proof_data);
578 Base::serialize_to_buffer(libra_grand_sum_eval, proof_data);
579 Base::serialize_to_buffer(libra_quotient_eval, proof_data);
580 Base::serialize_to_buffer(this->shplonk_q_comm, proof_data);
581 Base::serialize_to_buffer(this->kzg_w_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 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 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 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