# An update gap in Chainlink's feed can malfunction the whole market

Float Capital's epoch settlement requires a Chainlink roundId inside a strict time window; a missed feed update freezes the market, blocking all entries and exits.

- Payout: Contest reward
- Severity: medium
- Program: Float Capital
- Credited: WATCHPUG
- Disclosed: 2022-10-21
- Write-up quality: 6/10
- Original: https://github.com/sherlock-audit/2022-11-float-capital-judging/issues/42
- Library page: https://bugbountylibrary.com/r/sherlock%3A2022-11-float-capital%3AM-2
- Tags: domain:web3 impact:dos kind:contest platform:sherlock sev:medium tech:evm tech:solidity technique:source-review vuln:dos vuln:oracle-manipulation

**Target:** MarketCore.sol epoch settlement / Chainlink oracle roundId validation
**Root cause:** Settlement requires currentOracleUpdateTimestamp to fall within [relevantEpochStartTimestampWithMEWT, +EPOCH_LENGTH); if Chainlink's heartbeat exceeds EPOCH_LENGTH or a feed update is delayed, no valid roundId exists and the epoch cannot advance.
**Steps:**
1. Observe EPOCH_LENGTH is set larger than or comparable to the Chainlink feed heartbeat
2. A gas spike or congestion delays the Chainlink price update past relevantEpochStartTimestampWithMEWT + EPOCH_LENGTH
3. Call the epoch execution path with any candidate roundId; the check `currentOracleUpdateTimestamp >= relevantEpochStartTimestampWithMEWT + EPOCH_LENGTH` reverts with InvalidOracleExecutionRoundId
4. No roundId satisfies the window, so latestExecutedEpochIndex never advances and the market stays paused
**How found:** Code review of the roundId validation in MarketCore.sol; noticed the strict upper bound on currentOracleUpdateTimestamp and reasoned that any Chainlink heartbeat longer than EPOCH_LENGTH (or a delayed update) leaves no valid roundId.
**Exploitation:** Not weaponized; the failure is a liveness/DoS condition triggered by oracle update gaps (e.g. gas spikes delaying Chainlink pushes). Attacker could theoretically spam the chain to delay the feed, but cost is prohibitive and yields no financial gain.
**Insight:** When a contract pins oracle roundIds to a fixed time window, compare that window against the feed's documented heartbeat and observed outliers; a window narrower than worst-case heartbeat turns a benign oracle delay into a permanent liveness failure.
