What is Sharding?
Tags: Blockchain Development, Jaxnetwork, Blockchain Technology, Sharding, Jaxnetworkblockchain101

Sharding is a type of database partitioning that breaks up large data sets into smaller, more manageable pieces, called ‘shards,’ and stores them individually.

With regard to blockchain, every node has to store all the information on the blockchain locally and process all incoming transactions along with recording the data on every copy of the ledger on the network. This technique provides blockchain with its robust security but also saddles it with a major handicap. As a blockchain grows, so too does the amount of data stored in each node within the network. Because such large data sets must be agreed upon and recorded on every node in the network, there are bottlenecks that severely limit the rate at which transactions can be validated. This is the scalability issue faced by many popular blockchains today.

One solution to this bottleneck is sharding. When applied to blockchain, sharding splits the blockchain network into smaller shards which are then run individually in parallel with each other. If a node needs to know about transactions or blocks it doesn’t store, then it finds another node with the information it needs.

Currently, the Bitcoin network can only process 7 transactions per second, but if there were 1000 Bitcoin networks running in parallel with each other, it would, in theory, have the capacity to process up to 7000 transactions per second. This is, in essence, the sharding fix to the scalability issue.

On paper, sharding seems like an obvious fix to the scalability issue plaguing blockchain networks. There are, however, a couple of limitations to this technique:

Individual shards are weak. Blockchains that rely on a Proof of Work-based consensus protocol are effectively invulnerable to attacks by bad actors who wish to overwhelm the network with their computing power and manipulate transactions for personal gain. This is the infamous “51% attack.” The reason for this is because the network is so large and the computing power that needs to be wielded by any one entity to execute this attack is so massive as to be virtually impossible. However, when the greater blockchain network has been split into smaller, individual shards, the amount of computing power needed to take over a shard is significantly lower. This means that simple sharding without any kind of safeguards for individual shards is very insecure and vulnerable to attacks. The vulnerability can be mitigated by centralization. Through the consensus protocol ‘Proof of Stake’ validators on the network stake a certain amount of currency in order to be picked as a validator and earn rewards upon validation. Sharding is possible and much less vulnerable through this method because bad actors who choose to validate bad blocks are severely penalized and lose a very significant portion of their staked sum. This means that individual shards, while theoretically open to attacks, are unlikely to be attacked by bad actors for personal gain, as such actors would lose more than they would receive back if they attack the shard. This safeguard allows for individual shards to operate, but decentralization is sacrificed for scalability — something that many blockchain purists are opposed to.

There currently exist some so-called ‘blockchains’ that run on a Proof of Stake consensus protocol which can process a large number of transactions per second. EOS, a blockchain launched in 2018, claims it is capable of processing up to 50,000 transactions per second. However, EOS only has 21 block producers, making it highly centralized.

Ethereum, as well, launched its Ethereum 2.0 update in August 2020, which aims to convert the existing Ethereum network from a Proof of Work based consensus protocol to Proof of Stake. The Ethereum blockchain as it exists now will subsequently become a shard on the Ethereum 2.0 blockchain. Again, this sacrifices decentralization for the sake of increased scalability through sharding.

Jax.Network offers a solution to this problem. Through our protocol, we ensure that decentralization CAN be preserved while increasing the scalability of a blockchain network. Jax.Network uses pure state sharding — meaning transactions, accounts and validators are distributed between shards, and verification of a certain transaction thus does not require any knowledge of preceding transaction history in other shards. It is a novel and effective solution that is currently in the final stages of development and testing. Read more about Jax.Network’s pure state sharding solution and its benefits here.