Flux
Docs
Arc Testnet · 5042002Launch app
Docs/Swap

Overview

USDC is Flux's settlement currency — batch payouts, streams, and agent spend caps are all denominated in it. Swap exists so that holding a different Arc asset never blocks you from using the rest of Flux: convert into USDC in-app, in one transaction, without going anywhere else.

Swap is live on Arc Testnet. It is not a general trading terminal — every quote is priced toward USDC as the destination asset.

Routing & the four routes

Every enabled route is quoted in parallel. Flux ranks them by net output — what you'd actually receive after that route's fee and the gas cost of the transaction — and the highest net output wins automatically. You can also pin a specific route yourself in Settings; if your pinned route has no quote for the current pair, Flux falls back to the best available and tells you why.

xylonet
XyloNet
StableSwap AMM. Deepest liquidity of the four today.
Live
unitflow
UnitFlow
Uniswap V2-lineage DEX on Arc. Live once its pools are seeded with liquidity.
Pending
synthra
Synthra
Concentrated-liquidity venue. Integration pending a public quote API.
Pending
circle
Circle
Official Arc App Kit swap SDK (@circle-fin/swap-kit).
Live

A route that can't quote your pair — no liquidity, not yet configured, or a timed-out request — renders as a plainly labelled disabled row with the real reason. Flux never shows a placeholder number in place of a route that isn't actually quoting.

A note on gas

Arc's native gas token is separate from the USDC ERC-20 that Flux settles in — they are two different tokens, even though both are USD-denominated. Net-output ranking converts the gas cost into the same USD terms as the swap itself, so routes are compared on a genuinely like-for-like basis.

Slippage & price impact

Max slippage sets minAmountOut — the least you will accept back. Flux re-quotes immediately before you sign; if the fresh quote can't meet your displayed minAmountOut, the swap is blocked rather than sent at a worse price than you saw.

Price impact — how far your trade moves the pool away from its resting price — escalates through three tiers:

Above 1% — the price impact figure turns amber. No blocking, just visibility.
Above 5% — an inline warning card appears explaining the low liquidity. The swap button stays disabled until you check an explicit acknowledgement.
Above 15% — a separate modal blocks the swap entirely until you type “I will lose money” exactly. This is the strongest guard in the app, by design.

Limit orders

A limit order escrows your input token in FluxLimitOrder, an on-chain contract, along with a minimum output and an expiry. Anyone can call executeOrder once a route can deliver at least your minimum — in practice, a scheduled keeper does this automatically, checking open orders on a short interval and filling anything that clears its trigger through an owner-allowlisted router.

That means fills are not instant the moment your price is technically reachable — there is a keeper-cycle delay, typically under a minute. You can cancel an open order at any time, including after it has expired, and reclaim your full escrowed amount.

Order lifecycle
Open  →  Filled     (executeOrder clears your minAmountOut trigger)
      →  Cancelled  (maker reclaims escrow, any time, even post-expiry)

Swap history

Nothing about your swap history is stored locally. Every row in the History tab is reconstructed on demand from Arc itself — Flux reads your wallet's transactions, filters to the verified route routers, and derives amounts from the token transfers in each one. Open the app on a different device with the same wallet and the same history is there. Failed transactions are shown, not hidden.