# Orders on Optimism chains can not be settled due to revert of ````keep()````

Perennial's Kept_Optimism calls deprecated OptGasInfo.scalar() on Optimism/Base, reverting _calldataFee and blocking all order settlement.

- Payout: Contest reward
- Severity: medium
- Program: Perennial V2 3
- Credited: KingNFT
- Disclosed: 2024-02-28
- Write-up quality: 6/10
- Original: https://github.com/sherlock-audit/2024-02-perennial-v2-3-judging/issues/10
- Library page: https://bugbountylibrary.com/r/sherlock%3A2024-02-perennial-v2-3%3AM-3
- Tags: domain:web3 impact:dos kind:contest platform:sherlock sev:medium tech:evm tech:solidity technique:regression technique:source-review vuln:dos

**Target:** Kept_Optimism.sol _calldataFee / OptGasInfo predeploy 0x420...000F
**Root cause:** After the Ecotone upgrade, Optimism's GasPriceOracle predeploy deprecated scalar(), which now reverts; Kept_Optimism._calldataFee still multiplies l1BaseFee() by scalar(), so every fee computation reverts.
**Steps:**
1. Fork Base/Optimism mainnet at block 12520000
2. Call `OptGasInfo(0x420000000000000000000000000000000000000F).scalar()`
3. Observe revert `GasPriceOracle: scalar() is deprecated`
4. Any Kept_Optimism._calldataFee() call therefore reverts, blocking keep()/settlement
**How found:** Code review of Kept_Optimism fee logic combined with awareness of Optimism's Ecotone fee changes; confirmed via mainnet fork PoC that scalar() reverts.
**Insight:** When a protocol reads chain predeploy/oracle interfaces (GasPriceOracle, L1 fee oracles), check whether those methods were deprecated by recent hardforks (Ecotone) — a single removed getter can brick core settlement paths.
