我正在处理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)