Oracle staleness check present
Uniswap (v2 + v3)'s assessment for RD-F-059 — scored not_applicable on the v1.7.0 rubric. The evidence below is the curator's reasoning for this score.
Evidence summary #
No external oracle feed consumed; no staleness check applicable. V2 blockTimestampLast is updated on every swap/sync in the same block. V3 sqrtPriceX96 is written on every swap() call in the same transaction — always current by construction. No external feed updatedAt timestamp to check.
Detail #
UniswapV2Pair.sol: blockTimestampLast updated in _update() on every swap/mint/burn/sync. UniswapV3Pool.sol: slot0 updated in swap(). No latestRoundData() call, no updatedAt comparison, no maxStaleness configuration anywhere in V2 or V3 core.
Sources #
- GitHubUniswapV2Pair.sol — internal timestamp update (not oracle staleness check)UniswapV2Pair.sol _update() function: blockTimestampLast = blockTimestamp on every call; UniswapV3Pool.sol slot0 update in swap(); no external feed timestamp check.retrieved 2026-05-12
Methodology #
Determine whether the protocol rejects oracle reads older than a declared maximum age (i.e., checks `updatedAt > block.timestamp - maxStaleness`).
See the full factor methodology and distribution across all protocols →