I know it is currently not possible to cancel transactions in the Bitcoin. However, say someone wants to implement such mechanism in an altcoin. Is it theoretically possible without damaging the open nature of cryptocurrencies ? Do we have the required primitives for it ?

  • 1
    It could probably be implemented by altcoin developers, or even bitcoin developers, in such a manner that both parties agree to the cancellation of the transaction, therefore avoiding double the transaction fees. As long as the transaction that is being canceled is still unspent.
    – Monstrum
    Dec 11, 2017 at 14:25

3 Answers 3


There are proposals to introduce new opcodes which allow an parent output script to impose spending conditions onto the output(s) of the spending child transaction.

You could therefore "ensure" that the child transaction outputs would be "revocable", which is similar to what you are describing.

This output script could be a RSMC contract. If I wish to "cancel" the spending transactions outputs within a timeout period, I can sweep the output with the revocation key.

The proposed script opcode OP_PUSHTXDATA pushes transaction elements from the spending (child) transaction to the stack during verification, and this could include the output script data of the child transaction:

Parent transaction:

  • Output script: OP_PUSHTXDATA pushes spending child transaction output script elements onto stack, to verify that it is a revocable output.

Child transaction:

  • Input: Spends parent transaction
  • Output Script: Must be a revocable output with conditions enforced by parent transaction output script.

One of the fundamental principals of cryptocurrency is to be able to operate without the need of a trusted central entity. I can't see how a transaction can be cancelled or reversed without involving a trusted central entity to arbitrate the transaction.

However we also have cryptocurrency like Ripple. In my opinion Ripple is not a cryptocurrency because of the centralized nature, but well what do I know.

Maybe in the future some genius will discover a method to implement this without a central entity :)

  • As long as the transaction outputs haven't been spent, it's easy to undo a transaction without a central authority: add a transaction type of "undo" that reverses a prior transaction to your coin's definition, and undoing a transaction is simply a matter of having that transaction accepted into the blockchain.
    – Mark
    Jan 3, 2019 at 1:06
  • @Mark: doesn't that just force vendors/recipients to "spend" received amounts before dispatching the goods (or providing services etc)? Jun 28, 2019 at 14:06
  • @RedGrittyBrick, yes. Adding a cancellation system without a central authority is quite possible. Adding one that's "fair" isn't, because "fairness" is a human concept, not a mathematical one.
    – Mark
    Jun 28, 2019 at 20:52

You surely could inplement the cancelling of an unconfirmed transaction by asking other clients to delete it from their memory. But I guess this could open door for transaction spam in your network (I mean people creating and then cancelling transactions at no cost).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.