Skip to main content

StarkVerifierTranscript

Struct StarkVerifierTranscript 

Source
pub struct StarkVerifierTranscript<'a, C, F: PrimeField64, EF> { /* private fields */ }
Expand description

Verifier-side transcript of one uni-STARK run.

Mirrors the prover side call for call, over the same description.

Implementations§

Source§

impl<'a, C, F, EF> StarkVerifierTranscript<'a, C, F, EF>
where F: PrimeField64, EF: ExtensionField<F>, C: CanObserve<F> + CanSample<F> + CanSampleBits<usize> + GrindingChallenger<Witness = F>,

Source

pub fn new(challenger: &'a mut C, shape: StarkShape) -> Self

Seed the transcript from the shape.

Source

pub fn constraint_phase<Com>( &mut self, trace_commitment: Com, preprocessed_commitment: Option<Com>, public_values: &[F], ) -> Result<EF, StarkTranscriptFailure>
where Com: Clone, C: CanObserve<Com>,

Replay the committed traces and the public values, then redraw alpha.

§Arguments
  • trace_commitment: commitment to the main trace, from the proof.
  • preprocessed_commitment: commitment to the preprocessed trace, from the verifier key.
  • public_values: the public values, which are this verifier’s own input.
§Errors
  • The run describes a preprocessed commitment and none arrived.
  • A preprocessed commitment arrived for a run described without one.
§Panics

When the public values are not the count the AIR declares. Both sides read that count off the same AIR, so a mismatch is a caller bug.

Source

pub fn ood_phase<Com>( &mut self, quotient_commitment: Com, random_commitment: Option<Com>, witness: F, ) -> Result<EF, StarkTranscriptFailure>
where Com: Clone, C: CanObserve<Com>,

Replay the quotient commitment and the grind, then redraw zeta.

§Arguments
  • quotient_commitment: commitment to the quotient chunks, from the proof.
  • random_commitment: commitment to the randomization polynomial, from the proof.
  • witness: the grinding witness the proof carries.
§Errors
  • The run describes a randomization commitment and none arrived.
  • A randomization commitment arrived for a run described without one.
  • The witness misses the difficulty its step requires.
Source

pub fn delegate<R>(&mut self, run: impl FnOnce(&mut C) -> R) -> R

Lend the sponge to the opening argument, bracketed as a sub-protocol.

The bracket closes whatever the delegated run returned. A rejection therefore leaves this transcript replayable to the end.

§Returns

Whatever the delegated run produced.

Source

pub fn finish(self)

Close the transcript once every described step has been replayed.

§Panics

When the run replayed fewer steps than it was described with.

Auto Trait Implementations§

§

impl<'a, C, F, EF> !UnwindSafe for StarkVerifierTranscript<'a, C, F, EF>

§

impl<'a, C, F, EF> Freeze for StarkVerifierTranscript<'a, C, F, EF>

§

impl<'a, C, F, EF> RefUnwindSafe for StarkVerifierTranscript<'a, C, F, EF>

§

impl<'a, C, F, EF> Send for StarkVerifierTranscript<'a, C, F, EF>

§

impl<'a, C, F, EF> Sync for StarkVerifierTranscript<'a, C, F, EF>

§

impl<'a, C, F, EF> Unpin for StarkVerifierTranscript<'a, C, F, EF>

§

impl<'a, C, F, EF> UnsafeUnpin for StarkVerifierTranscript<'a, C, F, EF>

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, 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