69 const uint32_t shift_size =
transcript->template receive_from_prover<uint32_t>(
"shift_size");
70 BB_ASSERT_GT(shift_size, 0U,
"Shift size should always be bigger than 0");
74 std::vector<Commitment> table_commitments;
75 for (
size_t idx = 0; idx <
NUM_WIRES; ++idx) {
81 table_commitments.emplace_back(left_table);
82 table_commitments.emplace_back(right_table);
83 table_commitments.emplace_back(
85 table_commitments.emplace_back(
91 size_t commitment_idx = 2;
92 for (
auto& commitment : merged_table_commitments) {
93 commitment = table_commitments[commitment_idx];
98 const FF kappa =
transcript->template get_challenge<FF>(
"kappa");
99 const FF kappa_inv = kappa.invert();
100 const FF pow_kappa = kappa.pow(shift_size);
107 for (
size_t idx = 0; idx <
NUM_WIRES; ++idx) {
108 Claims claim{ { commitment_idx,
110 commitment_idx + 2 },
113 opening_claims.emplace_back(claim);
120 bool degree_check_verified =
true;
124 for (
size_t idx = 0; idx <
NUM_WIRES; ++idx) {
128 FF left_table_eval_kappa_inv =
130 claim = { { commitment_idx }, {
FF::one() }, { kappa_inv, left_table_eval_kappa_inv } };
131 opening_claims.emplace_back(claim);
137 FF left_table_reversed_eval =
139 claim = { { commitment_idx }, {
FF::one() }, { kappa, left_table_reversed_eval } };
140 opening_claims.emplace_back(claim);
146 degree_check_verified &= (left_table_eval_kappa_inv * kappa.pow(shift_size - 1) == left_table_reversed_eval);
151 verifier.reduce_verification_vector_claims_no_finalize(opening_claims);
154 auto batch_opening_claim = verifier.export_batch_opening_claim(Commitment::one());
159 bool claims_verified = pcs_vkey.pairing_check(pairing_points[0], pairing_points[1]);
161 return { degree_check_verified && claims_verified, merged_table_commitments };
static VerifierAccumulator reduce_verify_batch_opening_claim(BatchOpeningClaim< Curve > batch_opening_claim, const std::shared_ptr< Transcript > &transcript)
Computes the input points for the pairing check needed to verify a KZG opening claim obtained from a ...
std::pair< bool, TableCommitments > verify_proof(const HonkProof &proof, const InputCommitments &input_commitments)
Verify proper construction of the aggregate Goblin ECC op queue polynomials T_j, j = 1,...