Skip to main content

Overview

ERC20SwapValidator ensures that only authorized routers and tokens are used for ERC20 token swaps. It provides validation methods, mappings to track supported routers/tokens, and emits relevant events to keep track of changes.

Key Features

  • Router and Token Support: Controls which routers and tokens are authorized for swap operations.
  • Swap Validation: Enforces rules for swap operations, ensuring compliance with authorized routers and tokens.
  • Error Reporting: Raises specific errors when a swap operation fails validation.

Error Definitions

  • InvalidLength: Raised when the data length for a swap operation is incorrect.
  • InvalidSelector: The function selector provided is not recognized.
  • UnsupportedToken: The token used is not on the supported list.
  • UnsupportedRouter: The router used is not on the supported list.

Core Methods

  1. View Functions
    • isSupportedRouter(address): Checks if a router is supported for swaps.
    • isSupportedToken(address): Checks if a token is supported for swaps.
  2. Configuration Functions
    • setSupportedRouter(address, bool): Sets a router’s supported status.
    • setSupportedToken(address, bool): Sets a token’s supported status.
  3. Validation Function
    • validate(address, address, bytes): Validates that the swap operation complies with the rules:
      • Checks function signatures.
      • Verifies swap parameters.
      • Ensures routers and tokens are authorized.

Events

  1. Router Updates:
    • ERC20SwapValidatorSetSupportedRouter(address, bool, uint256): Emitted when a router’s support status is updated.
      • router: Address of the router.
      • flag: Boolean indicating support status.
      • timestamp: Timestamp of the action.
  2. Token Updates:
    • ERC20SwapValidatorSetSupportedToken(address, bool, uint256): Emitted when a token’s support status is updated.
      • token: Address of the token.
      • flag: Boolean indicating support status.
      • timestamp: Timestamp of the action.