The definitive guide to auditing price feed integrations in DeFi protocols
// No staleness check - found in SparkLend, Radiant
(, int256 answer,,,) = priceFeed.latestRoundData();
return uint256(answer);
(uint80 roundId, int256 answer,, uint256 updatedAt, uint80 answeredInRound) = priceFeed.latestRoundData();
require(answer > 0, "Invalid price");
require(block.timestamp - updatedAt < MAX_STALENESS, "Stale price");
require(answeredInRound >= roundId, "Stale round");
(, int256 answer, uint256 startedAt,,) = sequencerFeed.latestRoundData();
bool isSequencerUp = answer == 0;
uint256 timeSinceUp = block.timestamp - startedAt;
require(isSequencerUp, "Sequencer down");
require(timeSinceUp > GRACE_PERIOD, "Grace period not passed");
See our database of 19 vulnerabilities across 7 major DeFi protocols for submission examples.
View Full Audit Database