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>,
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>,
Sourcepub fn new(challenger: &'a mut C, shape: StarkShape) -> Self
pub fn new(challenger: &'a mut C, shape: StarkShape) -> Self
Seed the transcript from the shape.
Sourcepub 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>,
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.
Sourcepub fn ood_phase<Com>(
&mut self,
quotient_commitment: Com,
random_commitment: Option<Com>,
witness: F,
) -> Result<EF, StarkTranscriptFailure>where
Com: Clone,
C: CanObserve<Com>,
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.
Sourcepub fn delegate<R>(&mut self, run: impl FnOnce(&mut C) -> R) -> R
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.
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>where
VerifierState<'static, &'a mut C, FieldUnit<F>>: RefUnwindSafe,
PhantomData<EF>: RefUnwindSafe,
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> 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
Mutably borrows from an owned value. Read more
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> ⓘ
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 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> ⓘ
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