1use std::error;
2use std::fmt;
3use std::io;
4
5use crate::evm;
6use crate::state::Error as StateError;
7
8#[derive(Debug)]
9pub enum Error {
10 Evm(evm::Error),
11 Secp256k1(secp256k1::Error),
12 State(StateError),
13 IO(io::Error),
14 Str(String),
15 NotEnoughBaseGas,
16 NotEnoughBalance,
17 InvalidNonce,
18 ContractAlreadyExist,
19 ExccedMaxCodeSize,
20 ExccedMaxBlockGasLimit,
21 ExccedMaxCallDepth,
22 CreateInStaticCall,
23}
24
25impl error::Error for Error {}
26impl fmt::Display for Error {
27 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
28 match self {
29 Error::Evm(e) => write!(f, "{}", e),
30 Error::Secp256k1(e) => write!(f, "{:?}", e),
31 Error::State(e) => write!(f, "{}", e),
32 Error::IO(e) => write!(f, "{:?}", e),
33 Error::Str(e) => write!(f, "{:?}", e),
34 Error::NotEnoughBaseGas => write!(f, "NotEnoughBaseGas"),
35 Error::NotEnoughBalance => write!(f, "NotEnoughBalance"),
36 Error::InvalidNonce => write!(f, "InvalidNonce"),
37 Error::ContractAlreadyExist => write!(f, "ContractAlreadyExist"),
38 Error::ExccedMaxCodeSize => write!(f, "ExccedMaxCodeSize"),
39 Error::ExccedMaxBlockGasLimit => write!(f, "ExccedMaxBlockGasLimit"),
40 Error::ExccedMaxCallDepth => write!(f, "ExccedMaxCallDepth"),
41 Error::CreateInStaticCall => write!(f, "CreateInStaticCall"),
42 }
43 }
44}
45
46impl From<evm::Error> for Error {
47 fn from(error: evm::Error) -> Self {
48 Error::Evm(error)
49 }
50}
51
52impl From<StateError> for Error {
53 fn from(error: StateError) -> Self {
54 Error::State(error)
55 }
56}
57
58impl From<secp256k1::Error> for Error {
59 fn from(error: secp256k1::Error) -> Self {
60 Error::Secp256k1(error)
61 }
62}
63
64impl From<io::Error> for Error {
65 fn from(error: io::Error) -> Self {
66 Error::IO(error)
67 }
68}