-
Notifications
You must be signed in to change notification settings - Fork 2.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat(protocol): L2 1559 no longer use block gas limit #14388
Conversation
xExcess: gasExcess, | ||
xPurchase: parentGasUsedNet |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this adds an additional delay on the actual basefee that isn't really required, because this will set the basefee between the two points, but the parent block has already happened so the basefee needs to be at the end point uint256(gasExcess) + parentGasUsedNet
already. I think the more accurate way to do this is to purchase 0 gas after already taking into account the parent gas ussed, which means calculating the derivative at the end point which is also easier/cheaper to calculate: basefee = eth_qty(_gasExcess) / (TARGET * ADJUSTMENT_QUOTIENT)
.
The current implementation additionally followed an approach very similar to the one proposed in https://ethresear.ch/t/make-eip-1559-more-like-an-amm-curve/9082 in option 2, purchasing an extra amount of gas for the max amount of gas possible in the block for safety and accuracy, but without implementing the refund because that would be very complex to do.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Check out this new commit, let me know if it addresses your concerns.
xPurchase: gasLimit | ||
xPurchase: 0 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This will now approximate the derivative by calculating the difference between two points with a step of 1
. Theoretically should be okay, but I don't know how this will effect the accuracy because 1 is a tiny difference and there are approximations being done.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Feel free to optimize it further. What I care the most is that we no longer consider gas limit in L2 1559.
With this PR, the current block's gasLimit is no longer used in L2's EIP1559 base fee calculation. Instead, in side block N's anchor transaction, we first purchase block N-1's gasUsed, then issue new gas and adjust gasExcess.