132 auto native_vk_hash = native_vk->hash();
138 transcript->enable_manifest();
141 transcript->load_proof(stdlib_proof);
143 transcript->add_to_hash_buffer(
"avm_vk_hash", vk_hash);
146 for (
size_t j = 0; j < public_inputs[i].size(); j++) {
148 public_inputs[i][j]);
152 size_t proof_idx = 0;
155 constexpr size_t num_frs_comm =
156 Base::Codec::template calc_num_fields<typename Base::Codec::bn254_commitment>();
158 transcript->add_element_frs_to_hash_buffer(
COLUMN_NAMES[idx],
159 proof_span.subspan(proof_idx, num_frs_comm));
160 proof_idx += num_frs_comm;
163 [[maybe_unused]]
auto [_beta, _gamma] =
167 transcript->add_element_frs_to_hash_buffer(
COLUMN_NAMES[idx],
168 proof_span.subspan(proof_idx, num_frs_comm));
169 proof_idx += num_frs_comm;
172 [[maybe_unused]]
const FF _alpha = transcript->template get_challenge<FF>(
"Sumcheck:alpha");
174 [[maybe_unused]]
const FF _initial_gate_challenge =
175 transcript->template get_challenge<FF>(
"Sumcheck:gate_challenge");
177 for (
size_t i = 0; i < native_vk->log_circuit_size; i++) {
178 std::string round_univariate_label =
"Sumcheck:univariate_" +
std::to_string(i);
179 transcript->add_element_frs_to_hash_buffer(
182 [[maybe_unused]]
FF _round_challenge =
183 transcript->template get_challenge<FF>(
"Sumcheck:u_" +
std::to_string(i));
186 transcript->add_element_frs_to_hash_buffer(
"Sumcheck:evaluations",
190 std::vector<std::string> unshifted_batching_challenge_labels;
193 unshifted_batching_challenge_labels.push_back(
"rho_" +
std::to_string(idx));
195 std::vector<std::string> shifted_batching_challenge_labels;
201 [[maybe_unused]]
auto _unshifted_challenges =
202 transcript->template get_challenges<FF>(unshifted_batching_challenge_labels);
203 [[maybe_unused]]
auto _shifted_challenges =
204 transcript->template get_challenges<FF>(shifted_batching_challenge_labels);
206 [[maybe_unused]]
const FF _gemini_batching_challenge = transcript->template get_challenge<FF>(
"rho");
208 for (
size_t i = 1; i < native_vk->log_circuit_size; ++i) {
209 transcript->add_element_frs_to_hash_buffer(
"Gemini:FOLD_" +
std::to_string(i),
210 proof_span.subspan(proof_idx, num_frs_comm));
211 proof_idx += num_frs_comm;
214 [[maybe_unused]]
const FF _gemini_evaluation_challenge = transcript->template get_challenge<FF>(
"Gemini:r");
216 for (
size_t i = 1; i <= native_vk->log_circuit_size; ++i) {
217 transcript->add_to_hash_buffer(
"Gemini:a_" +
std::to_string(i), proof_span[proof_idx++]);
220 [[maybe_unused]]
const FF _shplonk_batching_challenge =
221 transcript->template get_challenge<FF>(
"Shplonk:nu");
223 transcript->add_element_frs_to_hash_buffer(
"Shplonk:Q", proof_span.subspan(proof_idx, num_frs_comm));
224 proof_idx += num_frs_comm;
226 [[maybe_unused]]
const FF _shplonk_evaluation_challenge =
227 transcript->template get_challenge<FF>(
"Shplonk:z");
229 transcript->add_element_frs_to_hash_buffer(
"KZG:W", proof_span.subspan(proof_idx, num_frs_comm));
230 proof_idx += num_frs_comm;
232 [[maybe_unused]]
const FF _masking_challenge =
233 transcript->template get_challenge<FF>(
"KZG:masking_challenge");