Skip to main content

Stale Price Risk

What it detects

This detector tracks how long oracle prices remain unchanged and whether functions guard against stale values. Using old prices can trigger wrong collateral calls or unprofitable trades.

Typical symptoms

  • No expiry time on stored prices
  • Large gap between oracle updates

Solidity snippet (v0.8.25)

pragma solidity ^0.8.25;

contract PriceGuard {
uint256 public lastUpdate;
uint256 public price;

function setPrice(uint256 newPrice) external {
price = newPrice;
lastUpdate = block.timestamp;
}

function usePrice() external view returns (uint256) {
// Doesn't check if price is too old
return price;
}
}

Why it matters on EVM

Stale prices can cause insolvency or arbitrage losses when market conditions change rapidly.