plonky2/src/fri/mod.rs

44 lines
1.3 KiB
Rust
Raw Normal View History

use crate::fri::reduction_strategies::FriReductionStrategy;
pub mod commitment;
pub mod proof;
2021-05-05 18:23:59 +02:00
pub mod prover;
pub mod recursive_verifier;
pub mod reduction_strategies;
2021-05-05 18:23:59 +02:00
pub mod verifier;
2021-05-06 17:09:55 +02:00
#[derive(Debug, Clone, Eq, PartialEq)]
2021-05-05 18:23:59 +02:00
pub struct FriConfig {
pub proof_of_work_bits: u32,
pub reduction_strategy: FriReductionStrategy,
/// Number of query rounds to perform.
pub num_query_rounds: usize,
}
/// Parameters which are generated during preprocessing, in contrast to `FriConfig` which is
/// user-specified.
#[derive(Debug)]
pub(crate) struct FriParams {
/// The arity of each FRI reduction step, expressed as the log2 of the actual arity.
2021-05-05 18:23:59 +02:00
/// For example, `[3, 2, 1]` would describe a FRI reduction tree with 8-to-1 reduction, then
/// a 4-to-1 reduction, then a 2-to-1 reduction. After these reductions, the reduced polynomial
/// is sent directly.
pub reduction_arity_bits: Vec<usize>,
2021-06-01 19:13:22 -07:00
}
2021-10-02 10:46:02 +02:00
impl FriParams {
2021-10-02 10:46:02 +02:00
pub(crate) fn total_arities(&self) -> usize {
self.reduction_arity_bits.iter().sum()
}
pub(crate) fn max_arity_bits(&self) -> Option<usize> {
self.reduction_arity_bits.iter().copied().max()
}
pub(crate) fn max_arity(&self) -> Option<usize> {
self.max_arity_bits().map(|bits| 1 << bits)
}
2021-10-02 10:46:02 +02:00
}