A World Without (block) Limits!
Imagine a blockchain like Ethereum where we didn’t have to worry about pesky problems like state bloat, and block validation speed. You would submit a transaction and as long as you bribe the miner enough to include the transaction in a block, it will get included. There is no competition for space with other users of the platform, everybody gets block space!
Too Much Gas Guzzling
Now lets imagine in that world miners are only demanding 1 nanoeth per gas, and Ethereum is hugely popular. At 1 nanoeth per gas everyone wants in all the time. Every block ends up with 500,000,000 gas worth of transactions and the entire network gets clogged up and running a validating node costs $1000 / month in hardware and bandwidth!
Usage Deterrent Fee
Solution: just convince most of those people to stop using Ethereum, then we won’t end up with 33M gas per second of state bloat getting added. We can achieve this by introducing a mechanism such that every transaction will have to pay a per-gas fee, and that fee will increase until enough people stop using Ethereum such that there is only (on average) about 10,000,000 gas used per block.
If Ethereum usage declines too far and blocks aren’t reaching 10,000,000 gas, the system will automatically start lowering the Usage Deterrent Fee until blocks are about 10,000,000 gas again. This process repeats forever, with the per-block gas usage hovering somewhere around 10,000,000 gas.
Where Does This Fee Go?
The first intuition is to just give the fee to miners. Unfortunately, miners can include whatever transactions they want (as long as they are valid) so if we gave them the fee, they would just pay themselves to include their own transactions in blocks to make the blocks *appear* full, so everyone would have to pay a higher fee! It is possible that it is more profitable for miners to have 5,000,000 gas worth of transactions at a User Deterrent Fee of 10 nanoeth than to have 10,000,000 gas worth of transactions at a User Deterrent Fee of 2 nanoeth. So instead of optimizing for 666,666 gas spent per second like we wanted, we are optimizing for miner payout.
OK, lets give the User Deterrent Fee to the developers, they have worked hard and deserve to get paid. Unfortunately, figuring out who deserves to get paid is a really hard problem that most companies in the world struggle with. Getting it “right” involves a lot of middle managers and you’ll almost never get everyone to agree on who deserves to get paid.
Fine, I guess we’ll just burn it. This is certainly the simplest solution, and it doesn’t create any immediate disincentives other than potentially ETH holding if more is burnt in fees than is minted in block rewards. While we would like to put this money to use elsewhere, there is no immediately obvious place to throw it that doesn’t come with its own huge set of problems. If one day we do find a way to usefully spend ETH (as a network), we can always mint it to offset the burn, so its not like we will forever be stuck as a deflationary coin if we make the decision to burn today (also, currently block reward far outstrips block fees, so ETH would still be inflationary).
But… What About Usage Spikes!
It would be unfortunate if someone launched some new game or token on Ethereum that saw a sudden huge spike in usage. The core developers of Ethereum aren’t super confident that the network would not just fall flat on its face if it was faced with a 5B gas block. So, to prevent that problem we can set an absolute per-block limit of, say, 20M gas (2x our per block target). If a sudden spike occurs miners will have to decide who to let in via whatever strategy they want (e.g., who bribes them the most) while the system raises the fee enough to drive users away once again, or until people get bored of the new game/token (whichever comes first).
Isn’t This Just EIP-1559?
Yes, I tricked you.