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:
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:
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:
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:
There’s a wiki page on Bitcoin scalability at the Bitcoin wiki that also discusses some CPU load issues too.