The EOS architecture was born ready for horizontal scaling.
Today I learned from the LiquidEOS BP that what EOS calls “sidechains” actually means shards: https://medium.com/@liquideos/what-the-ram-c3fa8f6c228a .
If you don’t know what “shards” or “sharding” means, or “horizontal scaling,” it’s really simple.
Say, if you have one computer mining Bitcoin, you earn X. If you have two computers mining Bitcoin side-by-side, you earn 2 times X. And so on, until you hit some limit that is external to the architecture of Bitcoin mining at, say, 100 computers, where your are earning 100 times X but now your house’s circuit breaker can’t take any more computers. Each individual computer is a “shard” or slice of your beautiful (and hot, expensive and wasteful) Bitcoin-mining crystal. Your mining architecture scales “horizontally” because you can just purchase another computer and place it on the “side” (“horizontally”) to your previous computer. So, the architecture and algorithms of Bitcoin mining scale “horizontally.”
If you are following the Ethereum scaling debate, you know that its network can’t process more than about 30 transactions per second, and that they are looking for a “sharding” solution. What they want to do is split the community of 10,000 or so Ethereum miners into something like 100 blocks or “shards” of miners with 100 miners or so into each block. Then, each one of the 100 blocks keeps track of only 1/100th of the blockchain, as if they were separate worlds or separate chains. However, there’s a bit of code that stitches those shards together, allowing people to send ETH between them and allowing contracts to call each other across the shards.
In other words, shards scale “horizontally.” That’s how you like things to scale. Each additional shard is another 30 TPS for the network. The more shards, the better.
Sharding a P2P network while keeping it trustworthy is a very, very hard Computer Science problem. That’s why Vitalik Buterin and Vlad Zamfir are struggling with it. That they are actually making both scientific and engineering progress with it–simultaneously–is nothing short of a feat. It’s an amazing project and they may have it deployed around 2020, which would be phenomenal for Ethereum. With something like 100 shards, they would have the 30 TPS limit on each shard, thus scaling the network by the number of shards (i.e. around 100 times), thus reaching something like 3,000 TPS–matching the single-shard EOS mainnet of 2018.
Now, to the concept of “sidechains.” The term “sidechain” is a ridiculed term in the crypto community that essentially means “vaporware.” Before the hype of “Lightning” token transfer channels, the Bitcoin people’s favorite explanation for scalability was the “sidechain.” “Everything will be a sidechain to Bitcoin!,” they declared. A sidechain essentially meant that a business would create a blockchain that for no good reason whatsoever would be subordinate to and dependent on the Bitcoin blockchain. A sidechain would be born “tokenless” and would have to beg for people to transfer their BTC tokens–The “True Tokens Of The Internet”–into itself. Needless to say, that never happened. If you have a chain, you have your own token. The simulator is the real asset, not the simulation. Simulations are not scarce.
Enter EOS. The EOS DPoS architecture was announced with a “sidechain” scaling solution which would allow it to reach “1 million transactions per second or more.” Immediately I thought that Block.one meant each “sidechain” would be its own DPoS network, similar to how Bitcoin “sidechains” would be each their own network operated by their own nodes (even if there would be overlap between Bitcoin node operators and “sidechain” node operators–that would not be a requirement).
However, it turns out that the term “sidechain” is being appropriated by Block.one from its unintended but still original meaning of “hand-waving scalability away.” EOS sidechains are literally chains “on the side” of the “main” chain: they are run by computers by the same EOS mainnet BPs, at the exact same locations. That’s actually horizontal scalability. That’s actually sharding. The fact that there is a “main” shard and “other” shards that use the “main” shard as a hub for communicating with each other is just a gimmick. In the business sphere and in the usability sphere (as experienced by users), we are dealing with the economics and the user interface of sharding, respectively.
EOS sidechains are shards. The “main” shard has a worst-case scenario cost of 1 hop to reach any other shard, while the “side” shards have worst-case cost of 2 hops. It’s like running one of those early P2P multiplayer PC games, where the guy “hosting” the game has less lag than the other players. But otherwise the game is equally playable and nobody really cares whether they are the “host” or not. In the EOS “sidechain” scheme, nobody really has to care whether they are hosted in the “main” chain or in a “side” chain. Sure, there is some actual extra cost in latency and bandwidth, but is that enough to justify investing in main shard RAM? Probably not for the vast majority of use cases.
Block.one should really consider dropping “sidechains” from their marketing and use the term “sharding,” because the latter actually better describes what they are doing. Side-chaining is an implementation aspect and should be left for developers to deal with.
In short, all that struggle that Ethereum is going through to scale from 30 TPS to 3,000 TPS in two years is something that the EOS roadmap has in the bag. Sharding the EOS mainnet is planned and is not a “very, very hard” computer science problem. It’s more of a business and IT task. And that task will bring EOS from a single-shard 3,000 TPS to a 100-shard 300,000 TPS network (and somewhere between 12.8 TB to 100 TB of RAM, if nothing else changes) in something like the same two years.
LiquidEOS clarified for us that EOS “side chains” are run by the same BPs that already run the “main chain.” That’s sharding: there’s no need to “sell” each “sidechain” to a different business sponsor or community. That’s horizontal scaling. That’s a great clarification, and that’s great news to me.