首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用onchain计算UniswapV3 swapRouter.exactInputSingle()函数中的UniswapV3参数?

如何使用onchain计算UniswapV3 swapRouter.exactInputSingle()函数中的UniswapV3参数?
EN

Ethereum用户
提问于 2022-06-13 21:10:35
回答 1查看 535关注 0票数 1

有人能告诉我如何使用onchain计算swapRouter.exactInputSingle()函数中的D1参数吗?我已经有了一个工作的uniswapV3 oracle,它可以检索令牌的价格,并且我的V3交换函数可以像预期的那样工作。如果需要,我们可以很容易地将oracle实现更改为收回两种价格。我已经包含了下面的一些代码-参见TODO

代码语言:javascript
复制
    function swapExactInputSingle(
        address _tokenIn,
        address _tokenOut,
        uint256 _amountIn
    ) private returns (uint256 amountOut) {
        TransferHelper.safeApprove(_tokenIn, address(swapRouter), _amountIn);

        uint32 secondsIn = 10;
        uint256 price = IUniswapV3PriceOracle(uniswapV3PriceOracle).estimateAmountOut(_tokenIn, uint128(_amountIn), secondsIn);

        // TODO: We need to use the price from the oracle to calculate amountOutMinimum
        uint256 amountOutMinimum = 1;

        ISwapRouter.ExactInputSingleParams memory params = ISwapRouter
            .ExactInputSingleParams({
                tokenIn: _tokenIn,
                tokenOut: _tokenOut,
                fee: poolFee,
                recipient: address(this),
                deadline: block.timestamp,
                amountIn: _amountIn,
                amountOutMinimum: amountOutMinimum,
                sqrtPriceLimitX96: 0
            });

        amountOut = swapRouter.exactInputSingle(params);
    }
EN

回答 1

Ethereum用户

回答已采纳

发布于 2022-07-09 22:37:59

我敢打赌你需要改变:

代码语言:javascript
复制
amountOutMinimum: amountOutMinimum,

代码语言:javascript
复制
amountOutMinimum: price,
票数 0
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/130154

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档