Skip to main content

StarkProverTranscript

Struct StarkProverTranscript 

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

Prover-side transcript of one uni-STARK run.

Holds the only definition of what a prover writes outside the opening argument.

The challenger is borrowed, not consumed. The caller keeps whatever it was doing with the sponge before and after.

Implementations§

Source§

impl<'a, C, F, EF> StarkProverTranscript<'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], ) -> EF
where Com: Clone, C: CanObserve<Com>,

Bind the committed traces and the public values, then draw alpha.

§Arguments
  • trace_commitment: commitment to the main trace.
  • preprocessed_commitment: commitment to the preprocessed trace, when the AIR has one.
  • public_values: the public values, exactly as many as the AIR reads.
§Returns

The challenge that batches every constraint into one identity.

§Panics

When the arguments do not match the shape this run was described with.

Source

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

Bind the quotient commitment, grind, and draw zeta.

§Arguments
  • quotient_commitment: commitment to the quotient chunks.
  • random_commitment: commitment to the randomization polynomial, under a hiding PCS.
§Returns
  • The out-of-domain point.
  • The grinding witness, when the difficulty is positive.
§Panics

When the arguments do not match the shape this run was described with.

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 callee seeds its own driver from the state this one has reached.

§Returns

Whatever the delegated run produced.

Source

pub fn abort(&mut self)

Abandon proof generation after a recoverable error, releasing the drop check.

Source

pub fn finish(self)

Close the transcript once every described step has been played.

§Panics

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

Auto Trait Implementations§

§

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

§

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

§

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

§

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

§

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

§

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

§

impl<'a, C, F, EF> UnsafeUnpin for StarkProverTranscript<'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