Fixing the Ethereum Fee Market (EIP-1559)
Every transaction on Ethereum carries at least some benefit and some cost. It is assumed that every transaction delivers some benefit to a user or it wouldn’t be made. It is also assumed that at least some costs are necessary to protect the network. The main cost to users is in the form of transaction fees, also known as “gas fees”.
As Ethereum has grown more popular, users have reported difficulty estimating the optimal gas fees, along with difficulty avoiding unexpectedly long delays. Recognizing and addressing these pain points should be a priority for the Ethereum community, as resolving them would be highly conducive to retaining existing users and catalyzing further user adoption within the Ethereum ecosystem.
The source of frustration with the current fee system stems primarily from Ethereum’s attempt to price fees using a simple auction mechanism. Known as a first price auction, this system works by having everyone submit their bid (gas price) for how much they’re willing to pay to have their transaction picked up by a miner. Usually, miners select transactions ranked by the highest fees which results in many users grossly overpaying. Had they known what others were bidding, they could avoid making bids that were much higher than necessary. In many cases, we can see a large divergence of transaction fees paid by different users in a single block, suggesting that many users often overpay by more than 5x.
Additionally, this model fails to properly price in cost because it assumes that the optimal level of usage is the same regardless of demand. To see why this can break down, imagine a country that sets an hourly maximum quota on total pollution which is always the same value every hour; it’s easy to see how this would needlessly force people to work 24 hours a day, 7 days a week. Yet this is exactly what our blockchain is doing.
One possible improvement on this system is to modify the auction mechanism just slightly so that users submit bids as normal, then everyone pays only the lowest bid that was included in the block. While this appears at first to reduce inefficiencies, it can be easily gamed by miners who will fill up their own blocks in order to increase the minimum fee. It’s also gameable by transaction senders who collude with miners.
In 2018, a new solution was proposed by Vitalik Buterin that combines both models into a hybrid approach. The idea is to start with a BASEFEE amount which is adjusted up and down by the protocol based on how congested the network is. To accommodate this system, the network capacity would be increased to 16 million gas, so that 50% utilization matches up with our current 8 million gas limit. Then, when the network is at >50% capacity, the BASEFEE increments up slightly and when capacity is at <50%, it decrements down slightly. Because these increments are constrained, the maximum difference in BASEFEE from block to block is predictable. This then allows wallets to auto-set the gas fees for users in a highly reliable fashion. It is expected that most users will not have to manually adjust gas fees, even in periods of high network activity. For most users, the BASEFEE will be automatically set by their wallet, along with the addition of a small fixed amount, called a ‘tip’, to compensate miners (e.g. 0.5 gwei).
In times of high network usage, a user can ensure that their transaction is included sooner by including a larger tip along with the BASEFEE amount. Meanwhile, users who are not in a hurry can set a maximum fee that they’re willing to pay. The protocol will then wait for the BASEFEE to drop below this number before confirming their transaction.
An important aspect of this upgraded fee system is that miners only get to keep the tips. The BASEFEE is always burned (i.e. it is destroyed by the protocol). Burning this is important because it prevents miners from manipulating the fee in order to extract more fees from users. It also ensures that only ETH can ever be used to pay for transactions on Ethereum, cementing the economic value of ETH within the Ethereum platform.
In summary, this upgrade to the fee system would provide the following benefits to Ethereum and its diverse users:
- Save up to 90% of transaction costs
- Greatly improve user experience by automating the fee bidding system
- Provide a predictable fee system for advanced users
- Reduce unexpected wait times for transaction confirmations
- Allow users to still “jump” the line when network is congested
- Disincentive selfish mining even if fees dominate rewards
- Enshrine the economic value of ETH at the protocol level