replace optimism error variant with Other (#9483)

Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
This commit is contained in:
nk_ysg
2024-07-13 12:30:31 +08:00
committed by GitHub
parent 39c53823e4
commit f8e94d3177

View File

@ -369,10 +369,16 @@ pub enum RpcInvalidTransactionError {
/// EIP-7702 transaction has invalid fields set.
#[error("EIP-7702 authorization list has invalid fields")]
AuthorizationListInvalidFields,
/// Optimism related error
#[error(transparent)]
#[cfg(feature = "optimism")]
Optimism(#[from] OptimismInvalidTransactionError),
/// Any other error
#[error("{0}")]
Other(Box<dyn ToRpcError>),
}
impl RpcInvalidTransactionError {
/// crates a new [`RpcInvalidTransactionError::Other`] variant.
pub fn other<E: ToRpcError>(err: E) -> Self {
Self::Other(Box::new(err))
}
}
/// Optimism specific invalid transaction errors
@ -387,6 +393,17 @@ pub enum OptimismInvalidTransactionError {
HaltedDepositPostRegolith,
}
#[cfg(feature = "optimism")]
impl ToRpcError for OptimismInvalidTransactionError {
fn to_rpc_error(&self) -> jsonrpsee_types::error::ErrorObject<'static> {
match self {
Self::DepositSystemTxPostRegolith | Self::HaltedDepositPostRegolith => {
rpc_err(EthRpcErrorCode::TransactionRejected.code(), self.to_string(), None)
}
}
}
}
impl RpcInvalidTransactionError {
/// Returns the rpc error code for this error.
const fn error_code(&self) -> i32 {
@ -432,6 +449,7 @@ impl From<RpcInvalidTransactionError> for jsonrpsee_types::error::ErrorObject<'s
revert.output.as_ref().map(|out| out.as_ref()),
)
}
RpcInvalidTransactionError::Other(err) => err.to_rpc_error(),
err => rpc_err(err.error_code(), err.to_string(), None),
}
}
@ -472,11 +490,11 @@ impl From<revm::primitives::InvalidTransaction> for RpcInvalidTransactionError {
}
#[cfg(feature = "optimism")]
InvalidTransaction::DepositSystemTxPostRegolith => {
Self::Optimism(OptimismInvalidTransactionError::DepositSystemTxPostRegolith)
Self::other(OptimismInvalidTransactionError::DepositSystemTxPostRegolith)
}
#[cfg(feature = "optimism")]
InvalidTransaction::HaltedDepositPostRegolith => {
Self::Optimism(OptimismInvalidTransactionError::HaltedDepositPostRegolith)
Self::Other(Box::new(OptimismInvalidTransactionError::HaltedDepositPostRegolith))
}
}
}