fix: Remove exactOut logic from Uniswapv2SwapExecutor
We don't support it now --- don't change below this line --- ENG-4033 Took 9 minutes
This commit is contained in:
@@ -15,10 +15,9 @@ contract UniswapV2SwapExecutor is ISwapExecutor {
|
|||||||
address target;
|
address target;
|
||||||
address receiver;
|
address receiver;
|
||||||
bool zeroForOne;
|
bool zeroForOne;
|
||||||
bool exactOut;
|
|
||||||
IERC20 tokenIn;
|
IERC20 tokenIn;
|
||||||
|
|
||||||
(tokenIn, target, receiver, zeroForOne, exactOut) = _decodeData(data);
|
(tokenIn, target, receiver, zeroForOne) = _decodeData(data);
|
||||||
calculatedAmount = _getAmountOut(target, givenAmount, zeroForOne);
|
calculatedAmount = _getAmountOut(target, givenAmount, zeroForOne);
|
||||||
tokenIn.safeTransfer(target, givenAmount);
|
tokenIn.safeTransfer(target, givenAmount);
|
||||||
|
|
||||||
@@ -37,15 +36,13 @@ contract UniswapV2SwapExecutor is ISwapExecutor {
|
|||||||
IERC20 inToken,
|
IERC20 inToken,
|
||||||
address target,
|
address target,
|
||||||
address receiver,
|
address receiver,
|
||||||
bool zeroForOne,
|
bool zeroForOne
|
||||||
bool exactOut
|
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
inToken = IERC20(address(bytes20(data[0:20])));
|
inToken = IERC20(address(bytes20(data[0:20])));
|
||||||
target = address(bytes20(data[20:40]));
|
target = address(bytes20(data[20:40]));
|
||||||
receiver = address(bytes20(data[40:60]));
|
receiver = address(bytes20(data[40:60]));
|
||||||
zeroForOne = uint8(data[60]) > 0;
|
zeroForOne = uint8(data[60]) > 0;
|
||||||
exactOut = uint8(data[61]) > 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function _getAmountOut(address target, uint256 amountIn, bool zeroForOne)
|
function _getAmountOut(address target, uint256 amountIn, bool zeroForOne)
|
||||||
|
|||||||
@@ -13,8 +13,7 @@ contract UniswapV2SwapExecutorExposed is UniswapV2SwapExecutor {
|
|||||||
IERC20 inToken,
|
IERC20 inToken,
|
||||||
address target,
|
address target,
|
||||||
address receiver,
|
address receiver,
|
||||||
bool zeroForOne,
|
bool zeroForOne
|
||||||
bool exactOut
|
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
return _decodeData(data);
|
return _decodeData(data);
|
||||||
@@ -49,21 +48,15 @@ contract UniswapV2SwapExecutorTest is
|
|||||||
|
|
||||||
function testDecodeParams() public view {
|
function testDecodeParams() public view {
|
||||||
bytes memory params =
|
bytes memory params =
|
||||||
abi.encodePacked(WETH_ADDR, address(2), address(3), false, true);
|
abi.encodePacked(WETH_ADDR, address(2), address(3), false);
|
||||||
|
|
||||||
(
|
(IERC20 tokenIn, address target, address receiver, bool zeroForOne) =
|
||||||
IERC20 tokenIn,
|
uniswapV2Exposed.decodeParams(params);
|
||||||
address target,
|
|
||||||
address receiver,
|
|
||||||
bool zeroForOne,
|
|
||||||
bool exactOut
|
|
||||||
) = uniswapV2Exposed.decodeParams(params);
|
|
||||||
|
|
||||||
assertEq(address(tokenIn), WETH_ADDR);
|
assertEq(address(tokenIn), WETH_ADDR);
|
||||||
assertEq(target, address(2));
|
assertEq(target, address(2));
|
||||||
assertEq(receiver, address(3));
|
assertEq(receiver, address(3));
|
||||||
assertEq(zeroForOne, false);
|
assertEq(zeroForOne, false);
|
||||||
assertEq(exactOut, true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function testAmountOut() public view {
|
function testAmountOut() public view {
|
||||||
@@ -88,10 +81,8 @@ contract UniswapV2SwapExecutorTest is
|
|||||||
uint256 amountIn = 10 ** 18;
|
uint256 amountIn = 10 ** 18;
|
||||||
uint256 amountOut = 1847751195973566072891;
|
uint256 amountOut = 1847751195973566072891;
|
||||||
bool zeroForOne = false;
|
bool zeroForOne = false;
|
||||||
bool exactOut = true;
|
bytes memory protocolData =
|
||||||
bytes memory protocolData = abi.encodePacked(
|
abi.encodePacked(WETH_ADDR, WETH_DAI_POOL, BOB, zeroForOne);
|
||||||
WETH_ADDR, WETH_DAI_POOL, BOB, zeroForOne, exactOut
|
|
||||||
);
|
|
||||||
|
|
||||||
vm.startPrank(ADMIN);
|
vm.startPrank(ADMIN);
|
||||||
deal(WETH_ADDR, address(uniswapV2Exposed), amountIn);
|
deal(WETH_ADDR, address(uniswapV2Exposed), amountIn);
|
||||||
|
|||||||
Reference in New Issue
Block a user