What is sharding and why it is needed?
Ethereum is one of the most popular dApps playforms. And at the same time it processes less than 20 transactions per second. That is the reason why the fee and the transaction time are so high. The most important reason of this limit is that the mechanism works so that every transaction have to be checked by every Ethereum node. For the last five years there were some suggested decisions and one of them is sharding.
So, sharding is a method that intends to increase blockchain throughput
The most simple model
The most simple way to implement this is to separate one ‘big’ blockchain to many ‘smaller’ ones. From now, every different blockchain is called “shard”. Each shard is processed by independent nodes, that check transactions and add blocks. So, each shard services some contracts and adresses.
This is quite a simplified model, but it’s enough detailed to show some interesting problems and subtleties.
The first problem is that if we have x shards istead of one, every single shard is x times less reliable than the first one, because separate shards have separate nodes and there are some subtleties with nodes appointment. The result of this is that random numbers participate all supposed sharding designes. But getting random numbers from a system with participants you don’t completely believe is not a finished solution of the problem.
Another subtletie is that sharding also has limits. Sometimes sharding is presented as a solution that can scale infinitely with the number of nodes. But the central blockchain systems also have shard quantity limits because the central blockchain itself is not sharded. That means that its throughput is limited by the every node throughput limits. But the good news is that though we don’t know how many shards the blockchain is possible to be separated in, we aren’t close to that limits.