Universal Router
FanX Universal Router — Empowering Seamless Swap Experience
The FanX Universal Router is a unified gateway for CHZ and ERC-20 transactions, enabling composable and efficient trade flows across FanX V2 and V3 protocols. This stateless, immutable contract allows developers and users to consolidate a wide range of operations into a single execution path without requiring multiple separate transactions.
Core Capabilities
Composable Multi-Route Swaps: Seamlessly combine and interleave swap paths across FanX V2 and V3 in a single request.
Partial Execution: Optionally continue execution when certain steps fail, allowing partial fills without canceling the entire transaction.
CHZ ↔ wCHZ Wrapping: Automatically wrap or unwrap CHZ as part of swap flows.
Permit2 Compatibility: Integrates with Permit2 to streamline approval processes, minimizing or eliminating separate token approval steps.
Advanced Position Management: Supports V3 liquidity operations, including permits, modifications, and pool initialization.
Complex Logic Support: Allows execution of multi-step, conditional transaction flows with balance checks and sub-plan execution.
How It Works — Bytecode Commands Engine
Instead of relying solely on predefined function calls, the FanX Universal Router uses a command interpreter structure:
The main entry point,
execute(bytes commands, bytes[] inputs[, uint256 deadline])
, processes a sequence of byte-sized instructions paired with corresponding byte-array parameters.Each command is encoded as a single byte (
bytes1
), which contains:A flag bit to indicate whether the command’s failure should halt execution or allow continuation.
A reserved bit for potential future use.
A command identifier (6 bits) mapping to specific actions such as swaps, wrapping/unwrapping, position changes, or Permit2 logic.
This architecture effectively operates like a “mini virtual machine” within a single transaction, giving users and developers the flexibility to design complex workflows that are executed atomically.
Permit2 — Modernizing Token Approval Mechanics
Permit2 is a unified token approval system that combines two advanced mechanisms into one contract design:
SignatureTransfer: Enables single-use, signature-based token transfers without setting a standing allowance. The authorization is valid only for the specific transaction.
AllowanceTransfer: Allows users to set a capped and time-limited allowance, enabling contracts to spend tokens only within those predefined limits.
Integration and User Experience
To use Permit2, a one-time approval of the Permit2 contract is required. In most cases, granting the maximum possible allowance (type(uint256).max
) is recommended for smoother ongoing interactions.
Permit2 improves security by avoiding repeated approvals, reducing the risk of unlimited token allowances, and enabling more granular, time-bound permissions—while also improving the user experience by removing redundant approval steps.
Last updated