diff --git a/crates/blockifier/src/fee/fee_checks.rs b/crates/blockifier/src/fee/fee_checks.rs index c337bbcf91f..c1952d2b022 100644 --- a/crates/blockifier/src/fee/fee_checks.rs +++ b/crates/blockifier/src/fee/fee_checks.rs @@ -186,7 +186,7 @@ impl FeeCheckReport { ) -> TransactionExecutionResult<()> { let TransactionReceipt { fee, .. } = *tx_receipt; let (balance_low, balance_high, can_pay) = - get_balance_and_if_covers_fee(state, tx_context, fee)?; + get_balance_and_if_covers_fee(state, tx_context, fee).map_err(Box::new)?; if can_pay { return Ok(()); } diff --git a/crates/blockifier/src/transaction/account_transaction.rs b/crates/blockifier/src/transaction/account_transaction.rs index cea8c705b72..fafbcc1fe2b 100644 --- a/crates/blockifier/src/transaction/account_transaction.rs +++ b/crates/blockifier/src/transaction/account_transaction.rs @@ -483,7 +483,7 @@ impl AccountTransaction { Ok(fee_transfer_call .execute(state, &mut context, &mut remaining_gas_for_fee_transfer) - .map_err(TransactionFeeError::ExecuteFeeTransferError)?) + .map_err(|error| Box::new(TransactionFeeError::ExecuteFeeTransferError(error)))?) } /// Handles fee transfer in concurrent execution. diff --git a/crates/blockifier/src/transaction/errors.rs b/crates/blockifier/src/transaction/errors.rs index 1d17f9e6e50..0238e6b5471 100644 --- a/crates/blockifier/src/transaction/errors.rs +++ b/crates/blockifier/src/transaction/errors.rs @@ -105,7 +105,7 @@ pub enum TransactionExecutionError { #[error(transparent)] StateError(#[from] StateError), #[error(transparent)] - TransactionFeeError(#[from] TransactionFeeError), + TransactionFeeError(#[from] Box), #[error(transparent)] TransactionPreValidationError(#[from] TransactionPreValidationError), #[error(transparent)] diff --git a/crates/blockifier/src/transaction/l1_handler_transaction.rs b/crates/blockifier/src/transaction/l1_handler_transaction.rs index 373bdf5f518..0085b3f3b6c 100644 --- a/crates/blockifier/src/transaction/l1_handler_transaction.rs +++ b/crates/blockifier/src/transaction/l1_handler_transaction.rs @@ -98,12 +98,12 @@ impl ExecutableTransaction for L1HandlerTransaction { // For now, assert only that any amount of fee was paid. // The error message still indicates the required fee. if paid_fee == Fee(0) { - return Err(TransactionExecutionError::TransactionFeeError( + return Err(TransactionExecutionError::TransactionFeeError(Box::new( TransactionFeeError::InsufficientFee { paid_fee, actual_fee: receipt.fee, }, - )); + ))); } Ok(l1_handler_tx_execution_info(execute_call_info, receipt, None)) diff --git a/crates/blockifier/src/transaction/transactions_test.rs b/crates/blockifier/src/transaction/transactions_test.rs index fc44906e60f..b5ade251046 100644 --- a/crates/blockifier/src/transaction/transactions_test.rs +++ b/crates/blockifier/src/transaction/transactions_test.rs @@ -2817,10 +2817,12 @@ fn test_l1_handler(#[values(false, true)] use_kzg_da: bool) { assert_matches!( error, - TransactionExecutionError::TransactionFeeError( + TransactionExecutionError::TransactionFeeError(boxed_fee_error) + if matches!( + *boxed_fee_error, TransactionFeeError::InsufficientFee { paid_fee, actual_fee } + if paid_fee == Fee(0) && actual_fee == expected_actual_fee ) - if paid_fee == Fee(0) && actual_fee == expected_actual_fee ); } diff --git a/crates/native_blockifier/src/py_testing_wrappers.rs b/crates/native_blockifier/src/py_testing_wrappers.rs index f0d9f607e0d..5eed69a77b1 100644 --- a/crates/native_blockifier/src/py_testing_wrappers.rs +++ b/crates/native_blockifier/src/py_testing_wrappers.rs @@ -8,9 +8,9 @@ use crate::py_objects::PyExecutionResources; #[pyfunction] pub fn raise_error_for_testing() -> NativeBlockifierResult<()> { - Err(TransactionExecutionError::TransactionFeeError( + Err(TransactionExecutionError::TransactionFeeError(Box::new( TransactionFeeError::CairoResourcesNotContainedInFeeCosts, - ) + )) .into()) }