snarkos_errors/dpc/
ledger.rs1use crate::{algorithms::MerkleError, objects::TransactionError, storage::StorageError};
18
19#[derive(Debug, Error)]
20pub enum LedgerError {
21 #[error("{}: {}", _0, _1)]
22 Crate(&'static str, String),
23
24 #[error("duplicate sn pushed to ledger")]
25 DuplicateMemo,
26
27 #[error("duplicate memo pushed to ledger")]
28 DuplicateSn,
29
30 #[error("database already exists")]
31 ExistingDatabase,
32
33 #[error("invalid cm pushed to ledger")]
34 InvalidCm,
35
36 #[error("invalid cm index during proving")]
37 InvalidCmIndex,
38
39 #[error("{}", _0)]
40 MerkleError(MerkleError),
41
42 #[error("{}", _0)]
43 Message(String),
44
45 #[error("{}", _0)]
46 StorageError(StorageError),
47
48 #[error("{}", _0)]
49 TransactionError(TransactionError),
50}
51
52impl From<std::io::Error> for LedgerError {
53 fn from(error: std::io::Error) -> Self {
54 LedgerError::Crate("std::io", format!("{:?}", error))
55 }
56}
57
58impl From<MerkleError> for LedgerError {
59 fn from(error: MerkleError) -> Self {
60 LedgerError::MerkleError(error)
61 }
62}
63
64impl From<StorageError> for LedgerError {
65 fn from(error: StorageError) -> Self {
66 LedgerError::StorageError(error)
67 }
68}
69
70impl From<TransactionError> for LedgerError {
71 fn from(error: TransactionError) -> Self {
72 LedgerError::TransactionError(error)
73 }
74}