From a46b6630a71cf39c2fff8b82cdb6a227e9fa095c Mon Sep 17 00:00:00 2001 From: Dan Robinson Date: Tue, 1 Oct 2019 15:52:32 -0700 Subject: [PATCH] switch to use currentOutputReserve --- contracts/UniswapERC20.sol | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/contracts/UniswapERC20.sol b/contracts/UniswapERC20.sol index b2da02f..6097053 100644 --- a/contracts/UniswapERC20.sol +++ b/contracts/UniswapERC20.sol @@ -61,11 +61,11 @@ contract UniswapERC20 is ERC20 { Reserves memory _reserves = reserves; uint256 newInputReserve = IERC20(_tokenA).balanceOf(address(this)); uint256 oldInputReserve = uint256(_reserves.reserveA); - uint256 oldOutputReserve = uint256(_reserves.reserveB); + uint256 currentOutputReserve = IERC20(_tokenB).balanceOf(address(this)); uint256 amountSold = newInputReserve - oldInputReserve; - uint256 amountBought = getInputPrice(amountSold, oldInputReserve, oldOutputReserve); + uint256 amountBought = getInputPrice(amountSold, oldInputReserve, currentOutputReserve); require(IERC20(_tokenB).transfer(recipient, amountBought), "TRANSFER_FAILED"); - uint256 newOutputReserve = IERC20(_tokenB).balanceOf(address(this)); + uint256 newOutputReserve = currentOutputReserve - amountBought; reserves = Reserves({ reserveA: uint128(newInputReserve), reserveB: uint128(newOutputReserve) @@ -81,11 +81,11 @@ contract UniswapERC20 is ERC20 { Reserves memory _reserves = reserves; uint256 newInputReserve = IERC20(_tokenB).balanceOf(address(this)); uint256 oldInputReserve = uint256(_reserves.reserveB); - uint256 oldOutputReserve = uint256(_reserves.reserveA); + uint256 currentOutputReserve = IERC20(_tokenA).balanceOf(address(this)); uint256 amountSold = newInputReserve - oldInputReserve; - uint256 amountBought = getInputPrice(amountSold, oldInputReserve, oldOutputReserve); + uint256 amountBought = getInputPrice(amountSold, oldInputReserve, currentOutputReserve); require(IERC20(_tokenA).transfer(recipient, amountBought), "TRANSFER_FAILED"); - uint256 newOutputReserve = IERC20(_tokenA).balanceOf(address(this)); + uint256 newOutputReserve = currentOutputReserve - amountBought; reserves = Reserves({ reserveA: uint128(newOutputReserve), reserveB: uint128(newInputReserve)