As @6345 said, why did Satoshi explicitly, intentionally allow 0 sat UTXO's in the code, but Craig is against them?
Post by Kurt 🦧
Everyone gets this wrong, imo.
CheckTransaction rejects nValue < 0, and that is the entire rule, so zero slipped through by omission rather than by permission.
Where Satoshi WAS explicit about zero he wrote <= 0, twice, and both times he put it in the Bitcoin full node wallet software, in the send dialog and in SelectCoins, and he banned the empty transaction outright on top of that.
So, the zero rule does exist in his code. It just lives in the wallet instead of in consensus.
Craig isn't against zero outputs either. Put a fee on it and he says plainly that he doesn't mind, and what he asks for is a non-zero output OR a non-zero fee, so his only target is the transaction where no satoshi moves anywhere, which he refuses to call a transaction at all.
So the fight was never about zero, it's about which layer enforces the rule, and on the substance, that a transaction should move value, so, I think both men (Satoshi and Craig [the same guy?]) land in the same place if you actually look at the rule and how and where it's implemented.
What the chain says
- Block
- 960 005
- Time
- 2026-07-29T18:27:02Z
- Signer
- 1JhKv5bs1wpHRYFAQS4qF5zhKfAnXAy2UL
- App
- twetch
- Type
- reply
- Content type
- text/markdown
Fields the transaction did not carry are omitted. Open the payload to see the bytes as stored.
1JhKv5bs1wpHRYFAQS4qF5zhKfAnXAy2UL UnverifiedReplies (16)
And, as was proven earlier this week, not spending 0 sat outputs is not a protocol rule, but a node policy rule, just like block size and transaction size. Miners set policy based on the economic realities of the chain. The error you get when you try and create a spendable 0 satoshi output is a DUST error. Same as if you go < 546 sats in BTC.
So... if policies can change via miners, how is BSV set in stone?
The underlying protocol is, and if wallets and miners want to offer novel services, they can (and do.) That's why a stable, general-purpose protocol is so valuable. The people who built TCP/IP didn't fathom Twetch, and they didn't need to.
I suppose... Idk @292 I tend to believe, from what I know to this point, that Bitcoin was originally supposed to be non-confiscatable.
I believe the powers that be deemed this an existential threat, and that's why we have two fucked up non-Bitcoins (BTC/BCH) and BSV which is Bitcoin with confiscation, which kind of defeats the purpose of the original protocol in that regard. But again, I think non-confiscatable digital assets, with utility, are actually an existential threat.
The protocol is fixed. If you mine it yourself, you can set any policies you want and your block will be accepted. If you want someone else to mine for you, you need to provide a transaction in their financial interest to include.
I guess that's understandable. That makes more sense than any other explanation I've been given about 0 sat utxos. Now, what about confiscation?