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.
1It 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 – 2017-12-11T14:25:24.093