Bitcoin Magazine

Locks on Coinapult - Goodbye volatility
Show Menu
btcimg

Bitcoin Developers Adding $0.007 Minimum Transaction Output Size

Clarifications:

1. This is NOT a change to the Bitcoin protocol, it is a change to default transaction inclusion and propagation rules. If you can get your transaction to a miner willing to bend these rules, you will get included in the blockchain (although it will be inconvenient for you).
2. There is another justification given for adding a minimum transaction size: many new users end up receiving very small quantities of bitcoin from free bitcoin sites and are unable to spend them because the total amount is less than the minimum transaction fee for sending small amounts. This patch will eliminate this problem.
3. This is actually a softened version of a previous change that would have the 5430 satoshi minimum hardcoded with no option for individual miners to customize it without editing and recompiling source code, and so is already an improvement. Any expressed or implied criticism was directed at the original introduction of the minimum, not this particular patch.

See criticism of this article and my replies (and so on) at http://www.reddit.com/r/Bitcoin/comments/1drnvp/bitcoin_developers_adding_0007_minimum/, and feel free to make your own judgement.

About a week ago, lead Bitcoin developer Gavin Andresen quietly introduced a patch that would add a fairly significant change to the transaction propagation rules: any transaction with any of its outputs less than 5430 satoshis (0.00005430 BTC) would be classified as non-standard, and will not be included or further propagated across the network by default miners. The minimum is a setting that individual miners are free to change (including to zero), and such transactions will remain valid under the rules of the Bitcoin protocol, but with only non-standard miners and miners that bother to change default settings including them in blocks and even passing them along to other nodes it will take much longer for them to get accepted (ie. “confirmed”) by the Bitcoin blockchain.

The main motivation for the patch is the same as that for many of the other rules restricting transaction propagation and inclusion in default miners: to fight “transaction spam”. One of the more problematic aspects of Bitcoin is that every transaction ever made will need to be stored by every fully participating node in the Bitcoin network forever, and already the size of the Bitcoin blockchain is over 7 gigabytes. Thus. there is an understandable desire to attempt to limit transactions that are deemed to be more trouble to store and verify than they’re worth. Some rules, like one added three months ago to make transactions that are over 100,000 bytes in size non-standard, exist to block single transactions that would cause an excessive amount of computing power to process and hard disk space to store. Others serve to discourage features of the Bitcoin protocol that are not well-tested. This one, however, serves a slightly different purpose: to block transactions that are perfectly ordinary in format and size, but which provide an extremely small benefit to the sender.

A substantial portion of Bitcoin transactions will be affected; a chart linked in Gavin’s pull request shows that about 20% of all recent transactions are under the threshold. By far the main user of such small outputs is the popular Bitcoin gambling site SatoshiDice. All bets on SatoshiDice take place directly over the blockchain; the bettor sends any amount of bitcoins between 0.01 and (usually) 500 to one of SatoshiDice’s addresses, if the bet wins, the original bet multiplied by the prize multiplier is sent back, and if the bet loses the bettor would receive 1 satoshi to let them know that they did, in fact, lose the bet, and their transaction was not lost due to some kind of error on the part of SatoshiDice or the Bitcoin network. SatoshiDice is prepared; the site has already increased the size of their “loss notification” transactions from 1 satoshi to 0.00005 BTC.

Also affected will be the colored coins project. The colored coins project’s core idea is to assign additional value to extremely small amounts of bitcoin; one application would be to “tag” ten thousand specific satoshis and then use them to represent shares of a corporation. One single satoshi can be used to represent smart property. Now, in order to achieve the same granularity what could be done with a single satoshi before would now need to be done with a block of 5430. However, in the discussion on this patch on Github, colored coins developer Alex Mizrahi commented: “I don’t think this change will create significant problems for ‘colored coins’. I mean, it’s strange that you’re doing this, but I guess we can live with it.” Although this will increase the expense of creating shares, it will not overshadow all other expenses; each individual colored coins transaction already required a 10,000 satoshi transaction fee in order to get included into the network without unreasonable delay.

In both cases, however, from both the Github discussion and conversations elsewhere it is clear that many core Bitcoin developers have a dim view of both SatoshiDice’s loss notification mechanism and colored coins being in the Bitcoin network. One poster said, “personally I think that a ‘colored coin’ solution lies in alt-chains and using the main BTC block chain is not appropriate for this application”, echoing a commonly held belief that Bitcoin is meant to be used to send payments and not information. Jeff Garzik added in response to another comment, “It is not breaking fundamentals — bitcoin has never ever been a micro-transaction or micro-payment system”.

Here, however, the developers have already gathered some criticism. Although this patch has been pushed relatively quietly so far, as though the change was simply a routine and uncontroversial optimization, the community’s position on these matters is far from settled; indeed, the two questions of (1) whether or not transmitting information using Bitcoin is legitimate, and if so just how much information is okay, and (2) whether or not Bitcoin should be used for micro-transactions are highly disputed matters. To show this, note that what appears to be an opposing view was held by Satoshi Nakamoto himself:

Completely non-reversible transactions [in pre-Bitcoin payment systems] are not really possible, since financial institutions cannot avoid mediating disputes. The cost of mediation increases transaction costs, limiting the minimum practical transaction size and cutting off the possibility for small casual transactions, and there is a broader cost in the loss of ability to make non-reversible payments for non-reversible services.

One of the original purposes of Bitcoin was thus micro-transactions, as stated by Satoshi himself.

Of course, the issue is somewhat more complicated than this, as there are actually two distinct uses of the term micro-transactions at play. The first can more accurately be termed milli-transactions; these are small payments on the order of $0.01 to $0.99, and transactions of this size are frequently used to pay for songs and mobile applications and to give tips through Bitcointip. It would indeed be a tragedy if these uses were hampered by a minimum size restriction of fee, but these are fortunately not harmed by this scheme. The second is transactions that are even smaller; one might imagine a computer paying a smartphone 100 satoshis per kilobyte in exchange for being able to borrow the smartphone’s cellular internet connection. These are the kinds of transactions that Bitcoin was actually never intended for, and which are better done with either some kind of centralized off-blockchain clearing mechanism or a repreatedly-adjusted transaction mechanism as described in the Bitcoin wiki’s page on contracts.

Where disagreement lies is twofold. First, there is the question of just how small a milli-transaction needs to be before it becomes a micro-transaction. On the one side are Bitcoin developers like Peter Todd, who stated in the Github thread that “We do need better communication of this stuff, and that includes doing things like taking ‘Low or zero processing fees’ off of bitcoin.org and not talking about microtransactions.” The argument in Todd’s favor was already mentioned; restricting as many low-value transactions as possible keeps the size of the Bitcoin blockchain down, mitigating the need for Bitcoin users to move away from “full clients” to “light clients” which do not store the Bitcoin blockchain themselves and instead rely on third-party servers to do much of the legwork. On the other side are those who see low processing fees and smaller minimum transaction sizes as being among Bitcoin’s cardinal features, for which it is even worth it to give up the idea that anyone other than a miner or business will be actually storing the full Bitcoin blockchain. The argument that this group makes is that most users have migrated off the “Satoshi client” maintained by the core developers to “light clients” like Electrum and Blockchain already, and it is a fool’s game to attempt to forestall this trend.

The other question is that of alternative uses of the Bitcoin protocol. The solution used to limit low-value transactions before this move toward an outright ban was transaction fees, and this mechanism had the advantage that, rather than outright banning any particular uses that are deemed “wasteful”, it allows the sender themselves to decide whether or not sending the transaction brings enough benefit to them to be worth the public cost. Here, no such individual judgement is possible, and so in order for a Bitcoin transaction to be deemed “valuable enough” to be allowed into the blockchain it must at least appear to be a substantial transfer of Bitcoin-denominated monetary value. The fact that colored coins users might benefit more from sending single satoshis than some other users benefit by moving around entire bitcoins, while the public storage cost for both types of transactions is the same, is not reflected in this rather blunt style of regulation. The argument used by developers, once again, is that Bitcoin is only intended to be a system for storing and sending money, and other uses belong on alternative blockchains better suited to their individual purposes.

It may well be that a community consensus will emerge that Bitcoin is a network for sending money and nothing but money, and substantial amounts of money too. However, so far no such consensus exists, and these questions remain very much up for debate. Because of its limited scope, and its nature as a modifiable miner setting, this particular patch is not particularly important, but it does highlight the importance of these long-standing issues that still remain unresolved. Exactly what minimum size of transactions should Bitcoin target itself toward, and should it aim for virtually no fees? Is the use of the Bitcoin network to send trivial amounts of information, whether that may be information about ownership in the form of a colored coins transaction or a loss notification from SatoshiDice, something that we want to accept? Exactly what balance we strike with each of these questions is a crucially important decision that will affect the course that Bitcoin will take for decades to come, and it is very important that we as a community have solid communication, and genuine two-way discussion, when these kinds of issues arise.

BTC: 1FxkfJQLJTXpW6QmxGT6oF43ZH959ns8Cq

LTC: LaBhvWiAP7msku6w8QSQ5G7omVWMF3uxJC

By

Vitalik Buterin is a co-founder of Bitcoin Magazine who has been involved in the Bitcoin community since 2011, and has contributed to Bitcoin both as a writer and the developer of a fork of bitcoinjs-lib, pybitcointools and multisig.info, as well as one of the developers behind Egora. Now, Vitalik's primary job is as the main developer of Ethereum, a project which intends to create a next-generation smart contract and decentralized application platform that allows people to create any kind of decentralized application on top of a blockchain that can be imagined.

Get Top Stories Weekly

We respect your email privacy