pub struct BinaryPcsShape {
pub num_variables: usize,
pub log_folding_factor: usize,
pub num_oracles: usize,
pub final_codeword_len: usize,
pub pow_bits: usize,
pub pair_bits: usize,
pub num_pairs: usize,
}Expand description
Numbers that fix the transcript of one binary-tower PCS run.
Both sides derive this from their own configuration, never from a proof.
Fields§
§num_variables: usizeArity of the committed polynomial.
log_folding_factor: usizeVariables each fold batch consumes.
num_oracles: usizeFolded oracles committed between the fold batches.
The last batch sends its codeword in the clear, so it commits nothing.
final_codeword_len: usizeSymbols the final codeword carries.
pow_bits: usizeGrinding difficulty guarding the query positions.
pair_bits: usizeBit width of one sampled fold pair.
num_pairs: usizeDistinct pairs the run opens.
Implementations§
Source§impl BinaryPcsShape
impl BinaryPcsShape
Sourcepub const fn new(config: &BinaryPcsConfig) -> Self
pub const fn new(config: &BinaryPcsConfig) -> Self
Sourcepub fn pattern<F, EF>(&self) -> InteractionPattern
pub fn pattern<F, EF>(&self) -> InteractionPattern
Describe the transcript this shape fixes.
The fold rounds are absent: each seeds its own sumcheck sub-transcript.
per oracle -> one Merkle root
closing -> final codeword, grind, query positions§Panics
Never in practice.
A flat sequence of leaf steps always passes structural validation.
Sourcepub fn domain_separator<F, EF>(&self) -> DomainSeparator<FieldUnit<F>>
pub fn domain_separator<F, EF>(&self) -> DomainSeparator<FieldUnit<F>>
Bind the protocol identity and this shape into a seed.
§Soundness
The step counts and widths ride the fingerprint on their own.
The arity and the folding factor move no step, so they are bound as chunks.
Without them, a run folding every variable at once shares a description.
Every other arity at the same rate lands on it.
nv = 8, k = 8 -> one batch, no oracle, rate-wide final word
nv = 9, k = 9 -> the same three numbersThe surrounding layout binds the arity too.
This makes the seed self-contained rather than closing a reachable gap.
Trait Implementations§
Source§impl Clone for BinaryPcsShape
impl Clone for BinaryPcsShape
impl Copy for BinaryPcsShape
Source§impl Debug for BinaryPcsShape
impl Debug for BinaryPcsShape
impl Eq for BinaryPcsShape
Source§impl PartialEq for BinaryPcsShape
impl PartialEq for BinaryPcsShape
impl StructuralPartialEq for BinaryPcsShape
Auto Trait Implementations§
impl Freeze for BinaryPcsShape
impl RefUnwindSafe for BinaryPcsShape
impl Send for BinaryPcsShape
impl Sync for BinaryPcsShape
impl Unpin for BinaryPcsShape
impl UnsafeUnpin for BinaryPcsShape
impl UnwindSafe for BinaryPcsShape
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,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§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