Sharding: The Solution to Ethereum's Scalability Problem?
Last Updated: 1st November 2018
There really is no questioning the innovative nature of the Ethereum blockchain. Its smart contracts functionality has facilitated the growth of decentralized applications (DApps) and an Initial Coin Offerings (ICOs). However, despite the immediate success that Ethereum has received so far, there are concerns that the Ethereum blockchain is not scalable, making the objective of widespread mainstream adoption a difficult one to achieve. The technique known as sharding may prove to be a viable solution to Ethereum's scalability issue.
A Problem of Scalability
Currently, Ethereum is capable of processing around 5 – 6 transactions per second, however, this is well behind VISA, which processes around 2000 transactions per second. The reason behind this low volume of transactions that are being processed is due to the manner in which transactions are validated on the Ethereum blockchain. Currently, fully participating nodes on the network must maintain a copy of the Ethereum blockchain, and process each transaction made on it. Although this setup provides vigorous security, it is at the expense of scalability, as this labor-intensive setup means that the number of processed transactions on the network can never exceed that of a single node. There have been a number of suggestions that have been made in tackling the scalability problem, of which have included the increasing of Ethereum’s block size limit.
Increasing each block size on the Ethereum blockchain would theoretically increase the number of transactions processed per second, as more transactions would be capable of being included in a single block. However, this proposal also has some significant drawbacks. If block sizes are increased and more transactions are processed, the requirement for storage and computing power of fully participating nodes on the network will also rise alongside the blockchain’s growth. As a result, there will be a point at which it will not be feasible for nodes running on consumer hardware to carry on processing transactions. Instead, the network would increasingly rely on a few nodes that are capable of handling transactions. This leads to the risk of centralization, as the blockchain would effectively only be run by a small number of nodes e.g. supercomputers.
Sharding as a Solution
Another proposed solution in tackling Ethereum’s scaling problem is implementing what is known as ‘Sharding’. Sharding is a scaling technique that derives from traditional database sharding, where a database is broken down into several pieces and placed in different servers. In the context of blockchain, the Ethereum blockchain would be separated into different shards and stored by different nodes on the network. Each node would process only a small part of the blockchain, and would do so in parallel with other nodes on the network. The objective of sharding is to substitute the requirement that nodes store an entire copy of the blockchain and process every transaction on it. Instead, sharding allows nodes to store a subset of the blockchain, and verify transactions related to that subset. This would allow for significantly more transactions to be processed on the Ethereum blockchain, with the amount of transactions capable of being processed rising as the network grows. However, implementing sharding to the Ethereum blockchain can also be a complicated affair. Because transactions made on the blockchain can relate to any part of the previous version of the blockchain (before the blockchain is updated by adding another transaction), it is challenging to ensure that nodes process transactions in parallel. Furthermore, because nodes are not meant to be processing the entire blockchain under sharding, a method would have to be implemented that decided which node processes a shard.
The level of innovation that the Ethereum blockchain has brought us so far is constrained somewhat by its inability to scale for widespread adoption. However, it is encouraging to see that serious discussion is being had in order to tackle the problem. The sharding technique is an interesting proposal to say the least, and may prove the correct solution to Ethereum’s scalability issue. Whatever the case, it is only with the passage of time that the answer to this issue will be made clear.