04 — Docs
Pair assets
Which coins a launch can be priced in, and how the chain decides.
Pair assets
Which coins a launch can be priced in, and how the chain decides.
01The catalogue
The launch form lists coins by category — Starknet's own protocols, memecoins, the majors as they exist here, stablecoins. The list is only for discovery. Nothing on it is eligible because it is listed, and anything not listed can still be pasted in by address: the registry is asked either way.
The anchors — ETH, STRK, USDC, USDT and WBTC — are always accepted. Everything else has to prove it has a market.
02What "a real market" means
A coin qualifies by showing enough depth in dollars on Ekubo against one of the anchors. Depth is
measured by EkuboQuoteGate in three parts, each there to close a way of faking the one before.
Price comes from Ekubo's oracle extension: the mean tick of the coin against the oracle token over the last half hour, combined with the anchor's own mean tick so any pair can be valued through ETH. Spot can be moved inside a transaction; a half-hour average cannot.
Depth is walked off the pool's tick bitmap: how much of the anchor the pool would actually hand out between its current price and the edge of a 2% band around that average. A tight range parked far from the market counts for nothing, and a pool whose spot has been pushed outside the band reads as empty — so pushing the price is not a way to look deep.
Witnessing closes the last gap. Nothing on Starknet records a pool's liquidity over time, so
depth is a present-tense reading, and the present is one flash loan away from saying anything.
The gate therefore remembers readings: anybody can poke a coin, and eligibility takes the
minimum of the readings inside a window. Depth added with a flash loan and removed in the same
transaction is depth a later honest reading will not see. A keeper samples the watchlist at random
intervals; anyone can run one, and anyone can take a reading by hand from the launch page.
Witnessing is a switch the owner turns on once a keeper is running. Until then a single reading decides, which is fine for a launch and weaker against a patient attacker.
03Why a coin is refused
| reason | what it means | what fixes it |
|---|---|---|
| not an ERC-20 | the address does not answer decimals() | nothing — it is not a coin |
| unsupported decimals | fewer than 6 or more than 18 | nothing |
| no reference pool | no Ekubo pool against any anchor at a configured fee tier | somebody opens one |
| not measured yet | the oracle has not watched the market for half an hour, or nobody has sampled it | wait, or start watching it |
| not enough depth | the market is real but under the bar | more liquidity |
| no anchor price | Pragma's feed is stale | retry shortly |
04Overrides
QuoteRegistry sits in front of the gate with allow and deny lists, for the two cases measurement
alone gets wrong: coins that are genuinely liquid somewhere the gate cannot see, and coins that
must never be quoted against — rebasing, fee-on-transfer, honeypots. Fee-on-transfer and rebasing
coins are not auto-detected; they belong on the deny list.