Here’s a chart I made of the marginal cost for one million gas on Ethereum since base fees were introduced. Log10-scaled.
The quantized steps are a brilliant hack. Nice work!
The primary effect of this EIP is to allow computation/communication gas to become cheaper in dollar terms and as a result unlocking more applications that are both storage-light and infeasible at current gas prices.
My biggest concern is that we will not see a noticeable difference in the composition of block transactions after the implementation of this proposal. And if the transactions stay mostly the same, we’ve added a chunk of complexity to Ethereum, to all future clients, and to an ecosystem of tooling, for no gain.
Here’s why I think no change is a likely outcome:
- The transactions that use existing successful applications are likely to continue making up the bulk of transactions. These are already fairly storage optimized, since most successful applications generating transactions on Ethereum were born in a time when gas prices were 50x to 500x what they are now. Improvements would be small, and security/upgradability concerns make changing these apps impractical.
- We’ve already had a massive price decrease for computation-heavy transactions (simply because the price for all transactions has crashed). We have not seen an emergence of these non-storage apps yet on ethereum, even though they are far more affordable today.
- Other chains - BSC, Base, Monad - have had much much cheaper gas than even Ethereum today, and have not seen these computation heavy apps show up. In fact, what we’ve seen on the cheapest chains is an increase in storage use, rather than the growth of computation apps.
- Gas prices in dollar terms on Ethereum have been trending down consistently over the last years. If this continues, even if we increased the proportional cost of storage, the absolute cost of storage would continue to decrease, and thus the financial incentive would still be in favor of storage heavy apps.
- Most of the initial effect of making gas cheaper ends up enabling smaller and smaller arbs. These tiny arb transactions don’t really use any long-term storage anyway.
I certainly hope that there will be a new class of blockchain applications that look nothing like current ones. (After all, I built live video streaming over tx data recently.) But I think those apps may be waiting until changes beyond gas costs to happen.
My second concern is that this proposal uses max block size as the control variable for storage costs. However, Vitalik said yesterday that slot time reduction is the top of the roadmap. This proposal plays badly with decreased slot times, because this proposal removes control of storage per block from the voted on max block size. If slot times move from 12s to 8s, we’ll have a 50% increase in possible state growth with no validator control possible. Not having controls here would leave us worse off with this EIP.
Lastly, this proposal does not actually ensure that storage is paid for at a sustainable price vs its costs.
Block space has the property that it is created continuously, and can’t really be saved for the future. Because of this, auctioning it off and taking whatever is bid makes plenty of sense. Storage slots operate on completely different economics. Whenever a slot is used, it has a lifetime cost. If it’s not used, there is no cost. The ideal way to charge for storage looks nothing like block gas. However, this proposal keeps ethereum in a world where storage charges have no relation to storage costs, and go up and down 1000x for completely unrelated reasons.
I think it’s helpful to compare this proposal to some alternatives:
- Doing nothing: If block gas stays at 60M and then reduces proportionately as blocks get faster, storage space increases stay roughly the same. Validators keep have control over storage use. We don’t get the cheaper computation/communication gas though.
- One time price increase for opcodes around new storage use: Gets us more computation, while still giving validators control of ongoing storage rate increases. Still requires ecosystem tooling changes, but these changes are much simpler, and tooling already has support for hard fork opcode pricing changes. This is a lot less costly, and it’s easier for other chains to implement.
- Charge for net storage changes in a transaction denominated in ETH, not denominated in gas: The big one. A lot of tooling will need to change. Ensures that blocks with low demand can’t just fill storage at near free prices.
My strong preference would be for an opcode level price increase for new storage slots / contracts now. This gives us our increase in computation/communication gas, with minimal tooling difficulties and complexity. Then once the dust settles later on, we can add long term complexity only where it will actually make a difference.