Note that if, after accept_message, some error is thrown (either in ComputePhase or ActionPhase), the transaction will be written to the blockchain, and fees will be deducted from the contract balance. However, storage will not be updated, and actions will not be applied, as is the case in any transaction with an error exit code.
As a result, if the contract accepts an external message and then throws an exception due to an error in the message data or the sending of an incorrectly serialized message, it will pay for processing but will have no way of preventing message replay. The same message will be accepted by the contract over and over until it consumes the entire balance.
This also comes from here
Nov 30, 2023, 2:27 PM
messages will be bounced if sent in bounceable mode and contain enough money to pay for their processing and the creation of bounce messages
also comes from previous link
also comes from previous link
Nov 30, 2023, 2:34 PM