> For the complete documentation index, see [llms.txt](https://dexible.gitbook.io/dexible/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://dexible.gitbook.io/dexible/dxbl/dxbl-technical-paper/arbitrum-gas.md).

# Arbitrum Gas

There is a special case when computing gas costs for the Arbitrum network. In Solidity, the normal mechanisms for computing the amount of gas usage do not yet accurately reflect an amount that accounts for the **L1 batch gas fees**. Future network upgrades are supposed to fix this, but as of writing, the gas usage cannot be estimated using only the `gasleft` solidity function.&#x20;

To work around this issue, Dexible deployed an Arbitrum gas price oracle smart contract. This oracle uses the arbOs precompiles and a **multiplier** to determine the actual gas cost for a transaction. The math is pretty simple:&#x20;

$$
(u*p2)+((m*p1\*s)/1e18)
$$

* *u* is the current L2 gas usage estimate (using `gasleft()` function)
* *p1* is the current L1 gas price from the arbOs precompiles
* *p2* is the L2 gas price for the transaction
* *m* is the multiplier, expressed in 18 decimals
* *s* is the size of the transaction's calldata

The multiplier can and likely will be adjusted according to historical gas estimations and especially if the network nodes start accurately reporting gas usage using `gasleft()` function. As of this writing, the multiplier is 2e17.&#x20;

This whole thing is a **stopgap** to protect relays when submitting transactions for traders until nodes accurately report gas usage.
