From f8e94d31774bc35f4da495f6f9e5fb3d0341ade6 Mon Sep 17 00:00:00 2001 From: nk_ysg Date: Sat, 13 Jul 2024 12:30:31 +0800 Subject: [PATCH] replace optimism error variant with Other (#9483) Co-authored-by: Matthias Seitz --- crates/rpc/rpc-eth-types/src/error.rs | 30 +++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/crates/rpc/rpc-eth-types/src/error.rs b/crates/rpc/rpc-eth-types/src/error.rs index d635a2e8ff..291efa8fb5 100644 --- a/crates/rpc/rpc-eth-types/src/error.rs +++ b/crates/rpc/rpc-eth-types/src/error.rs @@ -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), +} + +impl RpcInvalidTransactionError { + /// crates a new [`RpcInvalidTransactionError::Other`] variant. + pub fn other(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 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 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)) } } }