Bitcoin and transaction boundaries
The Bitcoin blockchain has been worrying me for some time. I’m by background an embedded systems dude 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:
What's the pro-Bitcoin response to this point made by UBS? pic.twitter.com/awPwLibDtz
Bitcoin can treat more than a transaction per 2nd. But if Bitcoin is to scale to Visa-levels (let’s say an average of two thousand per 2nd) then what will happen to the blockchain size (where these transactions get stored)? What will happen to miners who have to download the entire blockchain to participate in the Bitcoin network? If the blockchain grows so big that they can’t download it swifter than it grows then Bitcoin is dead-ended. So I did some very elementary modeling to see what might happen when Bitcoin scales out to a Visa-scale operation.
Just before we look at the model assumptions, however, 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 equipments, it’s always about ten minutes). A block contains a entire 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 inbetween Five.Two and ten per 2nd. But this isn’t very helpful when looking to the future: it can be raised simply by making the blocks fatter. 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 twelve months on average each transaction added just under five hundred bytes to the blockchain (and at an average rate of about 0.Five transactions per 2nd – I think that’s what UBS are referring to with their “less than one transaction per 2nd” remark). I desired to model Bitcoin growing to Visa-scale over ten years (if you look at the speed of innovation, with things like brainy 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 reminisce what it was like before”). So that’s going from 0.Five transactions per 2nd to two thousand over one hundred twenty months – a 7% month-on-month growth.
Over the last year the blockchain has grown from Five.7GB to 14GB and stored almost eighteen million transactions. There is a pruning mechanism that permits the blockchain to discard storing certain old transactions, but if we assume that the form of future transactions is like the current ones then the blockchain will proceed 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 two thousand twenty four 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 (albeit it might take them a duo of weeks to download the blockchain to get commenced). 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 total 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). Fairly where that point is no-one can say for sure (it might be very much higher than Visa and Mastercard if cash gets substituted with Bitcoin transactions, or it might be a lot lower if Bitcoin finishes up in a niche of web micropayments). It’s also not demonstrable just how prevalent ‘off blockchain’ transactions will be (for example, very quick transactions inbetween 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 four transactions per 2nd (PDF) – a rate that Bitcoin can already do.
So in brief, 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 peak jar:
There’s a wiki page on Bitcoin scalability at the Bitcoin wiki that also discusses some CPU fountain issues too.