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>,
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>,
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],
) -> EFwhere
Com: Clone,
C: CanObserve<Com>,
pub fn constraint_phase<Com>(
&mut self,
trace_commitment: Com,
preprocessed_commitment: Option<Com>,
public_values: &[F],
) -> EFwhere
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.
Sourcepub fn ood_phase<Com>(
&mut self,
quotient_commitment: Com,
random_commitment: Option<Com>,
) -> (EF, Option<F>)where
Com: Clone,
C: CanObserve<Com>,
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.
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 callee seeds its own driver from the state this one has reached.
§Returns
Whatever the delegated run produced.
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> 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
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> ⓘ
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> ⓘ
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