How Will Ethereum Scale?
Though we have been talking a lot about the benefits of the Ethereum blockchain and how it can completely transform certain industries, one problem which can hinder its growth significantly is scaling.
Ethereum is a decentralized app platform for developers to make apps that run on the Ethereum Blockchain. Developers have always known that the problem of scalability will haunt them in the times to come. This expectation quickly turned into reality towards the end of 2017 when a decentralized game called CryptoKitties caught so much attention that it slowed down the Ethereum network.
Recently, Etheremon has also shifted from Ethereum to Ziliqa to provide faster transactions and low transactions fee to its users.
Moreover, if Ethereum wants wide adoption and touches the lives of millions of people, it has to scale from 13-15 TPS to around 100,000 TPS.
The reason scalability is so hard for Blockchain is that all transactions on the network are to be verified by various nodes through consensus algorithms like Proof-of-Work. The size of each and every block is fixed which means that to store a higher number of transactions inside each block the block size has to be increased.
Increasing the block size is not a sustainable solution since a larger block would require more computational resources for mining which will restrict mining for only large ‘full’ nodes that can afford such computational powers. If the number of nodes on the network decrease due to this reason, the network becomes less decentralized and less secure.
There are several solutions for scaling and we can go through them one-by-one:
Sharding is essentially a way to parallelize the computation and validation of blocks in a blockchain.
In this system, nodes will not store the complete state and transactions of the whole Ethereum blockchain but only a subset of it. Thus, the blockchain is divided into “shards” which is a smaller network of nodes that validate transactions happening within their shard.
It is similar to a technique related to “database sharding” wherein several pieces of a database are put on different servers.
Each shard contains “collators” that put together information about that shard known as “collation.” A block containing various collations from the network is then added to the blockchain.
Hence, by validating transactions simultaneously instead of sequentially, the blockchain becomes more scalable.
Sharding may appear to solve the problem of scalability, but it introduces the problem of decreased security of the network.
By dividing the blockchain into shards, the nodes of a particular shard may be able to join hands to gain 51% of the consensus power, thus, giving them the ability to forge fraudulent transactions.
The reliance of shards on other shards also poses a problem and makes it difficult to get information from other nodes present in a different shard.
Raiden, unlike sharding, is an off-chain solution to solve the problem of scalability.
In this system, two nodes can open a payment channel between them and carry on transactions without broadcasting them onto the main blockchain. These transactions or “messages” are signed by both the nodes to ensure immutability
Raiden is particularly useful to enable nodes to spend Ethereum as a part of daily transactions such as getting a coffee or buying grocery items. This is feasible with Raiden as the gas prices are significantly lower.
Once one of the nodes in the payment channel decides to close the channel, the final result is broadcasted on the main blockchain as one single transaction. Thus, if you bought $100 worth of coffee in 10 visits to the shop, you can upload it is one transaction of $100 rather than 10 transactions of $10 each.
Plasma is again an “off-chain” approach to solve the problem of scalability but it is quite different from the Raiden network as it facilitates the creation of ‘child’ blockchains which are attached to the main blockchain. These child blockchains can further be divided into child chains and so on. The more children are there in the network, the more will be the speed of Ethereum to handle transactions.
In simple words, it is a hierarchical structure created by smart contracts which enable various side-chains to function simultaneously and transfer information to the main blockchain only periodically.
Complex transactions can thus be performed in the child chains so that the main chain is not required to be involved to validate each and every transaction.
This was a brief description of the various solutions which have been proposed in order to scale Ethereum and trigger a wide scale adoption and allow developers to make more robust applications.