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 in path 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, and receiver.

    • 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, and receiver.

    • 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, and receiver.

    • 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.

Zellic © 2024Back to top ↑