I was reading this thread about making a transaction without an output:
The answer is that outputs under a certain value are considered "dust" or "spam".
What is the reasoning behind this? If the input value minus the output value is above the
getMinNonDustValue minimum limit, why would the transaction be considered "dust"? The coinbase of the block containing this transaction would simply be allowed to be of higher value, which is how fees usually work.
If my understanding is correct, the network would benefit greatly from a transaction with no outputs. It's fairly easy to circumvent this rule anyway; one could simply add an output that matches
getMinNonDustValue and increase the input by that same amount. Allowing a zero output transaction would mean less network load, less data storage requirement, and most importantly less CPU cycles required because the output script is not necessary in this transaction. There is also the added effect of making miners happy by introducing a new rule that allows "donation only" transactions where all Bitcoin go to the miner who solves that block.