Skip to content

Commit d8dbd1e

Browse files
authored
Certora C-01 Cleanup: Remove redundant min amount check on add liquidity (#97)
1 parent b5d47f1 commit d8dbd1e

File tree

5 files changed

+3
-56
lines changed

5 files changed

+3
-56
lines changed

src/ForeignController.sol

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -837,7 +837,6 @@ contract ForeignController is AccessControl {
837837
tokenIn : tokenIn,
838838
amountIn : amountIn,
839839
minAmountOut : minAmountOut,
840-
maxSlippage : maxSlippages[pool],
841840
tickDelta : swapMaxTickDelta,
842841
poolParams : uniswapV3PoolParams[pool]
843842
})

src/MainnetController.sol

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -653,7 +653,6 @@ contract MainnetController is AccessControl {
653653
tokenIn : tokenIn,
654654
amountIn : amountIn,
655655
minAmountOut : minAmountOut,
656-
maxSlippage : maxSlippages[pool],
657656
tickDelta : swapMaxTickDelta,
658657
poolParams : uniswapV3PoolParams[pool]
659658
})

src/libraries/UniswapV3Lib.sol

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@ library UniswapV3Lib {
5151
uint256 amountIn;
5252
uint256 minAmountOut;
5353
uint24 tickDelta; // The maximum that the tick can move by after completing the swap; cannot exceed MAX_TICK_DELTA
54-
uint256 maxSlippage;
5554
}
5655

5756
struct SwapCache {
@@ -86,17 +85,16 @@ library UniswapV3Lib {
8685

8786
// Rate limit decreased by value of tokenIn (the amount actually spent)
8887
function swap(UniV3Context calldata context, SwapParams calldata params) external returns (uint256 amountOut) {
89-
require(params.maxSlippage > 0, "UniswapV3Lib/max-slippage-not-set");
9088
require(params.tickDelta <= params.poolParams.swapMaxTickDelta, "UniswapV3Lib/invalid-max-tick-delta");
9189
require(params.poolParams.twapSecondsAgo != 0, "UniswapV3Lib/zero-twap-seconds");
90+
require(params.minAmountOut > 0, "UniswapV3Lib/min-amount-not-set");
9291

9392
SwapCache memory cache = _populateSwapCache(context, params);
9493
ERC20Lib.approve(context.proxy, params.tokenIn, address(params.router), params.amountIn);
9594

9695
uint256 startingBalance = IERC20(params.tokenIn).balanceOf(address(context.proxy));
9796
amountOut = _callSwap(context, params, cache);
9897
uint256 endingBalance = IERC20(params.tokenIn).balanceOf(address(context.proxy));
99-
require(params.minAmountOut >= amountOut * params.maxSlippage / 1e18 , "UniswapV3Lib/min-amount-not-met");
10098

10199
// Clear approvals of dust
102100
ERC20Lib.approve(context.proxy, params.tokenIn, address(params.router), 0);
@@ -129,9 +127,6 @@ library UniswapV3Lib {
129127

130128
_validateAddLiquidityMinAmounts(context, params);
131129

132-
uint256 startingBalance0 = IERC20(token0).balanceOf(address(context.proxy));
133-
uint256 startingBalance1 = IERC20(token1).balanceOf(address(context.proxy));
134-
135130
if (params.tokenId == 0) {
136131
(tokenId, liquidity, amount0, amount1) = _mintLiquidity(context, params);
137132
} else {
@@ -140,14 +135,6 @@ library UniswapV3Lib {
140135

141136
require(liquidity != 0, "UniswapV3Lib/no-liquidity-increased");
142137

143-
{
144-
uint256 balanceDiff0 = startingBalance0 - IERC20(token0).balanceOf(address(context.proxy));
145-
uint256 balanceDiff1 = startingBalance1 - IERC20(token1).balanceOf(address(context.proxy));
146-
147-
require(params.min.amount0 >= balanceDiff0 * params.maxSlippage / 1e18, "UniswapV3Lib/min-amount-below-bound");
148-
require(params.min.amount1 >= balanceDiff1 * params.maxSlippage / 1e18, "UniswapV3Lib/min-amount-below-bound");
149-
}
150-
151138
// Clear approvals of dust
152139
ERC20Lib.approve(context.proxy, token0, address(params.positionManager), 0);
153140
ERC20Lib.approve(context.proxy, token1, address(params.positionManager), 0);

test/grove-base-fork/UniswapV3.t.sol

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -289,25 +289,6 @@ contract ForeignControllerSwapUniswapV3FailureTests is UniswapV3TestBase {
289289
);
290290
}
291291

292-
function test_swapUniswapV3_maxSlippageNotSet() public {
293-
uint256 amountIn = 100_000e6;
294-
_fundProxy(amountIn, 0);
295-
296-
vm.prank(GROVE_EXECUTOR);
297-
foreignController.setMaxSlippage(_getPool(), 0);
298-
299-
vm.startPrank(ALM_RELAYER);
300-
vm.expectRevert("UniswapV3Lib/max-slippage-not-set");
301-
foreignController.swapUniswapV3(
302-
_getPool(),
303-
address(token0),
304-
amountIn,
305-
0,
306-
200
307-
);
308-
vm.stopPrank();
309-
}
310-
311292
function test_swapUniswapV3_invalidTokenIn() public {
312293
vm.startPrank(ALM_RELAYER);
313294
vm.expectRevert("UniswapV3Lib/invalid-token-pair");

test/grove-mainnet-fork/UniswapV3.t.sol

Lines changed: 2 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -250,25 +250,6 @@ contract MainnetControllerSwapUniswapV3FailureTests is UniswapV3TestBase {
250250
);
251251
}
252252

253-
function test_swapUniswapV3_maxSlippageNotSet() public {
254-
uint256 amountIn = 100_000e6;
255-
_fundProxy(amountIn, 0);
256-
257-
vm.prank(GROVE_PROXY);
258-
mainnetController.setMaxSlippage(_getPool(), 0);
259-
260-
vm.startPrank(relayer);
261-
vm.expectRevert("UniswapV3Lib/max-slippage-not-set");
262-
mainnetController.swapUniswapV3(
263-
_getPool(),
264-
address(token0),
265-
amountIn,
266-
0,
267-
200
268-
);
269-
vm.stopPrank();
270-
}
271-
272253
function test_swapUniswapV3_invalidTokenIn() public {
273254
uint256 amountIn = 100_000e6;
274255
deal(address(dai), address(almProxy), amountIn);
@@ -279,7 +260,7 @@ contract MainnetControllerSwapUniswapV3FailureTests is UniswapV3TestBase {
279260
_getPool(),
280261
address(dai),
281262
amountIn,
282-
0,
263+
1,
283264
200
284265
);
285266
vm.stopPrank();
@@ -343,7 +324,7 @@ contract MainnetControllerSwapUniswapV3FailureTests is UniswapV3TestBase {
343324
_fundProxy(amountIn, 0);
344325

345326
vm.startPrank(relayer);
346-
vm.expectRevert("UniswapV3Lib/min-amount-not-met");
327+
vm.expectRevert("UniswapV3Lib/min-amount-not-set");
347328
mainnetController.swapUniswapV3(
348329
_getPool(),
349330
address(token0),

0 commit comments

Comments
 (0)