In case you change your mind and want to not execute a transaction after all, there is a way to reject or even delete pending transactions. To start this process, click on the Reject
button in the expanded transaction details.
There are potentially 3 ways to reject a transaction:
Replace it with another arbitrary transaction with the same nonce (e.g. you planned to send 10 USDC to Alice and instead you create another transaction to send 20 DAI to Bob, thus the initial transaction for Alice gets replaced).
Submit an "empty" cancellation transaction that is executed at the same nonce. So to cancel sending 10 USDC to Alice you don't create any new transaction but just cancel it onchain. Read more about this here.
Delete transaction from the queue offchain. This is a feature that is available for tx proposers only and will be covered in the end of this article.
First, let's go through the most typical case - onchain cancellation. This can be initiated by any of the Safe signers.
After you select this option you will then be asked to sign with your connected signer wallet (e.g. Metamask or Ledger device). After this is done, you will see that there is a new transaction in the transaction list that is conflicting with the initial transaction that is supposed to be canceled.
To actually complete the cancellation, potential other signers of your Safe would have to confirm the cancellation transaction. This can be done by navigating to the transaction details of the cancellation transaction and clicking the Confirm
button.
With the last signature that is required, you will be able to execute the cancellation transaction. This will require a small transaction fee (here's why).
Now, when we've explained the onchain options for rejecting transactions, let's review the option to Delete
one. This is an offchain action that permanently deletes the transaction from the queue.
This action is available only to a Safe signer that proposed this transaction. Also keep in mind that if someone has managed to copy the transaction data with signatures before the deletion happens, they might be able to execute it.
Possible dangerous scenarios:
In a 2/2 Safe you have proposed a tx, signed it and put it in the queue. Then you decided to delete it. But if your co-signer has copied the tx data and your signature before you delete, they can add theirs and replay.
You got all the signatures needed for execution but instead decided to delete. Since the transaction queue is public, anyone can copy the fully signed transaction and execute it.
To sum up, deleting a transaction from our service does not invalidate the transaction data. Therefore, especially for already fully signed transactions, we recommend replacing or cancelling the transaction.