skip to content

how routing works in phase 0

You tell us the wrapper you hold, the one you want and how much. We return a route: an ordered list of legs, each one a swap or a bridge, with what goes in, what should come out, the worst it can come out at, and what it costs. Your wallet signs each leg. We don't touch the tokens in between.

legs#

The shape of a route depends only on where the two wrappers live.

  • Same chain: one swap, wrapper for wrapper. TSLAx to TSLAon on Ethereum is one leg.
  • Different chains: three legs. Sell the wrapper for that chain's usd stablecoin, bridge the stablecoin, buy the other wrapper. TSLAx on Solana to TSLAon on Ethereum is: swap TSLAx for USDC on Jupiter, bridge USDC to Ethereum through LI.FI, swap USDC for TSLAon.

We go through a stablecoin because that's where the liquidity is. Wrapper-to-wrapper pools across issuers barely exist.

venues and bridges#

  • Solana swaps: Jupiter, which routes across Orca, Raydium and the other Solana venues.
  • EVM swaps and every bridge: LI.FI, which aggregates the DEXes and bridges on each chain.

Both return a quote and an unsigned transaction. If a leg needs a token approval first, it's part of that leg, so the leg numbers you see don't change with your allowances.

why later legs are built late#

Only the first leg's transaction is built when you get a quote. A bridge takes minutes and lands an amount that's never exactly the estimate, so we build each later leg when you reach it, from what actually arrived. Building them all up front would mean signing a swap for an amount you might not have.

If a leg fails or you reject it, nothing after it is sent. The app tells you what you hold at that point, on which chain, so you can start again from there.

how fees are shown#

Every leg shows its fee in dollars and in basis points of what goes into it. Above the legs, the quote shows:

  • you receive about: the expected output.
  • at least: the minimum after your slippage limit. Each leg reverts rather than fill worse than this.
  • total cost: fees, spread and price impact together, against the value of what you put in, in basis points.
  • price impact: how much your size moves the price.

The venues' fees are in those numbers. isomer charges nothing on top in phase 0.

what we don't do#

  • We don't custody anything. No contract of ours holds your tokens, even for a moment. Every transaction is between your wallet and the venue or bridge.
  • We don't have a pool. Phase 0 can only route through liquidity that already exists. If a wrapper's pools are thin, the route is expensive, and we show that rather than hide it.
  • We don't decide your eligibility. We compare the country you give us with each issuer's published terms and warn you, and the app won't quote for anyone who says they're in the United States. Whether you may hold a token is between you and its issuer. See eligibility and restrictions.

what basis means#

Basis is how far apart two wrappers of the same stock trade:

basis(A over B) = (price of A − price of B) / price of B × 10,000

in basis points, where both prices are in dollars per share of the underlying. TSLAx at $381.40 against TSLAon at $379.50 is a basis of +50 bps. The max basis for a stock is the largest absolute basis between any two of its wrappers.

The details matter, so here they are:

  • Per share, not per token. Each price is converted with the wrapper's multiplier, read live from the chain, before it's compared. See why tokenized stocks fragment.
  • The pool's price, not the trade's. For every swap we decode we record two prices. The pool's own price right after the trade has no fee in it, and it's what basis uses. What the trader actually paid, fees included, is kept per side as the real cost of arbitraging a gap. A pool with a 1.5% fee would otherwise look 150 bps rich on every buy.
  • First-party only. Prices we read from venues or pools directly count. Prices from DexScreener, an aggregator, are shown for reference and marked third-party, but never enter a basis figure.
  • Fresh only. A wrapper's last price counts for 5 minutes, live and in the per-minute history alike. After that it drops out until it trades again.
  • Stablecoins are $1. We don't adjust for a stablecoin's own price yet.

The live numbers, 7 days of history and a csv download are on /basis, and in the api.