Skip to main content

GrindingSites

Struct GrindingSites 

Source
pub struct GrindingSites {
    pub out_of_domain: usize,
    pub batch_combination: usize,
    pub lookup_challenge: usize,
}
Expand description

Where a STARK grinds, in bits per site.

Every field defaults to 0 — a protocol declares only the sites it actually uses, and a default-constructed value is neutral.

Each site is consumed by the term whose round it opens:

The low-degree test’s own grinding sites (e.g. FRI’s query- and commit-phase proof-of-work) are not modeled here: a crate::ldt::LowDegreeTest implementation carries those itself (FriRegime::query_pow_bits / FriRegime::commit_pow_bits) and folds them into the terms it returns, so the composite never re-applies them — a site in this struct for them would be read back out unchanged, never consulted.

A protocol grinding at a site this crate does not model builds its own crate::report::SecurityTerm, applies boost to it, and passes it through extras — no change to this struct is needed.

Fields§

§out_of_domain: usize

Bits ground before the DEEP out-of-domain point is sampled.

§batch_combination: usize

Bits ground before the challenge that random-linear-combines the committed codewords into the single low-degree-test instance.

This is the opening-batching challenge of the polynomial commitment scheme (alpha in p3_fri::TwoAdicFriPcs::open), not a FRI folding challenge — those are FriRegime::commit_pow_bits, carried by the low-degree test itself. It is credited only to the term crate::report::BATCH_LABEL names, which exists only when more than one codeword is batched (InstanceShape::num_batched_functions >= 2); with nothing to batch there is no such round and these bits buy nothing.

The proven, conjectured, and legacy composites all model this round. They grade it in different proximity regimes, but the prover pays the same work regardless.

§lookup_challenge: usize

Bits ground before the lookup / permutation argument’s challenges are sampled.

Implementations§

Source§

impl GrindingSites

Source

pub const NONE: Self

No grinding at any site — the neutral element, usable in const contexts where Default::default is not available.

Trait Implementations§

Source§

impl Clone for GrindingSites

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for GrindingSites

Source§

impl Debug for GrindingSites

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for GrindingSites

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl Eq for GrindingSites

Source§

impl PartialEq for GrindingSites

Source§

fn eq(&self, other: &Self) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl Serialize for GrindingSites

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl StructuralPartialEq for GrindingSites

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> Dup for T
where T: Copy + Clone,

Source§

fn dup(&self) -> T

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more