Skip to main content

TickMath

Git Source

Computes sqrt price for ticks of size B=(1−2−9)−1B=(1-2^{-9})^{-1} as fixed point Q72 numbers. Supports prices between 2−1122^{-112} and 2112−12^{112}-1.

State Variables​

BASE_CHANGE_CONSTANT_IN_Q128​

int256 private constant BASE_CHANGE_CONSTANT_IN_Q128 = 0xb145b7be86780ae93f;

TICK_LOW_ERROR_CORRECTION_IN_Q128​

int256 private constant TICK_LOW_ERROR_CORRECTION_IN_Q128 = 0x1f6d22eefc342687357a94df44b0dbf;

TICK_HI_ERROR_CORRECTION_IN_Q128​

int256 private constant TICK_HI_ERROR_CORRECTION_IN_Q128 = 0xb33c8bdbc23c5eaf1cd8140681512562;

MIN_PRICE_IN_Q128​

uint256 internal constant MIN_PRICE_IN_Q128 = 0x10000;

MAX_PRICE_IN_Q128​

uint256 internal constant MAX_PRICE_IN_Q128 = 0xffffffffffffffffffffffffffff00000000000000000000000000000000;

MIN_TICK​

int16 internal constant MIN_TICK = -0x4d8f;

MAX_TICK​

int16 internal constant MAX_TICK = 0x4d8e;

MIN_SQRT_PRICE_IN_Q72​

uint256 internal constant MIN_SQRT_PRICE_IN_Q72 = 0xffc0;

MAX_SQRT_PRICE_IN_Q72​

uint256 internal constant MAX_SQRT_PRICE_IN_Q72 = 0xffc00ffc00ffc00ffc00ffc00ffc00ff;

Functions​

getSqrtPriceAtTick​

function getSqrtPriceAtTick(
int16 tick
) internal pure returns (uint256 sqrtPriceInQ72);

getTickAtPrice​

function getTickAtPrice(
uint256 priceInQ128
) internal pure returns (int16);

getPriceAtTick​

function getPriceAtTick(
int16 tick
) internal pure returns (uint256 priceInQ128);

applyMultiplications​

function applyMultiplications(
uint256 absTick
) private pure returns (uint256 valueInQ128);

getTickFromReserves​

Get the new tick based on the current reserves.

function getTickFromReserves(uint256 reserveXAssets, uint256 reserveYAssets) internal pure returns (int16);

Parameters

NameTypeDescription
reserveXAssetsuint256The current reserve X assets.
reserveYAssetsuint256The current reserve Y assets.

Returns

NameTypeDescription
<none>int16newTick The current tick.

Errors​

PriceOutOfBounds​

error PriceOutOfBounds();

TickOutOfBounds​

error TickOutOfBounds();