Conversation
Version Packages
The fees are currently calculated as a sum of the L1 fee and the L2 fee where the L1 fee is the approximate cost of the batch submission of the transaction (L1 gas price * L1 gas used) and the L2 fee is the approximate cost of the execution on L2 taking into account congestion (L2 gas price * L2 gas limit). When either the L1 or L2 gas price is volatile, it can result in the quote that the user receives from `eth_estimateGas` to be rejected as the fee that the Sequencer is expecting has gone up. This PR adds logic to set a buffer in either direction of the current price that will allow the sequencer to still accept transactions within. Two new config options are added: - `--rollup.feethresholddown` or `ROLLUP_FEE_THRESHOLD_DOWN` - `--rollup.feethresholdup` or `ROLLUP_FEE_THRESHOLD_UP` Note that these config options are only useful for when running in Sequencer mode, they are not useful for replicas/verifiers. This is because the Sequencer is the only write node in the network. These config options are interpreted as floating point numbers and are multiplied against the current fee that the sequencer is expecting. To allow for a downward buffer of 10% and an upward buffer of 100%, use the options: - `ROLLUP_FEE_THRESHOLD_DOWN=0.9` - `ROLLUP_FEE_THRESHOLD_UP=2` This will allow for slight fee volatility downwards and prevent users from excessively overpaying on fees accidentally. This is a UX and profit tradeoff for the sequencer and can be exploited by bots. If bots are consistently taking advantage of this, the max threshold down will have to be calibrated to what the normal fee is today. Both config options are sanity checked in the `SyncService` constructor and will result in errors if they are bad. The threshold down must be less than 1 and the threshold up must be greater than 1.
l2geth: sequencer fee buffer
This PR allows the owner of the `OVM_GasPriceOracle` to send transactions with 0 gas price when the enforce fees config option is turned on. The L2 gas price is currently updated by sending transactions to the chain to a special contract. In the future it should be updated as a side effect of transaction execution. Having the gas price on chain is important so that it can be replicated accross the network to ensure that users can send transactions with a high enough fee. Having the `OVM_GasPriceOracle.owner` key not need to maintain ETH on L2 is an operational simplification as well prevents a terrible scenario where a bug causes the L2 gas price to go so high that it is impossible for the owner to update it.
l2geth: allow 0 gasprice txs for `OVM_GasPriceOracle.owner`
🦋 Changeset detectedLatest commit: 0808333 The changes in this PR will be included in the next version bump. This PR includes changesets to release 1 package
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Merge from develop into master to do releases