forest/message_pool/
errors.rs1use crate::chain::Error as ChainError;
5use crate::shim::econ::TokenAmount;
6use fvm_ipld_encoding::Error as EncodeError;
7use thiserror::Error;
8
9#[derive(Debug, PartialEq, Eq, Error)]
11pub enum Error {
12 #[error("Message is too big")]
14 MessageTooBig,
15 #[error("gas price is lower than min gas price")]
16 GasPriceTooLow,
17 #[error("gas fee cap is too low")]
18 GasFeeCapTooLow,
19 #[error("Message sequence too low")]
20 SequenceTooLow,
21 #[error("Not enough funds to execute transaction, balance: {balance}, required: {required}")]
22 NotEnoughFunds {
23 balance: TokenAmount,
24 required: TokenAmount,
25 },
26 #[cfg(test)]
27 #[error("Invalid to address for message")]
28 InvalidToAddr,
29 #[error("Invalid from address")]
30 InvalidFromAddr,
31 #[error("Message with sequence already in mempool")]
32 DuplicateSequence,
33 #[error("unfulfilled nonce gap")]
34 NonceGap,
35 #[error("Validation Error: {0}")]
36 SoftValidationFailure(String),
37 #[error("Too many pending messages from actor {0} (trusted: {1})")]
38 TooManyPendingMessages(String, bool),
39 #[error("{0}")]
40 Other(String),
41}
42
43impl From<ChainError> for Error {
44 fn from(ce: ChainError) -> Self {
45 Error::Other(ce.to_string())
46 }
47}
48
49impl From<EncodeError> for Error {
50 fn from(ee: EncodeError) -> Self {
51 Error::Other(ee.to_string())
52 }
53}
54
55impl From<anyhow::Error> for Error {
56 fn from(e: anyhow::Error) -> Self {
57 Error::Other(format!("{e:#}"))
58 }
59}