Asset Resolver
Every identity a symbol maps to — perp, spot, HIP-3, HIP-4 — with asset IDs, token and pair indexes, decimals and copyable snippets, side by side across networks.
How Hyperliquid names things
Every tradeable thing has several spellings, and each spelling is accepted in exactly one place. The prefixes are the coin-string column: @ spot pair by index, # outcome coin, + outcome token, dex: HIP-3 perp. A bare number is an asset ID, but the same number also exists as a spot pair index, a token index and an outcome ID — four separate index spaces.
- Coin string
The name info requests and WebSocket subscriptions take. Each prefix is a different venue.
infoWebSocketBTCxyz:TSLA@107PURR/USDC#83061Perp: its name. HIP-3 perp: dex:name. Spot: @<spot pair index>, or BASE/QUOTE for canonical pairs only. Outcome: #<encoding>.
- Action asset ID
The integer in the a field of order and cancel actions, and the asset field of CoreWriter actions.
exchange aCoreWriter011000110107100083061Perp: index in meta.universe. HIP-3: 100000 + dex × 10000 + index. Spot: 10000 + spot pair index. Outcome: 100000000 + encoding.
- Display symbol
What the app shows. The API never accepts it, which is why UBTC/USDC fails as a coin.
app onlyBTC-PERPHYPE/USDCUBTC/USDCPerp name + -PERP; spot base/quote token names; outcome name · side.
- Token
A balance, not a market. It has a name, an index (a third index space, separate from spot and perp indexes), a 16-byte ID and, when linked, an EVM contract.
spotClearinghouseStatespotSend / sendAssetCoreWriterHyperEVMHYPE1500x0d01dc56dcaaca66ad901c959b4011ecHYPE:0x0d01…+83061spotMeta.tokens[].index and tokenId. Transfers take name:tokenId. Outcome tokens are +<encoding>.
- Outcome encoding
HIP-4 outcomes have two sides (Yes = 0, No = 1). One number encodes both and sits inside the coin, the token and the asset ID.
infoexchange aspotClearinghouseState83061 = outcome 8306, side 1 (No)encoding = 10 × outcome + side. Coin #<encoding>, token +<encoding>, asset ID 100000000 + encoding.