Bitcoin Magazine

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.

Get Top Stories Weekly

We respect your email privacy

  • D,

    Cant green address’s be used for micro transactions.

    I dont really like the changes they are making here. We know also the price will be much higher in the near future so these fees will become rather large.

    • Matt H

      I agree I don’t like be forced into what ways I can or can’t spend my money. All they are doing is passing the money onto and into other crypto-coins from bitcoin.

  • Jose Luis Vazquez

    I think that this AN SCALABILITY issue at the end of the day.

    What are they going to do when 5430 satoshis buy a bottle of milk?

    change the protocol again depending on everyday prices?

    … this doesn’t seem a serious fix.

    Bitcoin developers must first ACKNOWLEDGE the basic bitcoin design, as of today, faces a BIG scalability problem.

    If you want bitcoin to succeed you DON’T want it to die of success.

    Today already you cannot hold a full bitcoin client on your smartphone, even if it is a top of the line >500$ one. It is totally impractical.

    Even with bitcoin-qt, It takes too much time to synchronize the blockchain when you are a few days behind.

    They don’t want to recognize it, but they should see this is insane:
    https://en.bitcoin.it/wiki/Scalability

    Storage
    At very high transaction rates each block can be over half a gigabyte in size.

    0.5GB every 10 minutes replicated ON every bitcoin client????

    As I said, insane!

    They will have to either come with another way to do it or start developing block chain validation ONLY on headers using the hashes as proof of “non-tampering”.

    Bitcoin users will invest in bitcoin infrastructure and hardware depending on how heavily they depend on it.

    Consumers will probably use very lightweight clients than connect to various trust-worthy servers.

    Merchants will start holding at least a headers only blockchain on a server around and, if they grow in volume of transactions will invest in more hardware to hold their own copy of the full block chain, at least from a recent checkpoint.

    Finally only a core of miners and transaction fee seekers will be compelled to hold full copies of the block chain from the start.

    Bitcoin history service providers may appear and be more demanded, cause the cost to hold old transaction details will be too high.

    This is, of course, if bitcoin is successful enough to be doing at least a significant percentage of international transactions, for instance, if it gets a size similar to paypal or visa.

    I think cryptocurrencies are here to stay, but the crypto currency of the future may not be bitcoin, if it is unable to solve its technical problems on time.

    Maybe they should look at a consensus agreement such as the one used in ripple.

    Ripple has a problem, there is no mining. Mining is good for creating bitcoins, generating the blockchain and getting transaction fees, but consensus is more effective to agree on past checkpoints and blockchain history and avoiding the paranoia of having to store the full chain on EVERY peer.

  • Brian B

    So much for that whole “no central regulating authority” thing…

  • NullVote

    They need to finally adapt chain-breaks. New accounts DO NOT NEED the whole chain of events. They only need events from X-point and forward. Even more specifically, they only need chains which “pertain to them”. It is possible, it can be done, it just isn’t.

    (This is not talking about “genesis blocks”. This is simply a “solution” from block-0-9999, which solving for block 0-9999 results-in… thus, once solved, it doesn’t have to keep being re-solved over and over again. Just start from that solution, and go forward.)

    Users shouldn’t be damned to keep the whole chain of historic events. For the network to live, they only need a fragment, until they have enough transactions to account for that fragment size.

    I think ALL transactions should have a minimum of 0.5%, which is little to ask for US (the miners), who are doing all the delivery and processing.

    Use an alternate coin for “data clutter”. Or, I don’t know… an actual e-mail for data… That crap doesn’t belong in bitcoins. If it is valuable to send, then pay for it. It isn’t valuable for us to process, so we will eventually just stop processing those transactions. Nothing says we HAVE to process ANY transactions at all. If that is what it takes to stop the abuse, it will be done.

    • IAbdussamad

      Slicing up the block chain would help users in the short term but hurt them in the long term. Bitcoin is decentralized which means that its very existence depends on multiple copies of the blockchain hosted by as many different computers as possible. Every computer that has a copy of the blockchain can relay transactions and help the community as a whole. If you split up the blockchain most users won’t be able to contribute to bitcoin.

      • Dennis New

        What’s the difference between trusting/remembering just Block #0, or trusting/remembering a digital summary signature of all blocks between #0 and #200,000? The only downside that I can see is possibly losing access to old transaction history. (Which might be a good thing!)

  • Dom T.

    Miners and Nodes can still flip the bit in their option about propagating dust transactions. It’s a major option to stop blockchain bloat. I don’t personally like the fact that it’s a hard-code value (which could change if the value of bitcoin changes dramatically) but the system needs to adapt, for now. Even Gavin says in the initial comment on the patch that this is an interim solution.

  • nestorgames

    Here is how to make a 0,001$ transaction then:

    I send you 0,008$ and you send me back 0,007$.

    So this not only doesn’t solve the problem, but makes it bigger.

    A possible solution: Fixed fractionary unit that shrinks over time:

    – Payments in fractions of 0,00001 BTC until 2015
    – Payments in fractions of 0,000001 BTC until 2016
    – Payments in fractions of 0,0000001 BTC until 2017
    – And so on, until reaching the maximum.

    • DougNJ

      What commodities are you dealing in that a transaction costs one tenth of one penny? Or is your “$” not in $USD?

  • FN

    I just want to note that now that time has passed, this has become a 5 cent limit. This is why any fixed value – even if “just a default” – is a bad idea.