pub struct SumcheckShape {
pub num_rounds: usize,
pub pow_bits: usize,
pub basis: Basis,
}Expand description
Numbers that fix the transcript of one batch of quadratic sumcheck rounds.
Both sides build this from their own configuration, never from a proof.
Fields§
§num_rounds: usizeNumber of variables the batch binds, and so the number of rounds.
pow_bits: usizeGrinding difficulty guarding each round’s challenge, or zero to omit grinding.
basis: BasisBasis the two transmitted values are read in.
Implementations§
Source§impl SumcheckShape
impl SumcheckShape
Sourcepub const fn new(num_rounds: usize, pow_bits: usize, basis: Basis) -> Self
pub const fn new(num_rounds: usize, pow_bits: usize, basis: Basis) -> Self
Collect the numbers that fix one batch of rounds.
§Arguments
num_rounds: number of variables the batch binds.pow_bits: grinding difficulty per round, or zero to omit grinding.basis: how the two transmitted values are read.
Sourcepub fn pattern<F, EF>(&self) -> InteractionPatternwhere
F: TranscriptField,
EF: ExtensionField<F>,
pub fn pattern<F, EF>(&self) -> InteractionPatternwhere
F: TranscriptField,
EF: ExtensionField<F>,
Describe the transcript this shape fixes.
§Panics
Never in practice. A flat sequence of leaf steps always passes structural validation.
Sourcepub fn domain_separator<F, EF>(&self) -> DomainSeparator<FieldUnit<F>>where
F: TranscriptField,
EF: ExtensionField<F>,
pub fn domain_separator<F, EF>(&self) -> DomainSeparator<FieldUnit<F>>where
F: TranscriptField,
EF: ExtensionField<F>,
Bind the protocol identity, this shape, and the basis.
The round count and the difficulty both move the step sequence. The fingerprint therefore carries them.
The basis does not move it.
evaluation basis: the pair is [h(0), h(inf)]
projective basis: the pair is [s(1), s(inf)]Both are two extension elements followed by one challenge. Only the instance label separates two runs that disagree on which reading is meant.
Every shipped driver picks the evaluation reading, so no live pair can disagree today. The label is what keeps the two apart once a projective driver exists.
Trait Implementations§
Source§impl Clone for SumcheckShape
impl Clone for SumcheckShape
impl Copy for SumcheckShape
Source§impl Debug for SumcheckShape
impl Debug for SumcheckShape
impl Eq for SumcheckShape
Source§impl PartialEq for SumcheckShape
impl PartialEq for SumcheckShape
impl StructuralPartialEq for SumcheckShape
Auto Trait Implementations§
impl Freeze for SumcheckShape
impl RefUnwindSafe for SumcheckShape
impl Send for SumcheckShape
impl Sync for SumcheckShape
impl Unpin for SumcheckShape
impl UnsafeUnpin for SumcheckShape
impl UnwindSafe for SumcheckShape
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