Although on average, we are nowhere near the 1MB block size limit, intermittent stress tests -- spam attacks -- are moving the block size debate forward. Being that the catalyst for this is not average growth in transactions, but rather a specific spam attack, perhaps we should explore the idea of addressing these spam attacks directly.
I brought up this idea in another thread. Since these discussions tend to move so quickly, I thought it would be appropriate to start a new topic to explore ways that we can address dust transactions.
Important question to consider: If one of the objects of bitcoin is to store and transfer
value, how do we define
value? If it is economically unfeasible to spend dust outputs (these outputs basically represent nothing but UXTO bloat), at what point do we consider those outputs not worthy of being relayed across the network? For now, that threshold is ~550 satoshis. Perhaps we should rethink it. Perhaps we can also consider an additional fee on a per-dust-output basis, so that those pushing these spam transactions are penalized, rather than typical end users who otherwise might have to pay higher fees if blocks are at capacity.
Please poke as many holes in this idea as possible.I'm disappointed that no one is taking this opportunity to discuss solutions to spam attacks (dust transactions w/ maximum outputs). That's actually the issue that is forcing this debate -- not organic growth in transaction volume, which on average, is nowhere near the limit.
I'll admit that I'm not entirely familiar with the issue. Can you give an example?
I thought there is a dust limit of 5500 Satoshis. is that set by the miners by consensus or is part of the protocol?
AFAIK, the minimum is slightly less than 550 satoshis, or < $0.0013. I believe the last Coinwallet stress test involved outputs of 0.00001 -- approximately double the current definition of dust.
In theory, nodes could observe the standard output of stress test transactions, then simply alter their conf files to not relay transactions with outputs of that size (or smaller). The only loss here is that people cannot quickly send $0.002 transactions. The gain is that above the agreed upon dust thresholds, the standard fee should be adequate (unless I am approaching this incorrectly).
It's not a protocol issue. It affects which transactions an unmodified bitcoind/bitcoin-qt client will relay on the network. Miners can put as many non-standard transaction in their blocks as they want, but without further modification the reference client will not broadcast or relay those transactions to the miners. It's completely configurable. If the current definition of dust is not economical, miners/nodes can just change their conf files.
One idea would be to increase the client-coded threshold that defines an output as dust, which would increase the aggregate amount of bitcoins required to push large spam transactions with dust outputs. Another idea would be to require an additional fee to push transactions on a per-dust-output basis.
The issue has other implications in regards to bloat.
Well no you already know that dust has nothing to do with blockchain size but EVERYTHING to do with UXTO bloat. Dust (or a very high probability of dust approaching 1) won't be spent thus it remains in the UXTO. For normal economic transactions the UXTO only grows linearly (related more to the number of discrete entities not total transactions over time). This is good because the UXTO is a far more critical resource than the unpruned blockchain. It is highly likely that in the future most full nodes won't even maintain the full blockchain but they will need the entire UXTO.
Having tiny worthless transactions which last forever in the UXTO lowers the efficiency of every node, forever.
Dust outputs won't get spent. 100BTC outputs will get spent and pruned.
Moore's Law isn't magic. It reflects that people push back against wastes of CPU time, disk storage, and other limitations to push technology to its physical limits. Processor speeds don't just magically increase. Disk storage doesn't just magically increase. The assumptions underlying Moore's Law (which isn't a real law) involve bean-counters identifying and eliminating wastes of resources that slow down systems and break them, just as much as they involve people inventing new technologies.
The threat from dust transactions may be on the un-glamorous, bean-counting side of technological improvement, but that doesn't mean it doesn't exist.