MASTERING-BITCOIN · Interactive Practice
| Concept | Value / Rule | Description |
|---|---|---|
| Satoshi | Smallest representable unit | |
| Dust threshold (default) | satoshis | Outputs below are not relayed by default |
| Uneconomical output | Output not worth ever spending | |
| OP_RETURN data limit | bytes (standard) | Provably unspendable, not in UTXO set |
| Output anatomy | Two components per output |
Important: Dust thresholds are relay policy, not consensus rules. A miner can include a sub-dust output in a valid block — most nodes simply will not propagate the transaction.
An output is uneconomical when the fee required to spend it exceeds its value. As fee rates climb, more and more low-value outputs cross from "spendable" to "permanent dead weight" in the UTXO set.
A typical input that spends a P2WPKH output costs roughly 68 virtual bytes. So the fee to spend one such output is approximately:
Adjust the fee rate slider and the output value slider to see whether the output is economical, dust by Bitcoin Core's default rule, or uneconomical given current fees.
⚙ interactive visualization — coming to this page format soon
Notice: Push the fee rate up to 50 or 100 sat/vB. The orange "spend fee" line slides right and can easily exceed 546 sats — meaning that even outputs above Bitcoin Core's static dust threshold can become uneconomical in practice. The 546-sat default assumes a low fee environment; in a high-fee market, the effective dust threshold is much higher.
Every full node stores the entire UTXO set. Spendable outputs eventually leave the set when their owners spend them. Uneconomical outputs never leave — they are dead weight forever.
Adjust the slider to set the fraction of created outputs that are uneconomical, then watch how the UTXO set composition evolves as time passes.
⚙ interactive visualization — coming to this page format soon
Reflect: Even a small percentage of uneconomical outputs causes a steadily growing red region — because that region never shrinks. Spendable outputs cycle through the set; uneconomical ones accumulate forever. This is precisely why Bitcoin Core blocks dust at the relay layer rather than waiting for users to "clean up" later.
A normal output sits in the UTXO set until it is spent. An OP_RETURN output is provably unspendable — its script fails immediately on execution — so nodes do not add it to the UTXO set at all.
Choose how many of each output type a hypothetical batch of transactions produces and compare the long-term UTXO-set impact.
⚙ interactive visualization — coming to this page format soon
Reflect: Set OP_RETURN outputs to 1000 and normal outputs to 0. The UTXO set sees no growth at all — every byte of data is recorded in the blockchain's transaction history, but no node has to keep tracking unspendable entries. This is why setting the OP_RETURN amount to 0 satoshis is the correct, intended use: no bitcoin is destroyed and no UTXO bloat is created.
Question 1
Bitcoin Core's default dust threshold is 546 satoshis. An output below this value is treated as dust by default policy.
What does this mean exactly?
✅ Correct! Dust is a relay/standardness rule, not consensus.
❌ Not quite. Re-read the script's emphasis: "a miner could include a 100-satoshi output in a valid block." That tells us this isn't a consensus rule.
Solution:
The dust threshold is a relay (or "standardness") policy, not a consensus rule.
A transaction creating a 100-sat output is perfectly valid by consensus. But because most nodes won't relay it, it is unlikely to ever reach a miner. A miner with direct submission (or one running modified policy) can still mine it, and the resulting block is valid for everyone.
This split between consensus and policy is fundamental to Bitcoin's governance: relay rules are voluntarily enforced by node operators and can evolve without a hard fork.
Question 2
Suppose the prevailing fee rate is 30 sat/vB, and spending a single P2WPKH input costs approximately 68 vB.
A user is considering an output worth 1,500 sats. From the network's UTXO-burden perspective, which statement is most accurate?
✅ Correct! 68 × 30 = 2,040 sats > 1,500 sats, so it is uneconomical.
❌ Not quite. Compute the spend fee: 68 vB × 30 sat/vB. Then compare it to the output's value. The 546-sat threshold is a floor, not a guarantee of economic viability.
Solution:
Calculate the spend fee:
Compare to the output value:
So this output is uneconomical: a rational user would never spend it because spending costs more than the satoshis recovered. It will sit in the UTXO set permanently, even though 1,500 sats is well above Bitcoin Core's static 546-sat threshold.
This is exactly the limitation of a fixed dust threshold: in a high-fee market, the effective dust level is much higher than 546, and many "above-dust" outputs become economic dust.
Question 3
True or False: A zero-satoshi OP_RETURN output destroys bitcoin and bloats the UTXO set, so users should avoid using it.
✅ Correct! Zero-sat OP_RETURN outputs destroy no bitcoin and bypass the UTXO set entirely.
❌ Not quite. OP_RETURN is provably unspendable, which is precisely why nodes can skip adding it to the UTXO set. And amount = 0 means no bitcoin is destroyed.
Solution:
This is False — and it is one of the most common misconceptions about OP_RETURN.
The result: OP_RETURN lets you embed up to 80 bytes of data into the blockchain's permanent transaction history without adding any persistent storage burden to full nodes. It is the cleanest, most node-friendly way to attach data to a transaction.
Question 4
Utreexo is a proposed UTXO-set design where most nodes store only a compact cryptographic commitment (≈ 1–2 KB) instead of the full 5+ GB UTXO set.
Which statement best describes Utreexo's relationship to the dust problem?
✅ Correct! Utreexo redistributes the burden; it does not erase it.
❌ Not quite. Recall that bridge nodes still hold the full UTXO data so they can generate proofs for the lightweight Utreexo nodes. The data still exists somewhere — and dust still bloats it there.
Solution:
Utreexo is a clever redistribution of where UTXO data lives, not a dissolution of the data itself.
The script makes this point explicitly: "Utreexo redistributes the storage problem across the network. It doesn't eliminate it." This is why dust policies remain important even in a future with Utreexo deployed.
Solved: 0 / 4