# HyperCore

Tartarus tokens are built so they can move from Elysium to a HyperCore spot listing without changing
the token. This page separates what is already true of every launch from what is still to come.

> [!NOTE]
> **No Tartarus token can be listed on HyperCore yet.** Kinetiq has not published the mirror bridge
> factory on Elysium mainnet, so launches create no bridge wallet today, and Elysium does not yet
> expose HyperCore precompiles.

## What every launch already satisfies

These are fixed by the contracts, for every token, from its first block:

| Requirement | How Tartarus meets it |
|---|---|
| Immutable name, symbol and decimals | Stored in the bytecode, with no setter. The bridge keys a mirror on these exact values |
| Valid ticker | `[A-Z0-9]`, 1 to 6 characters, the HyperCore ticker verbatim |
| Unique ticker | One launch per symbol across Tartarus; major assets reserved |
| Fixed supply | Exactly `1e27` raw, with no mint or burn |
| Plain transfers | No tax, rebase, pause or blocklist on the token |
| Representable on HyperCore | At 1,000,000,000 tokens, `weiDecimals` of 10 or fewer fits in `uint64` Core wei |
| Bridge-ready | An escrow wallet created in the launch transaction, **once a bridge factory is set** |

## The path to a listing

1. **Bridge wallet.** The escrow wallet for the token on Elysium. New launches get one automatically
   once `elysiumBridgeFactory` is set. `createL2Wallet` is permissionless, so earlier launches can
   create theirs afterwards.
2. **Mirror.** A 1:1 mirror of the token is registered on HyperEVM, keyed on its exact name, symbol and
   decimals.
3. **HIP-1 deploy.** The issuer wins the HyperCore ticker auction and runs genesis.
4. **Link.** The HyperCore spot token is linked to the mirror.

Steps 3 and 4 happen on HyperCore, outside Tartarus. A ticker auction costs real money, and winning
one is not guaranteed.

## Reading a token's status

`hypercoreStatus` on `GET /v1/tokens/:id`:

| Value | Meaning |
|---|---|
| `none` | No bridge wallet yet. Every mainnet token today |
| `bridgeWallet` | The escrow wallet exists |
| `mirrorRegistered` | The HyperEVM mirror is registered |
| `ascended` | Linked to a HyperCore spot token |

`bridgeWallet` on the same record is the wallet's address, or `null`.

On chain, `factory.bridgeWalletFor(token)` and `factory.expectedMirrorFor(token)` return the same facts
once a bridge factory is set. **Both revert with `BridgeFactoryNotSet` until then**, so wrap them, or
check `factory.elysiumBridgeFactory()` first.

A launch records the outcome with `BridgeWalletCreated(token, wallet)` or `BridgeWalletSkipped(token)`.
A bridge failure can never block a launch. With no factory set, neither event fires.