Skip to content
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

Merged
merged 4 commits into from
Aug 7, 2023

Conversation

dantaik
Copy link
Contributor

@dantaik dantaik commented Aug 6, 2023

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.

@dantaik dantaik requested review from cyberhorsey, dionysuzx, Brechtpd and davidtaikocha and removed request for dionysuzx August 6, 2023 03:13
@dantaik dantaik marked this pull request as ready for review August 6, 2023 03:13
@dantaik dantaik changed the title feat(protocol): L2 1559 no longer use current block gas limit feat(protocol): L2 1559 no longer use block gas limit Aug 6, 2023
Comment on lines 341 to 342
xExcess: gasExcess,
xPurchase: parentGasUsedNet
Copy link
Contributor

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.

Copy link
Contributor Author

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.

Comment on lines -347 to +346
xPurchase: gasLimit
xPurchase: 0
Copy link
Contributor

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.

Copy link
Contributor Author

@dantaik dantaik Aug 6, 2023

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.

@davidtaikocha davidtaikocha merged commit 9985ae8 into gas-limit Aug 7, 2023
@davidtaikocha davidtaikocha deleted the l2_1559_gasfee branch August 7, 2023 05:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants