> ## Documentation Index
> Fetch the complete documentation index at: https://optimism-373f39ad-soyboy-docs-op-supernode-guide.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Set the DA Footprint Gas Scalar

> Learn how to set a Data Availability (DA) Footprint on your OP-Stack Chain

## Overview

| Parameter                                                                                                                                                                                                                                                                                                                | Type   | Default     | Recommended | Units        |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------ | ----------- | ----------- | ------------ |
| <Tooltip tip="The default value of 0 is the same as setting the scalar to `400`. In order to effectively disable this feature, set the scalar to a very low value such as 1." cta="See the specs for more detail" href="https://specs.optimism.io/protocol/jovian/l1-attributes.html"> `daFootprintGasScalar` </Tooltip> | Number | `0` (`400`) | `400`       | gas per byte |

<Warning>
  The default value of `0` is the same as setting the scalar to `400`. In order to effectively disable this feature, set the scalar to a very low value such as `1`.
  See the [specs for more detail](https://specs.optimism.io/protocol/jovian/l1-attributes.html).
</Warning>

The `daFootprintGasScalar` controls the **Data Availability (DA) Footprint Block Limit** introduced in the [Jovian hardfork](https://docs.optimism.io/notices/upgrade-17), which caps the total amount of transaction data that can fit into a block based on a scaled estimate of its compressed size.
The effective limit of estimated DA usage per block is `gasLimit / daFootprintGasScalar` bytes, so *increasing* the scalar *decreases* the limit, and vice versa.

For how the DA footprint is calculated, why the limit exists, and how the default of `400` was chosen, see [How the DA footprint block limit works](/chain-operators/reference/da-footprint).

## Choose a value

<Warning>
  * If no limit is set, or the value 0 is set for the `daFootprintGasScalar` in the `SystemConfig`, the default value of `400` is used
  * In order to effectively disable this feature, set the scalar to a very low value such as `1`.
  * Setting the `daFootprintGasScalar` too high may exclude too many transactions from your blocks.
  * Setting the `daFootprintGasScalar` too low may prove ineffective at preventing batcher throttling or protecting against continuous DA heavy transactions.
  * When a chain's gas limit is changed, the DA footprint scales proportionally by design. However, if you want to retain the same absolute DA footprint limit, then you must also scale the `daFootprintGasScalar` accordingly.
</Warning>

## Update the `daFootprintGasScalar`

The steps below explain how to update the `daFootprintGasScalar` parameter on-chain using the `SystemConfig` contract.

<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 setDAFootprintGasScalar() method">
    <Info>
      The [SystemConfig owner](/op-stack/protocol/privileged-roles) is the only address that can make these changes.
    </Info>

    To update the `daFootprintGasScalar`, call the following method on the `SystemConfig` contract:

    `setDAFootprintGasScalar(uint16 daFootprintGasScalar) external onlyOwner;`

    Example (using [cast](https://getfoundry.sh/cast/reference/cast/)) to double the scalar, so lower the effective DA usage limit by half:

    ```bash title="Cast" theme={null}
    cast send -r <L1_RPC_URL> <SYSTEM_CONFIG_PROXY_ADDRESS> "setDAFootprintGasScalar(uint16)" 800 
    ```
  </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 daFootprintGasScalar() external view returns (uint16);`

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

    ```bash title="cast" theme={null}
    cast call -r <L1_RPC_URL> <SYSTEM_CONFIG_PROXY_ADDRESS> "daFootprintGasScalar()"
    ```

    And on your L2 chain you can query the scalar at the [L1Block predeploy](https://specs.optimism.io/protocol/predeploys.html#l1block) to confirm the new scalar has been propagated to the chain:

    ```bash title="cast" theme={null}
    cast call -r <L2_RPC_URL> 0x4200000000000000000000000000000000000015 "daFootprintGasScalar()"
    ```
  </Step>
</Steps>

## Next steps

* [How the DA footprint block limit works](/chain-operators/reference/da-footprint) — the calculation, the scalar's semantics, and the rationale for the default value.
* [Fee parameters reference](/chain-operators/reference/fee-parameters) — the full set of fee-related `SystemConfig` parameters.

## References

* [DA Footprint Configuration Spec](https://specs.optimism.io/protocol/jovian/system-config.html#da-footprint-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/da-footprint-block-limit.md)
