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

#blockchain #ethereum #solidity

#блокчейн #ethereum #солидность

Вопрос:

Итак, я удаляю некоторую ликвидность из пула 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

Ответ №1:

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

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

 ( ,ethReceived) = uniswapRouter.removeLiquidityETH(tokenAddress, IERC20(tokenAddressLP).balanceOf(address(this)), 0, 0, address(this), now   20);