MASTERING-BITCOIN ยท Interactive Practice
| Concept | Detail |
|---|---|
| OP_RETURN | Opcode that halts script execution and pushes FALSE โ output is provably unspendable |
| UTXO Set | All unspent outputs, kept in RAM of every full node for fast lookup |
| OP_RETURN payload | Stored on disk only; never enters the UTXO set |
| Standard size limit | Historically capped at ~80 bytes by relay policy |
| Typical layout | [OP_RETURN][magic prefix, e.g. 8B "DOCPROOF"][SHA-256 hash, 32B] |
Conceptual question: What happens to the memory cost of running a full node as more and more data-carrying transactions are added โ and how does that depend on whether developers use the fake address trick or OP_RETURN?
Use the slider to add data transactions over time and watch the UTXO set in node RAM.
โ interactive visualization โ coming to this page format soon
Notice: The disk grows the same way for both methods โ the blockchain still records every byte, and miners are still paid fees. The crucial difference is the UTXO set in RAM, which every full node on Earth must keep instantly accessible. OP_RETURN spares that shared resource; the fake-address trick taxes it forever.
Conceptual question: What actually goes into the bytes of an OP_RETURN output, and how close does a real notarization come to the standard 80-byte relay limit?
Choose a magic prefix length and a hash size to see the output's byte budget.
โ interactive visualization โ coming to this page format soon
Reflect: A real Proof-of-Existence output uses just OP_RETURN + 8-byte DOCPROOF prefix + 32-byte SHA-256 hash โ well under 80 bytes. Try a SHA-512 hash with a long prefix and you'll blow past the standard relay limit. This is why OP_RETURN is not cloud storage: there's only enough room for a fingerprint, not a file.
Question 1
When the Bitcoin script engine encounters an OP_RETURN opcode while validating a spending transaction, what does it do?
โ Correct! OP_RETURN halts immediately and returns FALSE โ that's why the output is provably unspendable.
โ Not quite. OP_RETURN doesn't politely skip or negotiate โ it stops the engine and forces validation failure.
Solution:
OP_RETURN is defined to immediately halt script execution and push FALSE. Because validation fails on the very first opcode, any spending transaction is rejected before reaching a mempool. There is no key, signature, or workaround โ the unspendability is mechanical, baked into the script engine itself.
Question 2
True or False: Outputs created with OP_RETURN are stored in the UTXO set just like normal outputs, but they're flagged as unspendable.
โ Correct! OP_RETURN outputs bypass the UTXO set entirely โ they exist only on disk.
โ Not quite. Storing them in the UTXO set is exactly what OP_RETURN was designed to avoid.
Solution:
False. The whole point of OP_RETURN is that nodes detect the unspendable script at parse time and never add the output to the UTXO set at all. The data lives only on disk as part of the blockchain's historical record. This is precisely why OP_RETURN was introduced: to keep data out of the RAM-resident UTXO set that every full node must maintain.
Question 3
Before OP_RETURN existed, developers stuffed data into fake Bitcoin addresses and sent tiny payments to them. What was the specific harm this caused to the network?
โ Correct! Permanent UTXO-set bloat replicated across every full node was the original sin OP_RETURN was designed to fix.
โ Not quite. The harm wasn't theft or breaking cryptography โ it was that unspendable outputs got stuck in the UTXO set forever.
Solution:
The fake-address trick produced normal-looking outputs that the network couldn't distinguish from real payments โ so they entered the UTXO set. But because the "address" was actually data, no private key existed for it, and no one could ever spend it. The output became permanent, unspendable bloat sitting in the RAM of every full node, raising hardware costs for everyone running the network.
OP_RETURN solves this by making unspendability detectable up-front, so nodes can skip those outputs entirely.
Question 4
A Proof-of-Existence notarization uses an OP_RETURN output containing the 8-byte ASCII prefix DOCPROOF followed by a 32-byte SHA-256 hash, attached to a transaction with output value 0 satoshis. Which statement about this transaction is TRUE?
โ Correct! OP_RETURN spares the UTXO set, but disk space and miner fees still apply.
โ Not quite. OP_RETURN isn't free, isn't unlockable, and isn't cloud storage โ its one and only saving is on the UTXO set.
Solution:
The three myths to kill:
OP_RETURN.So the only true statement is: it pays fees and uses disk, but spares the UTXO set. That's the polite compromise.
Solved: 0 / 4