swap中的 (wapTokensForExactTokens)# 方法是确认要买入的tokenB量,求花费的tokenA数量。 我看了源码实际上是 //分子 = 储备量In 储备量Out 1000 uint256 numerator = reserveIn.mul(amountOut).mul(1000); //分母 = 储备量Out - 输出数额 * 997 uint256 denominator = reserveOut.sub(amountOut).mul(997); //输入数额 = (分子 / 分母) + 1 amountIn = (numerator / denominator).add(1);
这里计算出来需要花费amountIn数量的tokenA 但是tokenA本币有5%的交易手续费,那么到时候实际转入到swap中只有之前计算值的95%。 那么在swap最终验证k值的时候是无法通过。 那么如果有手续费的token要如何确认要买入的tokenB,求花费的tokenA呢