diff --git a/zebrad/src/components/mempool.rs b/zebrad/src/components/mempool.rs index 0c38da71..1ec888e5 100644 --- a/zebrad/src/components/mempool.rs +++ b/zebrad/src/components/mempool.rs @@ -1,5 +1,8 @@ //! Zebra mempool. +/// Mempool-related errors. +pub mod error; + mod crawler; pub use self::crawler::Crawler; diff --git a/zebrad/src/components/mempool/error.rs b/zebrad/src/components/mempool/error.rs new file mode 100644 index 00000000..f3a47406 --- /dev/null +++ b/zebrad/src/components/mempool/error.rs @@ -0,0 +1,25 @@ +//! Errors that can occur when manipulating transactions in the mempool. + +use thiserror::Error; + +#[derive(Error, Clone, Debug, PartialEq)] +#[allow(dead_code)] +pub enum MempoolError { + #[error("transaction already exists in mempool")] + InMempool, + + #[error("transaction did not pass consensus validation")] + Invalid(#[from] zebra_consensus::error::TransactionError), + + #[error("transaction is committed in block {0:?}")] + InBlock(zebra_chain::block::Hash), + + #[error("transaction has expired")] + Expired, + + #[error("transaction fee is too low for the current mempool state")] + LowFee, + + #[error("transaction was not found in mempool")] + NotInMempool, +}