Solidity получает количество eth при удалении ликвидности uniswap

Итак, я удаляю часть ликвидности из пула ERC20›ETH, но хочу сохранить сумму ETH, которую получу при удалении ликвидности.

function removeETHLiquidityFromToken() public {

// approve token
IERC20(tokenAddressLP).approve(UNISWAP_ROUTER_ADDRESS, IERC20(tokenAddressLP).balanceOf(address(this)));

// remove liquidity
uniswapRouter.removeLiquidityETH(tokenAddress, IERC20(tokenAddressLP).balanceOf(address(this)), 0, 0, address(this), now + 20);

// I want to use the ETH value later in this function

}

Это отлично работает, он удаляет ликвидность.

Но как я могу получить такое количество ETH, чтобы потом использовать его?

https://uniswap.org/docs/v2/smart-contracts/router02/#removeliquidityeth


person brandbei37    schedule 30.09.2020    source источник


Ответы (1)


Функция возвращает два значения. external returns (uint amountToken, uint amountETH);

Поэтому вы можете идентифицировать uint ethReceived; и присвоить ему второй возвращаемый uint следующим образом:

( ,ethReceived) = uniswapRouter.removeLiquidityETH(tokenAddress, IERC20(tokenAddressLP).balanceOf(address(this)), 0, 0, address(this), now + 20);
person STEE    schedule 30.10.2020