guts_consensus/
error.rs

1//! Consensus error types.
2
3use thiserror::Error;
4
5/// Errors that can occur during consensus operations.
6#[derive(Debug, Error)]
7pub enum ConsensusError {
8    /// Invalid transaction.
9    #[error("invalid transaction: {0}")]
10    InvalidTransaction(String),
11
12    /// Invalid block.
13    #[error("invalid block: {0}")]
14    InvalidBlock(String),
15
16    /// Invalid signature.
17    #[error("invalid signature: {0}")]
18    InvalidSignature(String),
19
20    /// Invalid genesis configuration.
21    #[error("invalid genesis: {0}")]
22    InvalidGenesis(String),
23
24    /// Validator not found.
25    #[error("validator not found: {0}")]
26    ValidatorNotFound(String),
27
28    /// No quorum reached.
29    #[error("no quorum: {0}")]
30    NoQuorum(String),
31
32    /// Mempool error.
33    #[error("mempool error: {0}")]
34    MempoolError(String),
35
36    /// Serialization error.
37    #[error("serialization error: {0}")]
38    SerializationError(String),
39
40    /// Storage error.
41    #[error("storage error: {0}")]
42    StorageError(String),
43
44    /// Consensus engine error.
45    #[error("engine error: {0}")]
46    EngineError(String),
47
48    /// Network error.
49    #[error("network error: {0}")]
50    NetworkError(String),
51
52    /// Transaction already exists.
53    #[error("duplicate transaction: {0}")]
54    DuplicateTransaction(String),
55
56    /// Block not found.
57    #[error("block not found at height {0}")]
58    BlockNotFound(u64),
59
60    /// Invalid state transition.
61    #[error("invalid state transition: {0}")]
62    InvalidStateTransition(String),
63
64    /// Transaction execution failed.
65    #[error("transaction failed: {0}")]
66    TransactionFailed(String),
67}
68
69/// Result type for consensus operations.
70pub type Result<T> = std::result::Result<T, ConsensusError>;
71
72impl From<serde_json::Error> for ConsensusError {
73    fn from(err: serde_json::Error) -> Self {
74        ConsensusError::SerializationError(err.to_string())
75    }
76}