★ 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 #
- GitHubOracle.sol library — v3-core (outbound TWAP only, no inbound)Oracle.sol library: writes internal observation array for TWAP (outbound service); observe() exposes TWAP to external callers. No external oracle calls made inside the library.retrieved 2026-05-12
- UniswapV3Pool.sol source — no external oracle consumptionUniswapV3Pool.sol swap() function: reads slot0.sqrtPriceX96 (on-chain state); Oracle.sol library writes outbound TWAP observations, no inbound oracle calls. Zero external oracle interface imports.retrieved 2026-05-12
- UniswapV2Pair.sol source — v2-core (swap path — no external oracle)UniswapV2Pair.sol swap() function: reads _reserve0/_reserve1 (internal state vars); no external oracle call; getReserves() is internal state access only.retrieved 2026-05-12
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 →