24void AvmFlavor::Transcript::deserialize_full_transcript()
26 size_t num_frs_read = 0;
28 for (
auto& commitment : commitments) {
29 commitment = deserialize_from_buffer<Commitment>(proof_data, num_frs_read);
32 for (
size_t i = 0; i < log_circuit_size; ++i) {
37 sumcheck_evaluations =
40 for (
size_t i = 0; i < log_circuit_size - 1; ++i) {
41 gemini_fold_comms.push_back(deserialize_from_buffer<Commitment>(proof_data, num_frs_read));
44 for (
size_t i = 0; i < log_circuit_size; ++i) {
45 gemini_fold_evals.push_back(deserialize_from_buffer<FF>(proof_data, num_frs_read));
48 shplonk_q_comm = deserialize_from_buffer<Commitment>(proof_data, num_frs_read);
50 kzg_w_comm = deserialize_from_buffer<Commitment>(proof_data, num_frs_read);
54void AvmFlavor::Transcript::serialize_full_transcript()
56 size_t old_proof_length = proof_data.size();
59 for (
const auto& commitment : commitments) {
63 for (
size_t i = 0; i < log_circuit_size; ++i) {
69 for (
size_t i = 0; i < log_circuit_size - 1; ++i) {
70 serialize_to_buffer(gemini_fold_comms[i], proof_data);
73 for (
size_t i = 0; i < log_circuit_size; ++i) {
74 serialize_to_buffer(gemini_fold_evals[i], proof_data);
77 serialize_to_buffer(shplonk_q_comm, proof_data);
78 serialize_to_buffer(kzg_w_comm, proof_data);
109 const auto& multivariate = multivariates.get(c);
110 if (multivariate.is_empty() || multivariate.end_index() < current_edge) {
112 return zero_univariate;
114 auto& mutable_entities =
const_cast<decltype(entities)&
>(entities);
117 for (
auto& extended_ptr : mutable_entities) {
118 extended_ptr.reset();
122 auto& extended_ptr = mutable_entities[
static_cast<size_t>(c)];
123 if (extended_ptr.get() ==
nullptr) {
124 const auto& val0 = multivariate[current_edge];
125 const auto& val1 = multivariate[current_edge + 1];
129 if (val0.is_zero() && val1.is_zero()) {
131 return zero_univariate;
137 return *extended_ptr;