我正在使用本教程中的单个交换实现:单换 (在我的硬件测试环境中,也就是Mainnet叉)。
我的例子中的tokenIn和tokenOut对是DAI和USDT。
我从amountIn文件传递的test.js参数是DAI令牌的BigNumber。
// Naively set amountOutMinimum to 0. In production, use an oracle or other data source to choose a safer value for amountOutMinimum.
// We also set the sqrtPriceLimitx96 to be 0 to ensure we swap our exact input amount.
ISwapRouter.ExactInputSingleParams memory params = ISwapRouter
.ExactInputSingleParams({
tokenIn: tokenIn, // DAI address
tokenOut: tokenOut, // USDT address
fee: 3000, // default
recipient: msg.sender,
deadline: block.timestamp,
amountIn: amountIn, // DAI
amountOutMinimum: 0,
sqrtPriceLimitX96: 0
});
// The call to `exactInputSingle` executes the swap.
uint256 amountOut = swapRouter.exactInputSingle(params);因此,当这个交换完成时,我得到的amountOut值是奇怪的。例如,如果我使用BigNumber 7706622438316931417300 (~ 7706 DAI),则amountOut为183540559 (~ 183 USDT)。但是它的值是不正确的,因为DAI价格大约等于USDT。
也许一些大数转换是错误的,因为不同的小数?或者我只需要用不同的方式来使用这个交换示例?
请帮帮忙。
发布于 2022-11-12 02:30:21
你有足够的流动性吗?因为有一点,无论您传递多大的tokenIn,tokenOut都将保持不变。
https://ethereum.stackexchange.com/questions/139240
复制相似问题