pub enum SumcheckError {
RoundCountMismatch {
expected: usize,
actual: usize,
},
MissingSumcheckData {
expected_rounds: usize,
},
InvalidPowWitness {
round: usize,
difficulty: usize,
},
MissingPowWitness {
round: usize,
difficulty: usize,
},
PowWitnessCountMismatch {
expected: usize,
actual: usize,
},
WireSizeMismatch {
round: usize,
expected: usize,
actual: usize,
},
EvenCharacteristic,
MaskTooShort {
ell_zk: usize,
},
NoRounds,
OpeningShapeMismatch {
table_idx: usize,
expected_current: usize,
expected_next: usize,
actual_current: usize,
actual_next: usize,
},
}Expand description
Errors from sumcheck protocol verification.
Variants§
RoundCountMismatch
The proof contains a different number of rounds than expected.
Fields
MissingSumcheckData
The proof is missing sumcheck data when rounds > 0.
InvalidPowWitness
Proof-of-work witness verification failed.
Fields
MissingPowWitness
Grinding is enabled but a round carries no witness to replay its step with.
Fields
PowWitnessCountMismatch
The witness count is not the one the difficulty fixes.
Zero difficulty admits no witnesses, and a positive one admits exactly one per round.
Fields
WireSizeMismatch
HVZK sumcheck: a per-round wire payload had the wrong number of field elements.
Each round carries max(ell_zk, 3) - 1 of them.
The linear coefficient is the one left off, per Lemma 6.4 and paper §6.
Fields
EvenCharacteristic
HVZK sumcheck: the base field has characteristic two.
Lemma 6.4 inverts the endpoint identity, which divides by two.
MaskTooShort
HVZK sumcheck: the mask code message is too short to hide a round.
A mask of degree ell_zk - 1 must cover the degree-2 plain piece.
NoRounds
HVZK sumcheck: a masked batch was configured with no rounds.
Such a batch commits no mask and reduces no claim.
OpeningShapeMismatch
An opening claim’s evaluations do not match the requested column shape.
The evaluations come from the proof, so a malformed proof must be rejected here rather than aborting the verifier.
Fields
Trait Implementations§
Source§impl Debug for SumcheckError
impl Debug for SumcheckError
Source§impl Display for SumcheckError
impl Display for SumcheckError
impl Eq for SumcheckError
Source§impl Error for SumcheckError
impl Error for SumcheckError
1.30.0 · Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()
Source§impl From<SumcheckError> for JaggedError
impl From<SumcheckError> for JaggedError
Source§fn from(source: SumcheckError) -> Self
fn from(source: SumcheckError) -> Self
Source§impl From<SumcheckError> for BitRingSwitchProofError
impl From<SumcheckError> for BitRingSwitchProofError
Source§fn from(source: SumcheckError) -> Self
fn from(source: SumcheckError) -> Self
Source§impl From<SumcheckError> for RingSwitchError
impl From<SumcheckError> for RingSwitchError
Source§fn from(source: SumcheckError) -> Self
fn from(source: SumcheckError) -> Self
Source§impl PartialEq for SumcheckError
impl PartialEq for SumcheckError
impl StructuralPartialEq for SumcheckError
Auto Trait Implementations§
impl Freeze for SumcheckError
impl RefUnwindSafe for SumcheckError
impl Send for SumcheckError
impl Sync for SumcheckError
impl Unpin for SumcheckError
impl UnsafeUnpin for SumcheckError
impl UnwindSafe for SumcheckError
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