Scaling Bitcoin

My previous post described different ways blockchains built for decentralized applications could scale without significantly increasing block size. Such blockchains differ from those that only handle simple money transfers in that they have unlimited demand, and feature transactions that take up more space on the blockchain. These two differences impact the necessity for complex scaling solutions and allow for a chain that can scale solely through basic on-chain fixes. 

Within the Bitcoin community, this is a contentious topic. In 2017 it fueled a civil war between those who believed in bigger blocks and those who believed in smaller blocks. The small-block community believes that large blocks cause nodes to centralize into a shadowy cabal of investment bankers. This claim starts to fall apart when you analyze the cost of a node after block size increases. Bitcoin and other payment based blockchains can scale to serve humanity on-chain, while still allowing the average person in a developed country to run a node. 

How much load can Bitcoin do right now?

A blockchain’s transaction throughput depends on two factors: block time and block size. 

The block time defines the frequency which blocks are added to the blockchain, and the block size is how many transactions can go into each block. One Bitcoin transaction is roughly 250 bytes, and a Bitcoin block has 1 million usable bytes. This equates to 4,000 possible transactions added to the blockchain every ten minutes or roughly 7 transactions per second. This assumes maximum efficiency and only one size of transaction. In practice, Bitcoin transactions are roughly 500 bytes, and this maximum efficiency is rarely hit, so it’d be more accurate to estimate an average throughput of 5 transactions per second.

Nodes are the computers that save all the transactions taking place on the blockchain. They are important because without them nobody would be able to use the network. It’s also important that regular people can run these nodes so that access to the network isn’t guarded by any centralized authority. The worry bitcoiners have regarding centralized node control is legitimate. However, they are overestimating how bad the current situation is and how bad the future situation might be. The severity of the situation can be tracked by a simple metric: the cost of a node. This metric indicates how difficult it is for someone to run a node. The current hardware requirements are:

  • 350 GB of storage space
  • 2 GB of memory
  • 50 KB/s per second Internet connection

Even on mobile devices, modern hardware far exceeds these requirements. Modern laptops start with a minimum of 8 GB of ram, and most laptops feature 16 GB. Modern laptops also have far more storage, with many starting at 500 GB, with the possibility of upgrading to 4TB of storage. This storage is also moving over to solid state, which is much faster and allows blocks to be downloaded at a faster rate. Finally, even if you operate a node in Afghanistan, home to the world’s slowest average Internet service of 1.85 MB/s, the Internet requirements are easy to meet. In developed countries such as the UK, where I live, having access to 30 MB/s is seen as a must with many people opting for up to 1 GB/s speeds.

If you want to learn more about how the Internet works, check out Computer Science Unleashed. It will give you a pleasant introduction to data science in general, and also to computer networking and cybersecurity. It even explains the basics of cryptography, on which Bitcoin relies!

The bitcoin core software used to run a node.

Building a Homebrew Bitcoin Node

The build I recommend for a node at the current hardware requirements isn’t a separate machine. Rather, it’s better for an aspiring node runner to buy a Solid State Drive or SSD which are much faster than other forms of storage as there are no physical parts that need to move for data to be written to the device. SSD’s can also be bought to run externally so a user can buy one that plugs into an already existing desktop computer or laptop. When the machine is sitting at home the user can run the node software without issue. With this set up, my node runs on my laptop for over half the day on weekdays and runs around the clock on weekends. If this SSD was instead plugged into a home computer, it could easily run 24/7. Even with current chip shortages, a 2 TB SSD sells on Amazon for $200, which has more than enough room to store the blockchain. So, with the system outlined above, how far can we go?

State of Emergency Changes

In the eyes of the big block camp, Bitcoin is in a state of emergency. The fees have skyrocketed, Bitcoin is unusable as peer-to-peer cash, and the network is struggling to reach mass adoption. If the Bitcoin community decided to increase the block size 8 times, almost no nodes would be affected. The only impact would be felt in the long term after these new 8MB blocks had been consistently filled. 

With a node that has 2 TB of SSD storage, it would take almost 4 years for this blockchain to fill up with consistently full blocks. This worst case scenario is remarkably unlikely especially right out of the gate, the amount of transactions that this change would allow for is 40 transactions per second. A number that has never been hit. In fact as of time of writing Bitcoin is only doing 2.8 transactions per second, meaning demand would have to grow 15 times to fill these blocks. Assuming an enormous growth rate of 100% per year, it would take 5 years for the blocks to fill. During these 5 years, fees would be close to zero, so everyone could start using bitcoin as a payments network once again. 

This poses a very good question; how does one increase the block size and why has it not happened? 

Bitcoin nodes are simply a piece of software, lines of computer code, one of which outlines the maximum size of blocks. For this block size to increase, most people who run nodes would have to change this variable to the same number, in this case, 8 MB. The challenge with this is people’s lack of coordination and the inability for people to dig through and understand a complex piece of software. In practice, there is an update to the software that is pushed and people choose whether or not they wish to update to the new version. 

This upgrade is so minuscule that it would be best to increase the blocks by a larger amount. The point at which block sizes could become troublesome with the system outlined is 128 MB, as a year of half filled blocks would already fill our homebrew node. An intermediate 32 MB, would have minimal impact in the short term, and would free up a total of 14 million transactions per day or 160 transactions per second.

Clearing up some Common Scaling Misconceptions

Despite this improvement the transaction throughput isn’t enough to handle the transaction requirements of the world. For reference Visa currently handles roughly 2,000 transactions every second and can handle a maximum of 50,000 transactions every second. Many small block proponents would see this upgrade as a complete failure. They would predict that if this upgrade didn’t immediately solve the capacity problems, the blocks would fill once more, fees would return to their prior highs, and it would have all been for nothing.

To counter this argument, I pose a simple question: How many individuals and companies currently have the infrastructure in place to use Visa, and how many are able to use Bitcoin? This infrastructure takes time to put in place, and therefore a capacity increase won’t lead to a sharp increase in block space demand. 

Comparing to the Ecosystem

Looking around at other blockchains it is hard to find examples of payment chains that do anywhere near this many transactions a day. The closest comparison can be found in smart contract platforms which suffer from the two major constraints discussed in the introduction. First, demand for these platforms is infinite, and second, the size of transactions is much larger. It took bitcoin 8 years to fill 1MB blocks, it will most likely take the same amount of time to fill 32MB blocks. At the time 1MB blocks were being filled consistently for the first time, a small number of major corporations accepted the currency, and a fraction of the population used it on a daily basis. For bitcoin to fill 32MB’s it would require 32 times the number of major corporations to be accepting the currency, all with users making payments day by day. From Apple, to Samsung, to Nintendo, these corporations would have to fully implement this infrastructure for the blocks to come close to filling, all of which takes time.

Scaling past 32 MB

Some time in the future the day will come where even 32 MB blocks will fill and fees will begin to become a problem once again. What’s next? First, it’s important to note something about the system, Bitcoin is now a payments network that supports north of 100 transactions per second equating to 9 million transactions every day. If Visa does 2,000 transactions per second, and the total usage of payment processors is 22,500 transactions per second, Bitcoin will handle 5% of Visa and 0.5% of all transactions globally. 

Bitcoin at this stage is no longer a fledgling payments service, but rather a payments tool that average people are using on a daily basis. This demand comes with an ugly reality: it’s going to get harder to run a node, but this doesn’t mean that nodes will centralize into the hands of a small group of shadowy nameless figures. On the contrary, as more businesses such as block explorers, mining companies, and exchanges depend on this network to do business. As more universities, schools, and governments want to do research, and as more users want to help the network flourish, the number of nodes is only going to increase despite the rising cost. 

Dethroning the King

The next logical step for the bitcoin network is to take on and dethrone Visa, this task would require a block size of 400 MB occurring every ten minutes. Which sounds big in the current context but relative to other systems is very small. There are large images that are that size, movies and video games are orders of magnitude larger, in major cities an Internet connection can handle 400 megabytes every second. It’s also very unlikely that 400 MB would be necessary to handle this throughput. During Ethereum’s lifespan, throughput has been quintupled by efficiency improvements alone. 

Looking at Ethereum layer 2’s such as Arbitrum and Optimism, throughput has been increased by two orders of magnitude. This isn’t blocks getting bigger, this is transactions getting smaller. These efficiency improvements are also likely to become more frequent as time goes on and more researchers and developers enter the space. An optimistic view of block efficiency increases could be up to 10 times, which would lead to an actual increase in blocks to only 40 MB. In my opinion a conservative view is the requirement for 200 MB blocks, expecting that the bitcoin network eventually achieves a 2x increase in efficiency. 

Synology 4 bay NAS DiskStation DS418

The Final Touches

Years pass, blocks begin to fill up once more with transactions, and the cost of a node changes. The 2 TB SSD isn’t going to keep up anymore. Users who wish to run nodes are going to have to upgrade their system to keep up with increasing block sizes. Currently, a 4-bay home storage server costs roughly $350 on Amazon, a 16 TB hard drive costs $300, and a cheap pre-built home computer such as the Intel NUC costs $400, the full cost of this setup being $1950. 

For the average consumer, this might seem like a tall ask. However, for the parties most likely to run a node (businesses, universities, governments, and crypto-enthusiasts) this is a rounding error. This 64 TB monster could handle 5 years of completely full blocks, with Visa level throughput with today’s technology. These prices and hardware are available 5-10 years before the necessity of these upgrades. A conservative estimate in the cost and efficiency would be the hardware getting twice as good for half the cost leading to a 128 TB machine for only $1000. When the blocks fill up, the Bitcoin network will be handling 2,000 transactions every second, equivalent to Visa, and fulfill 9% of the entire demand for digital payments. 

What Next?

In this article, we demonstrated a blockchain based payments network such as Bitcoin that can handle two thousand transactions per second. We assumed a set of modest expected hardware and software improvements that are consistent with what has been seen previously. The cost of meeting the storage requirements for the entire Bitcoin network in this scenario would be, at first, a measly $200 and then many years down the line $1550 per node using current prices. Multiplied by the current number of nodes (10,000), this implies a total cost of 2 million or 100 bitcoin at first and then later on 15.5 million dollars or 775 bitcoin to upgrade the entire network to Visa level throughput. 

I’m sure this is a shocking revelation to those who have ditched the Bitcoin project due to frustrations over transaction fees or to those where the fees and lack of usability is starting to wear. Moving forward, as user growth slows due to the size of the network, modest yearly block size increases could be made in line with the rate of software and hardware advances. This would ensure low transaction fees and a good user experience for everyone, forever.

Jack Sanderson

About the author:   Hi I’m Jack, I have a degree in Computer Science from Cardiff University, and I'm currently pursuing a Master's Degree in Data Science from the University of Bristol. I have studied blockchain ecosystems since I started mining Ethereum in 2017, and I’m currently building tools for the community as well as writing articles to help people understand the field.

Leave a Comment