It is very interesting. 0sat are non-standard in the software, but they are valid in the protocol. GorillaNode is a bespoke implementation of Teranode optimized for special use cases.
Post by Actual Ayyy
As @6345 said, why did Satoshi explicitly, intentionally allow 0 sat UTXO's in the code, but Craig is against them?
What the chain says
- Block
- 959 979
- Time
- 2026-07-29T13:22:01Z
- Signer
- 18xXxqZbcMGzJUdvTSMj7VbqmyesZCa31p
- 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.
18xXxqZbcMGzJUdvTSMj7VbqmyesZCa31p UnverifiedReplies (17)
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.
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.
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.