<p>Yes, there exists transaction outputs which are provably unspendable, regardless of cryptographic assumptions (so even when hashes and/or elliptic curve security were broken).</p>
<p>One well-known example are <code>OP_RETURN</code> outputs. Since the <code>OP_RETURN</code> opcode immediately abort script execution, any output whose scriptPubKey contains this instruction (outside of an <code>OP_IF</code> branch) is irrevocably unspendable. This is a popular mechanism for committing extra data inside Bitcoin transactions.</p>
<p>Another example of unspendable outputs are ones whose scriptPubKey exceeds 10000. Creating such outputs is legal, but such large scripts are unexecutable, and thus cannot be used in inputs.</p>
<p>Whether you consider these outputs to be UTXOs is a matter of perspective however. Bitcoin Core for example detects certain classes of outputs are provably unspendable (those whose first byte is <code>OP_RETURN</code>, and those with a scriptPubKey longer than 10000 bytes), and does not even insert them into its database of unspent outputs as a database size optimization. The outcome of this is that attempts to spend them will fail due to &quot;UTXO does not found&quot; rather than &quot;invalid script&quot;, but the block or transaction it occurs in is invalid either way.</p>

CC BY-SA 4.0
2024-11-27T21:03:57.947Z
2024-11-27T21:03:57.947Z
Pieter Wuille
<p>I have heard that there are UTXOs that can not be spent. From my understanding it is because the scriptPubKey is constructed that way.</p>
<p>If this is correct, are there some real life examples on the blockchain? Was this done intentionally or by mistake? How many are there?</p>

CC BY-SA 4.0
2024-11-27T20:18:32.233Z
Related to https://bitcoin.stackexchange.com/questions/49625/
Mercedes
CC BY-SA 4.0
2024-11-27T20:27:51.560Z
@Mercedes I am not talking about burn address. If you could get PK for that address than you can spend it. P.S. I do know that it is practically impossible, but theoretical possible. As I said is it possible to make UTXO with ScriptPubKey that is theoretical impossible to solve.
WebOrCode
CC BY-SA 4.0
2024-11-28T07:29:23.823Z
https://bitcointalk.org/index.php?topic=671881.0
amaclin
<utxo><consensus>
Are there any UTXOs that can not be spent?
WebOrCode
# Are there any UTXOs that can not be spent?

(Asked by: username_0 on 2024-11-27)

I have heard that there are UTXOs that can not be spent. From my understanding it is because the scriptPubKey is constructed that way.

If this is correct, are there some real life examples on the blockchain? Was this done intentionally or by mistake? How many are there?

**Tags:** utxo, consensus

> **Comments:**
> **username_1**: Related to https://bitcoin.stackexchange.com/questions/49625/  
> **username_0**: @username_1 I am not talking about burn address. If you could get PK for that address than you can spend it. P.S. I do know that it is practically impossible, but theoretical possible. As I said is it possible to make UTXO with ScriptPubKey that is theoretical impossible to solve.  
> **username_2**: https://bitcointalk.org/index.php?topic=671881.0  

---

## 1 answers

### Answer by username_3 on 2024-11-27. Score: 6 | Accepted answer

Yes, there exists transaction outputs which are provably unspendable, regardless of cryptographic assumptions (so even when hashes and/or elliptic curve security were broken).

One well-known example are `OP_RETURN` outputs. Since the `OP_RETURN` opcode immediately abort script execution, any output whose scriptPubKey contains this instruction (outside of an `OP_IF` branch) is irrevocably unspendable. This is a popular mechanism for committing extra data inside Bitcoin transactions.

Another example of unspendable outputs are ones whose scriptPubKey exceeds 10000. Creating such outputs is legal, but such large scripts are unexecutable, and thus cannot be used in inputs.

Whether you consider these outputs to be UTXOs is a matter of perspective however. Bitcoin Core for example detects certain classes of outputs are provably unspendable (those whose first byte is `OP_RETURN`, and those with a scriptPubKey longer than 10000 bytes), and does not even insert them into its database of unspent outputs as a database size optimization. The outcome of this is that attempts to spend them will fail due to "UTXO does not found" rather than "invalid script", but the block or transaction it occurs in is invalid either way.


---

