> ## Documentation Index
> Fetch the complete documentation index at: https://docs.optimism.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Set the Minimum Base Fee

> Learn how to set a minimum base fee on your OP-Stack Chain

## Overview

| Parameter               | Type   | Default      | Recommended | Max Allowed for Standard Chains | Units |
| ----------------------- | ------ | ------------ | ----------- | ------------------------------- | ----- |
| <code>minBaseFee</code> | Number | 0 (disabled) | 100,000     | 10,000,000,000                  | wei   |

The <strong>Minimum Base Fee</strong> (`minBaseFee`) configuration was introduced in the <strong>[Jovian hardfork](https://docs.optimism.io/notices/upgrade-17)</strong>.
This feature allows chain operators to specify a minimum L2 base fee to which can help avoid excessively long priority fee auctions that can occur when the base fee falls too low.

When [batcher-sequencer throttling is active](https://docs.optimism.io/chain-operators/guides/configuration/batcher#batcher-sequencer-throttling) for long enough and the minBaseFee isn't enabled (or is zero), the base fee can drop all the way down to 1 wei. It can take a long time to recover back to a stable base fee.

The steps below explain how to update the `minBaseFee` parameter on-chain using the <code>SystemConfig</code> contract.

<Warning>
  Setting the `minBaseFee` too high may make transactions harder to include for users.
</Warning>

## How to Update the Minimum Base Fee

<Steps>
  <Step title="Find your SystemConfig contract address">
    The [SystemConfig](https://specs.optimism.io/protocol/system-config.html) contract stores configurable protocol parameters such as gas limits and fee settings.\
    You can find its proxy address in the [state.json generated by op-deployer](https://docs.optimism.io/chain-operators/tutorials/create-l2-rollup/op-deployer-setup#deploy-l1-contracts).
  </Step>

  <Step title="Call the setMinimumBaseFee() method">
    <Info>
      Note that the owner of the `SystemConfig` contract is the [System Config Owner address](/op-stack/protocol/privileged-roles), so this transaction must be sent from that address.
    </Info>

    To update the minimum base fee, call the following method on the `SystemConfig` contract:

    `setMinBaseFee(uint64 minBaseFee) external onlyOwner;`

    Example (using [cast](https://getfoundry.sh/cast/reference/cast/)):

    ```bash title="cast" theme={null}
    cast send <SYSTEM_CONFIG_PROXY_ADDRESS> "setMinBaseFee(uint64)" 100000 
    ```
  </Step>

  <Step title="Verify the new value">
    After the transaction confirms, verify the current value by calling the following getter method on the `SystemConfig` contract:

    `function minBaseFee() external view returns (uint64);`

    Example (using [cast](https://getfoundry.sh/cast/reference/cast/)):

    ```bash title="cast" theme={null}
    cast call <SYSTEM_CONFIG_PROXY_ADDRESS> "minBaseFee()"
    ```
  </Step>
</Steps>

***

## References

* [Minimum Base Fee Configuration Spec](https://specs.optimism.io/protocol/jovian/system-config.html#minimum-base-fee-configuration)
* [Jovian Upgrade Spec](https://specs.optimism.io/protocol/jovian/overview.html)
* [SystemConfig Contract Spec](https://specs.optimism.io/protocol/system-config.html)
* [Design Doc](https://github.com/ethereum-optimism/design-docs/blob/main/protocol/minimum-base-fee.md)
