Ethereum Sharding ELI5
Ethereum’s scalability sucks… but don’t worry, sharding is coming.
On April 30th, Ethereum co-founder Vitalik Buterin teased the crypto world over the release of “sharding” on the Ethereum network. Buterin’s playful tweet included no more than a short comment, a link to his github repository, and a perplexing image.
On the same day, he followed up that tweet with another that linked to his Reddit post on the subject of sharding:
Those who wish to read this “somewhat longer reddit post” will be led to the following (in Buterin’s own words):
This is all fine and dandy, but the average reader is likely to gloss over Vitalik’s Reddit post with minimal understanding and maximal confusion.
Put simply by the top-rated reply to Buterin’s lengthy post:
“I understood a few words!”
Vitalik Buterin is described by many as a super-human, and his extraordinary intelligence and experience puts him on another intellectual planet than most of us — especially in the crypto space.
After all, he began writing about Bitcoin in 2011 (when he was just 17 years old) and first described Ethereum in a white paper in late 2013 — long before blockchain tech and cryptocurrencies were “cool.”
Since we can’t all “Be Like Buterin” (catchy, I know…), I present to you…
Ethereum sharding explained like you’re five years old and too dumb to figure it out otherwise.
README: It would be great to jump right in and start talking about Ethereum sharding, but it’s important to have a basic understanding of Ethereum and blockchain technology before we do that. Since this is “Ethereum sharding explained like you’re five years old and too dumb to figure it out otherwise,” we’ll lay out the the basics to get everyone up to speed. These basics will help you understand the uniqueness of Ethereum (+ its potential for development) and why we feel that blockchain technology is poised to alter the workplace and our world built around it.
If you’re already pretty confident in your understanding of Ethereum and blockchains…
…feel free to skip down to our section specifically devoted to sharding (“Time to Shard”). And don’t worry about being an idiot and making the wrong choice… we’ll always welcome you back with open arms.
Blocks and Chains (may break my bones…)
Alright. Blockchain is certainly a “hot” term at the moment. We understand if you’re confused and/or frustrated by the ambiguity of it all. Trust us, we’ve been there. It’s why we want to help you understand this as clearly as possible. Since the goal here is to fill you in on everything like you’re a dum-dum five year old, we’ll start from square one: the blockchain.
Yes, we know… it sounds like a two-part word; there are “blocks” and “chains,” but what the hell’s the difference?!? Don’t worry. Calm down. We’ll work through this. :)
Let’s start with blocks. In the blockchain, a block is nothing more than a file. However, you can think of blocks as containers that hold some type of data, or the individual pages in a record book.
Inside the theoretical record book, each page can hold a limited amount of information, dependent on the number of page lines. For the sake of keeping things simple, we’ll assume everyone who keeps records has the same handwriting style and writes in exactly the same size. In other words, if you wrote the same exact individual letters and numbers on the page as me, they would fill up exactly the same amount of lines and space.
Given these assumptions, in the case of the blockchain, you can think of the number of page lines as the block size. On each of these pages (blocks), information will be recorded by different record keepers. Sometimes a record might need 3, 4, 5, or more lines, while other times, a record might not fill up a full line at all. The number of lines required isn’t important, but it is essential to understand each page has a limited amount of space that’s filled up with one or more records.
In blockchain terms, we refer to these individual records as transactions. On the Ethereum blockchain, three main transaction types are supported: 1) cryptocurrency (ETH) transfer, 2) smart contract creation, and 3) existing smart contract interaction. (If you don’t understand what we mean by smart contracts, don’t worry, we’ll cover them in a bit.)
Transaction data is publicly broadcasted to all users over a worldwide, peer-to-peer (P2P) network of computers (where the “peers” are computers connected to each other via the Internet). In blockchain speak, these computers are known as nodes, and they’re needed for validation of transactions on the network.
To stay within the scope of this article, we’ll save the details of cryptography, mining, and transaction validation for another day. (However, if you’re feeling especially curious and would like an answer now, there’s a growing community of passionate blockchain enthusiasts on BlockchainForums.info ready to respond to any and all blockchain-related questions you might have.)
Validated and verified transactions can be combined with other transactions to create a new block of data. (When you hear people discussing the blockchain, this is the type of “block” they’re talking about.) This new block can now be appended to the end of an already existing chain of blocks (hence, blockchain) in a permanent, unalterable manner.
The Ethereum network is formed on the basis of these ideas; so… before we go any further, it’s important that you have a basic understanding of how blockchains are structured. Feel free to have a look at the infographic below to clear up any uncertainties — and we’ll see you in the next section when you’re ready:
OK, but what’s so special about Ethereum?
Ethereum is more than just your average blockchain project. It’s an open-source blockchain-based platform/protocol. As a blockchain protocol, developers can use Ethereum to create and run decentralized applications (dapps) — applications that run on a P2P network, like a blockchain.
The internal structure of Ethereum makes all of this possible. Ethereum enables developers to write and implement smart contracts, which self-execute on the basis of preprogrammed conditions written to — and stored on — the Ethereum blockchain using its official token, Ether (ETH).
Smart contracts are powerful because they cut out middlemen, ensure integrity, and encourage creativity. Once coded into the blockchain, execution of a smart contract is triggered if and only if its specific preconditions are met — and all of this happens without the need for human intervention. Dapps use smart contracts to execute commands and retrieve information from the blockchain.
The ability to run dapps on the Ethereum blockchain opens up a wide range of possibilities for imaginative developers. However, to support large-scale dapps with millions of active users down the road, Ethereum needs to have a significantly more flexible network and larger blockchain capacity than the typical blockchain project — and it needs to solve some problems of its own before reaching these levels.
Time to Shard
Buterin himself has acknowledged that Ethereum’s “scalability sucks,” and applications like Cryptokitties have already exposed scaling vulnerabilities and inefficiencies.
Right now, individual nodes are required to process and verify all transactions in the Ethereum blockchain network. This is a significant scaling problem, because adding nodes requires slows down the network by requiring more transaction processing.
This same problem severely hinders many blockchain networks, but Ethereum’s case stands out because of their needs as a blockchain protocol. The blockchain is currently limited to processing around 7 to 15 transactions per second, while experts estimate it will need to scale that rate up by 100-fold to keep up with network demands. Thankfully, we can rest assured that the Ethereum team is focused on developing a scaling solution — and part of that solution is sharding.
To break this scaling bottleneck, the Ethereum team is working on splitting up its blockchain network into several sections called shards. Partitioning the blockchain would allow certain nodes to be assigned to different shards. Simply put, the nodes would only worry about verifying the transactions in their assigned shard, significantly reducing the amount of time needed to verify all of the transactions on the network.
Of course, when you look at Buterin’s Reddit post, it may seem we’ve oversimplified things a bit. However, that’s the general idea, and it’s good to know that Ethereum is progressing towards a more scalable platform.
There’s still no release date for sharding, but Vitalik’s tweets have us excited for the future support and implementation of large-scale dapps and smart contracts on the Ethereum network.
Sharding is coming. Maybe Casper and Plasma will catch us by surprise…