Skip to main content

Swaps

Two kinds of swap

Any listed token can be swapped for any other. The app picks the route; you don’t choose pools. See Supported tokens for the full list. Every swap is atomic: it settles in full in one transaction or not at all. There are no partial fills.

Same-currency swaps

Each currency has one pool holding all its stablecoins (for example, the USD pool holds USDC, USDT, RLUSD and OUSD). A same-currency swap exchanges one coin for another inside that pool at 1:1 minus the fee. The fee starts at the pool’s base fee and rises when the coin you are buying is running short in the pool, which steers flow back towards balance. A pool never pays out a coin below 5% of what it owes in that coin. See Fees.

Cross-currency swaps

A cross-currency swap takes your coin into its currency pool and pays the other coin out of the other currency’s pool. The rate:
  1. Starts from the oracle mid-rate (e.g. EUR/USD). See How the exchange works for oracle sources.
  2. Is adjusted by a pricing curve that moves the rate against the trade as size grows or as the pool it pays out of gets short. Small trades in a balanced pool price very close to the oracle; large trades or depleted pools price further away.
  3. Has the fee deducted.
If a quote would land more than 2% away from the oracle rate, the pool refuses it. Larger tickets of that kind go to RFQ, where market makers quote a firm price.

Gasless swaps

The first time you sell a token, you approve it once to the canonical Permit2 contract. That approval is an on-chain transaction you pay gas for. After that, swaps of $100 or more are gasless. You sign a message (free) and the BlankFX relayer submits the transaction through the relay router. BlankFX currently pays the network fee. The relayer cannot change your order: the contract only executes the exact amounts, tokens and recipient you signed. Swaps under $100 are sent from your own wallet and you pay gas.

Rate protection

Every swap carries a minimum output. If the rate moves against you by more than your tolerance between quote and execution, the transaction reverts and you keep your tokens. The default tolerance is 0.10%. You can set it between 0.01% and 1% under Trade settings → Rate protection.