pub struct RoundProof<F: Field>(pub RoundCoeffs<F>);
Expand description
A sumcheck round proof is a univariate polynomial in monomial basis with the coefficient of the highest-degree term truncated off.
Since the verifier knows the claimed sum of the polynomial values at the points 0 and 1, the high-degree term coefficient can be easily recovered. Truncating the coefficient off saves a small amount of proof data.
Tuple Fields§
§0: RoundCoeffs<F>
Implementations§
Source§impl<F: Field> RoundProof<F>
impl<F: Field> RoundProof<F>
Sourcepub fn recover(self, sum: F) -> RoundCoeffs<F>
pub fn recover(self, sum: F) -> RoundCoeffs<F>
Recovers all univariate polynomial coefficients from the compressed round proof.
The prover has sent coefficients for the purported ith round polynomial . However, the prover has not sent the highest degree coefficient . The verifier will need to recover this missing coefficient.
Let denote the current round’s claimed sum. The verifier expects the round polynomial to satisfy the identity . Using There is a unique that allows to satisfy the above identity. Specifically
Not sending the whole round polynomial is an optimization. In the unoptimized version of the protocol, the verifier will halt and reject if given a round polynomial that does not satisfy the above identity.
Sourcepub fn isomorphic<FI: Field + From<F>>(self) -> RoundProof<FI>
pub fn isomorphic<FI: Field + From<F>>(self) -> RoundProof<FI>
Representation in an isomorphic field
Trait Implementations§
Source§impl<F: Clone + Field> Clone for RoundProof<F>
impl<F: Clone + Field> Clone for RoundProof<F>
Source§fn clone(&self) -> RoundProof<F>
fn clone(&self) -> RoundProof<F>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl<F: Default + Field> Default for RoundProof<F>
impl<F: Default + Field> Default for RoundProof<F>
Source§fn default() -> RoundProof<F>
fn default() -> RoundProof<F>
impl<F: Eq + Field> Eq for RoundProof<F>
impl<F: Field> StructuralPartialEq for RoundProof<F>
Auto Trait Implementations§
impl<F> Freeze for RoundProof<F>
impl<F> RefUnwindSafe for RoundProof<F>
impl<F> Send for RoundProof<F>
impl<F> Sync for RoundProof<F>
impl<F> Unpin for RoundProof<F>
impl<F> UnwindSafe for RoundProof<F>
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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