Docs · §6ME-RTE-06

Routing

The engine buys with USDG on Uniswap v3. Which pools it can use, why some assets read no route yet, how memecoins qualify, and how the capsule budget is protected from bad fills.

6.1 Two route families

A route is named by what funds the buy. pons v2 coins earn USDG, so their capsules buy from USDG; coins launched before v2 earned WETH and still buy from WETH. Every asset carries both answers, and it is routable if either family has a pool deep enough.

6.1.1

USDG-funded (live). direct-usdg swaps USDG → asset in one hop. via-weth swaps USDG → WETH (0.01% pool) → asset. Most stock pools quote in USDG, the stablecoin at 0x5fc5360d0400a0fd4f2af552add042d716f1d168, so most stocks go direct.

6.1.2

WETH-funded (legacy). direct swaps WETH → asset; via-usdg swaps WETH → USDG → asset. Kept for capsules launched on pons v1; no new coin uses it.

Routable stocks42 / 71
USDG0x5fc5360d…
WETH0x0bd7d308…
Min depth$1,000
Slippage cap3%

6.2 v3 vs v4

The tokenized stocks trade in a mix of Uniswap v3 pools (a contract address per pool) and Uniswap v4 pools (a 64-hex pool id inside a singleton). The engine executes through the v3 SwapRouter02 at 0xcaf681a66d020601342297493863e78c959e5cb2 today. It cannot route through v4 yet. An asset whose only liquidity is on v4 is therefore unbuyable and is dimmed on the shelf with no route yet. That includes, for now, any pons v2 coin that has graduated: it lives in a v4 pool, so a capsule cannot hold another capsule's coin.

6.3 Route discovery

6.3.1

scripts/discover-routes.ts asks the v3 factory getPool(asset, quote, fee) for every quote in {USDG, WETH} and every tier in 100 / 500 / 3000 / 10000, reads each pool's quote-side depth, and stores the deepest per family in lib/routes.json (routesUsdg and routes). The engine refreshes it into the database daily, tagged by funding token.

6.3.2

A pool shallower than MIN_ROUTE_DEPTH_USD = $1,000 is treated as no route in that family. Buying into a $400 pool with a $50 order is just slippage with extra steps; the asset stays off the shelf until liquidity shows up.

6.3.3

The shelf, the builder and the catalog table all read the one routable flag the API computes across both families. Nothing on the site decides routability from a single route on its own.

6.4 Memecoins in a capsule

Any Robinhood Chain ERC-20 qualifies under the same rule as a stock: it needs a Uniswap v3 pool at least $1,000 deep on the quote side, in either family — against USDG directly, or against WETH. The builder resolves a pasted address through GET /api/token/[address], which reads the token on chain, pulls its logo and price from DexScreener, probes the same {USDG, WETH} × 100/500/3000/10000 grid, and — if a pool clears the depth bar — writes the route into the same routes table the stocks use. From then on the engine buys it exactly like a stock: quote, cap slippage, swap, drop. WETH, USDG and other capsule coins are refused; a capsule cannot hold itself. Full walkthrough in §3.1.2.

6.5 Slippage

Before each purchase the engine quotes the exact route through QuoterV2 and sets amountOutMinimum to the quote less SLIPPAGE_BPS=300 (3%). If the pool moves more than that between quote and execution the swap reverts, the USDG stays unspent, and the asset is retried on the next drop. Nothing is ever bought at any price.

for asset in capsule:
  spend   = budget × weight / 10000                 # budget in USDG (6 dec)
  route   = routes[asset][funding]                  # funding = usdg for v2 coins, weth for v1
  quote   = QuoterV2.quoteExactInput(route, spend)
  minOut  = quote × (10000 − 300) / 10000
  SwapRouter02.exactInput({ path: route, amountIn: spend, amountOutMinimum: minOut })
  on revert → leave spend unspent, log, continue

6.6 Why "no route yet" exists

The builder refuses unroutable assets on purpose. A capsule is sealed at launch; if it contained an asset the engine cannot buy, that slice of every future drop would silently pile up as unspent USDG or, worse, buy at terrible prices. "No route yet" means "not this one, not yet". When a v3 route appears in either family the note comes off and new capsules can hold it. Existing capsules never change (§3).

Next

v4 execution is the obvious next piece. When it ships, most "no route yet" notes will disappear, graduated pons coins become eligible for capsules, and this section will say so. Until then the shelf page shows each asset's route kind and fee live: §7.