pub struct ProofShape {
pub stir_queries: usize,
pub opened_base_elements: usize,
pub opened_extension_elements: usize,
pub merkle_digests: usize,
pub sent_base_elements: usize,
pub sent_extension_elements: usize,
pub grinding_bits: usize,
}Expand description
Everything a schedule fixes about the size of its proofs and the work of checking one.
Each figure is read off the derived schedule and the claim count, never off a witness.
Fields§
§stir_queries: usizeCodeword positions opened across every round, one Merkle check each.
opened_base_elements: usizeAlphabet elements opened from the first codeword.
opened_extension_elements: usizeChallenge-field elements opened from the folded codewords.
merkle_digests: usizeDigests the proof carries, which are the folded codewords’ roots and their opened paths.
No prefix a path shares with another is discounted.
sent_base_elements: usizeAlphabet elements the proof carries outside the openings, which are its grinding witnesses.
sent_extension_elements: usizeChallenge-field elements the proof carries outside the openings.
grinding_bits: usizeHardest grinding any phase of the schedule demands.
Implementations§
Source§impl ProofShape
impl ProofShape
Sourcepub fn of<EF, F, Challenger>(
config: &WhirConfig<EF, F, Challenger>,
opened_values: usize,
) -> Selfwhere
F: Field,
EF: ExtensionField<F>,
Challenger: FieldChallenger<F> + GrindingChallenger<Witness = F>,
pub fn of<EF, F, Challenger>(
config: &WhirConfig<EF, F, Challenger>,
opened_values: usize,
) -> Selfwhere
F: Field,
EF: ExtensionField<F>,
Challenger: FieldChallenger<F> + GrindingChallenger<Witness = F>,
Read the shape of every proximity opening a schedule can produce.
The claim count fixes how many opened values travel beside the transcript.
Sourcepub fn of_bit_readings<EF, Challenger>(
config: &WhirConfig<EF, EF, Challenger>,
num_claims: usize,
successor_tensors: bool,
) -> Self
pub fn of_bit_readings<EF, Challenger>( config: &WhirConfig<EF, EF, Challenger>, num_claims: usize, successor_tensors: bool, ) -> Self
Read the shape of every bit-witness opening a schedule can produce for this many claims.
One batched reduction travels beside a proximity opening of its one surviving point.
Each claim sends its elements by rows. The batch sends one run of degree-two rounds and the value it survives with.
Sourcepub const fn max_bytes(
&self,
base_element_bytes: usize,
extension_element_bytes: usize,
digest_bytes: usize,
) -> usize
pub const fn max_bytes( &self, base_element_bytes: usize, extension_element_bytes: usize, digest_bytes: usize, ) -> usize
Bytes a proof of this shape cannot exceed, given the width of each thing it carries.
A serializer that pads a value beyond its own width invalidates the figure.
Framing the serializer adds around a list is the caller’s to allow for.
Trait Implementations§
Source§impl Clone for ProofShape
impl Clone for ProofShape
impl Copy for ProofShape
Source§impl Debug for ProofShape
impl Debug for ProofShape
impl Eq for ProofShape
Source§impl PartialEq for ProofShape
impl PartialEq for ProofShape
impl StructuralPartialEq for ProofShape
Auto Trait Implementations§
impl Freeze for ProofShape
impl RefUnwindSafe for ProofShape
impl Send for ProofShape
impl Sync for ProofShape
impl Unpin for ProofShape
impl UnsafeUnpin for ProofShape
impl UnwindSafe for ProofShape
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