所有原始价格都是按排序后顺序的 每个 token0 值多少 token1。下面的基础/报价辅助函数可以处理界面上任意方向的交易对。
Tick ↔ sqrtPriceX96
getSqrtRatioAtTick(tick)
|tick| > MAX_TICK(887272)时抛出 TickOutOfBounds。
getTickAtSqrtRatio(sqrtPriceX96)
[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),如有需要请在本地定义。