Skip to main content

Overview

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.
The daFootprintGasScalar controls the Data Availability (DA) Footprint Block Limit introduced in the Jovian hardfork, 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.

Choose a value

  • 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.

Update the daFootprintGasScalar

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

Find your SystemConfig contract address

The SystemConfig 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.
2

Call the setDAFootprintGasScalar() method

The SystemConfig owner is the only address that can make these changes.
To update the daFootprintGasScalar, call the following method on the SystemConfig contract:setDAFootprintGasScalar(uint16 daFootprintGasScalar) external onlyOwner;Example (using cast) to double the scalar, so lower the effective DA usage limit by half:
Cast
3

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):
cast
And on your L2 chain you can query the scalar at the L1Block predeploy to confirm the new scalar has been propagated to the chain:
cast

Next steps

References