Skip to content

Add minimum base fee design doc #295

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

Open
wants to merge 4 commits into
base: main
Choose a base branch
from

Conversation

niran
Copy link

@niran niran commented Jul 2, 2025

This document proposes establishing a configurable minimum base fee for OP Stack chains to shorten the length of priority fee auctions.


Priority fee auctions occur when blocks are near the gas limit or when the base fee is significantly below the market-clearing fee. Other than full blocks, the most common cause of priority fee auctions today is [batcher sequencer throttling](https://docs.optimism.io/operators/chain-operators/configuration/batcher#batcher-sequencer-throttling), which intentionally processes fewer transactions to avoid a backlog of batches that need to be posted to L1. Similarly, if the sequencer runs out of time to execute transactions for a block, the transactions that get included will be the ones with the highest priority fees.

It can also be argued that **scaled** rollups will run well below their gas target in typical conditions. Ethereum's fees are _congestion_ fees, and scaled rollups should rarely be congested: their maximum capacity should be much higher than typical usage. A minimum base fee would be charged in the vast majority of cases, and higher fees would only be charged when the rollup needs to discourage transactions near its capacity. In this scenario, we would need to think of congestion often starting from base fees that are the lowest the chain will allow. Today, that's 1 wei, which takes far too long to adjust to the market prices that are needed to prevent first-price auctions using priority fees.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would reframe gas target as congestion threshold, as it cannot truly be an effective target when either minimum fees or exogenous costs (L1 DA, operator fees) influence the market


| Name | Type | Default | Meaning |
|------------------|---------|---------|---------|
| `minBaseFeeLog2` | `uint8` | `0` | The log2 of the minimum base fee that can be charged for a transaction |

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This technically changes the minimum base fee from 0 to 1 wei, although maybe that is an impossible condition in the OP stack as all blocks must contain the attributes transaction.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There's no explicit minimum in EIP 1559, but I think the minimum ends up being BASE_FEE_MAX_CHANGE_DENOMINATOR - 1, so 7 wei on mainnet and 49 wei on Base. Below that, parent_base_fee_per_gas // BASE_FEE_MAX_CHANGE_DENOMINATOR will be zero, so blocks below target end up having no further effect on the fee. (I think the blob base fee can actually go to 1 wei though.)

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.

2 participants