75 transcript->load_proof(proof);
77 FF shift_size = transcript->template receive_from_prover<FF>(
"shift_size");
78 BB_ASSERT_GT(shift_size.get_value(), 0U,
"Shift size should always be bigger than 0");
82 std::vector<Commitment> table_commitments;
83 for (
size_t idx = 0; idx < NUM_WIRES; ++idx) {
89 table_commitments.emplace_back(left_table);
90 table_commitments.emplace_back(right_table);
91 table_commitments.emplace_back(
92 transcript->template receive_from_prover<Commitment>(
"MERGED_TABLE_" +
std::to_string(idx)));
93 table_commitments.emplace_back(
94 transcript->template receive_from_prover<Commitment>(
"LEFT_TABLE_REVERSED_" +
std::to_string(idx)));
99 size_t commitment_idx = 2;
100 for (
auto& commitment : merged_table_commitments) {
101 commitment = table_commitments[commitment_idx];
102 commitment_idx += NUM_WIRES;
106 const FF kappa = transcript->template get_challenge<FF>(
"kappa");
107 const FF kappa_inv = kappa.invert();
108 const FF pow_kappa = kappa.pow(shift_size);
109 const FF pow_kappa_minus_one = pow_kappa * kappa_inv;
116 for (
size_t idx = 0; idx < NUM_WIRES; ++idx) {
117 opening_claims.emplace_back(Claims{ { commitment_idx,
119 commitment_idx + 2 },
120 {
FF(1), pow_kappa,
FF(-1) },
124 commitment_idx += NUM_WIRES;
129 for (
size_t idx = 0; idx < NUM_WIRES; ++idx) {
131 FF left_table_eval_kappa_inv =
132 transcript->template receive_from_prover<FF>(
"left_table_eval_kappa_inv_" +
std::to_string(idx));
133 opening_claims.emplace_back(
134 Claims{ { commitment_idx }, {
FF(1) }, { kappa_inv, left_table_eval_kappa_inv } });
137 FF left_table_reversed_eval =
138 transcript->template receive_from_prover<FF>(
"left_table_reversed_eval_" +
std::to_string(idx));
139 opening_claims.emplace_back(
140 Claims{ { commitment_idx + 3 }, {
FF(1) }, { kappa, left_table_reversed_eval } });
143 commitment_idx += NUM_WIRES;
146 left_table_reversed_eval.assert_equal(left_table_eval_kappa_inv * pow_kappa_minus_one);
151 verifier.reduce_verification_vector_claims_no_finalize(opening_claims);
154 auto batch_opening_claim = verifier.export_batch_opening_claim(Commitment::one(kappa.get_context()));
159 return { pairing_points, merged_table_commitments };