defirisk.co
rubric v1.7.0

Oracle source = spot DEX pool (no TWAP)

Uniswap (v2 + v3)'s assessment for RD-F-053 — scored not_applicable on the v1.7.0 rubric. The evidence below is the curator's reasoning for this score.

Evidence summary #

[CRITICAL — not_applicable] Neither V2 nor V3 consumes any external oracle for swap pricing. V2 swap pricing uses on-chain _reserve0/_reserve1 (constant-product invariant). V3 swap pricing uses slot0.sqrtPriceX96 (concentrated-liquidity invariant). V2 EXPOSES a TWAP via cumulative price accumulators; V3 EXPOSES a TWAP via Oracle.sol observe(). Neither reads from any external DEX oracle or push oracle. Zero external oracle imports in V2 or V3 core confirmed by source inspection. Data-cache Chainlink feeds are false positives.

Detail #

UniswapV2Pair.sol: _reserve0/_reserve1 are private state vars updated only via mint/burn/swap/sync; no external oracle call in swap() path. UniswapV3Pool.sol: swap() reads slot0.sqrtPriceX96 (on-chain state); Oracle.sol writes outbound TWAP observations with no inbound oracle calls. Profile meta.json: oracle_consumed_by_protocol: false. V2 oracle consumer failures (Visor Finance, Inverse Finance) were failures of downstream consumer protocols, not V2 itself.

Sources #

Methodology #

Determine whether the primary oracle for any asset/market reads spot price from a single DEX pool without a TWAP window or secondary source.

See the full factor methodology and distribution across all protocols →

rubric_version v1.7.0 protocol uniswap factor RD-F-053 score not_applicable collected_at 2026-05-12 10:36:11