Skip to content

Commit b824a6a

Browse files
committed
small clean-up
1 parent f16e578 commit b824a6a

File tree

1 file changed

+27
-24
lines changed

1 file changed

+27
-24
lines changed

cryptography/kzg_multi_open/src/fk20/verifier.rs

+27-24
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,12 @@ pub struct FK20Verifier {
4545
tau_pow_n: G2Prepared,
4646
// [-1]_2
4747
neg_g2_gen: G2Prepared,
48-
//
49-
pub coset_gens_pow_n: Vec<Scalar>,
50-
//
51-
coset_fft_gens: Vec<CosetFFT>,
48+
// Bit reversed vector of the coset generators raised
49+
// to the power of `n`, needed to verify a multi opening proof.
50+
pub bit_reversed_coset_gens_pow_n: Vec<Scalar>,
51+
// Bit reversed vector of the coset generators that
52+
// we will use to compute an inverse coset IFFT.
53+
bit_reversed_coset_fft_gens: Vec<CosetFFT>,
5254
}
5355

5456
impl FK20Verifier {
@@ -86,8 +88,8 @@ impl FK20Verifier {
8688
coset_domain,
8789
tau_pow_n,
8890
neg_g2_gen,
89-
coset_gens_pow_n,
90-
coset_fft_gens,
91+
bit_reversed_coset_gens_pow_n: coset_gens_pow_n,
92+
bit_reversed_coset_fft_gens: coset_fft_gens,
9193
}
9294
}
9395

@@ -188,7 +190,7 @@ impl FK20Verifier {
188190
// Linearly combine the interpolation polynomials using the same randomness `r`
189191
let random_sum_interpolation_poly = compute_sum_interpolation_poly(
190192
&self.coset_domain,
191-
&self.coset_fft_gens,
193+
&self.bit_reversed_coset_fft_gens,
192194
&bit_reversed_coset_evals,
193195
&bit_reversed_coset_indices,
194196
&r_powers,
@@ -198,8 +200,9 @@ impl FK20Verifier {
198200
.commit_g1(&random_sum_interpolation_poly);
199201

200202
let mut weighted_r_powers = Vec::with_capacity(batch_size);
201-
for (coset_index, r_power) in bit_reversed_coset_indices.iter().zip(r_powers) {
202-
let coset_gen_pow_n = self.coset_gens_pow_n[*coset_index as usize];
203+
for (bit_reversed_coset_index, r_power) in bit_reversed_coset_indices.iter().zip(r_powers) {
204+
let coset_gen_pow_n =
205+
self.bit_reversed_coset_gens_pow_n[*bit_reversed_coset_index as usize];
203206
weighted_r_powers.push(r_power * coset_gen_pow_n);
204207
}
205208

@@ -313,29 +316,29 @@ fn compute_powers(value: Scalar, num_elements: usize) -> Vec<Scalar> {
313316

314317
fn compute_sum_interpolation_poly(
315318
coset_domain: &Domain,
316-
coset_fft_gens: &[CosetFFT],
319+
bit_reversed_coset_fft_gens: &[CosetFFT],
317320
bit_reversed_coset_evals: &[Vec<Scalar>],
318321
bit_reversed_coset_indices: &[CosetIndex],
319322
r_powers: &[Scalar],
320323
) -> Vec<Scalar> {
321324
let mut random_sum_interpolation_poly = Vec::new();
322-
let coset_evals = bit_reversed_coset_evals.to_vec();
323-
for (k, mut coset_eval) in coset_evals.into_iter().enumerate() {
325+
326+
for ((mut bit_reversed_coset_eval, bit_reversed_coset_index), scale_factor) in
327+
bit_reversed_coset_evals
328+
.to_vec()
329+
.into_iter()
330+
.zip(bit_reversed_coset_indices)
331+
.zip(r_powers)
332+
{
324333
// Reverse the order, so it matches the fft domain
325-
reverse_bit_order(&mut coset_eval);
326-
327-
// Compute the interpolation polynomial
328-
let index = bit_reversed_coset_indices[k] as usize;
329-
let ifft_scalars = coset_domain.coset_ifft_scalars(coset_eval, &coset_fft_gens[index]);
330-
// let inv_coset_gen_pow_n = &inv_coset_gens_pow_n[bit_reversed_coset_indices[k] as usize];
331-
// let ifft_scalars: Vec<_> = ifft_scalars
332-
// .into_iter()
333-
// .zip(inv_coset_gen_pow_n)
334-
// .map(|(scalar, inv_h_k_pow)| scalar * inv_h_k_pow)
335-
// .collect();
334+
reverse_bit_order(&mut bit_reversed_coset_eval);
335+
let coset_eval = bit_reversed_coset_eval; // variable rename since we un-bit reversed the vector
336+
337+
// Compute the interpolation polynomial using a coset fft
338+
let coset_gen = &bit_reversed_coset_fft_gens[*bit_reversed_coset_index as usize];
339+
let ifft_scalars = coset_domain.coset_ifft_scalars(coset_eval, coset_gen);
336340

337341
// Scale the interpolation polynomial by the challenge
338-
let scale_factor = r_powers[k];
339342
let scaled_interpolation_poly = ifft_scalars
340343
.into_iter()
341344
.map(|coeff| coeff * scale_factor)

0 commit comments

Comments
 (0)