Scaling Kitties on Ethereum
In the past few days, Ethereum broke another record; it traded more than one million Kitties – and reached a new transaction peak of 700,000 a day. Ethereum is knocking on capacity limits, and scaling solutions are desperately needed.
Last week the world’s first successful non-monetary blockchain application was born. It is about buying, breeding, and trading kitties.
CryptoKitties is a game with a cute design on the surface. Inside, it succeeds in merging a web-interface with Ethereum’s smart contracts. As it does this in an unprecedented usable way, it has become a huge success. It created 25 percent of all transactions on Ethereum made in the past few days and pushed the daily transaction volume to a new all-time high with more than 700,000.
You could say, good, Ethereum is used. Keep it up, more is more, period. But many are also worried. A single successful dapp pushed Ethereum to its limits. The high traffic clearly has some downsides.
For many users, Ethereum has become less comfortable to use. The network reached its gas limit, which increased the confirmation time for transactions. A gas market emerged, which made transactions and contract executions more expensive. For example, the price for breeding your Kitten has gone from 0.002 to a whopping 0.015 ether, which equals around $6. Just for executing a function on a toy contract.
Full Nodes, Minimal Nodes
However, the requirements for running a node are increasing, too. A fully synced Geth node needs more than 400 GB hard disk for now, and it grows by 3 GB each day. If the traffic keeps growing, it will need just a few months, until the full blockchain reaches a terabyte. Even in light mode, Geth needs more than 30 GB of space.
If you run Parity, you need less space. But you will notice, that syncing eats most traffic of average internet connections. Sometimes it can even shut down the connection by bursting it with data, as repeatedly experienced by the author himself. Also, it can slow down computers with less than 16 GB memory. Being a full node in the Ethereum network is becoming more and more exhausting, as it eats a lot of system resources and bandwidth.
Indirect nodes, like Metamask, which is extensively used by CryptoKitties, could be a solution for users. Metamask and MyEtherWallet need insignificant system resources. They connect with a full node. While the user interface is puristic, these nodes are able to read and execute most smart contracts fully. They enable you to fully use Ethereum while needing nearly none of the system resources.
However, CryptoKitties even pushed Metamask to its limits. Some reported problems with the gas prices after the network increased them to 25 Wei. Many users experienced an error, that funds are not sufficient, while they had enough ether in the wallet. It seems this error was caused by problems with the full nodes Metamask used to enter the network. Some reported that it helps to point Metamask to some other public nodes; however, the author only got his transactions done by using his own Parity nodes as the server for Metamask. And this should not be the idea of this setup.
The wildly successful CryptoKitties dapp demonstrated a few things; that it is possible to build a dapp which integrates a website with smart contracts while providing a comfortable user interface. The game however also raised awareness about Ethereum’s capability to scale. A single successful dapp was enough to reach the limit. The scalability problem, which concerned Bitcoin for years, hits Ethereum – with a much stronger impact.
Bitcoin only wants to be a network for transactions. Ethereum claims to be a decentralized world computer; it has to scale far, far wider.
Plans to Scale the Kitties
Ethereum and Bitcoin have cultivated different approaches to scaling strategies. Bitcoin developers say, paraphrased, that they will not increase capacity until they have found the perfect solution. Ethereum developers say, paraphrased again, that they need to push capacity to its limits, to find the perfect solution.
And this is what CryptoKitties did; it pushed network traffic to its limits. The blockchain-based game demonstrated that it’s time to find solutions, which are, at least, good. Urgently. Several ideas, how Ethereum can scale mid- and long-term, are currently circulating.
Basically, Ethereum seems to be ok with letting full nodes grow to the size of data centers. And if you need a supercomputer, terabyte hard disks, gigabit internet connections, more than 100 GB of memory – so what? There are enough companies, which are involved in Bitcoin, and a lot of early adopters, which earned so much by holding ether, that they can buy a data center for breakfast. Everyone else should use light or SPV nodes, as MyEtherWallet or Metamask. The Internet is also not hosted on hobbyist’s computers.
This way could be ok for some time. However, at some point, even the data center nodes will reach their capacity limit. Imagine, there is not just one successful dapp like CryptoKitties, but several, and you can not just buy, sell and breed kitten, but let them fight in an arena. Imagine further; there are prediction markets, real estate transfers, security trades, social networks and so much more on the blockchain. You will need a very, very big data center to run this. Something like Google puts in the American desert.
Long-term, Ethereum needs other solutions. These solutions are currently in development, for example, Sharding, Raiden, and Plasma.
‘Sharding’ means that you shatter the blockchain in several pieces and that each node needs to store and validate only one of the pieces. Sharding is used in several modern database systems, but there is no example of a blockchain implementing it. The Ethereum community hopes that it will be able to pave the way for sharding after having switched from proof of work to proof of stake. If possible at all, sharding should not be expected to play any role in the next 18 to 24 months.
Riper is Raiden. Raiden is like the Lightning Network, but for Ethereum. It will not just process unconfirmed transactions in off-chain payment channels but deploy “state channels,” which allow to transfer states of a smart contract. Other than Lightning Raiden has the advantage that it doesn’t need the wallets first to learn new smart contracts, as it can deploy the contracts on the blockchain, where every wallet can read it by itself.
Recently the Raiden developers launched uRaiden on mainnet. However, uRaiden – or Micro-Raiden – is just a one-way payment channel, which allows many to pay one. This could be useful for several contracts and operation, but it is just one step to a network of off-chain channels. The major challenge, the building of the off-chain network, has not even started to be addressed.
Plasma finally is maybe the hardest concept to get your head around. Proposed by Vitalik Buterin and Joseph Poon the idea is similar to sidechains. Smart contracts should be executed on other blockchains, which are ordered like a tree around the main chain, on which they are pegged by special contracts so that they can be finally executed on the main chain. It’s not easy to understand, and development has just begun.
All these concepts and scaling plans are still in development. All in all, it is not very likely that they will come into effect in the next 18 months. Until a scaling solution is implemented, Ethereum will need to further its way of increasing requirements for nodes and enhancing the infrastructure of light nodes. Likely this will need to be supported by decelerating the rapid growth of Ethereum’s on-chain activity.