Bitcoin and transaction limits

The Bitcoin blockchain has been worrying me for some time. I’m by background an embedded systems guy and I used to work in the automotive industry where 1K RAM was considered a lot. So the blockchain growing infinitely through time gives me the heebie jeebies (particularly after I read Charles Stross’ book Neptune’s Brood, which is basically about post-human robots thousands of years in the future transacting on the Bitcoin blockchain distributed across the Milky Way at the speed of light). Then I read a tweet by Joe Weisenthal asking about UBS’s comments on Bitcoin transaction rates:

Bitcoin can handle more than a transaction per second. But if Bitcoin is to scale to Visa-levels (let’s say an average of 2000 per second) then what will happen to the blockchain size (where these transactions get stored)? What will happen to miners who have to download the whole blockchain to participate in the Bitcoin network? If the blockchain grows so big that they can’t download it faster than it grows then Bitcoin is dead-ended. So I did some very simple modeling to see what might happen when Bitcoin scales out to a Visa-scale operation.

Just before we look at the model assumptions, though, we have to just cover a few Bitcoin basics. A block is added to the blockchain every ten minutes or so (the Bitcoin protocol scales the difficulty of mining – which is the process by which blocks are added – so that no matter how many miners or how powerful their rigs, it’s always about ten minutes). A block contains a whole bunch of newly-validated transactions but is also limited in size to 1MB. Individual transactions can vary in size (depending on several factors) and the maximum rate of transactions is between 5.2 and 10 per second. But this isn’t very helpful when looking to the future: it can be raised simply by making the blocks bigger. The worry is what happens to the size of the blockchain when we do that.

The data from blockchain.info shows that over the last 12 months on average each transaction added just under 500 bytes to the blockchain (and at an average rate of about 0.5 transactions per second – I think that’s what UBS are referring to with their “less than one transaction per second” remark). I wanted to model Bitcoin growing to Visa-scale over ten years (if you look at the speed of innovation, with things like smart phones, or the uptake of the internet itself, it’s about the right amount of time to go from small-scale to “I can’t remember what it was like before”). So that’s going from 0.5 transactions per second to 2000 over 120 months – a 7% month-on-month growth.

Over the last year the blockchain has grown from 5.7GB to 14GB and stored nearly 18 million transactions. There is a pruning mechanism that allows the blockchain to discard storing certain old transactions, but if we assume that the shape of future transactions is like the current ones then the blockchain will continue to grow with the same per-transaction storage costs. I worked out the size of the blockchain for each month, assuming those growth rates. The results are in the chart below:

size

Ten years out, the blockchain will be 40TB in size. That’s big, to be sure, but not that big (especially so with Year 2024 storage technology). To see how big it is here is the chart of the days required to download the blockchain at a domestic 100Mbit/sec internet connection:

Download

Basically an individual person could with a domestic ISP connection could join the mining business for some years yet (although it might take them a couple of weeks to download the blockchain to get started). I also worked out the minimum bandwidth to stay up-to-date with the blockchain:

Mbit

This is negligible by today’s standards, let alone ten years out.

Even when the size of the blockchain exceeds domestic internet speeds for downloading it there will still be the option of co-locating mining equipment in specialist data centres (much as we have evolved today for web servers). And no doubt it would even be possible to sync with the blockchain by sending a substantial part of it on a hard disk in the mail (as Andy Tanenbaum famously remarked: “Never underestimate the bandwidth of a station wagon full of tapes hurtling down the highway”).

The growth in the number of transactions would level out in the end (nothing can sustain 7% month-on-month growth). Quite where that point is no-one can say for sure (it might be very much higher than Visa and Mastercard if cash gets replaced with Bitcoin transactions, or it might be a lot lower if Bitcoin ends up in a niche of web micropayments). It’s also not obvious just how prevalent ‘off blockchain’ transactions will be (for example, very quick transactions between accounts within a network of cloud wallet providers). It may be that Bitcoin becomes an open version of something like TARGET2 where the blockchain primary stores just the major inter-cloud-wallet-provider clearing payments (c.f. inter-bank payments). For comparison, right now TARGET2 is running at about 4 transactions per second (PDF) - a rate that Bitcoin can already do.

So in short, Bitcoin can grow to the transaction scale of Visa without any foreseeable network or storage barriers.

If you liked this post here’s the address of my tip jar:

166vkDz7EqLV27g3aEqER2Z81vx43sYMp7

UPDATE:

There’s a wiki page on Bitcoin scalability at the Bitcoin wiki that also discusses some CPU load issues too.

About these ads

8 thoughts on “Bitcoin and transaction limits

  1. One thing that must be remembered is that this is the speed of transaction *confirmation*, which essentially is only limiting the speed at which the inputs can be re-spent in the blockchain. For instance, if I have an address with 5BTC, and I receive a 1BTC payment, the P2P network notifies me of that transaction immediately, and I can choose to act on it immediately. In today’s world where performing a double-spend is basically completely impossible, I don’t have to wait for the transaction to be included in a block to do business (in fact, many businesses are already accepting unconfirmed transactions). Now my wallet has 1BTC unconfirmed, but I can still make transactions with the other 5BTC, so as long as I don’t *need* that money within about an hour, I don’t really care how long it takes to get 6 blocks back.

    We do need to include more transactions in blocks to make bitcoin scale, but we don’t need to wait for confirmation to do business, especially with small purchases (eg. coffee).

  2. Mike Hearn says:

    Nice analysis. BTW, if you check the scalability section of the bitcoin.org FAQ you will find a link to such an analysis that was written a couple of years ago already and is kept up to date as technology improves. Unfortunately UBS does not appear to have read it.

    • I’m making a guess as to a reasonable domestic broadband connection that could be had in 2024. Already mine today is running at 76Mbit/s (just standard FTTC, which is already common in the UK).

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s