Basically, the entire question fits into the title. Does the Bitcoin scripting language allow for a transaction output to only be spendable to a specific address? Is it possible to forbid all other spends? Is it possible to dictate that only that spend over a specified amount of money can happen such that the transaction fees cannot be chosen arbitrarily large?

If so, I suppose it's also possible to design an output script in such a way that it can be spent to a specific address (and only to this specific address) when a signature by a specific party is present, but to arbitrary addresses if that party's signature and also that of a specific other party is present. Should this for any reason not be possible, please let me know. This is what I'm mainly interested in.

  • I'm not sure if I'm getting exactly what you ask for, but whats the problem with a standard P2PKH script? There you are creating a script that can be spent only by that address.
    – sr_gi
    Jan 3, 2018 at 16:42
  • @sr-gi I'm asking whether you can design the UTXO's script in such a way that it is spendable only in such a way that the resulting UTXO belongs to a specific address.
    – UTF-8
    Jan 3, 2018 at 17:14
  • Oh, I get it, you mean that the UTXO would be spendable by anyone, by the resulting one of spending it will belong to an specific address. Am I right?
    – sr_gi
    Jan 3, 2018 at 17:16
  • Perhaps some context will help. What are you trying to do? Are you trying to show someone earnest money, or something like that?
    – user4276
    Jan 3, 2018 at 18:06

4 Answers 4


No it is not possible to make an output that is only spendable to a specific address. Outputs that are spent have no effect on the outputs of the spending transaction. They are completely separate and independent on each other except for the amount that was spent.

An output's script only defines what the input script must be, and the input script has no effect on the output scripts of that transaction.


As far as I know, the answer is no.

What you are suggesting would imply that an UTXO could affect the conditions in which the output of a transaction spending it would be built, but it can only affect how the input is built.

UTXOs can define how they should be spent, but no how the resulting UTXO spending it will be created.


This kind of thing is called a "covenant transaction". It is not currently possible in bitcoin, however there are proposals to add this to bitcion and one of them will likely land sometime in the next few years. One is OP_CHECKTEMPLATEVERIFY and another is OP_CONSTRAINDESTINATION.


Not trustlessly, but if the source can trust you to destroy information or come up with a scheme where you wouldn't be able to view or save the private key, you could:

  1. Send to an address you have the private key for
  2. Sign a transaction spending the output to the target address
  3. Destroy the private key
  4. Give your recipient the signed transaction.

Of course, destroying the private key is the critical step here. Requires trust, creativity, or some cryptography based solution I am unaware of.

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.