Why do I need to pay for cancelling a transaction?

Assume you have a Walliro with 3 owners and threshold 2. You have initiated a transaction, signed it, but immediately afterwards decided that you would rather like to cancel it. You hit “cancel” and signed the cancellation. Why do you need to pay for canceling the transaction?

In the Walliro interface you might have noticed, that your transaction is still exist. It will show that you have both “confirmed” and “rejected” it. Also, other owners can still confirm or reject it. The transaction will not disappear even if you perform all actions “off-chain”.

The reason for this is, that signatures cannot be “taken back”. Once there is a signature, you can ask others to remove it, but you can never be 100% sure.

This is comparable to a physical signature you have put on a piece of paper and sent to someone else via mail. You can ask that other person to throw away the sheet. But you can never be 100% sure.

The Walliro supports off-chain confirmations. Those are stored on our backend service. In order to “take back” a signature, the confirmation could only be removed from the backend. However, a user cannot be 100% sure that this actually happened. There is no way to prove this.

The only way to ensure that your signature cannot be used by someone else, is to “consume” the nonce of that transaction. Every Walliro transaction has a nonce. The Walliro nonce is incremented by 1 with each executed transaction. Each number can only be used once. so to be sure that your signature for a transaction with nonce x cannot be used by someone else sign and execute another transaction with the same nonce and execute it.

Leave a Reply

Your email address will not be published. Required fields are marked *