小编com*_*ard的帖子

与 Uni V2 交互时如何修复“TransferHelper:ETH_TRANSFER_FAILED”

我正在处理safeTransferETHUniswap V2 路由器合约中的辅助函数的一个奇怪问题。

swapExactTokensForETH我正在尝试使用Uniswap V2 路由器提供的功能将合约持有的代币交换为 Ether 。(函数代码位于Uniswap 的 github 上的 router1 中)。被调用的函数是:

function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        override
        ensure(deadline)
        returns (uint[] memory amounts)
    {
        require(path[path.length - 1] == WETH, 'UniswapV2Router: INVALID_PATH');
        amounts = UniswapV2Library.getAmountsOut(factory, amountIn, path);
        require(amounts[amounts.length - 1] >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');
        TransferHelper.safeTransferFrom(path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]);
        _swap(amounts, path, address(this));
        IWETH(WETH).withdraw(amounts[amounts.length - 1]);
        TransferHelper.safeTransferETH(to, amounts[amounts.length - 1]);
    }
Run Code Online (Sandbox Code Playgroud)

此代码中唯一引发错误的部分是函数TransferHelper.safeTransferETH,即:

function safeTransferETH(address to, …
Run Code Online (Sandbox Code Playgroud)

ethereum solidity smartcontracts uniswap

4
推荐指数
1
解决办法
2293
查看次数

标签 统计

ethereum ×1

smartcontracts ×1

solidity ×1

uniswap ×1