OracleLibrary

Helper functions for interacting with the pool's TWAP oracle.

Source: contracts/periphery/libraries/OracleLibrary.sol

Functions

consult

function consult(
    address pool,
    uint32 secondsAgo
) internal view returns (int24 arithmeticMeanTick, uint128 harmonicMeanLiquidity)

Returns the time-weighted average tick and liquidity for a period.

getQuoteAtTick

function getQuoteAtTick(
    int24 tick,
    uint128 baseAmount,
    address baseToken,
    address quoteToken
) internal pure returns (uint256 quoteAmount)

Returns a quote amount given a tick and base amount.

getOldestObservationSecondsAgo

Returns the age of the oldest available observation.

Usage Examples

Get TWAP Price

Solidity TWAP Integration

Check Oracle Availability

Increase Oracle Capacity

TWAP Considerations

Observation Cardinality

  • Default cardinality is 1 (current observation only)

  • Must increase for TWAP calculations

  • Increasing cardinality costs gas once

TWAP vs Spot Price

Aspect
Spot Price
TWAP

Source

slot0.sqrtPriceX96

observe()

Manipulation

Easy (single block)

Difficult (many blocks)

Use Case

UI display

Oracles, liquidations

Gas

Very low

Low

Security

  • TWAP is manipulation-resistant but not manipulation-proof

  • Longer periods are more secure but less responsive

  • Consider multiple pool TWAP for critical applications

Last updated