On July 5, 2017, Vitalik Buterin answered an inquiry posted on r/ethtrader to address which Ethereum critiques merit consideration and discussion. As co-creator of Ethereum and the most visible face of the Ethereum Foundation, Buterin articulates concerns that are likely prevalent among those in the development community. In this article, I will attempt to explain Buterin’s concerns in layman’s terms.
IMO [In my opinion] the most valid criticisms of Ethereum as it currently stands are:
1. Scalability sucks; the blockchain design fundamentally relies on bottlenecks where individual nodes must process every single transaction in the entire network
From a social and technical standpoint, scalability is a major obstacle to Ethereum’s continued development. As the network grows, achieving consensus to enact significant changes will prove more difficult. Detraction by mining pools and activists alike may hinder Ethereum’s rise. From issues of size and speed to throughput limitations and gas controversies, there is no overarching solution to scalability. Instead, it’s a puzzle that will require work on many fronts – which is probably why Buterin lists this as the number one issue.
2. PoW is extremely expensive, and furthermore is fundamentally vulnerable to 51% spawn camping attacks with no effective strategy for recovering from one. Selfish mining is profitable starting at 25-33% hashpower, and 51% censorship attacks are definitely profitable.
In its simplest terms, Proof-of-Work (PoW) is the way that miners confirm transactions and enter them into a blockchain. The longer a blockchain becomes, the harder it is to alter previous transactions. However, by virtue of the way mining works, a blockchain is susceptible to a “fifty-one percent attack.” Controlling the majority of computing power in the network is akin to controlling the House or Senate in American politics. Pushing legislation (transactions) through can’t be stopped by the minority. In passing, Buterin also references the difficulty of recovering from attacks (nobody needs to be reminded of The DAO) and worries about selfish mining, an attack which would give a pool an unfair advantage and disproportionate opportunity to mine blocks.
Although PoW is due to be replaced by Proof-of-Stake (PoS), for now, the cost incurred by the Ethereum network is absurd. According to Digiconomist’s Ethereum Energy Consumption Index, the network is using approximately the same amount of electricity as Moldova (a country of 3.5 million people). From an environmental and technical standpoint, Ethereum needs to step up its game to be feasible for widespread adoption.
Lastly, “spawn camping,” which evokes video game terminology, is one of Buterin’s recently invented phrases. On Twitter, Buterin explains that spawn camping occurs when “a 51% miner cartel keeps attacking over and over again, rendering the chain useless.”
3. Privacy sucks
The desire for privacy in cryptocurrency has enabled the rise of Zcash and tumbling. In digital currency, tumbling mixes small amounts of a coin from independent pools to pay for a transaction. Imagine that you were buying an XBOX at Costco and wanted to be anonymous. If you gather $5 from each of your friends to pay, then it would be much harder for the cashier to figure out who originally wanted to buy the console – this is obviously a very watered down explanation. Nonetheless, this makes it much harder to trace the transaction’s originator.
Replying to a comment on the same thread, Buterin explains, “There’s a plan to develop a general-purpose HLL [high level language] that compiles to zk-snark verification.” Implementing a zero-knowledge protocol for Ethereum could make Zcash and tumbling services secondary, or even obsolete! Evidently, this is a development to follow closely.
4. It's hard for regular users to hold large amounts of funds without running substantial risks of theft or loss due to theft or loss of their private keys.
If you had one irreplaceable, unique key to your house, then losing it would be devastating. Storing your valuables in your house might seem like a good idea for security purposes, but you would also need to weigh the chances that you may permanently lose access to your belongings. Cryptocurrency users face this same dilemma with wallets.
Additionally, centralized wallet providers present an attractive target for hackers, so keeping a significant amount of cryptocurrency in a single wallet is a risky proposition. While spreading your funds across several wallets can help avoid a catastrophic event, this also requires keeping track of multiple private keys. Investors need to weigh the benefits of a decentralized currency versus the absence of a third-party mediator. Ultimately, there’s no customer service department on the blockchain.
5. Economics do not encourage good “storage hygiene”; insufficient incentives for clearing storage and insufficient cost for filling it, especially for long periods of time
6. Bunch of various marginal technical inefficiencies.
On reddit, Vitalik responded directly to my request for elaboration. Fair warning, this is deeply technical.
- With its 256-bit values, the EVM is substantially less efficient than it could be, making it hard to implement many kinds of cryptographic primitives.
- The trie is hexary and not binary, and there doesn't yet exist a data format for taking advantage of the redundancy between a trie node and the fact that the hash of the node is in that node's parent; these two things together mean that Merkle branches are ~4x longer than they need to be.
- RLP is somewhat overcomplicated; if I could redo it I would remove the single-byte case. I'd also come up with a trie format that doesn't use RLP to keep it simpler and easier to encode and decode.
- The storage tree is 2-layer and not 1-layer. This makes various optimizations harder to implement and adds more edge cases.
- The storage tree doesn't properly let users take advantage of the fact that fetching and writing anywhere up to a few kilobytes to a database doesn't cost that much more than fetching or writing 32 bytes. As a result, most applications take substantially more DB reads than they need to.
- All current implementations of the state tree do an account or storage read by hopping through the tree in the DB. This makes any state reading opcode take O(log(n)) database reads when there exists a way to only make it take one.
- Quite a few gas costs are probably still not well-optimized.
- Not enough ability to take advantage of parallelization.
Edit: 7. It's hard for regular users to know that contracts they are interacting with do what they say they do, and do not have accidental or malicious bugs.
Auditing code is crucial for users to trust the contracts on the Ethereum network. Buterin notes that “regular users” (or non-technical folks) often don’t know how to protect themselves. On a governmental level, that’s why the US has agencies like the FDA. Experts help make sure that complicated architecture functions like it claims to – and certify that products are safe for consumption. The newness of Ethereum, and its accompanying applications, makes it hard for non-technical folks to determine what meets a suitable standard for investment or usage.
In all, these concerns reflect thoughtful and patient leadership, qualities that will be necessary as Ethereum expands its reach. Buterin’s willingness to engage in a public forum like reddit demonstrates that he acts as a strong bridge between the technical and non-technical worlds. Continued discourse and careful discussion should allay fears and attract additional support for the network.