WStETHMock.wrap
function returns stETHAmount_
variable instead of wstETHAmount
https://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 amountOut
https://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 == tokenOut
https://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.amountOutMinimum
https://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.amount1Min
https://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.