I have been thinking about the question of controlling state growth and its price elasticity, and I am not sure that dynamic pricing will have a greater impact than direct repricing.
The relative use of state-creation operations vs. burst operations (i.e., pure compute, data, etc.) can only meaningfully change by two mechanisms:
- Users choose to use different DApps with different breakdowns of gas usage.
- Developers build new DApps or upgrade their already popular DApps to a new gas usage breakdown.
Without any of these changes, an increase in state creation costs will not serve as a virtual limit on the other resources - i.e., we will see less of the same transactions, without more gas being used for burst resources relative to state creation.
On point 1, we can observe this empirically, as usersâ reaction times should be faster. I did a quick empirical analysis here to measure price elasticity and measure a small but positive relationship:
- When the base fee in USD increases by 1%, we experience a ~0.09% drop in the net state created per total gas used.
- And a 1% increase in the base fee in USD is associated with a total 0.6% decrease in the new state created by the total gas used accumulated over the following days.
Spam contracts are also part of this first mechanism, with users using them only when it is economically feasible. So, it is not surprising to observe such elasticity empirically.
Both a dynamic price and a one-time reprice should affect this mechanism. In both cases, state creation becomes more expensive as throughput increases, so we should see users switching the types of DApps they use. The main differences between the fixed and the dynamic price changes are:
- The fixed price is a one-time shock and thus is more likely to induce immediate behavioral changes. However, it needs to be carefully tuned to hit the right price. So, it is harder to do it correctly.
- The dynamic price adjusts based on usersâ behavior, making it much simpler to get right. The risk of under- or overshooting is lower. However, it is also less likely to prompt immediate change among users, and prices are dynamic (sometimes they are cheaper).
Now, point 2 is trickier. Having developer change their DApps takes time, and the shock needs to be significant enough. However, if we exclude spam contracts, this mechanism has the largest long-term impact. Here, it is even harder to estimate empirically as the effects take longer to materialise. I havenât done the analysis yet, but we could observe the effects of EIP-2929. Still, on this mechanism, I expect that a significant one-time price change will have a bigger impact than a dynamic price. Developers will be much more aware of such a big one-time change and more likely to do something about it.
So, the TL;DR is that the dynamic price seems less risky, as we donât need to pick a price increase. The natural use of state-creation operations will make the controller increase the price accordingly. However, by not doing a significant price change, and thus not âshockingâ the system, it will likely have a softer impact on state growth.
I would like to know your view on this, Anders. Am I missing something in my rationale?