In the simplest of terms, scalability is a measure of a system’s ability to grow. In computing, for instance, a network or server can be scaled to handle more demand through different methods.
In cryptocurrency, scalability refers to how well a blockchain can grow to accommodate more users. More users means more operations and transactions “competing” to be included in the blockchain.
Ethereum proponents believe that the next iteration of the Internet will be built on the platform. The so-called Web 3.0 would bring about a decentralized topology characterized by a lack of intermediaries, a focus on privacy, and a shift towards true ownership of one’s own data. This foundation would be built using distributed computing in the form of smart contracts and distributed storage/communication protocols.
To achieve this, though, Ethereum needs to massively increase the number of transactions it can process without harming the network’s decentralization. At present, Ethereum doesn’t limit transaction volume by restricting the block size as Bitcoin does. Instead, there is a block gas limit – only a certain amount of gas can fit into a block.
For instance, if you had a block gas limit of 100,000 gwei and wanted to include ten transactions with a gas limit of 10,000 gwei each, that would work. So would two transactions of 50,000 gwei. Any other transactions submitted alongside these would need to wait for the next block.
That isn’t ideal for a system that everyone is using. If there are more pending transactions than available space in a block, you soon end up with a backlog. The gas price will rise, and users will need to outbid others to have their transactions included first. Depending on how busy the network is, operations could become too expensive for certain use cases.
The surge in popularity of CryptoKitties was an excellent example of Ethereum’s limitations on this front. In 2017, the Ethereum-based game prompted many users to make transactions to participate in breeding their own digital cats (represented as non-fungible tokens). It became so popular that pending transactions skyrocketed, resulting in extreme congestion of the network for some time.
It seems that merely upping the block gas limit would alleviate all of the scalability problems. The higher the ceiling, the more transactions that could be processed in a given timeframe, right?
Unfortunately, that just isn’t feasible without sacrificing key properties of Ethereum. Vitalik Buterin proposed the Blockchain Trilemma (visualized below) to explain the delicate balance that blockchains must strike.
By choosing to optimize two out of three of the above characteristics, the third will be lacking.
Blockchains like Ethereum and Bitcoin prioritize security and decentralization. Their consensus algorithms ensure the security of their networks, which are made up of thousands of nodes, but this leads to poor scalability. With so many nodes receiving and validating transactions, the system is much slower than centralized alternatives.
In another scenario, the block gas limit could be lifted so the network achieves security and scalability, but it won’t be as decentralized.
That’s because more transactions in a block results in bigger blocks. Still, nodes on the network need to download and propagate them periodically. And this process is intensive on hardware. When the block gas limit is increased, it gets more difficult for nodes to validate, store, and broadcast blocks.
As a result, you would expect nodes that couldn’t keep up to drop off the network. By continuing in this manner, only a fraction of powerful nodes would be able to participate – leading to more centralization. You might end up with a blockchain that’s secure and scalable, but it wouldn’t be decentralized.
Lastly, we can imagine a blockchain that focuses on decentralization and scalability. To be both fast and decentralized, sacrifices have to be made when it comes to the consensus algorithm used, leading to weaker security.
In recent years, Ethereum has rarely exceeded ten transactions per second (TPS). For a platform aiming to become a “world computer,” this number is surprisingly low.
Scaling solutions have long been part of Ethereum’s roadmap, though. Plasma is one example of a scaling solution. It aims to increase the efficiency of Ethereum, but the technique may also be applied to other blockchain networks.
For all of its potential, Ethereum currently does have considerable limitations. We have already discussed the issue of scalability. In short, if Ethereum aims to be the backbone of the new financial system, it needs to be able to process a lot more transactions per second. Given the distributed nature of the network, this is an immensely difficult problem to solve, and Ethereum developers have been thinking about it for years.
For one thing, to keep the network sufficiently decentralized, limits must be enforced. The higher the requirements to operate a node are, the fewer participants there will be, and the more centralized the network becomes. So, increasing the number of transactions that Ethereum can process could threaten the integrity of the system, as it would also increase the burden on the nodes.
Another criticism of Ethereum (and other Proof of Work cryptocurrencies) is that it’s incredibly resource-intensive. In order to successfully append a block to the blockchain, they must mine. To create a block in this manner, though, they must rapidly perform computations that consume huge amounts of electricity.
To address the above limitations, a major set of upgrades have been proposed, collectively known as Ethereum 2.0 (or ETH 2.0). Once fully rolled out, ETH 2.0 should greatly improve the network’s performance.
As mentioned above, each node stores a copy of the entire blockchain. Any time it’s extended, each of the nodes must update, which consumes their bandwidth and available memory.
Using a method called sharding, this may no longer be necessary. The name refers to the process of dividing the network into subsets of nodes – these are our shards. Each of these shards will process their own transactions and contracts, but can nonetheless communicate with the broader network of shards as required. As every shard validates independently, it’s no longer necessary for them to store data from other shards.
Sharding is one of the most complex approaches to scaling that requires a lot of work to design and implement. However, if successfully implemented, it would also be one of the most effective, increasing the network’s throughput capacity by orders of magnitude.
Ethereum Plasma is what we call an off-chain scalability solution – that is, it aims to boost transaction throughput by pushing transactions off of the blockchain. In this regard, it bears some similarities to sidechains and payment channels.
With Plasma, secondary chains are anchored into the main Ethereum blockchain, but they keep communication to a minimum. They operate more or less independently, although users still rely on the main chain for settling disputes or “completing” their activities on the secondary chains.
Reducing the amount of data that nodes must store is vital to Ethereum’s successful scaling. The Plasma approach allows developers to outline the functioning of their “child” chains in a smart contract on the main chain. Then, they’re free to create applications with information or processes that would be too expensive to store/run on the main chain.
For a comprehensive introduction to Plasma, check out What Is Ethereum Plasma?
Rollups are similar to Plasma in the sense that they aim to scale Ethereum by moving transactions off the main blockchain. So, how do they work?
A single contract on the main chain holds all the funds on the secondary chain and keeps a cryptographic proof of this chain’s current state. Operators of this secondary chain, who put down a bond in the mainnet contract, make sure that only valid state transitions are committed to the mainnet contract. The idea is that, as this state is maintained off-chain, there’s no need to store the data on the blockchain. The key differentiator of rollups from Plasma, however, lies in the way that transactions are submitted to the main chain. Using a special transaction type, a large number of transactions can be “rolled up” (bundled) together into a special block called a Rollup block.
There are two types of rollup: Optimistic and ZK Rollup. Both guarantee the correctness of state transitions in different ways.
ZK Rollups submit transactions using a cryptographic verification method called a zero-knowledge proof. More specifically, an approach to it called a zk-SNARK. We won’t get into the details of how it works here, but here’s how it can be used for rollups. It’s a way for different parties to prove to each other that they have a particular piece of information without revealing what that information is.
In the case of ZK Rollups, this information is state transitions that are submitted to the main chain. A great advantage of this is that this process can happen almost instantly, and there’s virtually no chance for corrupted state submissions.
Optimistic Rollups sacrifice some scalability for more flexibility. By using a virtual machine called the Optimistic Virtual Machine (OVM), they allow for smart contracts to run on these secondary chains. On the other hand, there’s no cryptographic proof that the state transition submitted to the main chain is correct. To mitigate this issue, there’s a slight delay to allow users to challenge and reject invalid blocks submitted to the main chain.