Thanks for the write-up! To summarise, the proposal bundles two things:
- Setting an additive update rule for basefee, as prescribed by @mtefagh to avoid incentive issues with the multiplicative rule
- Having the gas premium fixed by the protocol, based on what the user declares as their
max_fee
.
Point 1. I think is fairly uncontroversial, there’s some evidence that the current multiplicative update rule isn’t optimal, though it’s unclear without data in which ways and what the best fix would be.
Point 2. is a much more fundamental change to the design of EIP-1559. First, there are claims at the beginning of this post that imo aren’t fully supported:
EIP1559 does not seems to really solve gas premium volatility
This seems incorrect. It’s been shown that unless the effective demand is higher than the block limit (which is slack
times the block target, with slack == 2
currently), there is no incentive to set your gas premium to anything other than the miner marginal cost, meaning that most of the time gas premium estimation is actually really simple and offers good guarantees, even when congestion increases (I wrote about it here for instance, curious to know your thoughts!)
Final gas price paid by the sender is, most of the time, smaller than the maximum gas price specified by sender.
This is also the case in 1559, but 1559 has an additional guarantee: that you will pay the smallest possible gas price at the time of inclusion. By letting the protocol fix the premium to half the difference between your max fee and the current basefee, it’s not clear to me how that doesn’t induce overpayment.
To take an example, suppose between every two blocks you have the same distribution of users showing up, with users having intrinsic value distributed uniformly between 0 and 10, and users showing up at twice the rate necessary to fill blocks entirely, then you ought to price out 3/4-ths of these users, so that roughly only users with value > 7.5 can be included. In the “vanilla” 1559 design, BASE_FEE
would settle around 6.5, assuming all bidders pay a gas premium equal to 1, which is roughly the miner marginal cost (this “stationary environment” is also developed in our article, or my simulations). This is obviously an idealised representation but I think it’s good enough to show that the possibility exists, even in this simplest of all settings.
I’ll try to tease out what the situation would be in your proposal, because I think it might give insight into the inner workings of the median premium rule. To simplify, I’ll drop first the assumption that only 95% of transaction weight is considered to take the median over, and take the median over all included transactions. Let’s assume all users truthfully reveal their value as max_fee. Since the mechanism still targets inclusion of users with value above 7.5 (given our example that we have twice the gas limit worth of users), included users have max_fee set uniformly in the interval [7.5, 10]. Assume basefee is 7.5, then premiums are distributed uniformly in the interval [0, 1.25] and the median premium is 0.625, which is what the miner receives on top of basefee or not, depending on whether you are burning basefee, which isn’t clear as @timbeiko pointed out.
Assume basefee isn’t burned and is given entirely to miners. In this stationary example, if basefee was lower than 7.5, there would be potentially more users included than the target allows for, and vice versa for basefee higher than 7.5, so 7.5 is indeed the value basefee would tend to. As long as users bid some max_fee greater than 7.5, they will be included, as the miner would receive positive profit. One equilibrium strategy in this stationary environment is for all users in the top quartile to bid max_fee = 7.5 + epsilon: they will all be included and pay epsilon/2 premium. Note that this equilibrium is identical (up to epsilon) to the equilibrium in the vanilla 1559 mechanism: top 25% users are included and pay 7.5 (+ epsilon/2). It is also an equilibrium for all users to declare truthfully their value, but that equilibrium would induce overpayment compared to the 7.5 + epsilon/2 equilibrium. This seems like a flaw that requires more justification as to why the proposed premium rule wouldn’t induce consistent overpayment from users, or wouldn’t naturally degrade back to the vanilla 1559 setting.
If instead basefee is burned, 0.625 premium isn’t quite enough to cover the miner marginal cost (assuming that cost is 1 Gwei). Note that the following strategy is actually an equilibrium in that case: users in the top quartile all declare max_fee = 8.5 such that basefee = 6.5 and users pay basefee + premium = 6.5 + 1 = 7.5. Users who are not in the top quartile don’t have an incentive to bid 8.5, since by definition they would pay more than their willingness to pay (which is lower than 7.5), but you still have a set of users for whom misrepresenting their willingness to pay is the correct strategy (in fact, users in the interval [7.5, 8.5] declare themselves willing to pay above their true willingness to pay!)
Sorry that was a bit verbose, but wanted to write it out also to convince myself
hopefully this sheds some light on expected behaviour.