Tick Last modified: April 16, 2026
Contains functions for managing tick processes and relevant calculations
Functions
tickSpacingToMaxLiquidityPerTick
function tickSpacingToMaxLiquidityPerTick (
int24 tickSpacing
) internal pure returns ( uint128 )
Derives max liquidity per tick from given tick spacing
Executed within the pool constructor
Parameters:
Name Type Description tickSpacing int24 The amount of required tick separation, realized in multiples of tickSpacing e.g., a tickSpacing of 3 requires ticks to be initialized every 3rd tick i.e., ..., -6, -3, 0, 3, 6, ...
Return Values:
Type Description uint128 max liquidity per tick
getFeeGrowthInside
function getFeeGrowthInside (
mapping ( int24 => struct Tick . Info ) self ,
int24 tickLower ,
int24 tickUpper ,
int24 tickCurrent ,
uint256 feeGrowthGlobal0X128 ,
uint256 feeGrowthGlobal1X128
) internal view returns ( uint256 feeGrowthInside0X128 , uint256 feeGrowthInside1X128 )
Retrieves fee growth data
Parameters:
Name Type Description self mapping(int24 => struct Tick.Info) The mapping containing all tick information for initialized ticks tickLower int24 The lower tick boundary of the position tickUpper int24 The upper tick boundary of the position tickCurrent int24 The current tick feeGrowthGlobal0X128 uint256 The all-time global fee growth, per unit of liquidity, in token0 feeGrowthGlobal1X128 uint256 The all-time global fee growth, per unit of liquidity, in token1
Return Values:
Name Type Description feeGrowthInside0X128 uint256 The all-time fee growth in token0, per unit of liquidity, inside the position's tick boundaries feeGrowthInside1X128 uint256 The all-time fee growth in token1, per unit of liquidity, inside the position's tick boundaries
update
function update (
mapping ( int24 => struct Tick . Info ) self ,
int24 tick ,
int24 tickCurrent ,
int128 liquidityDelta ,
uint256 feeGrowthGlobal0X128 ,
uint256 feeGrowthGlobal1X128 ,
bool upper ,
uint128 maxLiquidity
) internal returns ( bool flipped )
Updates a tick and returns true if the tick was flipped from initialized to uninitialized, or vice versa
Parameters:
Name Type Description self mapping(int24 => struct Tick.Info) The mapping containing all tick information for initialized ticks tick int24 The tick that will be updated tickCurrent int24 The current tick liquidityDelta int128 A new amount of liquidity to be added (subtracted) when tick is crossed from left to right (right to left) feeGrowthGlobal0X128 uint256 The all-time global fee growth, per unit of liquidity, in token0 feeGrowthGlobal1X128 uint256 The all-time global fee growth, per unit of liquidity, in token1 upper bool true for updating a position's upper tick, or false for updating a position's lower tick maxLiquidity uint128 The maximum liquidity allocation for a single tick
Return Values:
Name Type Description flipped bool Whether the tick was flipped from initialized to uninitialized, or vice versa
clear
function clear (
mapping ( int24 => struct Tick . Info ) self ,
int24 tick
) internal
Clears tick data
Parameters:
Name Type Description self mapping(int24 => struct Tick.Info) The mapping containing all initialized tick information for initialized ticks tick int24 The tick that will be cleared
cross
function cross (
mapping ( int24 => struct Tick . Info ) self ,
int24 tick ,
uint256 feeGrowthGlobal0X128 ,
uint256 feeGrowthGlobal1X128
) internal returns ( int128 liquidityNet )
Transitions to next tick as needed by price movement
Parameters:
Name Type Description self mapping(int24 => struct Tick.Info) The mapping containing all tick information for initialized ticks tick int24 The destination tick of the transition feeGrowthGlobal0X128 uint256 The all-time global fee growth, per unit of liquidity, in token0 feeGrowthGlobal1X128 uint256 The all-time global fee growth, per unit of liquidity, in token1
Return Values:
Name Type Description liquidityNet int128 The amount of liquidity added (subtracted) when tick is crossed from left to right (right to left)
← Previous SwapMath Next → TickBitmap