Function: swap(PathRoute path, uint256 amount, address receiver)
This swaps tokens using different routing paths and DEXs.
Inputs
path
Control: Fully controlled.
Constraints: The function would revert if
path.route
is not one of these values: 1, 2, or 3.Impact: The routing path information.
amount
Control: Fully controlled.
Constraints: No constraints.
Impact: The amount of tokens to swap.
receiver
Control: Fully controlled.
Constraints: No constraints.
Impact: The address to receive the swapped tokens.
Branches and code coverage (including function calls)
Intended branches
The function checks the
route
value inpath
and calls the corresponding DEX-specific swap function.The function returns the amount of swapped tokens.
Negative behavior
The function reverts with
IErrors.InvalidPath()
if the provided route value is not recognized.
Function call analysis
CamelotSwapper._swapOnCamelot(path.bestPath, amount, path.toAmountMin, receiver)
What is controllable?
path.bestPath
,amount
,path.toAmountMin
, andreceiver
.If return value controllable, how is it used and how can it go wrong? This function call returns the amount of tokens received after swapping.
What happens if it reverts, reenters, or does other unusual control flow? If the swap on Camelot fails, it will revert and the transaction will be rolled back.
SushiSwapper._swapOnSushi(path.bestPath, amount, path.toAmountMin, receiver)
What is controllable?
path.bestPath
,amount
,path.toAmountMin
, andreceiver
.If return value controllable, how is it used and how can it go wrong? This function call returns the amount of tokens received after swapping.
What happens if it reverts, reenters, or does other unusual control flow? If the swap on SushiSwap fails, it will revert and the transaction will be rolled back.
_swapOnUniswapV3(path.bestPath, path.fee, amount, path.toAmountMin, receiver)
What is controllable?
path.bestPath
,path.fee
,amount
,path.toAmountMin
, andreceiver
.If return value controllable, how is it used and how can it go wrong? This function call returns the amount of tokens received after swapping.
What happens if it reverts, reenters, or does other unusual control flow? If the swap on UniswapV3 fails, it will revert and the transaction will be rolled back.