Pair assets
What your coin can be priced in. This is the part that replaces a hardcoded list of tickers with a measurement.
The published list
Five assets, offered by name in the interface:
<!-- CURATED LIST -->| bucket | symbol | address | measured depth |
|---|---|---|---|
| anchor | INJ (held in the pool as its wrapper, wINJ, because a pool holds ERC-20s) | 0x0000000088827d2d103ee2d9A6b781773AE03FfB | anchor |
| anchor | USDT | 0x88f7F2b685F9692caf8c478f5BADF09eE9B1Cc13 | anchor |
| anchor | USDC | 0xa00C59fF5a080D2b954d0c75e46E22a0c371235a | anchor |
| anchor | wETH | 0x83A15000b753AC0EeE06D2Cb41a69e76D0D5c7F7 | anchor |
| long tail | MOTION | 0x7a1C36f34e43014EfD5E08ead6f99118BC1ACA20 | $6,737 against wINJ |
That is a short list, and it is short because Injective EVM's book is. On 22 September 2026 every concentrated pool on the chain together — all of them in Choice Exchange's Infinity deployment — held about $43,000. Every pool was measured the way the gate measures it before anything was written down, and what did not make it is listed below with the reason, so nobody has to wonder.
| asset | depth measured | why it is not on the list |
|---|---|---|
1MORE | $1,157 against wINJ | under the curated bar |
PROOF | $132 against wINJ | far under the bar, and its pool sits behind Choice's launch guard hook |
INJIVA | $5,418 against wINJ | behind Choice's launch fee hook, which runs on every swap; no hook is accepted until the owner has read it |
CULT | $9,771 against wINJ | the same hook |
Anything else
You are not limited to the list. Paste any address and it goes through the same measurement — it just has to clear a higher bar, because nobody has looked at it.
| bar it must clear | |
|---|---|
| on the published list | $2,000 |
| pasted in by address | $5,000 |
Both numbers are depth in USD on the anchor side of the pool, and both are read live at the moment of the launch. Being on the list lowers the bar; it never removes it. A listed asset whose market dies stops being launchable on its own, without anyone intervening.
The bars are set against Injective, not copied from anywhere else. The Avalanche deployment this was ported from used $10,000 and $25,000; against a whole-chain book of $43,000 those would leave nothing but the anchors. A fifth of them keeps the one real long-tail market and still refuses the pools that are a few hundred dollars deep. Lowering them further would admit markets a single wallet can stage.
Anchors
Four assets are eligible without being measured, because everything else is priced against them:
| anchor | priced by |
|---|---|
wINJ | API3's INJ/USD dAPI |
USDT | par, $1 |
USDC | par, $1 |
wETH | API3's ETH/USD dAPI |
Injective EVM has no Chainlink push feeds, so the prices come from API3, whose reader proxies speak Chainlink's interface. There is no BTC/USD dAPI on the chain, and so no bitcoin anchor. A feed older than 26 hours prices nothing rather than something stale: the dollar dAPIs publish on a 24-hour heartbeat, and INJ/USD moves on deviation and is usually minutes old.
How depth is measured
Not by asking a price feed, and not from a single number a launcher could have arranged.
An Infinity pool keeps no oracle — no price history at all — and every pool's tokens sit in one shared
Vault, so there is no per-pool balance to cap a reading by either. So the gate, InfinityQuoteGate,
walks the pool's own ticks outward from the current price, up to 20,000 ticks away, and adds up
the anchor that a trade could actually take out on the way, exactly as a swap would. A few hundred
dollars in a one-tick range integrates to a few hundred dollars, however large a liquidity figure it
produces. Anchor parked far from the price is not counted, because no trade inside that span reaches
it.
What a live reading cannot do, stated plainly rather than buried: it describes this instant, and
this instant is one flash loan away from saying anything — borrow, deposit as liquidity, be measured,
withdraw, repay, all inside one transaction. The machinery to defend against that exists and is
switched off. With requireWitness on, the gate keeps a record of readings anyone can take with
poke — at least eight, at least four minutes apart, spanning half an hour, none older than an hour —
and uses the lowest of them, together with the live one. Faking that means holding the depth
through readings you do not control the timing of. It is one owner call (setRequireWitness(true))
away, with no redeployment. It is off because the certain cost falls on the wrong people: every
legitimate coin would wait half an hour and need someone sampling it. On a chain this thin it is the
setting most worth revisiting as the book grows.
Which pools count
A pool becomes evidence for a coin once somebody registers it with the gate. Infinity's
singleton has no directory the gate could search, so the pool has to be named — registerPool(key),
which anyone can call. Rules:
- The pool must hold exactly one anchor; the coin is the other side.
- It must already show a quarter of the curated bar ($500) — registration is permissionless, and a coin only has two slots, so they cannot be squatted for nothing.
- The key must name Choice's CLPoolManager. An Infinity key carries its own pool manager, and one naming any other contract is refused before anything is read.
- Hookless pools only, unless the owner has allowlisted the hook. A hook runs on every swap and can
refuse one, so a hooked pool can hold depth that nobody is able to trade against — the very thing the
gate exists to rule out. Allowing a hook (
setHookAllowed) is an owner decision made after reading it; none is allowed today.
Pools quoted in native INJ count as wINJ. Where a coin has two registered pools, the deeper one decides — never the sum, because depth in two pools is not depth you can trade through at once.
Coins launched here
A coin launched here trades in its own Infinity pool, and that pool is exactly the kind the gate
reads. So a coin launched here can become a pair asset in its own right: once real money has been
paid into its pool — launches open single-sided, holding no pair asset at all until somebody buys —
anyone can call registerLaunch(token), and it is measured like everything else, against the custom
bar unless it is curated.
Nothing about it is special-cased in either direction. Its liquidity being permanently locked in the vault is a real extra guarantee — it cannot be pulled mid-window — but the anchor side still moves with the price, and the price is still flash-movable, so it is measured the same way.
Allowlisted, not measured
The registry can also allowlist an asset, which means it answers "allowed" without measuring anything. That is the one place this protocol would take someone's word instead of reading the chain.
On Injective it exists for one kind of asset: tokens whose real market is somewhere the EVM cannot see. Much of Injective's liquidity lives on Helix's order book and on Choice's CosmWasm AMM, and a bank-module token traded only there has an ERC-20 address here but no pool for any gate to read. Nothing is allowlisted today. The allowlist can be withdrawn by the owner for future launches; it cannot touch a coin already launched.
Why an asset gets refused
| code | meaning |
|---|---|
| 1 | not an ERC-20 |
| 2 | decimals outside 6–18 |
| 3 | no registered pool against the anchors |
| 4 | not enough readings yet (only with witnessing switched on) |
| 5 | not enough depth |
| 6 | no anchor price available right now — transient, retry |
Code 3 is the common one here, and it is fixable by anyone: find the coin's pool against an anchor and register it.

