pub struct VerifierTranscript<'a, C, F: TranscriptField, EF> { /* private fields */ }Expand description
Verifier-side transcript of one batch of quadratic sumcheck rounds.
Mirrors the prover side call for call, over the same description.
The values come from the proof rather than from a wire. The caller must therefore have counted them against the described shape first.
Implementations§
Source§impl<'a, C, F, EF> VerifierTranscript<'a, C, F, EF>where
F: TranscriptField,
EF: ExtensionField<F>,
C: CanObserve<F> + CanSample<F> + GrindingChallenger<Witness = F>,
impl<'a, C, F, EF> VerifierTranscript<'a, C, F, EF>where
F: TranscriptField,
EF: ExtensionField<F>,
C: CanObserve<F> + CanSample<F> + GrindingChallenger<Witness = F>,
Sourcepub fn new(challenger: &'a mut C, shape: SumcheckShape) -> Self
pub fn new(challenger: &'a mut C, shape: SumcheckShape) -> Self
Seed the transcript from the shape.
The argument matches the prover’s, so both sides seed identically.
Sourcepub fn round(
&mut self,
c_a: EF,
c_inf: EF,
witness: Option<F>,
) -> Result<EF, SumcheckError>
pub fn round( &mut self, c_a: EF, c_inf: EF, witness: Option<F>, ) -> Result<EF, SumcheckError>
Replay one round: bind both values, re-check the grind, draw the challenge.
Every value comes from the proof, so every disagreement is a rejection.
§Errors
- Grinding is enabled and the round carries no witness.
- The witness misses the required difficulty.
§Panics
When the batch was described with no rounds at all.
Auto Trait Implementations§
impl<'a, C, F, EF> !UnwindSafe for VerifierTranscript<'a, C, F, EF>
impl<'a, C, F, EF> Freeze for VerifierTranscript<'a, C, F, EF>
impl<'a, C, F, EF> RefUnwindSafe for VerifierTranscript<'a, C, F, EF>where
Option<VerifierState<'static, &'a mut C, FieldUnit<F>>>: RefUnwindSafe,
PhantomData<EF>: RefUnwindSafe,
impl<'a, C, F, EF> Send for VerifierTranscript<'a, C, F, EF>
impl<'a, C, F, EF> Sync for VerifierTranscript<'a, C, F, EF>
impl<'a, C, F, EF> Unpin for VerifierTranscript<'a, C, F, EF>
impl<'a, C, F, EF> UnsafeUnpin for VerifierTranscript<'a, C, F, EF>where
Option<VerifierState<'static, &'a mut C, FieldUnit<F>>>: UnsafeUnpin,
PhantomData<EF>: UnsafeUnpin,
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