The problem is well known for Bitcoin; there are more transactions than miners can confirm. Now the shortage has reached Ethereum. Especially after popular ICOs, like Status’, the transaction volume is far beyond the network’s capacity. This problem could be easily solved. The miners, however, resist.
Actually, Status is not much more than an Ethereum wallet for a mobile system. You know it from Bitcoin. Further, Status aims to provide a messenger and interacts with Ethereum’s dapps. That’s nice, but not worth the fuss caused.
Like so many Ethereum startups, Status managed to integrate some kind of token in its business model somehow. Until now the “Status Genesis Token” was given out as a bug bounty and aims to reward the community for pushing the project forward. While a fleeting reading of some posts on Status’ blog does not explain, what you can do with these tokens, the ICO with which Status sold them on June 20 has been a record-breaking success.
“Initial Coin Offerings”, in short ICO, are currently the “big thing” in cryptocurrency. It is safe to say that with them, Ethereum found its first “killer app”. ICOs are used by startups to raise money by selling tokens, which usually are some kind of voucher for the services the startup builds. Although ICOs are unregulated to the level of shadiness, many of them are absurdly successful, and raise, like Bancor did, more than $100 million. It is like ICOs finally unleashed the power of crowdfunding.
80,000 Transactions in just an Hour
When Status sold its token the run on them, however, was huge enough to cause a new record in transaction volume for Ethereum. Most likely, not only for Ethereum but for cryptocurrency overall. Whilealready caused congestion with just some thousand transactions in half a minute, the Status ICO saw more than 80,000 transactions in just an hour. This equals to the incredible daily volume of two million transactions.
With 308,000 transactions, June 20 became a record-day officially for Ethereum. That’s not as much as Bitcoin’s best day, that is May 14 with 369,000 transactions, but it comes close and it is incredibly remarkable for a cryptocurrency as young as ether. However, like with Bitcoin, the high volume brings symptoms of overload; transactions remain unconfirmed for a long time. On June 20, more than 10,000 transactions waited to reach a block, and even by June 22 still constantly more than 4,000 are not confirmed.
The Ethereum clients seemed to be ill-prepared to handle the overload. In the default setting, Geth just keeps 4,000 unconfirmed transactions in its memory pool, and only 1,000. So what happened was that the clients deleted transactions from memory, which caused a lot of confusion. Some exchanges, like ShapeShift, Bittrex and Poloniex, completely stopped deposits and withdrawal in ether, while others, which kept the trading going, suffered from long confirmation times, up to more than 24 hours.
Since June 20 Ethereum caught up to Bitcoin’s status; it lacks capacity. Since we watched the block size discussion in Bitcoin turn extremely toxic, it will be thrilling to watch how it will evolve in Ethereum. Will the Ethereum community enmesh itself in furious fights, like Bitcoin – or will it demonstrate, that scaling can be solved without starting propaganda wars?
Bad ICO – or Bad Miners?
The discussion about the network congestion mostly takes aim at two reasons; first, the bad design of the ICO, and second, the miners.
The ICO design is something growingly discussed and criticized in the Ethereum community. No wonder. Right now it mostly plays out like this; the ICO issuer gives a block number, and when it arrives, everybody wildly sends ether to a certain address to get the token. This has at least two major disadvantages; firstly, it heavily favors big investors, who are able to pay high fees. Second, and maybe more serious, it creates an artificially high transaction volume. Even those transactions, which don’t make it in the ICO, are done and confirmed, with gas fees, but without the monetary content. The network is spammed with transactions which have no other purpose than to have no effect.
The Status developer reacted, at least, to one of the criticisms; they issued the token not at once, but during a certain timeframe. This was well intended, but made things even worse. As one Redditor pointed out before the ICO, it incentivized people to resend a transaction all the time, “This is a very good way to totally DDOS the network!!?!” So a bad design of ICOs seems to be one part of the congestion problem.
Another part is that the miners enforce a transaction limit without need. Ethereum’s transaction limit works a bit like the Emergent Consensus which has been proposed by Bitcoin Unlimited, even though in Ethereum the miners do almost exclusively decide on the block size.
Let’s explain how it works. Ethereum does not care about a fixed size of transactions in bytes, but calculates the costs of it in so called “gas.” Gas is a unit for the resource requirements of transactions and contracts, for example, the needed CPU or memory. To use Ethereum, the users have to add some amount of gas to a transaction, like the fees in Bitcoin. The required amount of gas depends solely on the transaction and is determined by a hardcoded table in the code. Easy transactions cost only few gas, while complex smart contracts, as involved with token generation, can be quite expensive. While the amount of gas is fixed, the price of it is flexible. This is why a fee market – or, better: gas market – can evolve in Ethereum.
The blocks in Ethereum have a gas limit, like Bitcoin’s blocks have a size limit. Other than Bitcoin, however, the gas limit is not fixed, but flexible. When the miners push it, they can increase it with something like one promille each block. If they do so, they can double the size of the blocks in a few hours.
So with this flexible gas limit Ethereum should easily be able to process the pending transactions in a few hours. The big question is: Why did this not happen yesterday? Why did the miners not increase the limit?
One part of the answer can be found in a sequence of events of autumn 2016; Ethereum suffered from large and long lasting DoS attacks, which exploited a bug in the hard coded calculation of gas. Vitalik Buterin and the other developers reacted by recommending the miners to keep the gas limit in a target floor of about 4.7 million. Now, more than six months later, the network demand seems to fill the target floor. But even though the causes for the DoS have been fixed long ago, the miners seem not to be willing to break the 4.7 million floor.
The Ethereum community started to rage against the miners, because they refused to lift the limit. With this, the discussion about the role of the miners reached an ironic twist; while Bitcoin Unlimited is accused of giving the miners the power to build infinitely large blocks, in Ethereum, where the miners actually have this power, they are accused of building blocks not large enough. The miners, it seems, simply cannot win.
But why do the miners not just lift the target floor? The reasons are difficult to call. Eventually the miners think that the limit is ok for now, since it is only touched on extremely busy ICOs, which obviously acts carelessly with the network’s resources. Maybe the miners do also enjoy the income they get from the gas market which makes users pay more for gas. But there is no official reason, so there is not much to tell beside speculation.
This way or that way, Ethereum knocks on a limit with a similar amount of transactions as Bitcoin. This will enrich the long going debate about the scalability of cryptocurrencies, as we have now two coins to observe whose future is both highly dependent on solving the issue.