Skip to main content
CLMM 价格有三种表示方式: 所有原始价格都是按排序后顺序的 每个 token0 值多少 token1。下面的基础/报价辅助函数可以处理界面上任意方向的交易对。

Tick ↔ sqrtPriceX96

getSqrtRatioAtTick(tick)

链上 tick 数学的精确移植。当 |tick| > MAX_TICK(887272)时抛出 TickOutOfBounds。

getTickAtSqrtRatio(sqrtPriceX96)

返回 sqrt 比率 ≤ 输入值的最大 tick。输入超出 [MIN_SQRT_RATIO, MAX_SQRT_RATIO) 时抛出 SqrtPriceX96OutOfBounds。

价格 ↔ sqrtPriceX96

priceToSqrtPriceX96(price, token0Decimals, token1Decimals)

price 是以 token1 计的 token0 人类可读价格。价格非有限值或非正数时抛出错误。

sqrtPriceX96ToPrice(sqrtPriceX96, token0Decimals, token1Decimals)

对齐到 tick 间距

头寸边界必须是费率档位 tickSpacing 的整数倍。

getAlignedTick(price, token0Decimals, token1Decimals, tickSpacing)

把人类可读价格转换为最近的有效 tick(向上取整到 tickSpacing 的倍数)。

面向界面的基础/报价辅助函数

这些函数按用户看到的方式接收代币(tokenBase、tokenQuote)以及 baseIn,并在内部转换为排序后的顺序。baseIn = true 时,价格表示为”1 个 base = X 个 quote”。

兑换数学

常量

从包的根路径导出:MIN_TICK = -887272n、MAX_TICK = 887272n、U256_MAX、UNLIMITED_AMOUNT 和 MAX_PIPS。包的根路径不导出 MIN_SQRT_RATIO(4295128739n)、MAX_SQRT_RATIO 和 Q96(2n ** 96n),如有需要请在本地定义。