BLOCKCHAIN SCALABILITY BY BLOCKCHAIN CLUSTERING8 Nov 2017.
Blockchains do not scale, however, a cluster of blockchains will. Let's use a cluster of blockchains with Ethereum.
Since its invention, blockchain technology was subjected to numerous tests, before it finally became adopted.
With the adoption, however, came a new problem for Bitcoin, Ethereum and other high demand currencies.
When large volumes of people began to use cryptocurrencies in their daily life, and build businesses on top of them, transaction fees during peak hours skyrocketed.
For instance, an investor in the BAT ICO included a $2,220 transaction fee in order to secure his investment in a project.
This is a very serious problem. If we don't find the solution to blockchain scaling, cryptocurrencies will not be able to replace fiat money.
In Ethereum , solving the scalability problem has been proposed in many different ways:
- Increase gas limit
- Proof of Stake
- Plasma, etc...
However, all these proposals either delay of the inevitable congestion, or are a work in progress. By the time these proposals are functioning enough to solve the problem, our businesses (based entirely on cryptocurrencies) are going to be contained by the transaction limits of the current Ethereum's network. Obviously, we don't want this.
Here, we are going to explain how Ethereum can be scaled to true infinity, with minimal effort. But, first, let's explain why blockchains do not scale, why the ideas to scale them, are not going to be as successful as the idea of the blockchain itself. You will then understand, that the only way to go (at least for now), is the method we are proposing.
How does blockchain work?
We have the ledger which is called blockchain, and in this ledger each page is a block. We also have a lot of people (nodes), who are trying to gain permission to write transactions on the current page of the ledger. According to the rules, one person (miner) is elected. This person obtains permission to feed transactions into the blockchain, blockchain executes them, and rewards the miner with some coins.
So, what is the problem with this process, and why can't it be scaled? The problem is, that the algorithm to create the chain of blocks requires that only one page of the ledger (block) is written at a time. It doesn't matter how many nodes the network contains, 1 million or 10, only one can write.
Imagine a person, (Mr. Blockchain), sitting at desk writing transactions. Then, imagine a line of one million people, wanting to make a transaction. This is what Ethereum's scalability problem looks like, in layman terms. Now, Mr. Blockchain, is the only one who can write transactions, and distribute the money between accounts. His position is permanent and he cannot be fired. If you dismiss Mr. Blockchain (i.e. replace it with another technology), you risk losing your money, because the person who replaces him, is not yet known as reliable.
Even if those millions of people make private agreements on how they are going to distribute their money (i.e. Lightning network, Raiden or Plasma), they will have to join the other people standing in line, to be attended by the Mr. Blokchain at some point in time. So, no, you can't escape from Mr. Blockchain's monopoly, he is the only one who can touch our money, and he always works alone. You can improve Mr. Blockhain's strength, give him superabilities to write more transactions per second, and you can accelerate his work by fine tuning the process, but this won't be enough to scale infinitely. Mr. Blockchain is already working at the speed of light, but even this is not enough to attend everyone's request. If you were able to create multiple Mr. Blockhchains to write ledger pages, then you would have scaled blockchain technology, infinitely, but since each subsequent page depends upon the previous one, there is no way to speed it up.
In computing science, sometimes we use the term "bottleneck", to describe the problem, and this is how it looks, graphically:
The process of creating the blockchain is serial by design, and it can't be parallelized without destroying the integrity of the system. This is why blockchains can't be scaled. Anyone, who is saying that he is going to create a scalable blockchain algorithm is going to be severely judged if he doesn't deliver. Anyone who is saying that he is going to scale blockchain by off-chain transfers, is taking on a big responsibility by experimenting with user's money on an unknown and yet untested technology which, by the way, cannot call itself blockchain anymore.
In this article, we are not going to enter the debate about proposed solutions to scale Ethereum. We just wanted to point out, that scaling blockchains is a huge problem, and it is not as easy as it appears. If you want to review how this debate is developing, check the References section at the bottom of this article. Some of the authors have even posted mathematical proof, as to why scaling transactions with and off-chain network won't work as a peer to peer network, but, this subject is outside of the scope of this article.
So, now that we know that blockchain's scalability is limited by the algorithm itself, how are we going to solve this problem? The same way it was solved back in the 90s when desktop computers started spreading around the world. Those computers were 16, 32, 100 Mhz in speed, and they were very slow, pretty much like Ethereum's Virtual Machine right now. So, how did people at that time increase computing capacity? They invented computer clustering!
The first cluster was built by employees of NASA, and was called the Beowulf Cluster. They connected commodity-grade computers to a network, and provided software to execute tasks in parallel. This idea evolved into something, that today we call HPC (High Performance Computing) and it is now being used to create supercomputers , systems composed of many commercial grade computers connected together and executing different tasks, usually for scientific research.
So, how exactly will AfterEther solve the blockchain scalability problem by clustering?
This is how:
We are going to run multiple networks of Ethereum.
We're going to call this method, Blockchain Clustering, or Currency Clustering, as an alternative non-technical term.
A peer to peer network working with a single blockchain will be called currency-node in our cluster.
Right now, the instance #1 of our currency has been already set up, it is called AfterEther (or AfterEther currency-node #1). As the network is not yet congested, no action is required. The current execution of transactions is fast. But, as soon as users begin to complain about transaction fees, we are going to launch a totally new blockchain, and it is going to be the currency-node AfterEther #2.
Why do we have to put end of life on the blockchain? Because blockchains become larger and larger over time and
thus, difficult for new peers to join. We will be discontinuing AfterEther #1
and archiving it. Now, AfterEther #2 will be the current version of the currency, and it will be actively used to execute transactions.
To those who don't know how future contracts operate, we will explain. A crop of wheat is going to be produced in 2020, so the farmer goes to the Exchange and creates a contract to deliver 5,000 bushels of wheat. This contract is priced lower because the delivery is going to happen far into the future and nobody needs this wheat right now, low demand - low price. As the delivery date approaches the contract increases in price.
Something similar is going to happen with our blockchains. The current blockchain will be priced at premium, future blockchains will have a lower value because simply there is not enough volume to drive the price higher. So, to migrate from one blockchain to another, you just sell the currency of the current blockchain, and buy the currency of the next blockchain. You don't even have to create a wallet, because the addresses are going to be the same. If you do this with anticipation, you will even profit from the rise of the currency before it becomes the active blockchain.
This mechanics is called contract rotation , it is very well known and used at trading exchanges, so, we are not inventing anything new. Blockchains will work perfectly, handling them in a manner of a futures contract. And voila, we have just solved the problem of blockchain scalability without writing a single line of code!
Now, if one blockchain over a certain period of time wouldn't be enough to cover user demand, we could launch multiple blockchains in one cycle, so there would be 2,3,4... networks running in parallel, If, each network delivers 6 transactions per second, 2 networks are going to deliver 12 transactions per second and so on. To manage Visa volume of transactions, which is around 56,000 transactions per second at peak hours (2,000 on average), we would need to set up 9,333 networks of Ethereum. Yes, it looks scary, but in supercomputing, clusters with such volumes of nodes is normal. Such clusters can be created simply by putting online two Ethereum's networks, every day during the next 13 years. It would be our maximum, and it looks realistic.
As a DApp developer, you would install your smart contract on the currency-node that has the lowest transaction rate. If the transaction capacity reaches its limit on that node, you would migrate to another node. Each node will have different price, so you would only have to adjust the value of your token and that's it. If your DApp needs large amount of transactions you just use multiple clusters, and tell users to pick one of them to make the payment. Think of AfterEther as a server hosting company, where each currency network would be your "server" to run DApps. Picking the network with the lowest load average will be possible with dashboard software, like the ones used for monitoring.
And if you don't like the idea of having different prices per blockchain, we can create a single index for all the blockchains by averaging the price, something similar to US Dollar Index, where it is measured as a function of another 5 pairs. But, this is a discussion for a later date.
At first, our solution appears to be patched. Having one currency for everybody seems to be the ideal way. But note that clustering is a common technology in computing and it is now widely used. There is simply no hardware capable of writing 56,000 transactions per second on a single node. When the problem can't be solved on a single computer (and Ethereum is a computer, but virtual), it has to be distributed between many computers. Dividing has been known as a successful strategy for ages, and it is not going to fail us.
In our opinion, inventing a scalable solution for a single blockchain is as impossible, as inventing a perpetual motion machine in the 17th century, which was confirmed by physicists later, as indeed impossible. It seems that for now, blockchain technology is in a similar situation. You can try one algorithm after another, but after conducting your experiments, you will discover that it doesn't work. The road to blockchain scalability through scaling a single blockchain is closed. Multiple parallel blockchains is the way to go. It is simple, it is reliable, it is easy to implement, it is just the pill that we have to swallow right now.
Then, why wasn't our solution implemented earlier if it is so easy to do? Because of inflation. By splitting Ethereum, into 2 networks, you will lose the value on the first blockchain, and its currency would depreciate. On the other (new) blockchain, it would start appreciating. It is like you instantly apply a 100% inflation. People would sell Ethers off the first network, and buy Ethers on the second network expecting to make profits on the rise in price. Nobody wants to lose money, so this solution is a no-no for a currency that already has high valuation. But for us, it is not an issue. We are a (yet) unknown project, that was born two weeks ago, and we have nothing to lose. Instead, we have a lot to win when Ethereum's users start seeking cheaper transaction fees. This is why neither Bitcoin nor Ethereum are going to use this strategy to scale their chains. But you should not see our project as a threat to Ethereum's price trend. Because it has already limited itself by the scalability problem. How can the price go higher if there is no room to grow? You would probably see a price increase (if any) on the linear scale, but not on the logarithmical.
Now, just for clarity. We are not saying that we are going to create copies of Ethereum, one after another, and flood the market with cheap copies of an Ether-like currency. We have a commitment right now, to grow our first network until it is widely accepted and reaches considerable transaction level. If no transaction bottleneck exists, neither are we interested in devaluing our network #1 by creating network #2. But, eventually network #1 will become congested, and we will have to create a network for the cycle 2. Whether you like it or not, there is no other way to scale right now.
Another important point, about speculative money, which can flow into our nodes of networks of Ethereum copies. The presence of speculators is not a bad sign for currency, but a good one. It shows that the currency is valuable and that it has potential for appreciation. The speculators also add liquidity to financial instruments. Thanks to speculators, you can sell or buy the instrument at any time and you don't have to pay large spreads. The speculators also add stability to the price, by reducing volatility. When the price of the instrument drops, they buy dips, when the price rises, they sell and the price falls. The speculators, sort of, smooth the curve of fluctuation of the currency in times of low or high demand. Speculative money is healthy for any financial instrument, and it is always welcomed in financial markets.
This is why we believe that speculative money is not going to do harm to our network-nodes, on the contrary, it is a big help. This money will prepare the blockchain in the beginning, making it computationally stronger , rise the price and this way, make the network ready to be used by users.
This is basically all about our strategy to scale Ethereum in the future. While all the proposals to do this are only promises on paper, our solution is real , it has been already implemented and can be used right now!
Thank you for taking the time to read, and have a nice day!