pub enum VerificationError {
InvalidProviderSignature,
InvalidRequesterSignature,
NonceReused,
TimestampOutOfRange,
AnomalyDetected(String),
PeerBanned(String),
InvalidProofStructure(String),
ChallengeMismatch,
ChunkHashMismatch,
InvalidLatency(u32),
BlacklistedPeer(String),
}Expand description
Verification errors.
§Examples
use chie_shared::VerificationError;
// Signature verification
fn verify_proof_signature(signature: &[u8]) -> Result<(), VerificationError> {
if signature.len() != 64 {
return Err(VerificationError::InvalidProviderSignature);
}
if signature.iter().all(|&b| b == 0) {
return Err(VerificationError::InvalidProviderSignature);
}
Ok(())
}
// Nonce validation
fn check_nonce(nonce: &str, used_nonces: &[&str]) -> Result<(), VerificationError> {
if used_nonces.contains(&nonce) {
Err(VerificationError::NonceReused)
} else {
Ok(())
}
}
// Latency check
fn validate_latency(latency_ms: u32) -> Result<(), VerificationError> {
if latency_ms > 5000 {
Err(VerificationError::InvalidLatency(latency_ms))
} else {
Ok(())
}
}
assert!(verify_proof_signature(&[1u8; 64]).is_ok());
assert!(verify_proof_signature(&[0u8; 64]).is_err());
assert!(check_nonce("abc123", &[]).is_ok());
assert!(check_nonce("abc123", &["abc123"]).is_err());
assert!(validate_latency(100).is_ok());
assert!(validate_latency(6000).is_err());Variants§
InvalidProviderSignature
InvalidRequesterSignature
NonceReused
TimestampOutOfRange
AnomalyDetected(String)
PeerBanned(String)
InvalidProofStructure(String)
ChallengeMismatch
ChunkHashMismatch
InvalidLatency(u32)
BlacklistedPeer(String)
Trait Implementations§
Source§impl Debug for VerificationError
impl Debug for VerificationError
Source§impl Display for VerificationError
impl Display for VerificationError
Source§impl Error for VerificationError
impl Error for VerificationError
1.30.0 · Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
Returns the lower-level source of this error, if any. Read more
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
👎Deprecated since 1.42.0: use the Display impl or to_string()
Source§impl From<ValidationError> for VerificationError
impl From<ValidationError> for VerificationError
Source§fn from(err: ValidationError) -> Self
fn from(err: ValidationError) -> Self
Converts to this type from the input type.
Auto Trait Implementations§
impl Freeze for VerificationError
impl RefUnwindSafe for VerificationError
impl Send for VerificationError
impl Sync for VerificationError
impl Unpin for VerificationError
impl UnwindSafe for VerificationError
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