Skip to main content

StarkTranscript

Struct StarkTranscript 

Source
pub struct StarkTranscript<EF, L>
where L: Lmcs, <L as Lmcs>::F: Field, EF: ExtensionField<<L as Lmcs>::F>,
{ pub instance_shapes: InstanceShapes, pub instance_challenge: EF, pub main_commit: <L as Lmcs>::Commitment, pub randomness: Vec<EF>, pub aux_commit: <L as Lmcs>::Commitment, pub all_aux_values: Vec<Vec<EF>>, pub alpha: EF, pub beta: EF, pub quotient_commit: <L as Lmcs>::Commitment, pub z: EF, pub pcs_transcript: PcsTranscript<EF, L>, }
Expand description

Structured transcript view for the full lifted STARK protocol.

Captures instance shape metadata, commitments, sampled challenges, the OOD evaluation point, and the PCS sub-transcript. Constructed via from_proof, which mirrors steps 0–9 of verify_multi but skips the constraint check.

Fields§

§instance_shapes: InstanceShapes

Per-instance shape metadata. Validated and observed into the challenger by from_proof.

§instance_challenge: EF

Throwaway challenge squeezed right after observing the instance shapes, used to clear the challenger’s absorb buffer so that later sampled challenges depend on the full shape metadata regardless of sponge state.

§main_commit: <L as Lmcs>::Commitment

Main trace commitment.

§randomness: Vec<EF>

Randomness sampled for auxiliary traces.

§aux_commit: <L as Lmcs>::Commitment

Auxiliary trace commitment.

§all_aux_values: Vec<Vec<EF>>

Aux values per AIR instance, observed into the transcript after the aux commitment.

§alpha: EF

Constraint folding challenge alpha.

§beta: EF

AIR accumulation challenge beta.

§quotient_commit: <L as Lmcs>::Commitment

Quotient polynomial commitment.

§z: EF

Out-of-domain evaluation point z.

§pcs_transcript: PcsTranscript<EF, L>

PCS sub-transcript (DEEP evals, FRI rounds, query openings).

Implementations§

Source§

impl<EF, L> StarkTranscript<EF, L>
where L: Lmcs, <L as Lmcs>::F: TwoAdicField, EF: ExtensionField<<L as Lmcs>::F>,

Source

pub fn from_proof<A, SC>( config: &SC, instances: &[(&A, AirInstance<'_, <L as Lmcs>::F>)], proof: &StarkProof<<L as Lmcs>::F, EF, SC>, challenger: <SC as StarkConfig<<L as Lmcs>::F, EF>>::Challenger, ) -> Result<(StarkTranscript<EF, L>, <<SC as StarkConfig<<L as Lmcs>::F, EF>>::Challenger as CanFinalizeDigest>::Digest), VerifierError>
where A: LiftedAir<<L as Lmcs>::F, EF>, SC: StarkConfig<<L as Lmcs>::F, EF, Lmcs = L>,

Parse a STARK transcript from proof data and a challenger.

Mirrors steps 0–9 of verify_multi: 0. Validate instance shapes, then observe log trace heights into the challenger and squeeze a throwaway instance_challenge to clear the absorb buffer

  1. Receive main trace commitment
  2. Sample randomness for auxiliary traces
  3. Receive auxiliary trace commitment
  4. Receive aux values (per AIR instance)
  5. Sample constraint folding alpha and accumulation beta
  6. Receive quotient commitment
  7. Sample OOD point z
  8. Build commitment widths for PCS
  9. Parse PCS sub-transcript via PcsTranscript::from_verifier_channel

Does not verify constraints or check the quotient identity. Finalizes the transcript and returns the digest alongside the parsed view.

Auto Trait Implementations§

§

impl<EF, L> Freeze for StarkTranscript<EF, L>
where <L as Lmcs>::F: for<'de> Sized + Freeze, EF: Freeze, <L as Lmcs>::Commitment: Freeze,

§

impl<EF, L> RefUnwindSafe for StarkTranscript<EF, L>
where <L as Lmcs>::F: for<'de> Sized + RefUnwindSafe, EF: RefUnwindSafe, <L as Lmcs>::Commitment: RefUnwindSafe, <L as Lmcs>::BatchProof: RefUnwindSafe,

§

impl<EF, L> Send for StarkTranscript<EF, L>
where <L as Lmcs>::F: for<'de> Sized, <L as Lmcs>::Commitment: Send, <L as Lmcs>::BatchProof: Send,

§

impl<EF, L> Sync for StarkTranscript<EF, L>
where <L as Lmcs>::F: for<'de> Sized, <L as Lmcs>::Commitment: Sync, <L as Lmcs>::BatchProof: Sync,

§

impl<EF, L> Unpin for StarkTranscript<EF, L>
where <L as Lmcs>::F: for<'de> Sized + Unpin, EF: Unpin, <L as Lmcs>::Commitment: Unpin, <L as Lmcs>::BatchProof: Unpin,

§

impl<EF, L> UnsafeUnpin for StarkTranscript<EF, L>
where <L as Lmcs>::F: for<'de> Sized + UnsafeUnpin, EF: UnsafeUnpin, <L as Lmcs>::Commitment: UnsafeUnpin,

§

impl<EF, L> UnwindSafe for StarkTranscript<EF, L>
where <L as Lmcs>::F: for<'de> Sized + UnwindSafe, EF: UnwindSafe, <L as Lmcs>::Commitment: UnwindSafe, <L as Lmcs>::BatchProof: UnwindSafe,

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> 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> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

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

Source§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

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