pub struct CodewordSpec {
pub log_lift: usize,
pub log_early_batch_size: usize,
pub log_later_batch_size: usize,
}Expand description
Specification of one committed codeword batched into the first-round FRI oracle.
Each input oracle commits an interleaved Reed–Solomon codeword whose own dimension is
rs_code.log_dim() - log_lift; it is lifted to the shared reduced dimension by duplicating
each entry 2^log_lift times before the oracles are batched together. This is distinct from
crate::channel::OracleSpec, the higher-level description of an oracle to be committed (its
message length and whether it is masked); a CodewordSpec is the resolved, FRI-level layout
the FRIParams selection computes from a batch of those.
Fields§
§log_lift: usizelog2 the number of times each committed codeword entry is duplicated to lift it to the shared first-round (reduced) dimension.
The committed codeword’s Reed–Solomon dimension is rs_code.log_dim() - log_lift, so its
message length is rs_code.log_dim() - log_lift + log_batch_size. It is 0 when the
oracle already sits at the reduced dimension.
log_early_batch_size: usizelog2 the number of early batch-fold challenges this oracle’s interleaving folds with.
The first fold draws its within-oracle batch challenges in two groups: max_early = max(log_early_batch_size) early challenges, sampled before the log_n_oracles outer
(oracle-combine) challenges, followed by max_later = max(log_later_batch_size) later
challenges, sampled after them. The full first-fold challenge slice is therefore
[early (max_early)] ++ [outer (log_n_oracles)] ++ [later (max_later)].
Oracle i folds its interleaving with the concatenation early_window ++ later_window,
where early_window is the log_early_batch_size-length suffix of the early challenges
and later_window is the log_later_batch_size-length suffix of the later challenges.
The early group carries the shared masking challenge γ of ZK BaseFold oracles (each such
oracle is purely early, log_later_batch_size == 0); the later group carries the non-ZK
oracles’ flexible batch folds (each such oracle is purely later, log_early_batch_size == 0). The total interleave batch size of an oracle is log_early_batch_size + log_later_batch_size (see Self::log_batch_size).
log_later_batch_size: usizelog2 the number of later batch-fold challenges this oracle’s interleaving folds with,
sampled after the outer (oracle-combine) challenges. See Self::log_early_batch_size.
Implementations§
Source§impl CodewordSpec
impl CodewordSpec
Sourcepub const fn log_batch_size(&self) -> usize
pub const fn log_batch_size(&self) -> usize
log2 the interleaved batch size: the early plus the later batch challenges.
Trait Implementations§
Source§impl Clone for CodewordSpec
impl Clone for CodewordSpec
Source§fn clone(&self) -> CodewordSpec
fn clone(&self) -> CodewordSpec
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for CodewordSpec
impl RefUnwindSafe for CodewordSpec
impl Send for CodewordSpec
impl Sync for CodewordSpec
impl Unpin for CodewordSpec
impl UnsafeUnpin for CodewordSpec
impl UnwindSafe for CodewordSpec
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more