Skip to content

Commit

Permalink
degree_logs -> degree_bits
Browse files Browse the repository at this point in the history
  • Loading branch information
sai-deng committed May 2, 2024
1 parent d5f5415 commit 869eb19
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 24 deletions.
17 changes: 9 additions & 8 deletions plonky2/src/fri/batch_oracle.rs
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@ pub struct BatchFriOracle<F: RichField + Extendable<D>, C: GenericConfig<D, F =
{
pub polynomials: Vec<PolynomialCoeffs<F>>,
pub field_merkle_tree: FieldMerkleTree<F, C::Hasher>,
pub degree_logs: Vec<usize>,
// The degree bits of each polynomial.
pub degree_bits: Vec<usize>,
pub rate_bits: usize,
pub blinding: bool,
}
Expand Down Expand Up @@ -72,27 +73,27 @@ impl<F: RichField + Extendable<D>, C: GenericConfig<D, F = F>, const D: usize>
timing: &mut TimingTree,
fft_root_table: &[Option<&FftRootTable<F>>],
) -> Self {
let degree_logs = polynomials
let degree_bits = polynomials
.iter()
.map(|p| log2_strict(p.len()))
.collect_vec();
assert!(degree_logs.windows(2).all(|pair| { pair[0] >= pair[1] }));
let max_degree_log = degree_logs[0];
assert!(degree_bits.windows(2).all(|pair| { pair[0] >= pair[1] }));
let max_degree_bits = degree_bits[0];

let num_polynomials = polynomials.len();
let mut group_start = 0;
let mut leaves = Vec::new();
let shift = F::coset_shift();

for (i, d) in degree_logs.iter().enumerate() {
if i == num_polynomials - 1 || *d > degree_logs[i + 1] {
for (i, d) in degree_bits.iter().enumerate() {
if i == num_polynomials - 1 || *d > degree_bits[i + 1] {
let lde_values = timed!(
timing,
"FFT + blinding",
PolynomialBatch::<F, C, D>::lde_values(
&polynomials[group_start..i + 1],
rate_bits,
shift.exp_power_of_2(max_degree_log - d),
shift.exp_power_of_2(max_degree_bits - d),
blinding,
fft_root_table[i]
)
Expand All @@ -115,7 +116,7 @@ impl<F: RichField + Extendable<D>, C: GenericConfig<D, F = F>, const D: usize>
Self {
polynomials,
field_merkle_tree,
degree_logs,
degree_bits,
rate_bits,
blinding,
}
Expand Down
20 changes: 10 additions & 10 deletions plonky2/src/fri/batch_verifier.rs
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ pub fn verify_batch_fri_proof<
C: GenericConfig<D, F = F>,
const D: usize,
>(
degree_logs: &[usize],
degree_bits: &[usize],
instances: &[FriInstanceInfo<F, D>],
openings: &[FriOpenings<F, D>],
challenges: &FriChallenges<F, D>,
Expand All @@ -49,7 +49,7 @@ pub fn verify_batch_fri_proof<
let pre = PrecomputedReducedOpenings::from_os_and_alpha(opn, challenges.fri_alpha);
precomputed_reduced_evals.push(pre);
}
let degree_logs = degree_logs
let degree_bits = degree_bits
.iter()
.map(|d| d + params.config.rate_bits)
.collect_vec();
Expand All @@ -59,7 +59,7 @@ pub fn verify_batch_fri_proof<
.zip(&proof.query_round_proofs)
{
batch_fri_verifier_query_round::<F, C, D>(
&degree_logs,
&degree_bits,
instances,
challenges,
&precomputed_reduced_evals,
Expand All @@ -75,7 +75,7 @@ pub fn verify_batch_fri_proof<
}

fn batch_fri_verify_initial_proof<F: RichField + Extendable<D>, H: Hasher<F>, const D: usize>(
degree_logs: &[usize],
degree_bits: &[usize],
instances: &[FriInstanceInfo<F, D>],
x_index: usize,
proof: &FriInitialTreeProof<F, H>,
Expand All @@ -99,7 +99,7 @@ fn batch_fri_verify_initial_proof<F: RichField + Extendable<D>, H: Hasher<F>, co
})
.collect::<Vec<_>>();

verify_field_merkle_proof_to_cap::<F, H>(&leaves, degree_logs, x_index, cap, merkle_proof)?;
verify_field_merkle_proof_to_cap::<F, H>(&leaves, degree_bits, x_index, cap, merkle_proof)?;
}

Ok(())
Expand Down Expand Up @@ -152,7 +152,7 @@ fn batch_fri_verifier_query_round<
C: GenericConfig<D, F = F>,
const D: usize,
>(
degree_logs: &[usize],
degree_bits: &[usize],
instances: &[FriInstanceInfo<F, D>],
challenges: &FriChallenges<F, D>,
precomputed_reduced_evals: &[PrecomputedReducedOpenings<F, D>],
Expand All @@ -163,13 +163,13 @@ fn batch_fri_verifier_query_round<
params: &FriParams,
) -> anyhow::Result<()> {
batch_fri_verify_initial_proof::<F, C::Hasher, D>(
degree_logs,
degree_bits,
instances,
x_index,
&round_proof.initial_trees_proof,
initial_merkle_caps,
)?;
let mut n = degree_logs[0] + params.config.rate_bits;
let mut n = degree_bits[0] + params.config.rate_bits;
// `subgroup_x` is `subgroup[x_index]`, i.e., the actual field element in the domain.
let mut subgroup_x = F::MULTIPLICATIVE_GROUP_GENERATOR
* F::primitive_root_of_unity(n).exp_u64(reverse_bits(x_index, n) as u64);
Expand Down Expand Up @@ -218,8 +218,8 @@ fn batch_fri_verifier_query_round<
x_index = coset_index;
n -= arity_bits;

if batch_index < degree_logs.len()
&& n == degree_logs[batch_index] + params.config.rate_bits
if batch_index < degree_bits.len()
&& n == degree_bits[batch_index] + params.config.rate_bits
{
let eval = batch_fri_combine_initial::<F, C, D>(
instances,
Expand Down
8 changes: 4 additions & 4 deletions plonky2/src/fri/oracle.rs
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ pub struct PolynomialBatch<F: RichField + Extendable<D>, C: GenericConfig<D, F =
{
pub polynomials: Vec<PolynomialCoeffs<F>>,
pub merkle_tree: MerkleTree<F, C::Hasher>,
pub degree_log: usize,
pub degree_bits: usize,
pub rate_bits: usize,
pub blinding: bool,
}
Expand All @@ -43,7 +43,7 @@ impl<F: RichField + Extendable<D>, C: GenericConfig<D, F = F>, const D: usize> D
PolynomialBatch {
polynomials: Vec::new(),
merkle_tree: MerkleTree::default(),
degree_log: 0,
degree_bits: 0,
rate_bits: 0,
blinding: false,
}
Expand Down Expand Up @@ -111,7 +111,7 @@ impl<F: RichField + Extendable<D>, C: GenericConfig<D, F = F>, const D: usize>
Self {
polynomials,
merkle_tree,
degree_log: log2_strict(degree),
degree_bits: log2_strict(degree),
rate_bits,
blinding,
}
Expand Down Expand Up @@ -148,7 +148,7 @@ impl<F: RichField + Extendable<D>, C: GenericConfig<D, F = F>, const D: usize>
/// Fetches LDE values at the `index * step`th point.
pub fn get_lde_values(&self, index: usize, step: usize) -> &[F] {
let index = index * step;
let index = reverse_bits(index, self.degree_log + self.rate_bits);
let index = reverse_bits(index, self.degree_bits + self.rate_bits);
let slice = &self.merkle_tree.leaves[index];
&slice[..slice.len() - if self.blinding { SALT_SIZE } else { 0 }]
}
Expand Down
4 changes: 2 additions & 2 deletions plonky2/src/util/serialization/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -740,7 +740,7 @@ pub trait Read {
Ok(PolynomialBatch {
polynomials,
merkle_tree,
degree_log,
degree_bits: degree_log,
rate_bits,
blinding,
})
Expand Down Expand Up @@ -1755,7 +1755,7 @@ pub trait Write {
self.write_field_vec(&poly_batch.polynomials[i].coeffs)?;
}
self.write_merkle_tree(&poly_batch.merkle_tree)?;
self.write_usize(poly_batch.degree_log)?;
self.write_usize(poly_batch.degree_bits)?;
self.write_usize(poly_batch.rate_bits)?;
self.write_bool(poly_batch.blinding)?;

Expand Down

0 comments on commit 869eb19

Please sign in to comment.