1#ifdef STARKNET_GARAGA_FLAVORS
9class UltraStarknetZKFlavor :
public UltraKeccakZKFlavor {
17 class Transcript :
public Transcript_<starknet::StarknetTranscriptParams> {
19 using Base = Transcript_<starknet::StarknetTranscriptParams>;
22 Commitment libra_concatenation_commitment;
24 FF libra_claimed_evaluation;
25 Commitment libra_grand_sum_commitment;
26 Commitment libra_quotient_commitment;
27 FF libra_concatenation_eval;
28 FF libra_shifted_grand_sum_eval;
29 FF libra_grand_sum_eval;
30 FF libra_quotient_eval;
31 Commitment hiding_polynomial_commitment;
32 FF hiding_polynomial_eval;
36 static std::shared_ptr<Transcript> prover_init_empty()
38 auto transcript = Base::prover_init_empty();
42 static std::shared_ptr<Transcript> verifier_init_empty(
const std::shared_ptr<Transcript>& transcript)
44 auto verifier_transcript = Base::verifier_init_empty(transcript);
54 void deserialize_full_transcript(
size_t public_input_size)
57 size_t num_frs_read = 0;
58 auto& proof_data = this->proof_data;
59 for (
size_t i = 0; i < public_input_size; ++i) {
60 this->public_inputs.push_back(Base::template deserialize_from_buffer<FF>(proof_data, num_frs_read));
62 this->w_l_comm = Base::template deserialize_from_buffer<Commitment>(proof_data, num_frs_read);
63 this->w_r_comm = Base::template deserialize_from_buffer<Commitment>(proof_data, num_frs_read);
64 this->w_o_comm = Base::template deserialize_from_buffer<Commitment>(proof_data, num_frs_read);
65 this->lookup_read_counts_comm =
66 Base::template deserialize_from_buffer<Commitment>(proof_data, num_frs_read);
67 this->lookup_read_tags_comm = Base::template deserialize_from_buffer<Commitment>(proof_data, num_frs_read);
68 this->w_4_comm = Base::template deserialize_from_buffer<Commitment>(proof_data, num_frs_read);
69 this->lookup_inverses_comm = Base::template deserialize_from_buffer<Commitment>(proof_data, num_frs_read);
70 this->z_perm_comm = Base::template deserialize_from_buffer<Commitment>(proof_data, num_frs_read);
71 libra_concatenation_commitment =
72 Base::template deserialize_from_buffer<Commitment>(proof_data, num_frs_read);
73 libra_sum = Base::template deserialize_from_buffer<FF>(proof_data, num_frs_read);
75 for (
size_t i = 0; i < CONST_PROOF_SIZE_LOG_N; ++i) {
76 zk_sumcheck_univariates.push_back(
78 proof_data, num_frs_read));
80 libra_claimed_evaluation = Base::template deserialize_from_buffer<FF>(proof_data, num_frs_read);
81 this->sumcheck_evaluations =
82 Base::template deserialize_from_buffer<std::array<FF, NUM_ALL_ENTITIES>>(proof_data, num_frs_read);
83 libra_grand_sum_commitment = Base::template deserialize_from_buffer<Commitment>(proof_data, num_frs_read);
84 libra_quotient_commitment = Base::template deserialize_from_buffer<Commitment>(proof_data, num_frs_read);
85 hiding_polynomial_commitment = Base::template deserialize_from_buffer<Commitment>(proof_data, num_frs_read);
86 hiding_polynomial_eval = Base::template deserialize_from_buffer<FF>(proof_data, num_frs_read);
87 for (
size_t i = 0; i < CONST_PROOF_SIZE_LOG_N - 1; ++i) {
88 this->gemini_fold_comms.push_back(
89 Base::template deserialize_from_buffer<Commitment>(proof_data, num_frs_read));
91 for (
size_t i = 0; i < CONST_PROOF_SIZE_LOG_N; ++i) {
92 this->gemini_fold_evals.push_back(Base::template deserialize_from_buffer<FF>(proof_data, num_frs_read));
94 libra_concatenation_eval = Base::template deserialize_from_buffer<FF>(proof_data, num_frs_read);
95 libra_shifted_grand_sum_eval = Base::template deserialize_from_buffer<FF>(proof_data, num_frs_read);
96 libra_grand_sum_eval = Base::template deserialize_from_buffer<FF>(proof_data, num_frs_read);
97 libra_quotient_eval = Base::template deserialize_from_buffer<FF>(proof_data, num_frs_read);
98 this->shplonk_q_comm = Base::template deserialize_from_buffer<Commitment>(proof_data, num_frs_read);
100 this->kzg_w_comm = Base::template deserialize_from_buffer<Commitment>(proof_data, num_frs_read);
109 void serialize_full_transcript()
111 auto& proof_data = this->proof_data;
112 size_t old_proof_length = proof_data.size();
114 for (
const auto& public_input : this->public_inputs) {
115 Base::template serialize_to_buffer(public_input, proof_data);
117 Base::template serialize_to_buffer(this->w_l_comm, proof_data);
118 Base::template serialize_to_buffer(this->w_r_comm, proof_data);
119 Base::template serialize_to_buffer(this->w_o_comm, proof_data);
120 Base::template serialize_to_buffer(this->lookup_read_counts_comm, proof_data);
121 Base::template serialize_to_buffer(this->lookup_read_tags_comm, proof_data);
122 Base::template serialize_to_buffer(this->w_4_comm, proof_data);
123 Base::template serialize_to_buffer(this->lookup_inverses_comm, proof_data);
124 Base::template serialize_to_buffer(this->z_perm_comm, proof_data);
125 Base::template serialize_to_buffer(libra_concatenation_commitment, proof_data);
126 Base::template serialize_to_buffer(libra_sum, proof_data);
128 for (
size_t i = 0; i < CONST_PROOF_SIZE_LOG_N; ++i) {
129 Base::template serialize_to_buffer(zk_sumcheck_univariates[i], proof_data);
131 Base::template serialize_to_buffer(libra_claimed_evaluation, proof_data);
133 Base::template serialize_to_buffer(this->sumcheck_evaluations, proof_data);
134 Base::template serialize_to_buffer(libra_grand_sum_commitment, proof_data);
135 Base::template serialize_to_buffer(libra_quotient_commitment, proof_data);
136 Base::template serialize_to_buffer(hiding_polynomial_commitment, proof_data);
137 Base::template serialize_to_buffer(hiding_polynomial_eval, proof_data);
138 for (
size_t i = 0; i < CONST_PROOF_SIZE_LOG_N - 1; ++i) {
139 Base::template serialize_to_buffer(this->gemini_fold_comms[i], proof_data);
141 for (
size_t i = 0; i < CONST_PROOF_SIZE_LOG_N; ++i) {
142 Base::template serialize_to_buffer(this->gemini_fold_evals[i], proof_data);
144 Base::template serialize_to_buffer(libra_concatenation_eval, proof_data);
145 Base::template serialize_to_buffer(libra_shifted_grand_sum_eval, proof_data);
146 Base::template serialize_to_buffer(libra_grand_sum_eval, proof_data);
147 Base::template serialize_to_buffer(libra_quotient_eval, proof_data);
148 Base::template serialize_to_buffer(this->shplonk_q_comm, proof_data);
149 Base::template serialize_to_buffer(this->kzg_w_comm, proof_data);
#define BB_ASSERT_EQ(actual, expected,...)
Common transcript class for both parties. Stores the data for the current round, as well as the manif...
A univariate polynomial represented by its values on {domain_start, domain_start + 1,...
ECCVMFlavor::Transcript Transcript
Entry point for Barretenberg command-line interface.
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept