ITADN

Pool合约中swap函数中条件判断语句存在写反的可能

#192Closedlindsaytyy 创建于 2025-02-10
L
lindsaytyycommented
// 计算交易的具体数值 ( state.sqrtPriceX96, state.amountIn, state.amountOut, state.feeAmount ) = SwapMath.computeSwapStep( sqrtPriceX96, ( zeroForOne ? sqrtPriceX96PoolLimit < sqrtPriceLimitX96 : sqrtPriceX96PoolLimit > sqrtPriceLimitX96 ) ? sqrtPriceLimitX96 : sqrtPriceX96PoolLimit, liquidity, amountSpecified, fee ); 按照之前教学步骤中逻辑可知,zeroForOne为true代表交易者希望存入token0换取token1,那么池子中token0的价格走向趋于更低,可得此时条件判断句【sqrtPriceX96PoolLimit < sqrtPriceLimitX96?sqrtPriceLimitX96: sqrtPriceX96PoolLimit】这里应该取更小的sqrtPriceX96PoolLimit而不是sqrtPriceLimitX96; 同理可得zeroForOne为false的时候应该取值更大的sqrtPriceX96PoolLimit而不是sqrtPriceLimitX96。
关闭于 2025-02-11 3 条评论