#[non_exhaustive]pub enum BinaryPcsConfigError {
InvalidFoldingFactor {
requested: usize,
num_variables: usize,
},
UnpricedChallengeField {
bits: usize,
},
CodewordExceedsAlphabetDomain {
log_len: usize,
bits: usize,
},
CodewordLengthExceedsUsize {
log_len: usize,
max_bits: usize,
},
NoVariablesToFold,
PowBitsExceedWitnessCapacity {
requested: usize,
max: usize,
},
SecurityLevelBelowPowBits {
security_level: usize,
pow_bits: usize,
},
SecurityLevelExceedsFieldCapacity {
security_level: usize,
max: usize,
},
ZeroQueries,
CommittedFieldMismatch {
derived: usize,
actual: usize,
},
ChallengeFieldMismatch {
derived: usize,
actual: usize,
},
}Expand description
Why a BinaryPcsConfig could not be derived.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
InvalidFoldingFactor
A batch must fold between one and all remaining message variables.
UnpricedChallengeField
The challenge field is not one the security model prices.
Every algebraic error is charged against this width. A width the model does not recognise would be reported against nothing.
CodewordExceedsAlphabetDomain
The base codeword is longer than the committed alphabet’s additive domain.
A level of bits bits spans that many Cantor basis vectors.
Its domain therefore holds 2^bits points, and no evaluation exists past them.
CodewordLengthExceedsUsize
The codeword length does not fit in a usize.
A codeword is indexed by usize, so log_len must stay below max_bits
(usize::BITS): at or past that width, computing the codeword’s length as
1usize << log_len is already invalid, regardless of how large the additive domain
itself is.
NoVariablesToFold
The committed polynomial has no variables, so there is no round to fold.
PowBitsExceedWitnessCapacity
The challenger cannot produce a witness this wide.
SecurityLevelBelowPowBits
Grinding would consume the whole budget, leaving nothing for the queries to buy.
SecurityLevelExceedsFieldCapacity
The target exceeds what the alphabet can deliver at this domain size.
Queries buy back only the proximity term. The fold and sumcheck rounds each lose bits
to the field’s width, and no query count recovers them, so a target above max would
be reported as met while being unreachable at any query count.
ZeroQueries
The derived query count was zero, which would accept any codeword.
CommittedFieldMismatch
The schedule was derived for a committed alphabet of a different width.
Every cap the derivation applied is a property of that alphabet.
domain cap the arity and the rate must fit the alphabet's bit width
grind cap the witness is one element, so its width caps the counter
encoding an encoder exists only at the levels the transform coversReusing the schedule at another width would skip all three.
ChallengeFieldMismatch
The schedule was derived for a challenge field of a different width.
Every algebraic error is charged against that width. A wider schedule reused at a narrower field would report bits it cannot deliver.
Trait Implementations§
Source§impl Clone for BinaryPcsConfigError
impl Clone for BinaryPcsConfigError
Source§impl Debug for BinaryPcsConfigError
impl Debug for BinaryPcsConfigError
Source§impl Display for BinaryPcsConfigError
impl Display for BinaryPcsConfigError
impl Eq for BinaryPcsConfigError
Source§impl Error for BinaryPcsConfigError
impl Error for BinaryPcsConfigError
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 PartialEq for BinaryPcsConfigError
impl PartialEq for BinaryPcsConfigError
impl StructuralPartialEq for BinaryPcsConfigError
Auto Trait Implementations§
impl Freeze for BinaryPcsConfigError
impl RefUnwindSafe for BinaryPcsConfigError
impl Send for BinaryPcsConfigError
impl Sync for BinaryPcsConfigError
impl Unpin for BinaryPcsConfigError
impl UnsafeUnpin for BinaryPcsConfigError
impl UnwindSafe for BinaryPcsConfigError
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,
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