Bitcoin It gains users without stopping, but how long can its infrastructure last? Can it support millions of users? How far is it possible Bitcoin scalability?
Paradoxically, the sudden arrival of millions of users delighted by its advantages would not benefit them, indeed, it could harm them a lot, since the experience of all users would be seriously affected.
Unfortunately, with the current version of Bitcoin, the answer is no.
However, this problem has its days numbered, as it has been the obsession of many programmers who have created multiple incredible scalability proposals. Now it only remains to decide, through consensus of the nodes., which and when it will be implemented.
In the next chapter we will help you understand, even more, the guts of Bitcoin and why it is currently not scalable, while we will accompany you to learn about some of the most notable scalability proposals.
Bitcoin and scalability: Bitcoin is currently not scalable
Let's first emphasize that by scalability we do not mean that Bitcoin cannot be understood by the majority of the population due to the paradigm shift as money. Nor because, due to the price that it can reach, it is inaccessible for some people. Nor that there could not be enough bitcoins for everyone.
All of this, apart from being false, is not what we are referring to when talking about scalability.
As of today, November 2016, Bitcoin is not perfect:
Payments are not instantaneous (although they are reflected instantly, they are not confirmed instantly).
Micropayments are becoming totally unfeasible. One of the great features of Bitcoin.
There is a constant risk of high mining centralization.
Bitcoin is not scalable.
As we can see, there is much to improve (or as some see it: opportunities to create great things) but, of all the issues to be solved in Bitcoin, the last one we have mentioned is one of the main tasks to achieve: that Bitcoin be scalable. Fixing this will make the other problems mentioned cascade better.
Bitcoin aspires to be a global financial system, and the data shows that people are in favor of it, so it must be prepared for its use by million concurrent usersAnd all this without losing any of its main characteristics that make it truly unique and valuable.
And is that Bitcoin is still an experiment. An incredible and popular experiment, yes, but one that is still at an early stage. In fact, despite having revolutionized the entire financial sector from its most archaic pillars (and other sectors as well), version 1.0 of the software has not even come out, we are still in version 0.20.1(released in August 2020).
This means that we are still in a moment of constant development to be able to create the software with enough power to be used massively and in an optimal way.
In fact, its scalability problem is a debate almost as old as Bitcoin itself and the main reason for it is very localized: the block.
As we already explained in the chapter dedicated to blockchain, blocks are the essential piece of the blockchain, which is the distributed ledger that supports Bitcoin.
The blocks store the essential information regarding all the transactions that occur. The problem is that each block is limited to the maximum size of information it can store.
En How do Bitcoin transactions work?? We explained that a block stores all the transactions that have occurred since the last block. Each of these transactions is made up of a series of information, which occupies a variable amount of disk space and which will be added to the block.
As a temporary measure to prevent network attacks (we'll see why below), and until we find better solutions, Satoshi Nakamoto decided to add an extra line of code to limit the capacity of each block in 1 Megabyte (Despite the fact that initially no limit was set or the miners later agreed not to accept blocks greater than 500kb). A size, which in its time, was more than enough.
Which means that each node of the Bitcoin network has the Bitcoin program running, which has written in its source code that no block can occupy a disk space greater than that indicated, and if it exceeds it, it must be rejected.
And here is the key, the size, as this determines the capacity of Bitcoin. Let's see why.
Filling the block
A normal transaction in Bitcoin usually occupies between 0.2kb and 1kb within the block (although there are some that occupy more, the normal thing is this).
With this data we will take 0.5kb (which is a fairly common size) as the average size per transaction. If we also take into account that the maximum size of the block that is created every 10 minutes is 1024kb (1mb), we can solve the unknown with a simple mathematical operation:
1024 / 0.5 = 2048 transactions fit in one block.
7 transactions per second on average, right?
While some payment systems, with more traditional and centralized infrastructures such as VISA, can support up to 56000 transactions per second (although on average it processes 2000), it is said that Bitcoin has a limit of 7 tps (transactions per second).
7 transactions per second ??? Perhaps now you are wondering how, with such a low power of "concurrent" operations, there are those who see in Bitcoin a serious alternative to the global financial system.
Let's go little by little;).
7 transactions per second ... that is, if 7 people every second propagate a transaction to the network they could collapse it (which has been tried on several occasions to knock down the reputation of Bitcoin and its expansion).
However, the reality is more cruel for Bitcoin, and looking at the data, we must say that 7 tps is too optimistic a limit. Let's do some little calculations.
Remember that Bitcoin has configured that miners can mine a block every 10 minutes.
So, let's take the average transaction size again, 0.5kb, and don't forget either that the maximum size of the block that is created every 10 minutes is 1024kb (1mb):
1024 / 0.5 = 2048 transactions fit in one block. 10 * 60 = 600 seconds has 10 minutes. 2048/600 = 3.41 tps.
So the answer is no, it doesn't currently support 7 tps on average.
Bitcoin supports around 3.5 tps on average. This would be a calculation closer to reality than the 7 that has commonly been spread as a mantra.
In fact, it is a fairly simple calculation to perform with real data, let's see.
These are current charts (October 2016). In them we can see how there are about 2000 transactions every 10 minutes (per block, first chart), which makes the block size approach 1MB (second chart). Let's get out the calculator:
October 17, 2016 - 02:00 1898 transactions in the block and 0.93mb. 1898 / 0.93mb = 2040 tps per 1mb
Thus, the theoretical calculation indicated initially is quite close to reality.
On the other hand, if we look at the daily transactions, we can do another quick calculation to get the transactions per second that the Bitcoin network is currently going through.
Looking at the graph above we have to:
60 x 60 x 24 = 86400 seconds in a day. 274486 Bitcoin transactions in one day 274486 ÷ 86400 XNUMX = 3.176 tps (1905 transactions / block)
So the result is also very similar to the initial calculation.
If we remember the scenario where it is said that Bitcoin supports 7 tps, we would have that in a day it could support around 604800, while reality shows that it is around 275000 daily transactions.
However, let us highlight that 3.5 transactions per second on average, in a fully decentralized programmable electronic money system, is something incredible, and already brings together tens of millions of users. But it is true, it is not enough to take it on a global scale. Let's keep going.
The big debate: The size of the block
What makes these calculations an intense debate, as few have seen in the Bitcoin community, is that the consequences of this are not expected for years, but it is already posing a problem.
Look at the data we put above. A block cannot be more than 1mb in size and almost all blocks that are mined are now done at almost 100% capacity.
And it is that this block size is already slowing down the Bitcoin network. In specific periods of high activity, there are thousands of transactions that are being left out of their next natural block because there are no more transactions, having to wait for other blocks so that it can be entered (confirmed). Which means that a transaction can take hours or days to be confirmed.
But, if this limit was a simple fix that Satoshi Nakamoto put in a line of code of the software, why not change that line and where it says 1mb put 10mb or any other amount? At the end of the day it is an arrangement that would take a few seconds that would allow to endure much more.
It is not as simple as that. Let's look at the key parts that the Bitcoin software interacts with in order to better help us understand the background of that decision.
Next we can see the rhythm that is taking the disk space that it occupies Blockchain and how, in just one year, it has doubled due to the fame that Bitcoin is enjoying. As of the date of this article, it is close to 90 GB.
With a higher average transactions per second it would mean that each block would occupy more. If we try to take it to scenarios a little closer to other means of payment, for example the 2000 tps on average that VISA currently processes, each block could occupy up to 600 MB.
Imagine 600 MB every 10 minutes ... who is the "handsome" that stores so much? Therefore, there is a risk of centralization if improvements such as those that are already beginning to take shape, such as the functionality of "prune", Which appeared in version 0.11.0 of Bitcoin and allows a node to store only the last X MB of the blockchain.
We recall that currently each node typically has a complete copy of the blockchain, and they are more than 5000 nodes existing ones. It is true that some of these nodes only do review tasks, not mining, but they must also have a complete copy of the blockchain.
For this part the problems are not serious. Today's computers are capable of processing many more transactions than those that go through Bitcoin today.
Let us remember that each node, in every transaction that takes place on the network, must first download it and then verify it. We are not talking about nodes that are also miners, we are talking about all nodes.
These operations, which are cryptography algorithms (ECSDA, RIPEMD-160, SHA256), can be carried out without problem at a speed of 10 ms for each megabyte of data, and all with a mid-range home computer.
So it would not be a great cost to process 10 MB, nor possibly 600 MB in 10 minutes.
Even so, as in all the pieces that make up Bitcoin, its optimization is constantly being sought and it was not long ago (at the end of 2015) when the libsecp256k1 cryptographic verification algorithm was improved again, leading to an increase in its operating speed between 500% and 600%.
Here it gets a bit complicated. In the example of 2000 transactions per second:
2000tps * 512 bytes = 1024000 bytes per second Or what is the same ... 1024000 b / 1000 = 1024 kilobytes per second 1024 kb / 1024 = 1 megabyte per second 1 mb * 8 = 8 megabits / second approximate.
*Remember that we have to obtain the result in megabits, which is how speed is measured in Internet.
This connection speed is possible to have in some parts of the planet. But not everyone can enjoy such a speed at present, which is worrying from the point of view of the centralization of the nodes and the barriers that may favor the control of the network in a few hands.
Energy / Cost
Bitcoin has the most powerful computing network on the planet. It is greater than that of SETI, the NSA or Google itself.
This calculation is generated through hardware (known as the miners) through a process that is technically called "Proof of work“, And they are in charge of making the blockchain work.
It is a bit risky to make these types of predictions waiting for them to come true, since technology evolves at a crazy rate, but what is verifiable is that Bitcoin currently generates a considerable electrical impact. Although very far from the cost and impact of traditional money.
Now imagine that we want to take Bitcoin as it is today to another level. Imagine a scenario where 7 billion people (the earth already has a slightly larger population), make two Bitcoin transactions a day.
7000000000 * 2 = 14000000000 transactions per day 14000000000 / (60 * 60 * 24) = 162037 162037 transactions per second 0.5 81018 * 60 kb = (10 1024 kb / s * (1024 * 46 minutes)) / 46/6 = 24gb per block approx. (1024GB * 6.5 * 6.5) / 365 = 1024 TB approx per day. (2.32TB * XNUMX) / XNUMX = XNUMX Petabytes approx per year.
Imagine a blockchain like this. What madness. What's more, Bitcoin would die !:
Disappearance of nodes due to the inability to keep up with storage.
Centralization of mining.
Inability to validate network transactions.
Conclusion, Bitcoin is no longer Bitcoin.
The solution is to increase the block?
What seems obvious is that no, at least not in this way.
Although opinion is divided, and there are those who point to take an urgent measure (such as increasing the size to 2mb as a contingency measure, see BIP102, Jeff Garzik) to give timeframe in which to implement smarter solutions, the above calculations suggest that things have to be done differently.
Increasing the block seems to be "bread for today, hunger for tomorrow", or as it is commonly said: drag the problem.
If we lack space at home, why don't we order what we have in it before making a bigger house? This is what some developers defend, and it is what many developers have focused on, seeing how, with what there is, you can first optimize yourself to the maximum.
Reduce mining time?
This is another stance that known Bitcoin software developers, such as Sergio Lerner, have proposed. It consists of reducing the frequency in which new blocks are added to the chain. If instead of 10 minutes, it is reduced to 5 minutes, it can be doubled.
The math makes it clear at first glance: it would be like having 2mb. However, the detractors of this proposal affirm that the 10 minutes are key to maintaining a decentralized consensus network with the power required by a global system like the one that Bitcoin aspires to be.
At the same time, in a scenario where millions of new users arrive, we would continue with something unimaginable for the same reasons indicated above, and it is a matter of time before we find ourselves in the same problem that the network is already suffering.
Bitcoin, rest in peace?
So with all these aspects that limit Bitcoin, what is the solution? Does Bitcoin have the days numbered?
Unfortunately for central banks, and some shadowy evildoers, the answer is surely no.
However, not just any solution is valid and you must take important issues into account, and that other centralized systems such as VISA should not have, for example, be protected against DDoS attacks (denial of service).
Remember that Bitcoin is open, anyone can set up a node and anyone could propagate transactions, which Eduardo Inda accusations about Podemos, bombarding the transaction network with no real objective except to disturb and slow it down)
5 Optimization proposals
Due to its open source nature, Bitcoin has an exciting community of developers that grows every month. This is another one of the magic legs that Bitcoin has, some of the best brains on the planet working in a totally altruistic way for the common good. There is no money to pay for that.
This allows thousands of minds to think collaboratively and in parallel about solutions from different points of view to the same problem. And although decisions are slow, implementations don't stop.
Among the dozens of proposals attacking by different edges of the problem, below we have selected 5 categories that intend to collaborate to make the Bitcoin engine go from being a two-horse Renault to a Ferrari.
1. Lightning Network
Lightning Network is probably one of the most interesting proposals. propose a single solution for 3 problems Bitcoin currently has: Scalability, Instant Transactions, and Micropayments.
For this, it uses what is known as payment channels turned into smart contracts which theoretically could allow Bitcoin to scale to levels of millions of real and cheap instant transactions.
This proposal seeks to replace the maximum block size, which is currently fixed, by a dynamically controlled maximum block size that may increase or decrease with the change of mining difficulty through various network factors.
In this way, if the network needs it to be oversized at any given time, the block would increase, if it had excess it would decrease.
3. Invertible Bloom Lookup Table (IBLTs) and weak blocks
These improvements are aimed at optimizing the time it takes for blocks to propagate to miners.
Given the miners' concern about how scalability can affect their income, and even the disappearance of these, these proposals promise save up to 90% in bandwidth by optimizing the way information is propagated between nodes.
However, it is interesting to see how Kalle rosenbaum (who was part of the presentation) has serious doubts about the weak blocks proposal and its advantages and tries to distance itself from it after the public appearance it made at the 2015 presentation in Hong Kong.
“I have always doubted the weak blocks proposal, even though I did a joint presentation with Rusty Russell on this proposal (well, he did the weak blocks part, I spoke about IBLT, but I shared the stage with someone talking about blocks weak)"
Our sidechain It is another of the most famous concepts and that is linked, in some way, to the scalability of Bitcoin.
With the sidechains could be created block chains alternatives for specific use cases, with specific rules but fully connected to the Bitcoin blockchain, to which you would allow to reduce the load.
Technically it is not an improvement in scalability, since it does not help Blockchain to support any extra kb, but in practice they offer the possibility of processing more transactions, since side chains can be used for specific cases reducing the load of the main one.
We recommend the chapter dedicated to explaining this more closely: sidechains.
5. Segregated witnesses (Segregated Witness)
This is the most famous bet along the lines of "tidying up the house rather than pulling down the walls to enlarge it."
They look for smaller transactions and not bigger blocks. How do you do this? Reducing, through cryptography, the information that is added to each transaction.
This system, which claims to be able to double (and even in some cases quadruple) the number of transactions that would enter a single block without modifying its size, has already been implemented in the Bitcoin testnet.
It has finally been added to the latest version of the software and in the coming months the measurement results will begin to be seen.
We recommend the Bit2Me article that talks about Bitcoin Classic, Unlimited or the late XT, to know three alternative proposals to Bitcoin Core (the source code of Bitcoin and the reference program by other developers) with implementations of some proposals on scalability that, in addition, has an infographic on Segregated Witness.
Union make force
Although there are many proposals to improve Bitcoin's scalability (in factthere is an event that is taking place in different parts of the planet where dozens of ideas are proposed and anyone who wishes can come to propose their own), with this article you have been able to understand What is it the problem of scalability and how it is a matter of time before Bitcoin not only solves it but possibly reaches levels never seen before in other systems.
Of course, all these proposals could be implemented, and the combination of all or some of them can lead Bitcoin to higher levels of transactions per second than any other known payment system, and all this while maintaining distributed operations.
Some of the proposals are already being implemented, others will require the necessary consensus to move forward, but without a doubt the future that this technology holds is not only exciting but, for the first time, anyone can participate in the design of the global financial system with more repercussion of history.
We hope that the chapter has helped you to understand what is happening with this matter and to have enough tools to continue exploring each aspect that allows you to form your opinion.