ghost-node/pallets/exodus/src/error.rs
Uncle Stretch d83ee59508
let the EXODUS begin...
Signed-off-by: Uncle Stretch <uncle.stretch@ghostchain.io>
2026-08-29 14:48:50 +03:00

95 lines
5.6 KiB
Rust

use ghost_helpers::networks::NetworkCurve;
use crate::AuthIndex;
#[derive(Clone, Copy, PartialEq, Eq)]
pub enum ExodusError {
InvalidParticipantId,
DeserializationError,
SerializationError,
InvalidMinSigners(AuthIndex, AuthIndex),
InvalidMaxSigners(AuthIndex),
DKGNotSupported(NetworkCurve),
IncorrectNumberOfCoefficients,
IncorrectNumberOfCommitments,
IncorrectNumberOfPackages,
IncorrectPackage,
PackageNotFound,
InvalidSecretShare,
InvalidProofOfKnowledge,
MissingCommitment,
IncorrectCommitment,
UnknownIdentifier,
IdentityCommitment,
DuplicatedIdentifier,
IncorrectNumberOfIdentifiers,
InvalidSignature,
InvalidSignatureShare,
InvalidNonceCommitments,
EncryptionFailed,
DecryptionFailed,
HKDFFailed,
InvalidNonceLength,
MalformedSigningKey,
NoStoredNetworks,
OffchainTimeoutPeriod,
BadSignature(AuthIndex),
TransactionSubmissionFailed(AuthIndex),
UnknownReceiverIndex(AuthIndex),
CouldNotConstructMessage(AuthIndex),
NothingToWrite,
UnknownPrefix,
UnexpectedRound,
InvalidMerkleProof,
InvalidIdentityElement,
NoActiveAuthorities,
Unknown,
}
impl core::fmt::Debug for ExodusError {
fn fmt(&self, fmt: &mut core::fmt::Formatter) -> core::fmt::Result {
match *self {
ExodusError::InvalidParticipantId => write!(fmt, "Participant index could not be parsed to identifier."),
ExodusError::DeserializationError => write!(fmt, "Error during deserializing value."),
ExodusError::SerializationError => write!(fmt, "Error serializing value."),
ExodusError::InvalidMinSigners(min, max) => write!(fmt, "Number of min_signers ({min}) must be at least 2 and not larger than max_signers ({max})."),
ExodusError::InvalidMaxSigners(max_signers) => write!(fmt, "Number of max_signers must be at least 2, {max_signers} given."),
ExodusError::DKGNotSupported(ref curve) => write!(fmt, "The ciphersuite {curve:?} does not support DKG."),
ExodusError::IncorrectNumberOfCoefficients => write!(fmt, "Incorrect number of coefficients; should be equal to min signers."),
ExodusError::IncorrectNumberOfCommitments => write!(fmt, "Incorrect number of commitments; should be equal to min signers."),
ExodusError::InvalidNonceCommitments => write!(fmt, "Hiding nonce commitments indexes should match binding nonce commitments."),
ExodusError::InvalidProofOfKnowledge => write!(fmt, "The proof of knowledge is not valid."),
ExodusError::IncorrectNumberOfPackages => write!(fmt, "Incorrect number of packages; should be equal to max signers."),
ExodusError::IncorrectPackage => write!(fmt, "The incorrect package was specified."),
ExodusError::PackageNotFound => write!(fmt, "Round 1 package not found for Round 2 participant."),
ExodusError::InvalidSecretShare => write!(fmt, "Invalid secret share."),
ExodusError::MissingCommitment => write!(fmt, "The Signing Package must contain the participant's Commitments."),
ExodusError::IncorrectCommitment => write!(fmt, "The participant's commitment is incorrect."),
ExodusError::UnknownIdentifier => write!(fmt, "Unknown identifier."),
ExodusError::IdentityCommitment => write!(fmt, "Commitment equals the identity."),
ExodusError::DuplicatedIdentifier => write!(fmt, "Duplicated identifier."),
ExodusError::IncorrectNumberOfIdentifiers => write!(fmt, "Incorrect number of identifiers."),
ExodusError::InvalidSignature => write!(fmt, "Invalid signature."),
ExodusError::InvalidSignatureShare => write!(fmt, "Invalid signature share."),
ExodusError::EncryptionFailed => write!(fmt, "Encryption failed."),
ExodusError::DecryptionFailed => write!(fmt, "Decryption failed."),
ExodusError::HKDFFailed => write!(fmt, "HKDF failed."),
ExodusError::InvalidNonceLength => write!(fmt, "Encryption nonce has invalid length."),
ExodusError::MalformedSigningKey => write!(fmt, "Malformed signing key encoding."),
ExodusError::NoStoredNetworks => write!(fmt, "No stored networks to be worked on."),
ExodusError::OffchainTimeoutPeriod => write!(fmt, "Offchain request should be in-flight."),
ExodusError::BadSignature(auth_index) => write!(fmt, "Signature could not be created from {auth_index}."),
ExodusError::TransactionSubmissionFailed(auth_index) => write!(fmt, "Could not submit transaction from {auth_index}."),
ExodusError::UnknownReceiverIndex(receiver_index) => write!(fmt, "Unknown receiver index {receiver_index} found."),
ExodusError::CouldNotConstructMessage(auth_index) => write!(fmt, "Could not construct message during OCW from {auth_index}."),
ExodusError::NothingToWrite => write!(fmt, "Nothing to write into local storage."),
ExodusError::UnknownPrefix => write!(fmt, "Unknown prefix used for local storage."),
ExodusError::UnexpectedRound => write!(fmt, "Unexpected round provided."),
ExodusError::InvalidMerkleProof => write!(fmt, "Invalid merkle proof provided."),
ExodusError::InvalidIdentityElement => write!(fmt, "Invalid identity element provided."),
ExodusError::NoActiveAuthorities => write!(fmt, "No active authorities for signing exodus transactions."),
ExodusError::Unknown => write!(fmt, "Unknown error."),
}
}
}