WStETHMock.wrap function returns stETHAmount_ variable instead of wstETHAmounthttps://github.com/Cyfrin/2024-01-Morpheus/blob/07c900d22073911afa23b7fa69a4249ab5b713c8/contracts/mock/tokens/WStETHMock.sol#L26
The WStETHMock.wrap function should return wstETHAmount, but returns a received stETHAmount_ variable. This inconsistency with the original function can cause issues with test improvements.
The original wrap function returns wstETHAmount:
https://etherscan.io/token/0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0#code
The WStETHMock.wrap function returns stETHAmount_:
Inconsistency with the original function case issues with test improvements.
Manual Review
Consider announcing and returning the wstETHAmount variable.
SwapRouterMock.exactInputSingle function returns params_.amountIn variable instead of amountOuthttps://github.com/Cyfrin/2024-01-Morpheus/blob/07c900d22073911afa23b7fa69a4249ab5b713c8/contracts/mock/SwapRouterMock.sol#L12
The SwapRouterMock.exactInputSingle function should return amountOut, but returns a received params_.amountIn variable. This inconsistency with the original function can cause issues with test improvements.
The original exactInputSingle function returns amountOut:
https://github.com/Uniswap/v3-periphery/blob/697c2474757ea89fec12a4e6db16a574fe259610/contracts/SwapRouter.sol#L120
The SwapRouterMock.exactInputSingle function returns params_.amountIn
Inconsistency with the original function case issues with test improvements.
Manual Review
Consider announcing and returning the amountOut variable.
SwapRouterMock.exactInputSingle function does not revert if tokenIn == tokenOuthttps://github.com/Cyfrin/2024-01-Morpheus/blob/07c900d22073911afa23b7fa69a4249ab5b713c8/contracts/mock/SwapRouterMock.sol#L8-L12
The SwapRouterMock.exactInputSingle function does not revert if tokenIn == tokenOut. This invariant can not be checked.
There is an revert in the execution flow of the original function:
https://github.com/Uniswap/v3-periphery/blob/697c2474757ea89fec12a4e6db16a574fe259610/contracts/libraries/PoolAddress.sol#L33-L34
The tokenIn == tokenOut invariant can not be checked.
Manual Review
Consider adding the corresponding check.
SwapRouterMock.exactInputSingle function does not check deadlinehttps://github.com/Cyfrin/2024-01-Morpheus/blob/07c900d22073911afa23b7fa69a4249ab5b713c8/contracts/mock/SwapRouterMock.sol#L8-L12
The SwapRouterMock.exactInputSingle function does not check the deadline with checkDeadLine. This invariant can not be checked.
The original exactInputSingle function has the checkDeadline modifier:
https://github.com/Uniswap/v3-periphery/blob/697c2474757ea89fec12a4e6db16a574fe259610/contracts/SwapRouter.sol#L119
The incorrect deadline invariant can not be checked.
Manual Review
Consider adding the corresponding check.
SwapRouterMock.exactInputSingle function does not check amountOut >= params.amountOutMinimumhttps://github.com/Cyfrin/2024-01-Morpheus/blob/07c900d22073911afa23b7fa69a4249ab5b713c8/contracts/mock/SwapRouterMock.sol#L8-L12
The SwapRouterMock.exactInputSingle function does not check amountOut >= params.amountOutMinimum. This invariant can not be checked.
The original exactInputSingle function has the amountOut >= params.amountOutMinimum require:
https://github.com/Uniswap/v3-periphery/blob/697c2474757ea89fec12a4e6db16a574fe259610/contracts/SwapRouter.sol#L128
The insufficient amountOut invariant can not be checked.
Manual Review
Consider adding the corresponding check.
SNonfungiblePositionManagerMock.increaseLiquidity function does not check deadlinehttps://github.com/Cyfrin/2024-01-Morpheus/blob/07c900d22073911afa23b7fa69a4249ab5b713c8/contracts/mock/NonfungiblePositionManagerMock.sol#L7-L9
The SNonfungiblePositionManagerMock.increaseLiquidity function does not check the deadline with checkDeadLine. This invariant can not be checked.
The original increaseLiquidity function has the checkDeadline modifier:
https://github.com/Uniswap/v3-periphery/blob/697c2474757ea89fec12a4e6db16a574fe259610/contracts/NonfungiblePositionManager.sol#L202
The incorrect deadline invariant can not be checked.
Manual Review
Consider adding the corresponding check.
SNonfungiblePositionManagerMock.increaseLiquidity function does not check amount0 >= params.amount0Min && amount1 >= params.amount1Minhttps://github.com/Cyfrin/2024-01-Morpheus/blob/07c900d22073911afa23b7fa69a4249ab5b713c8/contracts/mock/SwapRouterMock.sol#L8-L12
The SNonfungiblePositionManagerMock.increaseLiquidity function does not check amount0 >= params.amount0Min && amount1 >= params.amount1Min. This invariant can not be checked.
The execution flow of the original function has the amount0 >= params.amount0Min && amount1 >= params.amount1Min require:
https://github.com/Uniswap/v3-periphery/blob/697c2474757ea89fec12a4e6db16a574fe259610/contracts/base/LiquidityManagement.sol#L88
The max price slippage invariant can not be checked.
Manual Review
Consider adding the corresponding check.
SNonfungiblePositionManagerMock.increaseLiquidity function does not revert if the tokenId is incorrecthttps://github.com/Cyfrin/2024-01-Morpheus/blob/07c900d22073911afa23b7fa69a4249ab5b713c8/contracts/mock/SwapRouterMock.sol#L8-L12
The SNonfungiblePositionManagerMock.increaseLiquidity function does not does not revert if the tokenId is incorrect. This invariant can not be checked.
The incorrect tokenId invariant can not be checked.
Manual Review
Consider adding the corresponding check.
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.