# Pangea documentation: v3

This is the Markdown version of https://www.pangea.trade/app/docs/v3. The whole documentation, every tab, is https://www.pangea.trade/app/docs.md.

Factory v3 made the launches from 2026-11-02 until v4, and those coins keep its rules: the factories, the fee hook, launch buys, stock pairs, the bridge price-gap fee, Solana, the security model, and plain-language questions and answers at the end. Bridging, routes and the APIs are in the v2 tab and hold for v3 except where this tab says otherwise.

- A v3 launch is one token on up to five chains, each chain minting its own 1B and pooling all of it. No bonding curve.
- Bridging is LayerZero Omnichain Fungible Tokens, and moving from a cheap chain to a dear one pays the price gap, burned.
- Liquidity is locked on every chain: no contract function or program instruction withdraws it.

| Figure | Value | What it says |
| --- | --- | --- |
| Chains | 5 | Ethereum, Base, BSC, Robinhood Chain and Solana: any two to five of them, at least one EVM. |
| Lowest opening | 600 | Market cap a chain, the least a v3 launch may open at. |
| Per liquidity pool | 1B | Each chain mints its own 1B and pools all of it. |
| Trading fee | 0.3-5% | Set once, per launch, per chain if you like. |

## Pangea v3 at a glance

**Live from 2026-11-02 until v4.** Until v4, every launch, on Ethereum, Base, BSC, Robinhood Chain and Solana, was made by factory v3. Every new launch is now v4 (the v4 tab). A coin is still one token on two to five chains, all of its supply in liquidity and locked for good, its prices held together by arbitrage. Coins launched before keep the rules they launched under (the v2 tab, with v1 at its end).

### What is new

- **A lower opening.** A coin can open at $600 of market cap a chain. [Launching on v3 →](https://www.pangea.trade/app/docs/v3#v3-launch)
- **Each chain mints its own 1B, all of it pooled.** No locked supply and no moon mode. [What changed →](https://www.pangea.trade/app/docs/v3#v3-changes)
- **Launch buys.** Up to 10 wallets a chain (32 in all) buy inside the launch transaction itself. [Launch buys →](https://www.pangea.trade/app/docs/v3#v3-launch-buys)
- **Stock pairs.** A chain's pool can pair with a tokenized stock instead of its native coin. [Pairing with a stock →](https://www.pangea.trade/app/docs/v3#v3-stocks)
- **Elysium, a sixth chain.** Elysium coins, paired with HYPE or any token, launched from your own wallet with no launch fee; each bridges over its own Hyperlane warp route once deployed. [Elysium →](https://www.pangea.trade/app/docs/v3#v3-elysium)
- **The bridge price-gap fee.** Bridging from a cheap chain to a dear one pays the price gap, burned, priced only from on-chain pools. [The price-gap fee →](https://www.pangea.trade/app/docs/v3#v3-gap-fee)
- **Cheapest route.** A trade can be filled on another chain's pool when that is better after every fee. [Cheapest route →](https://www.pangea.trade/app/docs/v3#v3-cheapest)
- **Every option, every endpoint, every contract.** Each launch option and what it costs, creator rewards and community takeovers, the trade card, every API endpoint by task, and every contract and program. [Launch options →](https://www.pangea.trade/app/docs/v3#v3-launch-options), [API map →](https://www.pangea.trade/app/docs/v3#v3-api), [Contracts →](https://www.pangea.trade/app/docs/v3#v3-contracts)
- **Plain answers.** The questions most people ask, in plain words, at the end. [FAQ →](https://www.pangea.trade/app/docs/v3#faq)

What stays the same: the trading fee range and split, creator wallets and fee receivers, coin tokenomics, and how bridging works underneath. [Fees on v3 →](https://www.pangea.trade/app/docs/v3#v3-fees)

## What changed from v2

| What | Factory v2 | Factory v3 |
| --- | --- | --- |
| Chains | Ethereum, Base, BSC, Robinhood Chain (Solana through the splitter program) | All five, Solana included, from one launch |
| Supply | 1B a chain, or 1B in all in degen mode | Each chain mints its own 1B and pools all of it: degen mode is normal mode |
| Lowest opening | $3,000 a chain | $600 a chain (the platform may set $600 to $3,000) |
| Buying at launch | A dev buy on the chain you pay on | Launch buys: up to 10 wallets a chain inside the launch transaction (dev buys are off for now) |
| Pair asset | The chain's native coin | The native coin or, per chain, a tokenized stock |
| Bridge fee | 0.2%, fixed in the token | Set per chain, 0 to 0.5% (0.2% unless changed), plus the price-gap fee |
| Fee hook | Named in the factory | Each launch names an allowed hook, bound into its token address |
| Fee splitter | FeeSplitterV2 | FeeSplitterV3: a payout that fails is set aside to claim, never blocking the rest |

### Why

- One factory and one launch for all five chains, so Solana gets every feature the EVM chains get.
- Nothing locked and a lower opening, so a coin starts small with all of its supply trading.
- Launch buys, because Base and Robinhood Chain have no private bundles: buying in the launch transaction itself is the only way to buy first there.
- The price-gap fee, so bridging cannot be used to take the price difference between chains out of the pools: that difference is burned instead.

> **Note:** The factory v2 page is kept for the coins it launched. [Factory v2 (superseded) →](https://www.pangea.trade/app/docs/v2#new-factory)

## Factories and contracts

Every new EVM launch is made by its chain's factory v3. The price attestor checks the signed launch price and holds the minimum opening market cap; the gap registry prices the bridge's price-gap fee; the fee hook takes the trading fee in each pool.

| Chain | Factory v3 | Price attestor | Gap registry | Launch buys |
| --- | --- | --- | --- | --- |
| Ethereum | `0x228CF77d91f7EdD0C69538336196CA0AcACcA30e` | `0x0E6fF904f764c0B5B84A9C3c1780E08dFF84DEb9` | `0x510E4af8136DCd18C794cdc4B7aBA3Af13c57c3a` | `0xd9Ac4C249097ec487e3f40Bc897871f17565423A` |
| Base | `0x84d32eDdFE50E6C243B8f3Be963eA8A5eA7Adb1e` | `0xFB717d3fF3110d20537D3B6eE193DfB291f6cd47` | `0x041439bA5e4E9D4bf003B917df9622BbD04eB602` | `0x735192F90d49DA81A702cFeb9335331F3B361968` |
| BSC | `0x2209E0d4a9a1B6E293da6B9c4651747425161F32` | `0x74500cfb68CcAa2ad2Fb396796acd56aB1b06F9e` | `0xbF4e80fe8609ec94590Bc7A00e8BA62C9D7A8893` | `0xc455Cf5B2d0cA8d92c439BB4Ab7e046d9410ADdE` |
| Robinhood Chain | `0xAa7A943666b72A305A53962dd5B28c5F9D8A37a7` | `0xa9e3307FA5184FBbBaEde63aa908159D7a516d8f` | `0xc2f0b94f31f0717C9E53ff0E1c55b365eae0f37F` | `0x0aBDD848773616af3954A161F2f153BB2e7413C3` |

- Fee hook (the same address on the four EVM chains): `0x15e5E7206C661a1E881F5CD33A94eAF2328FA8cc`
- Solana: Pangea's splitter program (launches, fees): `Hb5uTppRbNxc3RjVRqTWqfdU3E3GiZyGYKccxYf9tUej`
- Solana: Pangea's OFT program (the token's bridge): `SNyKyiZYU4R54SF9sYLmjCaCUsa1sC6QouNAj3x3Zzf`
- Solana: Pangea's DVN program: `HwNU4xXd7GVuTcjWTtWdT83d27ACJtwSGiFFWDxaELkn`
- Solana: Pangea's cheapest-route program: `HQ6RgB3GGJvrkpj4dRiVMEQJAcEq4bAwtmaH6swnvDQC`
- Solana: Meteora DAMM v2 (the pool): `cpamdpZCGKUy5JxQXB4dcpGPiikHawvSWAd6mEn1sGG`

- Pools are Uniswap v4 on the four EVM chains and Meteora DAMM v2 on Solana.
- Each factory's launch-buys contract is the one its `launchBuys()` returns, as in the table. Each launch gets its own fee splitter, made by the factory in the launch.
- Every token's address ends in `6ea`.
- The LayerZero routes and the DVNs that verify them are listed in [Routes →](https://www.pangea.trade/app/docs/v2#routes)

## Launching on v3: flow and timing

### The opening market cap

On factory v3 there is no locked supply: degen mode is normal mode, every chain minting its own 1B and pooling all of it, opening at $600 a chain ($3,000 for a coin on five chains). The least a v3 launch may open at is $600 a chain, which the platform may set between $600 and $3,000 a chain; standard mode still opens at $3,000 a chain unless the creator picks another cap. A cut of the minimum takes effect at once; a raise waits 1 hour, so a launch already priced is not caught by it. [How market cap is counted →](https://www.pangea.trade/app/docs/v2#market-cap)

### What you pay

One payment, on one chain of the launch, covers every chain: the gas and Solana rent the launch costs, plus a 20% margin, at the prices of the moment, and any extras you tick (the gas of your launch buys, opening the Solana bridge routes, tokenomics setup). The money your launch buys spend is not in it: your fee wallet deposits it beforehand, and what is not spent comes back. The quote is good for 10 minutes. The fee is held, not taken, until the launch lands. Dev buys are off for now. [Launch fee →](https://www.pangea.trade/app/docs/v2#launch-fee)

### Step by step

- You prepare the launch: the page prices every chain and shows the fee.
- You sign and pay on your chosen chain. The page waits for the payment to confirm.
- Pangea's price signer signs the launch price for every chain: each chain's token address, its fee, its pair asset, its hook and its launch buys are all in what is signed, so nothing can be changed on the way.
- Solana launches first when it is in the launch; then the EVM chains' launches are sent together. One transaction on each chain deploys the token, opens its pool at the signed price with the whole 1B in it, locks that liquidity for good, wires the bridge routes, and makes the launch buys.
- The page shows each chain going live. Chains already live can be traded while the rest land.

### Why it takes about a minute

Most of the wait is before any chain is sent: your payment has to confirm on its chain and be handed to the launcher, which the page retries for up to about a minute. Then Solana's launch lands first, because every EVM token wires its bridge to Solana's inside its own launch transaction, and the four EVM launches are sent together the moment it is seen; they land in seconds, Ethereum last, with a block about every 12 seconds. A chain that takes longer is sent again by Pangea's launcher, with nothing needed from you and nothing paid twice. Keep the page open; if it closes, the payment is remembered in that browser and the launch carries on. The checks of every bridge link, supply and pool run after, in the background.

## Every launch option

The launch form starts with a coin on Robinhood Chain and Solana, paid on Robinhood Chain, with a 1% trading fee and degen mode on. The starting market cap sits right below the dev buy; everything else is under Advanced settings. Every option is signed into the launch: none can be changed after it lands, except where the table says so.

| Option | What it does | Cost and limits |
| --- | --- | --- |
| **Chains** | Any two to five of Ethereum, Base, BSC, Robinhood Chain and Solana, at least one of them an EVM chain. You pay once, on one of them. | You pay only for the chains you pick. A creator cannot add a chain later. |
| **Trading fee, or a different fee on each chain** | One fee for every chain, or "A different fee on each chain". Taken in the pair asset on every trade; 20% of it, and never less than 0.2% of volume, goes to the platform. | 0.3% to 5%, fixed for good. |
| **Degen mode and the opening market cap** | On by default: every chain opens at the lowest market cap allowed, $600 a chain today ($1,200 for the two default chains). Off, it opens at $3,000 a chain, or at the cap you type. Each chain mints its own 1B and pools all of it either way. [Launching on v3 →](https://www.pangea.trade/app/docs/v3#v3-launch) | $600 to $500,000 a chain. |
| **Pairs with** | Per chain: the native coin, or a tokenized stock listed on that chain. [Pairing with a stock →](https://www.pangea.trade/app/docs/v3#v3-stocks) | No extra cost. A thin market must be acknowledged before you can launch. |
| **Custom tokenomics** | Spends the creator's fee share automatically: burn, buy and hold, liquidity, holders (paid in the pair token, ETH or BNB, or any token), payout wallets, and burning other tokens. Works with stock pairs. [Custom tokenomics →](https://www.pangea.trade/app/docs/v3#v3-tokenomics) | About 600,000 gas a chain to set the vault up, and on Solana a setup line. Not with burning fees, a fee receiver, or sending a chain yourself. |
| **Different creator wallet (fee receiver)** | Sends the trading fees to another address on the EVM chains, on Solana, or both. You stay the creator. [Creator rewards →](https://www.pangea.trade/app/docs/v3#v3-creator-rewards) | No cost. A contract receiver must be confirmed as yours. |
| **Burn my creator fees** | The fee receiver becomes the burn address on every chain, for good. | No cost. Not with tokenomics or sending a chain yourself. |
| **Receive fees in native** | On a chain paired with a token (a stock, a stable or any pasted token), your fees in it are sold for ETH, BNB or SOL from your own wallet when you claim. [Stock fees →](https://www.pangea.trade/app/docs/v3#v3-stock-fees) | On by default for non-native pairs; can be switched later on your profile. |
| **Launch buys** | Up to 10 wallets on each EVM chain (32 in all) buy inside the launch transaction, before anyone else. Your EVM fee wallet deposits the money beforehand; what is not spent comes back. [Launch buys →](https://www.pangea.trade/app/docs/v3#v3-launch-buys) | Their gas is in the launch fee; the buys pay the pool's trading fee. |
| **Open all bridge routes at launch** | Opens Solana's four bridge routes right after the launch, so nobody pays a route's one-time setup on their first transfer. | A line of the quote, about $16 today. Only on a launch with Solana, and not with a Solana launch from your own wallet. |
| **Same contract address on all EVM chains** | One token address on every EVM chain of the launch, still ending in `6ea`. | No cost. Needs at least two EVM chains. |
| **Launch the pay chain from my own wallet** | You send your pay chain's launch from your own wallet, once Solana's has landed; our launcher sends the others. Not sent within the window, our launcher sends it. [Launch with your own wallet →](https://www.pangea.trade/app/docs/v2#self-launch) | Same fee. Your wallet pays that chain's gas: a gas limit of 14,300,000 on v3 (more with launch buys on that chain). EVM pay chains only. |
| **Launch Solana from my own wallet** | Solana's launch is sent by your own Solana wallet, so no one else can send it. [Launch with your own wallet →](https://www.pangea.trade/app/docs/v2#self-launch) | Your wallet pays about 0.029 SOL of rent and the transaction fee. Not with opening the routes at launch. |

### Not available right now

- Dev buys: the form does not offer one and the Launch API refuses one. Use launch buys to buy at launch.

> **Note:** Every option as a Launch API field: [Launch API →](https://www.pangea.trade/app/docs/v2#launch-api)

## Launch buys

A launch can name wallets that each get a first buy of the coin inside the launch transaction on an EVM chain, right after the pool opens and before anyone else can trade: up to 10 wallets on one chain and 32 over all of the launch's chains. They are signed into the launch with its price, so they cannot be changed or added to after.

- The creator's fee wallet pays for them beforehand, into that chain's launch-buys contract, in the pool's pair asset: the native coin, or the paired stock token.
- They run in the order listed, so earlier entries buy at a lower price. Each one is made in full or skipped; a buy that fails never fails the launch.
- Launch buys pay the pool's trading fee, like any trade.
- Money not spent comes back: the payer can take it back as soon as the launch lands, or 7 days after their last deposit if it never does. A wallet that paid in for someone else's launch can only ever take its own deposit back.
- Solana's pool is opened by Pangea's program: launch buys are on the EVM chains.

> **Note:** Dev buys are off for now: launch buys are the way to buy at launch. Every launch option, with what it costs: [Launch options →](https://www.pangea.trade/app/docs/v3#v3-launch-options)

## Fees on v3: the fee hook and the creator's share

The creator picks the trading fee at launch, 0.3% to 5%, the same on every chain or a different one on each. Every trade pays it. On the EVM chains the fee hook takes it in each Uniswap v4 pool; on Solana the pool takes it. It is fixed at launch: the live hook has no way to change a pool's fee.

The fee is always taken in the pool's pair asset, never in the coin: ETH or BNB on the EVM chains, SOL on Solana, or the stock token on a chain paired with a stock.

### The split

The platform takes 20% of the fee, and never less than 0.2% of the volume; the creator, or the fee receiver the creator named, gets the rest. On Solana, Meteora keeps 20% of the pool's fees first, so the creator's share there is lower.

| Trading fee | Platform | Creator |
| --- | --- | --- |
| 0.3% | 0.2% | 0.1% |
| 0.5% | 0.2% | 0.3% |
| 1% | 0.2% | 0.8% |
| 2% | 0.4% | 1.6% |
| 5% | 1% | 4% |

- Each launch's fees collect in its own fee splitter on each EVM chain, and anyone may pay them out. A payout that cannot be sent (a receiver that refuses it) is set aside for that receiver to claim, and never blocks the other side's payout.
- Creator fees are paid out automatically when there is enough to be worth the gas, or claimed at once from Profile, under Creator fees. [Creator wallets and fee receiver →](https://www.pangea.trade/app/docs/v2#creator-wallets)
- 80% of platform fees go to PANGEA buybacks.

## Creator rewards, claims and community takeovers

### Where the fees collect

- On each EVM chain, in the launch's own fee splitter: the fee hook takes the fee on every trade and the splitter divides it between the creator (or the fee receiver) and the platform.
- On Solana, in the pool's locked position, held by Pangea's splitter program, which pays the creator and the platform in the same instruction.
- Fees arrive in the pool's pair asset: ETH, BNB or SOL, or the stock token on a stock-paired chain.

### Getting paid

- Automatically: every 5 minutes Pangea's payout run pays out each coin whose waiting fees are worth at least 20 times the payout's gas.
- At once: Profile, Creator fees, "Claim now" pays a coin's fees out on that chain, split exactly as the automatic payout does. You send the transaction and pay its gas. Anyone may trigger a payout, but it only ever pays the creator's and the platform's own addresses.
- A payout a receiver cannot take (a contract that refuses it) is set aside for that receiver to claim, and never holds up the other side.
- Your fees show on your profile within a minute or two of launch, on every chain, Solana included, and move from unclaimed to claimed about a minute after a payout.
- With custom tokenomics, the coin's vault is the receiver: it spends the share as set at launch.

### Changing who is paid

A coin's fee receiver is fixed at launch, and the creator cannot hand it on alone. Only the platform can propose a new one, and the change takes effect only when the new address accepts it, on each chain (the coin's page shows an Accept card to that wallet). `GET /api/coin/[id]/fee-receivers` shows who is paid now; `/pending` shows a change waiting.

### Community takeovers (CTO)

- When a creator abandons a coin and its community takes it over, the platform can move the coin's creator fee stream, on each chain, to a wallet Pangea holds for that coin. The coin then shows a CTO badge.
- Each takeover is set to one of two things: the fees are passed on to the community's new owner wallet automatically, every few minutes; or they are used to buy the coin on each chain and burn it, every burn listed by GET /api/cto/burns.
- Nothing else about the coin changes: its liquidity stays locked and its trading fee stays the same. GET /api/cto lists every takeover and when each chain moved.

> **Note:** All-time creator payouts are on the Live page and at GET /api/creator-rewards. [API map →](https://www.pangea.trade/app/docs/v3#v3-api)

## Custom tokenomics on v3

With custom tokenomics on, the creator's share of the trading fees goes to the coin's own vault on each EVM chain (a tokenomics account on Solana), not to a wallet, and the vault spends it automatically in the shares set at launch. The shares are set per chain, add up to 100% on each, and are fixed for good. The platform takes no cut of it. Every new launch's tokenomics is version 2.3. [How the vault runs →](https://www.pangea.trade/app/docs/v2#tokenomics-v2)

### The shares

| Share | What the vault does with it |
| --- | --- |
| Burn | Buys the coin and burns it. |
| Buy and hold | Buys the coin and sends it to a treasury wallet you name. |
| Liquidity | Buys the coin and adds it to the pool, locked for good. |
| Holders | Pays the coin's holders, in the reward tokens you pick (below). |
| Wallets (up to 10) | Pays each wallet its share. A wallet can hand its slot to a new address in two steps. |
| Burn tokens (EVM chains) | Buys up to 5 other tokens and burns them, each its own part of this share. Not on Solana. |

### What holders are paid in

- One token or a basket of up to 5, each with its share of the holders' part. The choice is per chain and fixed at launch.
- The pair token: the pool's own pair asset, so ETH or BNB on a native-paired EVM chain, SOL on Solana, and the stock token itself on a stock-paired chain.
- ETH or BNB on a stock-paired EVM chain: the vault sells the stock for the chain's coin and pays it as WETH or WBNB.
- Any other token, by its address (its mint on Solana), when it can be bought on that chain: the form checks that a route exists.
- Who is paid: every holder above a minimum holding (at least 0.01% of the supply on a v4 coin's EVM chains and 0.01% on Solana; 0.1% on a vault from an earlier tokenomics factory), the top holders, or holders picked at random. The vault's owner or the platform can change this later; the shares and the reward tokens cannot change.
- On a stock-paired chain, the stock cannot be picked again as a token reward or a burn token. A Solana chain paired with an asset pays its holders in that asset only.

### When it runs and what it costs

- Holder payouts run every 5 minutes; the vault's buys are at least 15 minutes apart on the EVM chains for a vault made before v4 (a v4 coin's vault: no gap unless Pangea sets one). A run pays its own gas from what it moves, at most 10% of it, and runs only when what it moves is worth 20 times its gas.
- A holder is sent rewards once what it is due covers the payout's cost; until then it stays owed, and the holder can claim it any time from the coin's page.
- Setting the vaults up is part of the launch fee: about 600,000 gas on each EVM chain, and on a launch with Solana a tokenomics setup line of 0.01512 SOL, or 0.027 SOL with a liquidity share.

### What it cannot be combined with

- Burning the creator fees (use the burn share instead), a separate fee receiver (the vault is the fee receiver), or sending a chain's launch from your own wallet.

> **Note:** For integrators: prepare's `tokenomicsV2` field. [Launch API →](https://www.pangea.trade/app/docs/v2#launch-api)

## Pairing with a stock

A launch can pair each chain's pool with a tokenized stock instead of that chain's native coin. The launch form has a "Pairs with" dropdown for every chain of the launch: the native coin, or a stock token listed on that chain, from that chain's own issuer. Chains can differ: one chain can pair with a stock and another with its native coin. Every pool still opens at the same USD market cap, priced in its own pair asset.

### Which token on which chain

| Chain | Stock token |
| --- | --- |
| Solana | xStocks (Backed): AAPLx, NVDAx, ... |
| Base | Coinbase Tokenized Stocks: AAPLc, NVDAc, ... |
| Ethereum | Ondo Global Markets: AAPLon, NVDAon, ... |
| BSC | bStocks: AAPLB, AMZNB, NVDAB, ... (META and PLTR on BSC are Ondo tokens, not offered: they have no pool) |
| Robinhood Chain | Robinhood Stock Tokens, priced through USDG |

### Which stocks each chain offers

| Chain | Offered in the dropdown |
| --- | --- |
| Solana | AAPL, AMZN, GME, GOOGL, META, NVDA, PLTR, SPCX, TSLA |
| Base | AAPL, AMZN, GME, GOOGL, META, NVDA, PLTR, SPCX, TSLA |
| Ethereum | AAPL, AMZN, GOOGL, META, NVDA, PLTR, SPCX, TSLA |
| BSC | AAPL, AMZN, GME, GOOGL, NVDA, SPCX, TSLA |
| Robinhood Chain | AAPL, AMZN, GME, GOOGL, META, NVDA, PLTR, SPCX, TSLA |

The stocks are Apple (AAPL), Amazon (AMZN), GameStop (GME), Alphabet (GOOGL), Meta Platforms (META), NVIDIA (NVDA), Palantir (PLTR), SpaceX (SPCX) and Tesla (TSLA). A stock is offered on a chain only when its token there has a gap route, a way to price it on chain for bridging. Marked "very thin liquidity" in the dropdown today: AMZN on Ethereum, GOOGL on Ethereum, GME on Base. Marked "thin liquidity": AAPL on Ethereum, NVDA on Ethereum, TSLA on Ethereum, PLTR on Solana, META on Robinhood Chain, PLTR on Robinhood Chain.

### How a stock pair is priced

- Each pool opens at the coin's US dollar price divided by the dollar price of its stock token, so every chain opens at the same market cap, as with any pair.
- A stock token with a deep market is priced from its on-chain pool first; when the pool has no answer, any one of DexScreener, GeckoTerminal or (on Solana) Jupiter prices it, several give their median.
- A thin or empty market is priced from the same stock's deep markets on other chains: the share price, from at least two sources agreeing within 1.5%, times this token's own multiplier.
- Every price must also sit within a band around the stock's share price, or the launch is refused.
- A multiplier change the issuer has scheduled before the launch's deadline refuses the launch, rather than open it at the wrong price.

- Tokens are chosen by contract address, never by symbol. A look-alike token with the same ticker is not offered.
- A chain that does not list the stock yet pairs with its native coin, and the form says so.
- Rebasing stock tokens are never offered. That includes xStock tokens on the EVM chains.
- Each token shows its issuer and its multiplier: how many shares one token stands for. Dividends and splits move it, and prices use the live figure.
- Trading fees on a stock-paired pool are taken in that pool's stock token, so the creator's and the platform's shares arrive in the stock token.
- Custom tokenomics works on a stock-paired coin: holders can be paid in the stock itself or, on an EVM chain, in ETH or BNB.

### Market hours

US stocks trade 09:30 to 16:00 New York time, Monday to Friday, except market holidays, and some days close early at 13:00. Stock tokens trade on chain around the clock, and a stock pair can be launched at any hour, every day: a launch is priced from the stock token's on-chain markets the same way in and out of market hours, and no closing-price feed (Chainlink, Pyth or any other) is used. Outside market hours the form shows a notice, because the token's markets are thinner while the stock market is shut and its price may move when the market opens. For a date past the holiday calendar the form says it does not know whether the market is open.

### The low-liquidity warning

Some stock tokens have little or no market on some chains. A chain is warned about when its stock token has less DEX liquidity against USDC, USDT, USDG or the native coin than the chain's minimum, measured live when you prepare: $100,000 on Ethereum, $50,000 on Base, $50,000 on BSC, $50,000 on Solana, $10,000 on Robinhood Chain. It is also warned about when no single pool holds that minimum, when the stock table lists its market as thin, or when there is no route to buy the token. A market that cannot be measured counts as thin.

- Buyers on that chain must first get the stock token somewhere else.
- Launch buys in that token need the stock token itself, deposited beforehand: where there is no route to buy it, you must get it somewhere else first.
- Creator fees paid in that token build up. Where there is no route to price the token, they are not swept automatically until one exists. They stay where they are, and nothing is lost.
- Bridging to or from that chain may be unavailable. Where the token has no gap route, it is unavailable until one exists.

A chain whose stock token has a deep market but no gap route yet is not warned about, but bridging into or out of it is unavailable until the route exists. Only stock tokens with a gap route are offered in the dropdowns, and a stock marked "thin liquidity" there has a small pool on that chain.

You must tick the warning for each warned chain, or untick that chain, before the launch can be prepared. The tick is signed into the launch's quote, as a record that you were told. [Launch fee →](https://www.pangea.trade/app/docs/v2#launch-fee)

> **Note:** For integrators: prepare answers 409 with needsAck "stocks" and the warnings until each warned chain is named in stockAck (chain to the acknowledged token address). A successful answer lists them in warnings.

## Stock fees: converted and swept

On a stock-paired chain the fee is taken in the stock token, so the creator's and the platform's shares arrive in that stock token, in the launch's fee splitter. [Pairing with a stock →](https://www.pangea.trade/app/docs/v3#v3-stocks)

### EVM chains: live

Live on the four EVM chains. The creator's share is paid out in the stock token, like any other fee. The platform's share, in stock tokens and stablecoins, is sold for the chain's native coin every hour and then swept like every other platform fee. Each sale goes through the token's own route at no worse than the gap registry's flash-proof price less 2%, only when it is worth at least 20 times its gas, and at most 0.5% of the pool's depth at a time. Where there is no route to price a token, its fees are not swept: they stay in the pool's fee hook, and nothing is lost. Each EVM factory also keeps a small dust float of every pair asset (100 base units each), because opening a pool at its exact price can need a few base units of it; the float is refilled from the platform's fees of that token, or from the platform's own native coin when there are none yet, so it costs creators and traders nothing.

### Solana: live

Live on Solana too. The platform's share of Solana stock-token fees is sold in the same hourly run: each xStock for USDC, then the USDC for SOL, through Raydium and Orca pools, sent privately through Jito first. Each sale checks the pool first, must agree with the token's on-chain gap-route price, is simulated before it is sent, and carries an on-chain minimum, or it is not sent. A Solana creator claims each stock token's fees from the profile page, in the stock token or, with "Receive fees in native", sold for SOL in the same transaction. Creator-reward totals (GET /api/creator-rewards and the live page) count native-coin payouts in dollars and list stock-token payouts apart.

### Receive fees in native (optional)

Optional, per coin: "Receive fees in native". It works for any pair that is not the chain's own coin: a stock, a stable, or any token pasted as the pair. With it on, the creator's fees in the pair token are sold for the chain's own coin (ETH, BNB or SOL) from the creator's own wallet when they claim, or with "Convert" on the profile page for fees already paid out. The sale goes through an aggregator (KyberSwap, 0x or Relay) and must pay at least Pangea's own price of the token less 1.5%, or it is not sent; that price is the launch's own (any one price source, several their median). A token no aggregator buys at that price (one with a transfer tax, say) stays in the wallet, and the page says why. Pangea never holds the creator's fees to do it. It is on by default for coins launched with a non-native pair from 3 November 2026 and can be switched on the launch form and, any time after, on the creator's profile (a signed message, no gas). Off, the fees stay in the pair token. On Solana the claim and the sale are one transaction (through Jupiter, at no worse than the same price), so they land together or not at all; "Convert" on Solana is not offered yet.

## Elysium

- Elysium: Kinetiq's chain (Arbitrum Orbit) on HyperEVM. Gas is HYPE. Chain id 99901.
- An Elysium coin lives on Elysium only. 1B supply, all in one locked Uniswap v4 pool on our fee hook.
- Bridging: per coin, over its own warp route of Pangea's (Hyperlane): a coin launched on Elysium bridges between Elysium and Base, Ethereum, BNB Chain and Robinhood once Pangea has deployed its route (the coin is locked on Elysium; on the other chain a copy is minted, and burned when it comes back). The bridge page shows the route for a coin that has one and says "Bridging: not yet" for a coin without. It does not wait on LayerZero (Elysium has no LayerZero endpoint; only LayerZero Labs can deploy one): the bridge to Elysium is Hyperlane. A multichain (v4) coin that lists Elysium bridges to and from Elysium over Hyperlane and keeps LayerZero and Hyperlane between its other chains. Legacy Elysium-only coins bridge over their own warp route once it is deployed.
- Launching is open: any wallet launches its own coin on Elysium, straight to the launch factory, with no launch fee and no signature or ticket from Pangea.

### Network

- Network name: `Elysium`
- Name in the API: `elysium`
- Chain id: `99901 (0x1863d)`
- Native coin (gas): `HYPE, 18 decimals`
- Pangea's public RPC: `https://elysium-rpc.pangea.trade`
- Block explorer: `https://elyscan.live`
- Settles to: `HyperEVM (chain id 999)`
- Blocks: `about every 100 ms`
- LayerZero endpoint id: `none: Elysium has no LayerZero`

- A wallet adds Elysium with `wallet_addEthereumChain` (EIP-3085) and these parameters:

Add Elysium to a wallet (the EIP-3085 add-chain parameters):

```json
{
  "chainId": "0x1863d",
  "chainName": "Elysium",
  "nativeCurrency": {
    "name": "HYPE",
    "symbol": "HYPE",
    "decimals": 18
  },
  "rpcUrls": [
    "https://elysium-rpc.pangea.trade"
  ],
  "blockExplorerUrls": [
    "https://elyscan.live"
  ]
}
```

### Contracts

Every address was read on chain on 2026-11-04: the factory's own getters name its token deployer, parts deployer, dev buyer and default hook, and the hook, locker, dev buyer and launch buys each name the factory back. None is a proxy. Each links to the explorer; the ABIs are in [ABIs and IDLs →](https://www.pangea.trade/app/docs/v3#v3-abis)

| Contract | Address |
| --- | --- |
| Launch factory (ElysiumLaunchFactory) | [0x9Ae1f9844d885D0A646294ECf9DFCaf40C9903CB](https://elyscan.live/address/0x9Ae1f9844d885D0A646294ECf9DFCaf40C9903CB) |
| Fee hook (PangeaFeeHook) | [0xfc020627A2F600c36ED4EBABd1e8124E6328a8cc](https://elyscan.live/address/0xfc020627A2F600c36ED4EBABd1e8124E6328a8cc) |
| Liquidity locker | [0x0Ea7fb46415270f33fdD2fde7aA3e0Dc46E2E2BC](https://elyscan.live/address/0x0Ea7fb46415270f33fdD2fde7aA3e0Dc46E2E2BC) |
| Dev buyer | [0x101c50201A6Bff01b4D197392aD1418276DcD8cf](https://elyscan.live/address/0x101c50201A6Bff01b4D197392aD1418276DcD8cf) |
| Launch buys | [0x8C127d90A3C857C947e758e6a51669D21E56295B](https://elyscan.live/address/0x8C127d90A3C857C947e758e6a51669D21E56295B) |
| Token deployer (the factory's own) | [0xe7D5CFaE20BB806A729D20a2362385a9a016de82](https://elyscan.live/address/0xe7D5CFaE20BB806A729D20a2362385a9a016de82) |
| Parts deployer: each launch's fee splitter (the factory's own) | [0x18904787306f667aeC7672d36961e62bfbFB92f1](https://elyscan.live/address/0x18904787306f667aeC7672d36961e62bfbFB92f1) |
| Tokenomics v2.4 factory (live V24: existing coins, holder floor 0.1%) | [0xFc44Ae11EE9D0b2A38b1B7C59a3858C85C51a129](https://elyscan.live/address/0xFc44Ae11EE9D0b2A38b1B7C59a3858C85C51a129) |
| Tokenomics V24F1 factory (v4: new coins, holder floor 0.01% by default) | Set at deploy (v4 go-live) |
| Tokenomics v2.4 vault implementation | [0x80ea59dad4d01749e7ae9f294CB4E164A41C4809](https://elyscan.live/address/0x80ea59dad4d01749e7ae9f294CB4E164A41C4809) |
| Tokenomics liquidity adder | [0x7D8dd9586c5ec12716fAe0b6222e571C93349f48](https://elyscan.live/address/0x7D8dd9586c5ec12716fAe0b6222e571C93349f48) |
| Uniswap v4 PoolManager | [0xE2e105d3F7209A9DA11f83cCf3E7398a753823F1](https://elyscan.live/address/0xE2e105d3F7209A9DA11f83cCf3E7398a753823F1) |
| Universal Router | [0x1B341FDD55d56F8E08409A2C25DDFad93Eb03C1a](https://elyscan.live/address/0x1B341FDD55d56F8E08409A2C25DDFad93Eb03C1a) |
| V4 Quoter | [0x379F556c5a748BD7Cc9baF0F7A344094Ac1814f5](https://elyscan.live/address/0x379F556c5a748BD7Cc9baF0F7A344094Ac1814f5) |
| StateView | [0x27eD73aE0652fdCf71d6793412A7525f32bE9dfE](https://elyscan.live/address/0x27eD73aE0652fdCf71d6793412A7525f32bE9dfE) |
| Permit2 | [0x000000000022D473030F116dDEE9F6B43aC78BA3](https://elyscan.live/address/0x000000000022D473030F116dDEE9F6B43aC78BA3) |
| Multicall3 | [0xcA11bde05977b3631167028862bE2a173976CA11](https://elyscan.live/address/0xcA11bde05977b3631167028862bE2a173976CA11) |
| WHYPE | [0xbA876237B0F021A6c6D852d6c26E107997cC5E81](https://elyscan.live/address/0xbA876237B0F021A6c6D852d6c26E107997cC5E81) |
| USDC.e | [0xb47c4C8F73F009CC0C0d3f92B388d13E293F0B65](https://elyscan.live/address/0xb47c4C8F73F009CC0C0d3f92B388d13E293F0B65) |
| Platform admin (factory, hook, locker, splitters) | [0x93620a4A7d45A770ff2e801eB84b03a7630ae8B6](https://elyscan.live/address/0x93620a4A7d45A770ff2e801eB84b03a7630ae8B6) |

One per coin: its token (an ERC-20 ending in 6ea) and its fee splitter (FeeSplitterV3). A coin's own are in the factory's Launched and ElysiumLaunched events, or launchRecord(launchId).

### Launching

- You launch from your own wallet, in one transaction to the launch factory. No launch fee: you pay gas, plus your dev buy if you set one.
- Pair with HYPE, or with any ERC-20 on Elysium (paste its address). The page prices it live and refuses a token it cannot price.
- Opening market cap: at least $3,000, at the pair's live price. A taxed pair token is flagged before you launch.
- Hook fee: 0.3% to 5% of every trade, your choice, taken in the pair token. Split as on the other chains.
- An ERC-20 pair is approved to the factory first (exactly the amount needed, never unlimited).
- Launch buys: up to 10 other wallets can buy inside the launch transaction itself, paid with the launch (buys and buysValue below).

### Launching from code (open wallet launches)

Any wallet may call `launch(p)` on the launch factory: there is no launcher list, no signed price and no Pangea key in the path. The wallet that sends it is the coin's creator. For a HYPE pool, `msg.value` is exactly `devBuy + buysValue` (the factory reverts WrongValue otherwise); for an ERC-20 pair, approve the factory for `assetRequired` from `previewLaunch` first and send `valueRequired`.

| Field of p | What it is |
| --- | --- |
| `name`, `symbol`, `metadataURI` | The coin's name, ticker and metadata document (ipfs://… JSON with image and links, as on the other chains). |
| `salt` | 32 bytes you choose so the token's address ends in 6ea (the factory refuses any other). The address is CREATE2 from the token deployer: `keccak256(0xff ++ tokenDeployer ++ keccak256(abi.encode(creator, salt)) ++ tokenInitCodeHash(name, symbol, creator, metadataURI))`; about 4,096 tries. Check it with `predictToken(creator, p)`. |
| `quote` | The pair: `0x0000000000000000000000000000000000000000` for native HYPE, or an ERC-20 the factory accepts (`isQuote(token)`, `quoteConfig(token)`). |
| `hook` | The fee hook: `defaultHook()`, today `0xfc020627A2F600c36ED4EBABd1e8124E6328a8cc`. |
| `payee` | Who the creator's share of the fees is paid to: your wallet, another wallet, or a tokenomics v2.4 vault. |
| `feeBps` | The trading fee, 30 to 500 (0.3% to 5%). Fixed for the pool's life. |
| `marketCap` | The opening market cap in the pair's base units (wei for HYPE), within `minMarketCap(quote)` and `maxMarketCap(quote)`: 20 to 20,000 HYPE today. The launch page asks at least $3,000. |
| `devBuy` | Your own first buy, in the pair asset, made in the same transaction (0 for none). What the pool cannot fill is held for you to claim from the dev buyer. |
| `buys`, `buysValue` | Launch buys: `{ eid: 99901, recipient, amount }` each, at most 10, and their total. Empty and 0 for none. |

Launch a HYPE-paired coin with viem:

```js
import { createPublicClient, createWalletClient, http, parseEther, zeroAddress } from "viem";
import factoryAbi from "./elysium-launch-factory.json" with { type: "json" }; // /abi/elysium-launch-factory.json
const FACTORY = "0x9Ae1f9844d885D0A646294ECf9DFCaf40C9903CB";
const chain = { id: 99901, name: "Elysium", nativeCurrency: { name: "HYPE", symbol: "HYPE", decimals: 18 }, rpcUrls: { default: { http: ["https://elysium-rpc.pangea.trade"] } } };
const pub = createPublicClient({ chain, transport: http() });
const wallet = createWalletClient({ account, chain, transport: http() });
const p = {
  name: "My Coin", symbol: "MYC", metadataURI: "ipfs://…", salt, // salt mined so the token ends in 6ea
  quote: zeroAddress, hook: "0xfc020627A2F600c36ED4EBABd1e8124E6328a8cc", payee: account.address,
  feeBps: 100, marketCap: parseEther("40"), devBuy: parseEther("0.5"), buys: [], buysValue: 0n,
};
const [token, launchId, , valueRequired] = await pub.readContract({ address: FACTORY, abi: factoryAbi, functionName: "previewLaunch", args: [account.address, p] });
if (!token.toLowerCase().endsWith("6ea")) throw new Error("mine another salt");
const hash = await wallet.writeContract({ address: FACTORY, abi: factoryAbi, functionName: "launch", args: [p], value: valueRequired });
// List it at once (the indexer lists it too, a little later):
await fetch("https://www.pangea.trade/api/elysium/register", { method: "POST", headers: { "content-type": "application/json" }, body: JSON.stringify({ txHash: hash }) });
```

- Sent through Pangea's public RPC, the launch is relayed like any Pangea trade (its rules below). Through another Elysium RPC it works the same.
- The factory emits `Launched(launchId, token, splitter, launchOwner, locker, liquidity, dust)` and `ElysiumLaunched(launchId, token, creator, payee, quote, hook, feeBps, marketCap, startTick, devBuy)`. Index them to find every Elysium coin.
- A dev buy that does not fill is held: `devBuyer.claimable(creator, asset)` and `devBuyer.claim(asset, to)`. Unspent launch-buy money: `launchBuys.reclaim`, as on the other chains.

### Trading

- Trades go through the Universal Router to the coin's Uniswap v4 pool, with Permit2 for a sale or an ERC-20 buy (exact amounts, short expiry).
- Slippage: the trade card offers 1%, 5%, 15% and 30%, and starts at 30% (new pools move quickly). The least you take is fixed in the swap itself.
- From code: POST `/api/elysium/trade` with `intent: "execute"` answers the transactions to sign, in order (below); or build the Universal Router's `V4_SWAP` yourself against the pool key `(currency0, currency1, fee 0, tickSpacing 60, hooks = fee hook)`.
- Confirmation takes about a minute: Elysium sends are batched through the HyperEVM Inbox. The page shows the simulated outcome at once and waits for the receipt; only the receipt counts.
- No minimum trade, as on the other chains: a buy only has to spend something and a sale to take something back. Gas is paid on top, in HYPE.

### Our public RPC

- Elysium RPC (wallets): `https://elysium-rpc.pangea.trade`
- Send status: `https://elysium-rpc.pangea.trade/status/<hash>`

- It relays Pangea trades only: launch and renounceMigration on the launch factory; claim on the dev buyer; deposit, depositFor, depositToken, depositTokenFor, reclaim and reclaimTo on launch buys; createVault on the tokenomics factory (its owner sending, at the account's next nonce, 5 a day); a Universal Router execute holding exactly one v4 swap on our hook; and approvals (ERC-20 approve to Permit2, the router or our contracts, and Permit2.approve to the router) of our coins, of a pair token the factory accepts, or of WHYPE and USDC.e, up to 30 a day per account.
- Calldata must be exactly its canonical encoding (no padding, no trailing bytes), at most 4 KB for a contract call.
- Gas limit at most 5M, and near what the transaction needs (at most twice the simulated gas, or simulated + 150k). Transaction types 0, 1 and 2; max fee at least 1.1x the base fee; nonce at most 3 ahead with no gap.
- Accounts with code (EIP-7702 delegated accounts, contracts) are refused. The next nonce must simulate without reverting.
- Your wallet adds Elysium with this RPC. Send anything else through another Elysium RPC.

| Answer | Meaning |
| --- | --- |
| -32003 | Not a Pangea trade ("this RPC relays Pangea trades only …"), or "a tokenomics vault is created by its owner only", or for a pair token the relay cannot value "this quote token cannot be valued here" / "this quote is not listed: its daily allowance on this endpoint is used up" (an unlisted quote has an allowance of 20 trades a day per client). |
| -32000 | Refused with its reason: "would revert: …", "insufficient funds …", "nonce too low/high …", "max fee per gas below the current base fee …", "too many sends: slow down", "the relay is busy …". |
| -32005 | Rate limited ("rate limited: slow down"); HTTP 429 carries the same JSON-RPC body. |
| -32602 | Invalid params (`pangea_txStatus`: not a 0x 32-byte hash). |

Ask a transaction's status (the RPC method in the body):

```json
{"jsonrpc":"2.0","id":1,"method":"pangea_txStatus","params":["0x<32-byte L2 tx hash>"]}
```

| state | Meaning |
| --- | --- |
| queued | Accepted and recorded, not yet posted to HyperEVM (seconds). |
| posted | In a HyperEVM transaction, not yet mined (seconds). |
| confirming | Mined on HyperEVM, waiting for Elysium to include it (about a minute). |
| landed | Has an Elysium receipt: receiptStatus and landedBlock say how it ended. |
| replaced | Another transaction with the same nonce from this sender landed instead. |
| stuck | Will not land as it is (e.g. underpriced): why says why. Re-sign the same nonce with a higher fee. |
| unknown | Not held by the relay (not sent through it, or older than 24 h): read `eth_getTransactionReceipt`. |

Every answer has `hash, state, from, nonce, simulated {ok, gasUsed, revert}, l1Tx, landedBlock, receiptStatus, why, note, firstSeen` (null when unknown). `GET /status/<hash>` answers the same object as plain JSON.

### Bringing HYPE in

- From HyperEVM: a deposit through Elysium's own Inbox on HyperEVM (a retryable ticket naming your address); it reaches your same address on Elysium in minutes, from a plain wallet or a smart account (EIP-7702) alike.
- From another chain: a route provider (Relay) to HyperEVM first, then the Inbox deposit. Any wallet you sign for with your own key; not a contract wallet (its address is not yours on Elysium).
- Out of Elysium: no bridge yet for a coin without its warp route; a coin launched on Elysium bridges over its own warp route once Pangea has deployed it (Hyperlane, not LayerZero, see above). HYPE, and ERC-20s of Elysium's standard token gateway, can be withdrawn to HyperEVM through Elysium's own rollup bridge (the bridge page's From Elysium tab): started on Elysium, then claimed on HyperEVM: the claim pays out to the wallet the withdrawal was made to, and you claim it on the bridge page, connected with that wallet. Withdrawals to HyperEVM take about 5.5 days (the challenge period), then you must claim them on HyperEVM. They are not sent automatically. It can be up to ~6 days in all while the next checkpoint is posted. The tab lists the wallet's withdrawals (Initiated, Waiting with the date it becomes claimable, Ready to claim, Claimed) with the Claim button; elyscan lists them too (`https://elyscan.live/withdrawals?q=<address>`).
- Buy from another chain: the trade card can buy an Elysium coin paid from Ethereum, Base, BSC, Robinhood Chain or Solana in one transaction on your chain (a Relay order whose one call is the HyperEVM ticket with the swap). A ticket that could not run can be redeemed before its deadline or cancelled for its HYPE.

### Fees and payouts

- The fee hook takes the pool's whole trading fee (0.3% to 5%, set at launch, never changed) in the pair asset on every buy and sale, and owes it to the coin's fee splitter.
- The splitter (FeeSplitterV3, one per coin) pays the platform the larger of 20% of the fee or 0.2% of the volume, and the creator (or the payee set at launch) the rest. At a 1% fee that is 80% to the creator and 20% to the platform; the split cannot change.
- Payouts need no claim: anyone may call `hook.redeem(poolKey)` (waiting fees to the splitter), `locker.collect(poolId)` (the position's own fees to the splitter) and `splitter.releaseNative()` or `splitter.release(token)` (both sides paid). Pangea's fee sweep calls them on its own, as on the other chains; a payout the receiver's wallet refused is held for `claimNative(to)` / `claimToken(token, to)`.
- Creator payouts are in the pair asset: HYPE for a HYPE pool, the pair token for an ERC-20 pool. Creator rewards on the profile and GET /api/creator-rewards count them under the chain elysium.
- 40% of the platform's Elysium fees (60% stays with the platform: Elysium has no holder pot) reach the buyback wallet on Elysium in HYPE, and the buyback buys PANGEA there with it, as on every chain (PANGEA reaches Elysium over our Hyperlane warp route); the buyback page shows what waits for the next buy as the pending buyback.

| A 1 HYPE trade | Creator | Platform |
| --- | --- | --- |
| 0.3% fee (0.003 HYPE) | 0.001 HYPE | 0.002 HYPE (0.2% of volume) |
| 1% fee (0.01 HYPE) | 0.008 HYPE (80%) | 0.002 HYPE (20%) |
| 5% fee (0.05 HYPE) | 0.04 HYPE (80%) | 0.01 HYPE (20%) |

### Tokenomics and listing

- Tokenomics v2.4 on Elysium: for any pair, HYPE or an ERC-20 (on an ERC-20 pair, HYPE as a reward or payout token is paid as WHYPE), as on the other EVM chains; a taxed pair token is not offered tokenomics there either. The vault is the coin's fee wallet; its bind to the factory is made by the tokenomics executor within about 15 minutes of the launch. Rewards, burn tokens and payout-wallet tokens can be any token on Elysium, 1 to 5 of them with shares, as on the other EVM chains; a token with no route gets a warning, not a refusal.
- Tokenomics on Elysium is ON at v4 go-live: a new Elysium coin's vault is made by the new TokenomicsFactoryV24F1 (its address is set at deploy), whose holder floor is 0.01% of supply, also the default. The live v2.4 factory (0xFc44Ae11EE9D0b2A38b1B7C59a3858C85C51a129, holder floor 0.1%) keeps serving the Elysium coins made with it.
- The vault is made by the Elysium tokenomics factory (`createVault`, sent by its owner) as an EIP-1167 clone of the v2.4 implementation and named as the launch's `payee`. Its config holds up to 10 payout wallets, 5 holder-reward tokens and 5 burn tokens, the same buckets as on the other chains. Pangea's runner calls `execute`; after 7 days without it, anyone may.
- A coin whose payee is a vault cannot later move to the official Uniswap v4: the vault is bound to this pool manager.
- Listing floor: every launch has its own page at once; Explore and the lists show it while its market cap, at the live price, is at least $3,000.

### Migration to the official Uniswap v4

- A pool may later move to the official Uniswap v4 by an admin migration: the venue switches, the liquidity moves, and the chart, trades and trading follow the coin's current pool (its earlier pools stay in its history).
- A creator can renounce migration for their coin (renounceMigration on the launch factory): then it is never moved.

### How Elysium differs from the five LayerZero chains

| On the five chains | On Elysium |
| --- | --- |
| A coin is one token on two to five chains, bridged by LayerZero. | A coin lives on Elysium: a single-chain token, no OFT, no Pangea DVN or delivery. It bridges to the EVM chains over its own warp route of Pangea's on Hyperlane once that route is deployed (locked on Elysium, a minted copy elsewhere). Elysium has no LayerZero; multichain coins reach it over Hyperlane. |
| The bridge price-gap fee and cheapest route. | A v4 coin that lists Elysium with other chains pays and charges the same price-gap fee on Elysium (over Hyperlane). Cheapest chain routes through and from Elysium, and the cross-chain arbitrage trades it, as on the other chains. |
| A launch is paid (the launch fee) and sent by Pangea's launcher from a signed quote, or self-launched with a signed price. | Open: your wallet calls the factory itself. No launch fee, no signed price, no Launch API ticket. |
| Pairs: the chain's native coin, or a listed stock token. | HYPE, or any ERC-20 on Elysium the page can price (USDC.e, USD₮0, KNTQ, kHYPE, Unit assets …). |
| Solana leg, Solana tokenomics, community takeovers. | A v4 coin can list Elysium and Solana together (over Hyperlane). Community takeovers run on Elysium too (holders reward in HYPE). An Elysium-only coin from the Elysium launch has no Solana leg. |
| Transactions confirm in seconds. | About a minute: Elysium batches sends through HyperEVM. |

The same on both: 9-decimal tokens ending in 6ea, 1B supply all in one locked single-sided Uniswap v4 pool, PangeaFeeHook with a 0.3% to 5% fee, FeeSplitterV3's split, tokenomics v2.4, and the coin pages, charts, trades and live feed.

### Elysium endpoints (/api/elysium)

Each answers JSON, needs no key, and answers 404 while Elysium is off. They are the launch page's, the trade card's and the bridge page's own: read only (nothing is ever sent from them; your wallet signs and sends), limited per IP (429 with Retry-After past it), and they may change with the app. The coin data itself is in the public reads below (/api/pools, /api/history, the live feed).

| Endpoint | Answer | Parameters, limit |
| --- | --- | --- |
| `GET /api/elysium/launch-config` | `{ ok, factory, tokenDeployer, defaultHook, minMarketCap, maxMarketCap, launchFee, chainId, rewardCoins }`: the factory's launch settings, read on chain (the HYPE market cap band in wei). `424` when Elysium cannot be read. | `check`: up to 32 token addresses; `rewardCoins` lists those a tokenomics reward may name. 30 a minute; held 15 s. |
| `GET /api/elysium/known-tokens` | `{ ok, tokens: [{ group, symbol, name, address, decimals, priceUsd, problem, source }] }`: the pair tokens the launch page offers, each priced live; one with no price carries its `problem`. | 30 a minute; held 15 s. |
| `GET /api/elysium/quote-token` | `{ ok, address, symbol, name, decimals, priceUsd, route, taxBps, buyTaxBps, sellTaxBps, taxKnown, problem? }`: whether an ERC-20 can be a launch's pair. A null price is a refusal. `422` not a token. | `address`. 30 a minute. |
| `POST /api/elysium/register` | `{ ok, listed: true, slug, launchId, token }` once the launch is mined; `202 { pending: true }` before (ask again); `422` not a launch of the factory. | `{ txHash }`, or `{ launchId }` for a launch sent under another hash (a wallet speed-up); `tokenomics` for a vault launch. 60 in ten minutes. |
| `POST /api/elysium/trade` | `{ details: { side, amountIn, out, minOut, slippageBps, deadline, quote, quoteDecimals, … }, steps: [{ id, label, tx: { from, to, data, value, chainId } }], chainId, venue }`: a quote, and with `intent: "execute"` the transactions to sign in order (approvals first, then the swap). | `{ coin, side: "buy" \| "sell", amount, user?, slippageBps?, minOut?, intent: "preview" \| "execute" }`; `coin` a launch id or token, `amount` in base units. 60 a minute. |
| `GET /api/elysium/deposit` | `{ ok, problem?, inbox, chainId, l2ChainId, elysiumBaseFee, address?, elysiumBalance?, hyperevmBalance?, hyperPlain? }`: whether HYPE can be brought in through the Inbox on HyperEVM now, and an address's HYPE. | `address`, `hyper=1` for the HyperEVM balance too. 60 a minute. |
| `POST /api/elysium/deposit-route` | A Relay quote for step 1 from another chain: HYPE delivered to you on HyperEVM, paid in your chain's coin, checked before it is answered. | `{ from: "ethereum" \| "base" \| "bsc" \| "robinhood", user, amountOut, most }` (wei and base units). |
| `POST /api/elysium/hyperevm-buy` | `{ details, swap: { to, data, value } , … }`: the coin's swap, for the one HyperEVM ticket that buys it with HYPE on HyperEVM. GET `?tx=<HyperEVM hash>&for=<address>` says where that ticket's buy is. | `{ coin, amount, user, slippageBps?, minOut? }`. 15 a minute. |
| `POST /api/elysium/relay-buy` | A buy of an Elysium coin paid from Ethereum, Base, BSC, Robinhood Chain or Solana: the swap, its ticket and Relay's quote, every fee in the answer. | `{ from, coin, amount, user, payer, slippageBps?, minOut?, most }`. 12 Relay quotes a minute for the whole site. |
| `GET /api/elysium/ticket` | A retryable ticket and, for its beneficiary, its redeem and cancel transactions with their gas. `404 { problem: "not-found" }` for no ticket by that id. | `id`, `user`. |
| `GET /api/elysium/withdraw` | `{ ok, arbsys, outbox, chainId, l2ChainId, waitMs, elysiumBaseFee, minWithdraw, kind, withdrawals: [...], more, dustHidden }`: an address's withdrawals to HyperEVM (newest 30), each pending, claimable or claimed. | `address`; `claim=<position>` for one claim's proof; `kind=token` for ERC-20 withdrawals; `token` to check one token. |
| `GET /api/elysium/moves` | `{ ok, moves: [{ kind, asset, decimals, amount, party, tx, at }], fromBlock, toBlock }`: the newest moves into Elysium (HYPE deposits) and out of it (HYPE and token withdrawals), read from Elysium's own logs, newest first; held 15 seconds. | No parameters. One answer for every caller. |
| `POST /api/elysium/swap` | The best Uniswap route between two Elysium tokens, from the V4Quoter: `{ route, details, steps, warnings, gas, chainId }`. `intent: "execute"` adds the transactions the wallet signs; nothing is sent from here. Today it carries Pangea's own pools and USDP/HYPE only. | `from`, `to`, `amount`, `intent`; `user` to execute; `slippageBps` and `minOut` optional. 60 a minute per caller. |
| `GET /api/elysium/swap/tokens` | Tokens for the Swap page's search: symbol, name, address, decimals, price, depth, logo, whether Pangea has checked it and whether a swap of it is carried today. | `q`. 90 a minute per caller. |
| `GET /api/elysium/swap/balances` | What one address holds on Elysium, by token id. | `user`, `ids` (at most 120). 40 a minute per caller. |
| `GET /api/elysium/swap/tape` | The newest recorded swaps on Elysium's Pangea pools. | Nothing. 60 a minute per caller. |

GET /api/elysium/launch-config:

```json
{
  "ok": true,
  "factory": "0x9Ae1f9844d885D0A646294ECf9DFCaf40C9903CB",
  "tokenDeployer": "0xe7D5CFaE20BB806A729D20a2362385a9a016de82",
  "defaultHook": "0xfc020627A2F600c36ED4EBABd1e8124E6328a8cc",
  "minMarketCap": "20000000000000000000",
  "maxMarketCap": "20000000000000000000000",
  "launchFee": "0",
  "chainId": 99901,
  "rewardCoins": []
}
```

GET /api/elysium/quote-token?address=0xb47c…0B65:

```json
{
  "ok": true,
  "address": "0xb47c4C8F73F009CC0C0d3f92B388d13E293F0B65",
  "symbol": "USDC", "name": "USDC", "decimals": 6, "priceUsd": 1,
  "route": { "source": "pangea-pool", "quote": "0xb47c4C8F73F009CC0C0d3f92B388d13E293F0B65", "asset": "USD" },
  "taxBps": 0, "buyTaxBps": 0, "sellTaxBps": 0, "taxKnown": true
}
```

POST /api/elysium/trade (a 0.01 HYPE buy, execute; data trimmed):

```text
// request
{ "coin": "0x423e672A27D87709C88c1173EBDC0398a73616Ea", "side": "buy", "amount": "10000000000000000", "user": "0x862f…8914", "slippageBps": 300, "intent": "execute" }
// answer
{
  "details": { "side": "buy", "amountIn": "10000000000000000", "amountInFormatted": "0.01", "out": "268718321597551", "outFormatted": "268718.321597551",
               "minOut": "260656771949624", "slippageBps": 300, "deadline": 1793847877, "quoteDecimals": 18, "quote": null },
  "steps": [{ "id": "swap", "label": "Buy TEST", "tx": { "from": "0x862f…8914", "to": "0x1B341FDD55d56F8E08409A2C25DDFad93Eb03C1a", "data": "0x3593564c…", "value": "10000000000000000", "chainId": 99901 } }],
  "chainId": 99901,
  "venue": { "router": "0x1B341FDD55d56F8E08409A2C25DDFad93Eb03C1a", "chainId": 99901 }
}
```

POST /api/elysium/register:

```text
// request
{ "txHash": "0x<the launch transaction's hash>" }
// answer, once mined
{ "ok": true, "listed": true, "slug": "<slug>", "launchId": "0x…", "token": "0x…6ea" }
// answer, not mined yet (HTTP 202): ask again in a few seconds
{ "ok": false, "pending": true }
```

GET /api/elysium/deposit?address=0x862f…8914:

```json
{
  "ok": true,
  "inbox": "0xce59f8B65ad41C9DAE4c07A0571a39824bD92cff",
  "chainId": 999,
  "l2ChainId": 99901,
  "elysiumBaseFee": "100040000",
  "address": "0x862ff706242e5BB49E36b5D10b7A813CaE458914",
  "elysiumBalance": "166506805099999998"
}
```

GET /api/elysium/withdraw?address=0x862f…8914:

```json
{
  "ok": true, "kind": "hype",
  "arbsys": "0x0000000000000000000000000000000000000064",
  "outbox": "0xeC6B106DfA14428FE5Eec2a4065a7be599f02728",
  "chainId": 999, "l2ChainId": 99901,
  "waitMs": 519105024, "elysiumBaseFee": "100040000", "minWithdraw": "5000000000000000",
  "withdrawals": [], "more": false, "dustHidden": 0
}
```

### API and live feed

| Field | Meaning |
| --- | --- |
| launchChains | `["elysium"]` for an Elysium coin. |
| chains.elysium | token, pool, poolManager, and quote (an ERC-20 pair; absent for HYPE). |
| elysium | creator, payee, feeBps, hook, previousPools (pool, poolManager, hook, tokenIsCurrency0, until) and the venue's router, quoter, stateView. |
| `pools[].chain` | "elysium"; pair {address, symbol, usd} for an ERC-20 pair; prices in HYPE and USD. |
| belowFloor | true while the coin's market cap is under the $3,000 listing floor (/api/pools still answers it; the lists hide it). |
| marketCapUsd | the coin's market cap in dollars at the live price (price x 1B supply): the listing floor's figure; null when unread. |
| trades | /api/history and the live feed carry Elysium trades with chain "elysium"; the creator's and fee wallet's trades are marked and not counted in the floor's volume. |

> **Note:** See also [fees](https://www.pangea.trade/app/docs/v3#v3-fees) and [API](https://www.pangea.trade/app/docs/v2#api).

## Solana on v3

- Solana's leg of a launch is made by Pangea's splitter program, and its pool is a Meteora DAMM v2 pool. Meteora keeps 20% of the pool's fees, so the creator's share on Solana is lower than on the EVM chains.
- Launch buys are on the EVM chains. On Solana, buy once the pool is live.
- The price-gap fee prices Solana from a shared price log of the pool. A v3 coin's first Solana route opening also creates that log, about 0.071688 SOL of rent, paid once by whoever opens it. Out of Solana, your wallet may first sign a small "record the price" transaction (its signature fee only), then the transfer.
- Arrivals into Solana are landed by Pangea's delivery key with 650,000 compute units; its cost is withheld from what arrives, in the coin, and a new wallet's first arrival has its token-account rent withheld too. Both are shown in the quote.
- A launch with Solana can open all four Solana bridge routes at launch (a tick box); otherwise the first person to bridge on each route pays its one-time setup.
- Wrapped SOL (WSOL) is SOL held as a token, in a token account of your wallet. A Solana fee claim pays SOL to your wallet, or wrapped SOL into your wrapped-SOL account when your wallet cannot take it directly: it is still your SOL, and wallets can unwrap it. A Solana launch sent from your own wallet can leave your wrapped-SOL account open with its rent in it: the launch page's Reclaim button closes it and returns the rent. A payment the page refuses because a swap would spend from an account that is not your own wallet's wrapped SOL was not sent: nothing left your wallet. Try again from the same wallet, and ask support if it keeps happening.
- A Solana wallet used for a launch must be able to sign a plain text message. Many hardware wallets and multisigs cannot.

> **Note:** Bridging into and out of Solana, in full: [Bridging →](https://www.pangea.trade/app/docs/v2#bridging)

## Security model and audits

### What nobody can do

- Withdraw a pool's liquidity: it is locked for good on every chain, and no contract function or program instruction takes it out.
- Mint more of a coin on the EVM chains. On Solana the mint is the token's bridge store, which mints exactly what was burned on another chain.
- Change a launch after it is signed: each chain's token address binds its price, fee, payee, pair asset, hook and launch buys.
- Change a pool's trading fee on the live hook, or take more than 5% in any case.
- Point an existing token's bridge at another contract: each token's LayerZero routes are pinned at launch.

### What the platform can change, within fixed bounds

- The minimum opening market cap, between $600 and $3,000 a chain (a raise waits 1 hour).
- The bridge fee, 0 to 0.5% per chain, and the price-gap fee's settings, within limits the contracts hold.
- Which fee hooks new launches may name. A launch already made keeps its own.
- The receiver of a creator's fee stream, in two steps: the platform proposes, and the move takes effect only when the new address accepts.
- Hold or release a token's price-gap fee in an emergency (its escape: arrivals are credited in full, never charged more).

### Reviews

The v3 contracts, the Solana programs and the bridge, delivery and DVN services went through repeated audit rounds before go-live, and each finding fixed is pinned by a regression test in the code. The EVM contracts have no proxy and no pause.

> **Note:** Never share a seed phrase or key with anyone, Pangea included. [Safety →](https://www.pangea.trade/app/docs/v3#faq)

## What runs it: launcher, delivery, DVN and gas keeper

- **The launcher.** Sends each chain's launch transaction once the fee is paid and the price signed, and resends a chain that is slow. It cannot change what is launched: every chain's terms are signed.
- **Pangea's DVN.** Pangea runs its own DVN on all five chains. It verifies only transfers of Pangea's own coins, and charges nothing for it. It is one of the verifiers each route names; the routes and their DVNs are listed in [Routes →](https://www.pangea.trade/app/docs/v2#routes)
- **Delivery.** Pangea's delivery service lands each transfer as soon as it is verified, in about one destination block. Into Ethereum, LayerZero's executor does not deliver a v3 transfer, so Pangea's delivery keys land it; into Solana, Pangea's delivery key lands a priced v3 arrival. Their cost is a line of the quote. If the service is down, delivery is slower but nothing is lost.
- **The gas keeper.** Before launch fees are used for anything else, it tops up Pangea's working wallets (the launchers, delivery, the DVN and the payer) to their targets, so the services never stall for gas. Launch fees pay for that gas. Users pay nothing extra for it.

## v3 coins: bridging a coin launched before v4

Every coin launched before v4 is a v3 coin and stays one. Its token is its own LayerZero OFT on each of its chains, it keeps the v3 bridge price-gap fee exactly as it launched with it, and the shared v4 bridge never carries it. The sections that follow, up to the trading section, describe these v3 coins.

- The v3 price-gap fee: [The bridge price-gap fee →](https://www.pangea.trade/app/docs/v3#v3-gap-fee)
- The v3 contracts and ABIs: [v3 contracts →](https://www.pangea.trade/app/docs/v3#v3-contracts)
- A v4 coin: [one shared bridge per chain →](https://www.pangea.trade/app/docs/v4#v4-shared-bridge)

## The bridge price-gap fee

When a v3 coin is bridged from a chain where it is cheaper to one where it is dearer, the destination withholds the price gap above an allowance and never mints it: that part is burned. The other way, from dear to cheap, there is no gap fee. The bridge fee itself is set per chain, 0 to 0.5% (0.2% unless changed), and goes to the platform.

### Why

Without it, anyone could buy on the cheap chain, bridge and sell on the dear one, taking the difference out of the pools. With it, that difference is burned, and the price on each chain is held together by trades in the pools themselves.

### How it is priced

- No oracle. Every price is read on chain, from pools: the coin's own pool on each side, and a route from the pair asset to US dollars through other on-chain pools. A stablecoin counts as one dollar.
- On the EVM chains the source price is the lower of the coin's last two recorded pool closes, so one trade in the same block cannot move it; route hops are read in ways a flash loan cannot move.
- On Solana the price comes from the Meteora pool through a shared price log.
- The allowance: the source pool's fee, the source's message and gas cost, the destination pool's fee, and a margin of 0.1%. Only the gap above it is withheld.

### When a price cannot be read

An arrival the destination cannot price is held, not charged and not refused: it waits at the destination and lands once it can. Every send names the least it may be credited (your tolerance under the estimate: 1% by default, at most 20%); an arrival that would be credited less waits the same way. Nothing is burned while it waits, but it cannot be cancelled.

> **Note:** Every fee line of a v3 transfer, with examples: [Bridging →](https://www.pangea.trade/app/docs/v2#bridging)

## Cheapest route

The trade card trades on the chain your wallet is on. With Cheapest route switched on (it is off by default), it compares your chain with the others and, when another chain's pool gives a better result after every fee, fills the trade there: you still pay and receive on your own chain, and the coin or the money is bridged back for you.

- You pay every fee of the route: both pools' fees, the bridge fee and price-gap fee, the message fees and gas. The quote shows them before you sign.
- If the far leg fails, a buy is refunded on your chain, and a sale's tokens come back or wait on the far chain with a "Bring them home" button.
- A route may first need a one-time Solana route opening, which is not refunded once the route opens.

> **Note:** How a coin moves between chains: [Bridging →](https://www.pangea.trade/app/docs/v2#bridging)

## Trading: the trade card

- A trade goes through the coin's own pool on the chain your wallet is on: Uniswap v4 on the EVM chains, Meteora DAMM v2 on Solana. You pay in that chain's coin (ETH, BNB or SOL) and receive the coin, or the other way round.
- On a stock-paired chain you still pay and receive ETH, BNB or SOL: the card routes through the stock token for you. The pool's own fee is taken in the stock.
- Slippage: 1% unless you change it, with presets of 0.5%, 1% and 3% or a custom value from 0.01% to 99%. The card warns above 5% and again above 20%.
- Every quote shows the price impact and what you receive at least, before you sign.

### Cheapest chain

A switch in the card's settings, off by default. On, the card also prices the coin's pools on the other chains and, when one gives a better result after every fee, fills the trade there: you still pay and receive on your own chain, and the coin or the money is bridged back for you. You pay every fee of the route, shown before you sign. [Cheapest route →](https://www.pangea.trade/app/docs/v3#v3-cheapest)

### Split across chains

- A buy can be split across several chains' pools at once ("Split across chains", off until you turn it on, remembered for your wallet), so a large buy moves each pool less. Each part is its own trade, shown before you sign.
- A large sale can be split the same way when the card offers it.
- Splitting is offered on coins launched before v3; it is not offered on v3 coins yet.

### When a route does not finish

If the far leg of a routed trade fails, a buy is refunded on your chain, and a sale's tokens come back or wait on the far chain with a "Bring them home" button on the card. Nothing is lost, and nothing needs support.

> **Note:** Prices on the five chains are held together by arbitrage, which is open to anyone: when one chain is cheaper, buying there and bridging is priced by the bridge's price-gap fee, so the difference is burned rather than taken out of the pools.

## For integrators: what changed in the APIs

- A v3 coin's send must name its minimum credited after the price-gap fee: `gap.minCreditedSource` from the quote. Without it the send is refused. [Bridging from code →](https://www.pangea.trade/app/docs/v2#bridge-code)
- Quotes for a v3 coin carry `gap` (`estimate`, `free`, `held` or `unavailable`), and the delivery lines into Ethereum and Solana. [API →](https://www.pangea.trade/app/docs/v2#api)
- Out of Solana, a `record` stage may come first: sign the price-record transaction, then ask again.
- A launch can carry launch buys (`buys`, `buysCap`), paid into the chain's launch-buys contract beforehand. Dev buys are off: a `devBuy` other than 0 is refused with `409`. [Launch API →](https://www.pangea.trade/app/docs/v2#launch-api)
- Custom tokenomics is `tokenomicsV2` (v2.3: holders, wallets, burn tokens, reward tokens), and works with stock pairs; `feesInNative` sets Receive fees in native. [Launch API →](https://www.pangea.trade/app/docs/v2#launch-api)
- On factory v3, `supplyMode` is 0 only and `degen: true` opens at the live minimum market cap a chain.
- Every endpoint by task, and every contract and program to call or index: [API map →](https://www.pangea.trade/app/docs/v3#v3-api), [Contracts →](https://www.pangea.trade/app/docs/v3#v3-contracts)
- **A sixth chain, Elysium:** name in the API `elysium`, chain id 99901, no endpoint id (no LayerZero). Its coins are Elysium-only and are never on the five LayerZero chains. [Elysium →](https://www.pangea.trade/app/docs/v3#v3-elysium)
- A stock-paired launch is refused with `needsAck: "stocks"` until each warned chain is acknowledged in `stockAck`.
- Coin reads (`GET /coin/{id}`, `GET /v1/launches` and its stream) say `factoryV3` and each chain's pair asset in `chains.<chain>.quote`: `"native"` or the tokenized stock, by address. [API →](https://www.pangea.trade/app/docs/v2#api)

## Contracts and programs: the full reference

Every address here was read on chain on 2026-11-03: each factory's own getters name its parts, and each part names its factory back. The four EVM chains' factory stacks are in the table below; the parts that are the same address on all four follow.

| Chain | Factory v3 | Fee collector | Pair registry | Pangea DVN (v3) | Uniswap v4 PoolManager |
| --- | --- | --- | --- | --- | --- |
| Ethereum | `0x228CF77d91f7EdD0C69538336196CA0AcACcA30e` | `0x79d9a01B6ADB4938761e7D4fb29a802ea709F0Ec` | `0x9219c27EF6895736B96Cc8F4087414a0Bf04E937` | `0x6a9f3126C0EA3EEB9cBE53205175c9673Da6565f` | `0x000000000004444c5dc75cB358380D2e3dE08A90` |
| Base | `0x84d32eDdFE50E6C243B8f3Be963eA8A5eA7Adb1e` | `0x7cb08218648433bbC9671f885E15954756717BCa` | `0x7808344Fc0A43e6a5D0E9cB565A13eF9618d61b5` | `0xfEA7bEcb49269336dC5D824f774Fd784511CE8F9` | `0x498581fF718922c3f8e6A244956aF099B2652b2b` |
| BSC | `0x2209E0d4a9a1B6E293da6B9c4651747425161F32` | `0xcDB037B5B4b58e3C89d632463656D889123a7c04` | `0xcA35Ecbfa0e8C7319Cb6337774b6c9d79185e0fE` | `0x7372267975C3606ae86febD7059235addc8aA02C` | `0x28e2Ea090877bF75740558f6BFB36A5ffeE9e9dF` |
| Robinhood Chain | `0xAa7A943666b72A305A53962dd5B28c5F9D8A37a7` | `0xcDB037B5B4b58e3C89d632463656D889123a7c04` | `0xcA35Ecbfa0e8C7319Cb6337774b6c9d79185e0fE` | `0x41a49427e0CfE99d157Dd24070a99c6746077804` | `0x8366a39CC670B4001A1121B8F6A443A643e40951` |

- TokenDeployerV3 (all four EVM chains): `0x7650b19794D59b2CDF04eBb8351784Db6529ff04`
- LiquidityLocker (all four): `0xbebe68fBfB62E18FBFEbf4365970D192C5f34DC1`
- Fee hook, PangeaFeeHook (all four): `0x15e5E7206C661a1E881F5CD33A94eAF2328FA8cc`
- TokenomicsFactory v2.3 (all four): `0x5AC934Debabb814f2193a6a0cB0dd144386e58aB`
- Tokenomics vault implementation, version 2.3 (all four): `0xF372B9454f71412c00D2D599d03Fa467C35c4a57`
- Tokenomics liquidity adder, version 2.3 (all four): `0xabe68F9Dc309BbF4f9eafa44d42dba55a82Dd4Ef`
- Tokenomics reward swapper, version 2.3 (all four): `0xd982FCE1C6A7faA0C78cF3c88e87Ab07c7e3C577`
- RoutePayment, a Solana route's setup payment (all four): `0xD1281cF6FA4f15871f21260c9E443dAdc0d311e8`

The price attestor, gap registry and launch-buys addresses are in [Factories →](https://www.pangea.trade/app/docs/v3#v3-factories); the LayerZero endpoints, libraries, executors and outside DVNs in [Routes →](https://www.pangea.trade/app/docs/v2#routes)

### Who can change what

- No EVM contract here is a proxy (the EIP-1967 implementation slot is empty on every one), and none can be paused or upgraded. The platform admin is `0x93620a4A7d45A770ff2e801eB84b03a7630ae8B6` on every chain.
- Nobody can withdraw locked liquidity, mint a coin on an EVM chain, change a launched pool's fee or splitter, or point a launched token's bridge at other verifiers: there is no function that does it.
- What the admin can set, each within bounds the contracts hold and each with an event: the minimum opening market cap ($600 to $3,000 a chain; a raise waits an hour), the hooks new launches may name, the launchers, the gap registry's margin (at most 10%), bridge fee (at most 0.5%) and price routes, and a fee receiver change (two steps: the admin proposes, the new address accepts).
- The Solana programs are upgradeable: their upgrade authority is `848jBDi9bJWoDwxhLGXsX3aXjSmdxsawSN3Tb32DyNgL`, and none is marked final. Their admin settings are held by `7rYog4JusTy4CpwvFGPrRvWtcDrWatnA3SN3DRPuf6kM`, within the same bounds as on EVM.

### Factory v3 (UniswapLaunchFactoryV3)

One per EVM chain. One call launches a coin's leg there: it deploys the token at an address ending in 6ea, makes the launch's fee splitter and LaunchOwner, opens a single-sided Uniswap v4 pool on the fee hook and hands the whole slice to the LiquidityLocker, settles the prepaid fee and runs the launch buys. The signed price snapshot binds each chain's token address, price, fee, pair asset, hook and buys. Only the creator (with a signature), a listed launcher or the admin can call it.

| Function or event | What it is |
| --- | --- |
| `launch(LaunchParams p, LaunchTermsV3 terms, Snapshot snap, bytes signature)` | Launches the leg; payable. The Launch API builds its arguments. |
| `launchAuthorized(..., bytes creatorAuth)` | The same, sent by a wallet the creator signed for. |
| `launches(bytes32 launchId) → (token, splitter, launchOwner, locker, liquidity)` | A launch's parts on this chain. |
| `launchV3(bytes32 launchId) → (payee, supplyMode, hook, locked)` | Its v3 terms. |
| `predictToken(LaunchParams, Leg[]) → address` | The token address before launch. |
| `launchBuys(), launchHook(), feeHook(), isLaunchHook(address), isLauncher(address)` | Its wiring. |
| `event Launched(bytes32 indexed launchId, address indexed token, address splitter, address launchOwner, address locker, uint128 liquidity, uint256 dust)` | One per launch per chain: index this to find every coin. |
| `event LaunchTermsSet(bytes32 indexed launchId, address indexed payee, uint8 supplyMode, bytes32 termsHash, uint32 feeEid, uint256 feeMin)` | The terms it launched with. |
| `event LaunchBuysFailed(bytes32 indexed), LaunchBuysSkipped(bytes32 indexed, address)` | Launch buys that did not run; the launch still landed. |

### The token (PangeaOFTV3) and TokenDeployerV3

One token per launch per chain, a LayerZero OFT with 9 decimals. Each chain's slice is minted when it is deployed and nothing mints after; a transfer between chains burns on one side and mints on the other. Every transfer pays the bridge fee, and a cheap-to-dear transfer the price-gap fee, burned at the destination. The TokenDeployer deploys it by CREATE2 for the factory; only the factory can call it.

| Function or event | What it is |
| --- | --- |
| `send(SendParam, MessagingFee, address refundAddress), quoteSend(SendParam, bool), quoteOFT(SendParam)` | LayerZero’s OFT calls. For a v3 token `SendParam.oftCmd` carries the minimum credited after the gap fee: take it from the bridge quote. [Bridging from code →](https://www.pangea.trade/app/docs/v2#bridge-code) |
| `gapSendQuote(uint32 dstEid, uint64 amountSD), gapMaxSend(), gapBurnedLD()` | The gap fee a send would pay, the largest single send, and everything burned by it so far. |
| `totalSupply(), localSupply(), launchTotal(), launchSlice(), metadataURI(), creator()` | Supply and metadata. |
| `event OFTSent, OFTReceived` | LayerZero's own: every transfer out and in. |
| `event GapCharged(...), GapSkipped(bytes32 indexed guid, uint32 indexed srcEid, uint8 reason)` | An arrival's gap fee, or why none was charged. |
| `event Deployed(address indexed token, bytes32 indexed salt, uint256 slice)` | TokenDeployerV3: every token it deployed. |

Each token is owned by its launch's LaunchOwnerV3, sealed at launch: its admin can only move a route's gas floor (each capped at 1,400,000 gas), and only the factory can add a peer for a chain the token has none on. The token's LayerZero delegate, which sets its verifiers, is the factory, and nothing can change it.

### Fee hook (PangeaFeeHook) and the fee splitter (FeeSplitterV3)

The hook takes the whole trading fee in the pair asset on every swap of a Pangea pool and owes it to the pool's registered splitter. A pool's fee is set once, when it is registered, between 0.3% and 5%, and cannot change. The splitter, one per launch per chain, divides what it receives: the platform the larger of a fifth of the fee or 0.2% of volume, the creator or fee receiver the rest. The split itself cannot change.

| Function or event | What it is |
| --- | --- |
| `hook.redeem(PoolKey)` | Anyone: sends a pool's waiting fees to its splitter. |
| `hook.configs(PoolId) → (splitter, quoteIsCurrency0, feeBps, registered, edgeTick)` | A pool's fee and splitter. |
| `event FeeTaken(PoolId indexed id, Currency currency, uint256 amount)` | Every fee taken. |
| `splitter.releaseNative(), splitter.release(address token)` | Anyone: pays the waiting fees out to both sides. |
| `splitter.pending(address token) → (toCreator, toPlatform), pendingNative()` | What is waiting. |
| `splitter.claimNative(address to), claimToken(address token, address to)` | A receiver collects a payout that was set aside for it. |
| `splitter.acceptCreator()` | The new fee receiver accepts a change the admin proposed. |
| `event Released(address indexed token, uint256 toCreator, uint256 toPlatform)` | Every payout. |

A launch's splitter is the `splitter` of its `Launched` event, or `factory.launches(launchId).splitter`.

### LiquidityLocker

One per chain, the same address on all four. It owns every launch's pool position. There is no function that removes or moves liquidity: the lock is the absence of that code, not a timer. The admin can only add factories (never remove one).

| Function or event | What it is |
| --- | --- |
| `poolOf(address token) → PoolId, poolKeyOf(address token), positionLiquidity(PoolId)` | A coin's pool and the liquidity locked in it. |
| `collect(PoolId)` | Anyone: collects the position's fees to the registered splitter. |
| `event Seeded(PoolId indexed id, address indexed token, address splitter, uint160 sqrtPriceX96, int24 tickLower, int24 tickUpper, uint128 liquidity, uint256 tokensUsed, uint256 quoteDust)` | A pool opened and locked. |

### LaunchFeeCollector and LaunchBuys

The fee collector holds a launch's fee from payment until the launch settles it; a payer can reclaim a fee whose launch never landed after 7 days. LaunchBuys holds the money for launch buys and spends only the creator's line, in the launch transaction.

| Function or event | What it is |
| --- | --- |
| `collector.pay(bytes32 launchId), payFor(bytes32, address)` | Pays a launch's fee (the Launch API's pay builds it). |
| `collector.payments(bytes32) → (amount, at, settled), reclaim(bytes32)` | A fee's state, and taking an unspent one back. |
| `event Paid(bytes32 indexed launchId, address indexed payer, uint256 amount, uint256 total), Settled(bytes32 indexed, uint256)` | Paid, and taken by the launch. |
| `buys.deposit(bytes32 launchId), depositToken(bytes32, address asset, uint256)` | Funds launch buys, in the native coin or the pair token. |
| `buys.reclaim(bytes32, address asset), reclaimableAt(bytes32, address payer, address asset), close(bytes32 launchId, address factory)` | Takes back what was not spent: at once after the buys ran (close first if the launch landed without them), or 7 days after the last deposit. |
| `event Bought(bytes32 indexed launchId, uint256 indexed index, address indexed recipient, uint256 amount, uint256 tokens)` | Each launch buy made. |

### Price attestor, pair registry, gap registry and price readers

- PriceAttestorV3 checks the platform’s signed price snapshot for a launch (each used once, valid at most an hour) and holds the minimum opening market cap: `minMarketCapUsd()`. Event `Attested(bytes32 indexed launchId, uint256 usdPerQuote, uint256 quotePerToken)`.
- The pair registry lists the assets a pool may pair with, each with a US dollar band: `terms(asset) → (decimals, minUsdPerQuote, maxUsdPerQuote)`, `isListed(asset)`; event `AssetSet`.
- The gap registry holds each token's official pool, the on-chain price routes from each pair asset to US dollars, the margin and the bridge fee, which tokens read to price the gap fee: `officialPool(token)`, `route(quote)`, `usdPerQuoteE18(quote, roundUp)`, `poolFeePpm(token)`.
- Price readers the routes go through, each one a flash loan cannot move: a Uniswap v3 time-weighted reader, a v2 pair reader that ignores a pair touched in the same block, and a RecordedPoolReader for stock pools without an oracle, which answers only inside a band built from sibling pools (Ethereum `0x5d77b7733bf85b476326d1f584a21ac68ee548e2`, Base `0xb060183a7ea8eafc34be737dd6790d67567d311c`).

### TokenomicsFactory v2.3

Makes each coin's tokenomics vault: an EIP-1167 clone of the vault implementation, at the same address on every chain, made from the config's hash. The vault is the fee splitter's payee and spends what it receives by its config, through the liquidity adder and the reward swapper. Vaults cannot be upgraded. Pangea's runner calls execute; after 7 days without it, anyone may.

| Function or event | What it is |
| --- | --- |
| `factory.predict(config), isVault(address)` | A vault's address before launch, and whether an address is one. |
| `event VaultCreated(address indexed vault, bytes32 indexed launchId, address indexed owner, bytes32 configHash, bool ownLeg)` | Every vault made. |
| `vault.info(), leg(), due(), books()` | Its config, what each bucket holds, and its totals. |
| `vault.execute(uint256 gasHint)` | Spends what is due. |
| `vault.claimHolder(uint8 index, uint256 cumulative, bytes sig)` | A holder claims a reward with the voucher GET /api/tokenomics/v2/holder gives. |
| `event Burned, SentToTreasury, LiquidityAdded, WalletPaid, HolderPaid, HolderClaimed, BurnTokensBought` | What each run did. |

### Bridge: LayerZero and Pangea's DVN

- Every v3 transfer is verified by any 2 of the route's verifiers: between Ethereum, Base and BSC, LayerZero Labs, Nethermind, Horizen, Canary and Pangea's DVN; on routes with Robinhood Chain, LayerZero Labs, Nethermind and Pangea's DVN. One confirmation.
- Pangea's DVN (v3, per chain in the table above) verifies only Pangea's own coins and charges nothing for it. Its admin can set its fee cap per destination, never above a maximum fixed at deploy.
- The fast bridge for v3 coins: `0x9c385c829e751d2ab9bca17233f0357da7607aa4` on Ethereum, Base and BSC and `0x6c62e2f482f590c0a0144f4266256cfaba44b98c` on Robinhood Chain: `quoteOrder`, `postOrder`, `fillOrder`, `refund`. [Relayers →](https://www.pangea.trade/app/docs/v2#relayers)

### Elysium: ElysiumLaunchFactory and its parts

Elysium has its own stack, at its own addresses ([Elysium →](https://www.pangea.trade/app/docs/v3#v3-elysium)): the launch factory `0x9Ae1f9844d885D0A646294ECf9DFCaf40C9903CB`, the same PangeaFeeHook code at `0xfc020627A2F600c36ED4EBABd1e8124E6328a8cc`, ElysiumLiquidityLocker `0x0Ea7fb46415270f33fdD2fde7aA3e0Dc46E2E2BC`, ElysiumDevBuyer `0x101c50201A6Bff01b4D197392aD1418276DcD8cf`, LaunchBuys `0x8C127d90A3C857C947e758e6a51669D21E56295B` (the same code as on the four EVM chains) and TokenomicsFactory v2.4 `0xFc44Ae11EE9D0b2A38b1B7C59a3858C85C51a129`. No LayerZero contract, no attestor, pair registry, gap registry or fee collector: a launch is open to any wallet and pays no fee. Nothing is a proxy; the admin is `0x93620a4A7d45A770ff2e801eB84b03a7630ae8B6`.

| Function or event | What it is |
| --- | --- |
| `launch(ElysiumLaunchParams p) → (token, splitter, launchOwner, locker, liquidity)` | Anyone: launches a coin from the sending wallet; payable (devBuy + buysValue for a HYPE pool). |
| `previewLaunch(address creator, ElysiumLaunchParams p) → (token, launchId, startTick, valueRequired, assetRequired)` | What a launch would make and cost, before it is sent. |
| `predictToken(address creator, p) → (token, launchId), tokenInitCodeHash(name, symbol, creator, uri), launchIdOf(creator, salt)` | The token address (it must end in 6ea) and the launch id. |
| `launches(bytes32 launchId), launchRecord(bytes32 launchId) → (token, splitter, locker, liquidity, payee, hook, creator, quote), launchIdOfToken(address)` | A launch's parts. |
| `quoteConfig(address quote) → (allowed, minMarketCap, maxMarketCap), isQuote, quoteOpen, minMarketCap, maxMarketCap` | The pair assets a launch may use, and each one's market cap band (address(0) is HYPE). |
| `defaultHook(), isLaunchHook(address), venueOf(address hook), launchFee(), devBuyer(), tokenDeployer(), parts()` | Its wiring. launchFee() is 0. |
| `renounceMigration(address token)` | The creator: the coin is never moved to another venue. migrationOpen(token), migrationRenouncedFor(token) read it. |
| `migrate(bytes32[] launchIds, address toHook, uint160[] expectedSqrtPriceX96, uint16 maxDeviationBps)` | Admin: moves live pools to another allowed venue at the same price (at most 1% off), never a renounced coin. |
| `event ElysiumLaunched(bytes32 indexed launchId, address indexed token, address indexed creator, address payee, address quote, address hook, uint16 feeBps, uint256 marketCap, int24 startTick, uint256 devBuy)` | One per launch: index this to find every Elysium coin. |
| `event Launched(bytes32 indexed launchId, address indexed token, address splitter, address launchOwner, address locker, uint128 liquidity, uint256 dust)` | The same event as factory v3's. |
| `event PoolMigrated(bytes32 indexed launchId, address indexed token, bytes32 oldPoolId, bytes32 newPoolId, address newPoolManager, address newHook, address newLocker, int24 tickLower, int24 tickUpper, uint128 liquidity)` | A pool moved. |

| Contract | What to call or index |
| --- | --- |
| ElysiumToken (one per coin) | A plain ERC-20, 9 decimals, the whole 1B minted at launch, no mint, no bridge of its own (its warp route locks it on Elysium): `transfer`, `approve`, `balanceOf`, `Transfer`; its metadata authority may `setMetadataURI` (`MetadataURISet`). |
| ElysiumLiquidityLocker | `poolOf(token)`, `poolKeyOf(token)`, `positionLiquidity(poolId)`, `collect(poolId)` (anyone: fees to the splitter); events `Seeded`, `Collected`, `MigratedOut` / `MigratedIn`. No function removes liquidity; only a migration moves it, whole, to another locker. |
| ElysiumDevBuyer | `quoteDevBuy(...)`, `claimable(creator, asset)`, `claim(asset, to)`; events `DevBuyExecuted`, `DevBuySkipped`, `DevBuyRefundHeld`. |
| PangeaFeeHook, FeeSplitterV3 | As on the four EVM chains above: `hook.redeem(PoolKey)`, `hook.configs(PoolId)`, `splitter.releaseNative()`, `splitter.release(token)`, `splitter.pending(token)`. |
| LaunchBuys, TokenomicsFactory v2.4 | As above, with `localEid` 99901 for Elysium. |

### Solana programs

| Program | What it does, and what to call |
| --- | --- |
| `Hb5uTppRbNxc3RjVRqTWqfdU3E3GiZyGYKccxYf9tUej` | The splitter: Pangea’s launch program on Solana. One instruction makes the whole Solana leg (the mint ending in 6ea, its metadata and OFT store, the Meteora pool, locked with a permanent lock), settles the prepaid fee, holds the pool position and pays its fees (`claim_fees`, `claim_fees_native`: anyone, paying only the creator and the platform), and runs tokenomics on Solana. Events `LaunchedV2`, `FeesClaimed`, `FeePaid`. |
| `SNyKyiZYU4R54SF9sYLmjCaCUsa1sC6QouNAj3x3Zzf` | Pangea’s deployment of LayerZero’s OFT program, with the v3 price-gap fee added: every Pangea coin’s bridge on Solana. `quote_send`, `send`, `record_price`; events `OFTSent`, `OFTReceived`, `GapCharged`. |
| `HwNU4xXd7GVuTcjWTtWdT83d27ACJtwSGiFFWDxaELkn` | Pangea’s DVN on Solana, the same signing key as on the EVM chains. Routes name its config account. |
| `HQ6RgB3GGJvrkpj4dRiVMEQJAcEq4bAwtmaH6swnvDQC` | Runs a Cheapest chain trade whose best pool is on Solana: the buy and the send back in one transaction, so it lands whole or not at all; `refund` after its deadline. |
| `7YNA5pg5sxmKxma7XiKDJnpWgyF5VPc7SaqyuzNhqZtw` | The fast bridge on Solana, one program for every Pangea coin: `post_order`, `fill_order`, `claim`. |
| `cpamdpZCGKUy5JxQXB4dcpGPiikHawvSWAd6mEn1sGG` | Meteora DAMM v2, where each Solana pool is (Meteora’s, not Pangea’s). |

> **Note:** The five Pangea programs above are upgradeable by `848jBDi9bJWoDwxhLGXsX3aXjSmdxsawSN3Tb32DyNgL`. The locks on liquidity are Meteora’s permanent lock, which no program of Pangea’s can undo.

## ABIs and IDLs

Pick a chain, open a contract and copy or download its JSON. Each EVM ABI is the build artifact of the live build (less the functions only the contract itself may call), published only because the contract's runtime code, read on chain on 2026-11-04, is byte for byte that artifact's (only the immutables differ); none is a proxy. The coin token, factory v3 and the tokenomics vault answer some calls through modules, so their ABIs include the modules' functions. Each Solana IDL comes from the source of the commit the live program was built from: built by Anchor for the OFT and the cheapest-chain program, read from the source for the others, and when it was written its instructions and accounts were checked against the live program's, whose code hash the manifest's source records. A machine-readable list of every file, with its address per chain and its sha256, is at `https://www.pangea.trade/abi/index.json` and `https://www.pangea.trade/idl/index.json`.

### Ethereum

| Contract | What it is for | Address | JSON |
| --- | --- | --- | --- |
| Factory v3 | Launches a coin's leg on this chain: deploys the token, its fee splitter and LaunchOwner, opens the Uniswap v4 pool and locks the liquidity. | `0x228CF77d91f7EdD0C69538336196CA0AcACcA30e` | `https://www.pangea.trade/abi/launch-factory-v3.json` |
| Coin token (`PangeaOFTV3`) | The coin itself, one per coin per chain: an ERC-20 LayerZero OFT with 9 decimals. Send, quote, the gap fee and supply reads; its gap and log modules' functions are included. The address is one live coin's. | `0x7a7b7a4667AA7cDbd4F4e2B23325468aeBE8C6eA` | `https://www.pangea.trade/abi/pangea-oft-v3.json` |
| Fee hook (`PangeaFeeHook`) | The Uniswap v4 hook every Pangea pool trades through: takes the trading fee for the coin's fee splitter. | `0x15e5E7206C661a1E881F5CD33A94eAF2328FA8cc` | `https://www.pangea.trade/abi/pangea-fee-hook.json` |
| Fee splitter (`FeeSplitterV3`) | One per coin per chain: splits the coin's trading fee between the platform and the creator, and pays each out. The address is one live coin's. | `0xaC12769AEBe71350edfe09DabC935150dd5152C9` | `https://www.pangea.trade/abi/fee-splitter-v3.json` |
| LaunchOwner (`LaunchOwnerV3`) | One per coin per chain: holds the token's LayerZero owner and delegate roles, sealed so no key can change its bridge settings. The address is one live coin's. | `0x6F51278efEaD0c88CA5284f47E3d09e490eb5A3b` | `https://www.pangea.trade/abi/launch-owner-v3.json` |
| LaunchFeeCollector | Takes each launch's prepaid launch fee on this chain. | `0x79d9a01B6ADB4938761e7D4fb29a802ea709F0Ec` | `https://www.pangea.trade/abi/launch-fee-collector.json` |
| LaunchBuys | Holds launch-buy deposits and runs the buys when the launch lands; an unspent deposit can be taken back. | `0xd9Ac4C249097ec487e3f40Bc897871f17565423A` | `https://www.pangea.trade/abi/launch-buys.json` |
| Price attestor (`PriceAttestorV3`) | Checks the signed price snapshot a launch opens at, and holds the minimum opening market cap. | `0x0E6fF904f764c0B5B84A9C3c1780E08dFF84DEb9` | `https://www.pangea.trade/abi/price-attestor-v3.json` |
| Gap registry (`PangeaGapRegistry`) | The price-gap registry: the price routes, gap margin and bridge fee that a cheap-to-dear transfer's gap fee is charged by. | `0x510E4af8136DCd18C794cdc4B7aBA3Af13c57c3a` | `https://www.pangea.trade/abi/gap-registry.json` |
| Gap price reader (`UniV3Reader`) | Reads a Uniswap v3 pool's price for the gap registry's price routes. | `0xD587338d76a14B491Dab4C34279859A955793807` | `https://www.pangea.trade/abi/gap-price-reader.json` |
| PairRegistry | The pair assets a launch may open its pool against on this chain. | `0x9219c27EF6895736B96Cc8F4087414a0Bf04E937` | `https://www.pangea.trade/abi/pair-registry.json` |
| Fast bridge v3 (`PangeaFastBridgeV3`) | The fast lane for v3 coins: a transfer paid out at once on arrival, settled behind it over LayerZero. | `0x9C385c829E751d2aB9bCA17233F0357Da7607aA4` | `https://www.pangea.trade/abi/fast-bridge-v3.json` |
| Fast bridge (`PangeaFastBridge`) | The shared fast lane for coins from earlier factories: a transfer paid out at once on arrival, settled behind it over LayerZero. | `0xE6feCfb8520Ce9417beB569ef95d6b8304802897` | `https://www.pangea.trade/abi/fast-bridge.json` |
| Pangea DVN (`PangeaDVNV3`) | Pangea's LayerZero verifier: one of the verifiers that must sign every v3 transfer between chains. | `0x6a9f3126C0EA3EEB9cBE53205175c9673Da6565f` | `https://www.pangea.trade/abi/pangea-dvn-v3.json` |
| Cheapest-chain helper (`PangeaCheapestChain`) | The trade card's cheapest-chain route: buys on the cheaper chain and bridges the coins back. | `0x1934893bD959fE2B8F615BB060ce9AE099033328` | `https://www.pangea.trade/abi/cheapest-chain.json` |
| RoutePayment | Takes the setup payment for opening a coin's Solana routes. | `0xD1281cF6FA4f15871f21260c9E443dAdc0d311e8` | `https://www.pangea.trade/abi/route-payment.json` |
| LiquidityLocker | Holds every launched pool's liquidity position; there is no function that withdraws it. | `0xbebe68fBfB62E18FBFEbf4365970D192C5f34DC1` | `https://www.pangea.trade/abi/liquidity-locker.json` |
| TokenDeployerV3 | Deploys each coin's token by CREATE2 for the factory, at an address ending in 6ea; only the factory can call it. | `0x7650b19794D59b2CDF04eBb8351784Db6529ff04` | `https://www.pangea.trade/abi/token-deployer-v3.json` |
| Tokenomics factory v2.4 (`TokenomicsFactoryV24`) | Makes a coin's tokenomics vault at launch: payout wallets, holder rewards and burns. | `0xDD4C09A90DC92568d23FA62bDF75B51E860265Fe` | `https://www.pangea.trade/abi/tokenomics-factory-v24.json` |
| Tokenomics vault v2.4 (`TokenomicsVaultV24`) | The implementation every v2.4 coin's tokenomics vault runs: claims, payouts and reward buys; its modules' functions are included. | `0xde619eA861713Feb96411a8a99B868305C084A2c` | `https://www.pangea.trade/abi/tokenomics-vault-v24.json` |
| Tokenomics liquidity adder (`TokenomicsLiquidityV23`) | Adds a v2.4 tokenomics vault's liquidity to the coin's pool. | `0xb652D6c446D7C496534Aa356a6128B0e29AD9d92` | `https://www.pangea.trade/abi/tokenomics-liquidity.json` |
| Factory v3 joiner (`internal`) | The part of factory v3 that adds a chain to a coin launched elsewhere; only the factory calls it. | `0xeC8186beb8225d8854b24Ab93857f8C6D851852d` | `https://www.pangea.trade/abi/launch-factory-v3-joiner.json` |
| Factory v3 checks (`internal`) | The part of factory v3 that checks a launch's terms before it lands; only the factory calls it. | `0x24358A8D88807c66C51a79404ca652454037bEea` | `https://www.pangea.trade/abi/launch-factory-v3-checks.json` |
| PartsDeployerV3 (`internal`) | Deploys each launch's fee splitter and LaunchOwner for the factory; only the factory calls it. | `0x6E0ce191A4f8e5959E9Fd51e53bf7F52658FD06c` | `https://www.pangea.trade/abi/parts-deployer-v3.json` |

### Base

| Contract | What it is for | Address | JSON |
| --- | --- | --- | --- |
| Factory v3 | Launches a coin's leg on this chain: deploys the token, its fee splitter and LaunchOwner, opens the Uniswap v4 pool and locks the liquidity. | `0x84d32eDdFE50E6C243B8f3Be963eA8A5eA7Adb1e` | `https://www.pangea.trade/abi/launch-factory-v3.json` |
| Coin token (`PangeaOFTV3`) | The coin itself, one per coin per chain: an ERC-20 LayerZero OFT with 9 decimals. Send, quote, the gap fee and supply reads; its gap and log modules' functions are included. The address is one live coin's. | `0x64B1051F6CC1FD35B29504C16A3F921F42E8d6ea` | `https://www.pangea.trade/abi/pangea-oft-v3.json` |
| Fee hook (`PangeaFeeHook`) | The Uniswap v4 hook every Pangea pool trades through: takes the trading fee for the coin's fee splitter. | `0x15e5E7206C661a1E881F5CD33A94eAF2328FA8cc` | `https://www.pangea.trade/abi/pangea-fee-hook.json` |
| Fee splitter (`FeeSplitterV3`) | One per coin per chain: splits the coin's trading fee between the platform and the creator, and pays each out. The address is one live coin's. | `0x9f08F4Db569F83401e21C0f981E0f7270FFF81f6` | `https://www.pangea.trade/abi/fee-splitter-v3.json` |
| LaunchOwner (`LaunchOwnerV3`) | One per coin per chain: holds the token's LayerZero owner and delegate roles, sealed so no key can change its bridge settings. The address is one live coin's. | `0xaF88B24720262433897b9b5C10f8eD107A0d730A` | `https://www.pangea.trade/abi/launch-owner-v3.json` |
| LaunchFeeCollector | Takes each launch's prepaid launch fee on this chain. | `0x7cb08218648433bbC9671f885E15954756717BCa` | `https://www.pangea.trade/abi/launch-fee-collector.json` |
| LaunchBuys | Holds launch-buy deposits and runs the buys when the launch lands; an unspent deposit can be taken back. | `0x735192F90d49DA81A702cFeb9335331F3B361968` | `https://www.pangea.trade/abi/launch-buys.json` |
| Price attestor (`PriceAttestorV3`) | Checks the signed price snapshot a launch opens at, and holds the minimum opening market cap. | `0xFB717d3fF3110d20537D3B6eE193DfB291f6cd47` | `https://www.pangea.trade/abi/price-attestor-v3.json` |
| Gap registry (`PangeaGapRegistry`) | The price-gap registry: the price routes, gap margin and bridge fee that a cheap-to-dear transfer's gap fee is charged by. | `0x041439bA5e4E9D4bf003B917df9622BbD04eB602` | `https://www.pangea.trade/abi/gap-registry.json` |
| Gap price reader (`UniV3Reader`) | Reads a Uniswap v3 pool's price for the gap registry's price routes. | `0xf25402152ACFc918a5307e8b873c09aF84Ff4D47` | `https://www.pangea.trade/abi/gap-price-reader.json` |
| PairRegistry | The pair assets a launch may open its pool against on this chain. | `0x7808344Fc0A43e6a5D0E9cB565A13eF9618d61b5` | `https://www.pangea.trade/abi/pair-registry.json` |
| Fast bridge v3 (`PangeaFastBridgeV3`) | The fast lane for v3 coins: a transfer paid out at once on arrival, settled behind it over LayerZero. | `0x9C385c829E751d2aB9bCA17233F0357Da7607aA4` | `https://www.pangea.trade/abi/fast-bridge-v3.json` |
| Fast bridge (`PangeaFastBridge`) | The shared fast lane for coins from earlier factories: a transfer paid out at once on arrival, settled behind it over LayerZero. | `0x51D658a71AEa38f123d4c73e42703Fb9C949900A` | `https://www.pangea.trade/abi/fast-bridge.json` |
| Pangea DVN (`PangeaDVNV3`) | Pangea's LayerZero verifier: one of the verifiers that must sign every v3 transfer between chains. | `0xfEA7bEcb49269336dC5D824f774Fd784511CE8F9` | `https://www.pangea.trade/abi/pangea-dvn-v3.json` |
| Cheapest-chain helper (`PangeaCheapestChain`) | The trade card's cheapest-chain route: buys on the cheaper chain and bridges the coins back. | `0x7d1eC2FBB9108a27d0E1Efb805d8e5bEcb4ecd7C` | `https://www.pangea.trade/abi/cheapest-chain.json` |
| RoutePayment | Takes the setup payment for opening a coin's Solana routes. | `0xD1281cF6FA4f15871f21260c9E443dAdc0d311e8` | `https://www.pangea.trade/abi/route-payment.json` |
| LiquidityLocker | Holds every launched pool's liquidity position; there is no function that withdraws it. | `0xbebe68fBfB62E18FBFEbf4365970D192C5f34DC1` | `https://www.pangea.trade/abi/liquidity-locker.json` |
| TokenDeployerV3 | Deploys each coin's token by CREATE2 for the factory, at an address ending in 6ea; only the factory can call it. | `0x7650b19794D59b2CDF04eBb8351784Db6529ff04` | `https://www.pangea.trade/abi/token-deployer-v3.json` |
| Tokenomics factory v2.4 (`TokenomicsFactoryV24`) | Makes a coin's tokenomics vault at launch: payout wallets, holder rewards and burns. | `0xDD4C09A90DC92568d23FA62bDF75B51E860265Fe` | `https://www.pangea.trade/abi/tokenomics-factory-v24.json` |
| Tokenomics vault v2.4 (`TokenomicsVaultV24`) | The implementation every v2.4 coin's tokenomics vault runs: claims, payouts and reward buys; its modules' functions are included. | `0xde619eA861713Feb96411a8a99B868305C084A2c` | `https://www.pangea.trade/abi/tokenomics-vault-v24.json` |
| Tokenomics liquidity adder (`TokenomicsLiquidityV23`) | Adds a v2.4 tokenomics vault's liquidity to the coin's pool. | `0xb652D6c446D7C496534Aa356a6128B0e29AD9d92` | `https://www.pangea.trade/abi/tokenomics-liquidity.json` |
| Factory v3 joiner (`internal`) | The part of factory v3 that adds a chain to a coin launched elsewhere; only the factory calls it. | `0x1a7dD955f87f56f523C609C4e205869014E1fDdE` | `https://www.pangea.trade/abi/launch-factory-v3-joiner.json` |
| Factory v3 checks (`internal`) | The part of factory v3 that checks a launch's terms before it lands; only the factory calls it. | `0xD96807BD029257210934aC94EF9238A980117a9E` | `https://www.pangea.trade/abi/launch-factory-v3-checks.json` |
| PartsDeployerV3 (`internal`) | Deploys each launch's fee splitter and LaunchOwner for the factory; only the factory calls it. | `0x6E0ce191A4f8e5959E9Fd51e53bf7F52658FD06c` | `https://www.pangea.trade/abi/parts-deployer-v3.json` |

### BSC

| Contract | What it is for | Address | JSON |
| --- | --- | --- | --- |
| Factory v3 | Launches a coin's leg on this chain: deploys the token, its fee splitter and LaunchOwner, opens the Uniswap v4 pool and locks the liquidity. | `0x2209E0d4a9a1B6E293da6B9c4651747425161F32` | `https://www.pangea.trade/abi/launch-factory-v3.json` |
| Coin token (`PangeaOFTV3`) | The coin itself, one per coin per chain: an ERC-20 LayerZero OFT with 9 decimals. Send, quote, the gap fee and supply reads; its gap and log modules' functions are included. The address is one live coin's. | `0xCB54a0bB9f2635F3681B98016A9e44c5374446Ea` | `https://www.pangea.trade/abi/pangea-oft-v3.json` |
| Fee hook (`PangeaFeeHook`) | The Uniswap v4 hook every Pangea pool trades through: takes the trading fee for the coin's fee splitter. | `0x15e5E7206C661a1E881F5CD33A94eAF2328FA8cc` | `https://www.pangea.trade/abi/pangea-fee-hook.json` |
| Fee splitter (`FeeSplitterV3`) | One per coin per chain: splits the coin's trading fee between the platform and the creator, and pays each out. The address is one live coin's. | `0xE3C87AB1ca5634618186539b3a82C399B4d9D2cE` | `https://www.pangea.trade/abi/fee-splitter-v3.json` |
| LaunchOwner (`LaunchOwnerV3`) | One per coin per chain: holds the token's LayerZero owner and delegate roles, sealed so no key can change its bridge settings. The address is one live coin's. | `0x5F65BBdB9A0176C1f8EDA38ab488A394641b748F` | `https://www.pangea.trade/abi/launch-owner-v3.json` |
| LaunchFeeCollector | Takes each launch's prepaid launch fee on this chain. | `0xcDB037B5B4b58e3C89d632463656D889123a7c04` | `https://www.pangea.trade/abi/launch-fee-collector.json` |
| LaunchBuys | Holds launch-buy deposits and runs the buys when the launch lands; an unspent deposit can be taken back. | `0xc455Cf5B2d0cA8d92c439BB4Ab7e046d9410ADdE` | `https://www.pangea.trade/abi/launch-buys.json` |
| Price attestor (`PriceAttestorV3`) | Checks the signed price snapshot a launch opens at, and holds the minimum opening market cap. | `0x74500cfb68CcAa2ad2Fb396796acd56aB1b06F9e` | `https://www.pangea.trade/abi/price-attestor-v3.json` |
| Gap registry (`PangeaGapRegistry`) | The price-gap registry: the price routes, gap margin and bridge fee that a cheap-to-dear transfer's gap fee is charged by. | `0xbF4e80fe8609ec94590Bc7A00e8BA62C9D7A8893` | `https://www.pangea.trade/abi/gap-registry.json` |
| Gap price reader (`UniV3Reader`) | Reads a Uniswap v3 pool's price for the gap registry's price routes. | `0x4e64E197e7444278Dc627FA604701d1043BA5804` | `https://www.pangea.trade/abi/gap-price-reader.json` |
| PairRegistry | The pair assets a launch may open its pool against on this chain. | `0xcA35Ecbfa0e8C7319Cb6337774b6c9d79185e0fE` | `https://www.pangea.trade/abi/pair-registry.json` |
| Fast bridge v3 (`PangeaFastBridgeV3`) | The fast lane for v3 coins: a transfer paid out at once on arrival, settled behind it over LayerZero. | `0x9C385c829E751d2aB9bCA17233F0357Da7607aA4` | `https://www.pangea.trade/abi/fast-bridge-v3.json` |
| Fast bridge (`PangeaFastBridge`) | The shared fast lane for coins from earlier factories: a transfer paid out at once on arrival, settled behind it over LayerZero. | `0xd7C10226327451ac768512aC4A5035a9477f862a` | `https://www.pangea.trade/abi/fast-bridge.json` |
| Pangea DVN (`PangeaDVNV3`) | Pangea's LayerZero verifier: one of the verifiers that must sign every v3 transfer between chains. | `0x7372267975C3606ae86febD7059235addc8aA02C` | `https://www.pangea.trade/abi/pangea-dvn-v3.json` |
| Cheapest-chain helper (`PangeaCheapestChain`) | The trade card's cheapest-chain route: buys on the cheaper chain and bridges the coins back. | `0x6a9f3126C0EA3EEB9cBE53205175c9673Da6565f` | `https://www.pangea.trade/abi/cheapest-chain.json` |
| RoutePayment | Takes the setup payment for opening a coin's Solana routes. | `0xD1281cF6FA4f15871f21260c9E443dAdc0d311e8` | `https://www.pangea.trade/abi/route-payment.json` |
| LiquidityLocker | Holds every launched pool's liquidity position; there is no function that withdraws it. | `0xbebe68fBfB62E18FBFEbf4365970D192C5f34DC1` | `https://www.pangea.trade/abi/liquidity-locker.json` |
| TokenDeployerV3 | Deploys each coin's token by CREATE2 for the factory, at an address ending in 6ea; only the factory can call it. | `0x7650b19794D59b2CDF04eBb8351784Db6529ff04` | `https://www.pangea.trade/abi/token-deployer-v3.json` |
| Tokenomics factory v2.4 (`TokenomicsFactoryV24`) | Makes a coin's tokenomics vault at launch: payout wallets, holder rewards and burns. | `0xDD4C09A90DC92568d23FA62bDF75B51E860265Fe` | `https://www.pangea.trade/abi/tokenomics-factory-v24.json` |
| Tokenomics vault v2.4 (`TokenomicsVaultV24`) | The implementation every v2.4 coin's tokenomics vault runs: claims, payouts and reward buys; its modules' functions are included. | `0xde619eA861713Feb96411a8a99B868305C084A2c` | `https://www.pangea.trade/abi/tokenomics-vault-v24.json` |
| Tokenomics liquidity adder (`TokenomicsLiquidityV23`) | Adds a v2.4 tokenomics vault's liquidity to the coin's pool. | `0xb652D6c446D7C496534Aa356a6128B0e29AD9d92` | `https://www.pangea.trade/abi/tokenomics-liquidity.json` |
| Factory v3 joiner (`internal`) | The part of factory v3 that adds a chain to a coin launched elsewhere; only the factory calls it. | `0x5633E88D0a62CDE74E401Ad157779a0D48950FFe` | `https://www.pangea.trade/abi/launch-factory-v3-joiner.json` |
| Factory v3 checks (`internal`) | The part of factory v3 that checks a launch's terms before it lands; only the factory calls it. | `0x08Dab176024502C88a4f834816b79434A5445345` | `https://www.pangea.trade/abi/launch-factory-v3-checks.json` |
| PartsDeployerV3 (`internal`) | Deploys each launch's fee splitter and LaunchOwner for the factory; only the factory calls it. | `0x6E0ce191A4f8e5959E9Fd51e53bf7F52658FD06c` | `https://www.pangea.trade/abi/parts-deployer-v3.json` |

### Robinhood Chain

| Contract | What it is for | Address | JSON |
| --- | --- | --- | --- |
| Factory v3 | Launches a coin's leg on this chain: deploys the token, its fee splitter and LaunchOwner, opens the Uniswap v4 pool and locks the liquidity. | `0xAa7A943666b72A305A53962dd5B28c5F9D8A37a7` | `https://www.pangea.trade/abi/launch-factory-v3.json` |
| Coin token (`PangeaOFTV3`) | The coin itself, one per coin per chain: an ERC-20 LayerZero OFT with 9 decimals. Send, quote, the gap fee and supply reads; its gap and log modules' functions are included. The address is one live coin's. | `0x57bc5Ed419F4CAcBE2EeB7b70a85B6713D7706eA` | `https://www.pangea.trade/abi/pangea-oft-v3.json` |
| Fee hook (`PangeaFeeHook`) | The Uniswap v4 hook every Pangea pool trades through: takes the trading fee for the coin's fee splitter. | `0x15e5E7206C661a1E881F5CD33A94eAF2328FA8cc` | `https://www.pangea.trade/abi/pangea-fee-hook.json` |
| Fee splitter (`FeeSplitterV3`) | One per coin per chain: splits the coin's trading fee between the platform and the creator, and pays each out. The address is one live coin's. | `0xffD979314506ff00f8C6E205C32e47D132ae0Da7` | `https://www.pangea.trade/abi/fee-splitter-v3.json` |
| LaunchOwner (`LaunchOwnerV3`) | One per coin per chain: holds the token's LayerZero owner and delegate roles, sealed so no key can change its bridge settings. The address is one live coin's. | `0x3FC813D6d31ac2Ea52F39E062066D49D23aBE5Bd` | `https://www.pangea.trade/abi/launch-owner-v3.json` |
| LaunchFeeCollector | Takes each launch's prepaid launch fee on this chain. | `0xcDB037B5B4b58e3C89d632463656D889123a7c04` | `https://www.pangea.trade/abi/launch-fee-collector.json` |
| LaunchBuys | Holds launch-buy deposits and runs the buys when the launch lands; an unspent deposit can be taken back. | `0x0aBDD848773616af3954A161F2f153BB2e7413C3` | `https://www.pangea.trade/abi/launch-buys.json` |
| Price attestor (`PriceAttestorV3`) | Checks the signed price snapshot a launch opens at, and holds the minimum opening market cap. | `0xa9e3307FA5184FBbBaEde63aa908159D7a516d8f` | `https://www.pangea.trade/abi/price-attestor-v3.json` |
| Gap registry (`PangeaGapRegistry`) | The price-gap registry: the price routes, gap margin and bridge fee that a cheap-to-dear transfer's gap fee is charged by. | `0xc2f0b94f31f0717C9E53ff0E1c55b365eae0f37F` | `https://www.pangea.trade/abi/gap-registry.json` |
| Gap price reader (`UniV3Reader`) | Reads a Uniswap v3 pool's price for the gap registry's price routes. | `0xFa1b35f6e7a1D083b3FB587F8b04E24bf649dF9C` | `https://www.pangea.trade/abi/gap-price-reader.json` |
| PairRegistry | The pair assets a launch may open its pool against on this chain. | `0xcA35Ecbfa0e8C7319Cb6337774b6c9d79185e0fE` | `https://www.pangea.trade/abi/pair-registry.json` |
| Fast bridge v3 (`PangeaFastBridgeV3`) | The fast lane for v3 coins: a transfer paid out at once on arrival, settled behind it over LayerZero. | `0x6C62e2F482f590c0A0144F4266256cFabA44b98c` | `https://www.pangea.trade/abi/fast-bridge-v3.json` |
| Fast bridge (`PangeaFastBridge`) | The shared fast lane for coins from earlier factories: a transfer paid out at once on arrival, settled behind it over LayerZero. | `0xcC87BeDb95E4ac0cf20039442A964ADB390c02c4` | `https://www.pangea.trade/abi/fast-bridge.json` |
| Pangea DVN (`PangeaDVNV3`) | Pangea's LayerZero verifier: one of the verifiers that must sign every v3 transfer between chains. | `0x41a49427e0CfE99d157Dd24070a99c6746077804` | `https://www.pangea.trade/abi/pangea-dvn-v3.json` |
| Cheapest-chain helper (`PangeaCheapestChain`) | The trade card's cheapest-chain route: buys on the cheaper chain and bridges the coins back. | `0x6a9f3126C0EA3EEB9cBE53205175c9673Da6565f` | `https://www.pangea.trade/abi/cheapest-chain.json` |
| RoutePayment | Takes the setup payment for opening a coin's Solana routes. | `0xD1281cF6FA4f15871f21260c9E443dAdc0d311e8` | `https://www.pangea.trade/abi/route-payment.json` |
| LiquidityLocker | Holds every launched pool's liquidity position; there is no function that withdraws it. | `0xbebe68fBfB62E18FBFEbf4365970D192C5f34DC1` | `https://www.pangea.trade/abi/liquidity-locker.json` |
| TokenDeployerV3 | Deploys each coin's token by CREATE2 for the factory, at an address ending in 6ea; only the factory can call it. | `0x7650b19794D59b2CDF04eBb8351784Db6529ff04` | `https://www.pangea.trade/abi/token-deployer-v3.json` |
| Tokenomics factory v2.4 (`TokenomicsFactoryV24`) | Makes a coin's tokenomics vault at launch: payout wallets, holder rewards and burns. | `0xDD4C09A90DC92568d23FA62bDF75B51E860265Fe` | `https://www.pangea.trade/abi/tokenomics-factory-v24.json` |
| Tokenomics vault v2.4 (`TokenomicsVaultV24`) | The implementation every v2.4 coin's tokenomics vault runs: claims, payouts and reward buys; its modules' functions are included. | `0xde619eA861713Feb96411a8a99B868305C084A2c` | `https://www.pangea.trade/abi/tokenomics-vault-v24.json` |
| Tokenomics liquidity adder (`TokenomicsLiquidityV23`) | Adds a v2.4 tokenomics vault's liquidity to the coin's pool. | `0xb652D6c446D7C496534Aa356a6128B0e29AD9d92` | `https://www.pangea.trade/abi/tokenomics-liquidity.json` |
| Factory v3 joiner (`internal`) | The part of factory v3 that adds a chain to a coin launched elsewhere; only the factory calls it. | `0xad0b376D681b4a63988B4Ae625669e5cB6fE6592` | `https://www.pangea.trade/abi/launch-factory-v3-joiner.json` |
| Factory v3 checks (`internal`) | The part of factory v3 that checks a launch's terms before it lands; only the factory calls it. | `0xCEA284C7E5318883eE30faAd1D97e09Cfb106e04` | `https://www.pangea.trade/abi/launch-factory-v3-checks.json` |
| PartsDeployerV3 (`internal`) | Deploys each launch's fee splitter and LaunchOwner for the factory; only the factory calls it. | `0x6E0ce191A4f8e5959E9Fd51e53bf7F52658FD06c` | `https://www.pangea.trade/abi/parts-deployer-v3.json` |

### Solana

| Contract | What it is for | Address | JSON |
| --- | --- | --- | --- |
| Pangea OFT (`oft`) | The program behind every Solana coin: LayerZero OFT sends and receives, the gap fee and the price log. Immutable since 2026-11-04: nobody can change its code. | `SNyKyiZYU4R54SF9sYLmjCaCUsa1sC6QouNAj3x3Zzf` | `https://www.pangea.trade/idl/pangea-oft.json` |
| Splitter (`pangea_splitter`) | Solana launches, the Meteora pool's fee split between platform and creator, and Solana tokenomics. | `Hb5uTppRbNxc3RjVRqTWqfdU3E3GiZyGYKccxYf9tUej` | `https://www.pangea.trade/idl/pangea-splitter.json` |
| Fast bridge (`pangea_fastbridge`) | The fast lane on Solana: a transfer paid out at once on arrival, settled behind it over LayerZero. | `7YNA5pg5sxmKxma7XiKDJnpWgyF5VPc7SaqyuzNhqZtw` | `https://www.pangea.trade/idl/pangea-fastbridge.json` |
| Cheapest chain (`pangea_cheapest`) | Solana as the far chain of the trade card's cheapest-chain route: buys and sells for EVM users. | `HQ6RgB3GGJvrkpj4dRiVMEQJAcEq4bAwtmaH6swnvDQC` | `https://www.pangea.trade/idl/pangea-cheapest.json` |
| Pangea DVN (`pangea_dvn`) | Pangea's LayerZero verifier on Solana: one of the verifiers that must sign every transfer to and from Solana. | `HwNU4xXd7GVuTcjWTtWdT83d27ACJtwSGiFFWDxaELkn` | `https://www.pangea.trade/idl/pangea-dvn.json` |
| Shared bridge v4, set v4a (`pangea_bridge_v4`) | The Solana bridge program of the v4a contract set (coins launched before v4b): every v4a coin's record, mint authority, gap config and both transports. | `Eeb1VmcMeYEfjaDsnbqdnVK4NKvwTafm2EKfx3hJVF6N` | `https://www.pangea.trade/idl/pangea-bridge-v4-v4a.json` |
| Shared bridge v4, set v4b (`pangea_bridge_v4`) | The Solana bridge program of the v4b contract set, the current one (coins launched on v4b). The same instructions as v4a's; it also accepts the open authorisation signed as text. Its LayerZero store (Store): 73FxfL4gYMYnWXPvmdi9ARL95qxDq8pdR3Yv8kNiShP2. | `8K7DTNE4bqPwZiueTPn8wD3NULAt3PxCMPA9nkFc2LK3` | `https://www.pangea.trade/idl/pangea-bridge-v4-v4b.json` |
| v4 launcher (`pangea_launcher`) | Opens v4 coins on Solana for both contract sets (v4a and v4b: one version slot per set's bridge): the mint, the Meteora pool with its locked position, the coin's record in its set's bridge. | `EnLq33Zqv6j15km7zxBXgwn8w6TiUxKQSeRosBFK8qZP` | `https://www.pangea.trade/idl/pangea-launcher-v4.json` |
| v4 price readers (`pangea_readers_v4`) | The venue price readers both v4 Solana bridges (v4a and v4b) consult. | `7BeRQpptTjniVtngbQBBBdTARua9MFXCbF1ek3FPP6G4` | `https://www.pangea.trade/idl/pangea-readers-v4.json` |

### Elysium

| Contract | What it is for | Address | JSON |
| --- | --- | --- | --- |
| Fee hook (`PangeaFeeHook`) | The Uniswap v4 hook every Pangea pool trades through: takes the trading fee for the coin's fee splitter. | `0xfc020627A2F600c36ED4EBABd1e8124E6328a8cc` | `https://www.pangea.trade/abi/pangea-fee-hook.json` |
| Fee splitter (`FeeSplitterV3`) | One per coin per chain: splits the coin's trading fee between the platform and the creator, and pays each out. The address is one live coin's. | `0x5ad1dD71f6A7b47a4dCE8fBb6d79C236fE7B112E` | `https://www.pangea.trade/abi/fee-splitter-v3.json` |
| LaunchBuys | Holds launch-buy deposits and runs the buys when the launch lands; an unspent deposit can be taken back. | `0x8C127d90A3C857C947e758e6a51669D21E56295B` | `https://www.pangea.trade/abi/launch-buys.json` |
| Tokenomics factory v2.4 (`TokenomicsFactoryV24`) | Makes a coin's tokenomics vault at launch: payout wallets, holder rewards and burns. | `0xFc44Ae11EE9D0b2A38b1B7C59a3858C85C51a129` | `https://www.pangea.trade/abi/tokenomics-factory-v24.json` |
| Tokenomics vault v2.4 (`TokenomicsVaultV24`) | The implementation every v2.4 coin's tokenomics vault runs: claims, payouts and reward buys; its modules' functions are included. | `0x80ea59dad4d01749e7ae9f294CB4E164A41C4809` | `https://www.pangea.trade/abi/tokenomics-vault-v24.json` |
| Tokenomics liquidity adder (`TokenomicsLiquidityV23`) | Adds a v2.4 tokenomics vault's liquidity to the coin's pool. | `0x7D8dd9586c5ec12716fAe0b6222e571C93349f48` | `https://www.pangea.trade/abi/tokenomics-liquidity.json` |
| Elysium factory (`ElysiumLaunchFactory`) | Launches an Elysium-only coin from the creator's own wallet: token, fee splitter, Uniswap v4 pool and locked liquidity. | `0x9Ae1f9844d885D0A646294ECf9DFCaf40C9903CB` | `https://www.pangea.trade/abi/elysium-launch-factory.json` |
| Elysium coin token (`ElysiumToken`) | An Elysium coin itself, one per coin: an ERC-20 with its whole supply minted at launch. The address is one live coin's. | `0x423e672A27D87709C88c1173EBDC0398a73616Ea` | `https://www.pangea.trade/abi/elysium-token.json` |
| Elysium liquidity locker (`ElysiumLiquidityLocker`) | Holds every Elysium pool's liquidity position, locked. | `0x0Ea7fb46415270f33fdD2fde7aA3e0Dc46E2E2BC` | `https://www.pangea.trade/abi/elysium-liquidity-locker.json` |
| Elysium dev buyer (`ElysiumDevBuyer`) | Runs the creator's first buy in the launch transaction. | `0x101c50201A6Bff01b4D197392aD1418276DcD8cf` | `https://www.pangea.trade/abi/elysium-dev-buyer.json` |
| Elysium token deployer (`internal`) | Deploys each Elysium coin's token for the factory; only the factory calls it. | `0xe7D5CFaE20BB806A729D20a2362385a9a016de82` | `https://www.pangea.trade/abi/elysium-token-deployer.json` |
| Elysium parts deployer (`internal`) | Deploys each Elysium launch's fee splitter for the factory; only the factory calls it. | `0x18904787306f667aeC7672d36961e62bfbFB92f1` | `https://www.pangea.trade/abi/elysium-parts-deployer.json` |

> **Note:** One per coin means every launched coin has its own: the address given is one live coin's, and a coin's own is in the factory's Launched event. The Solana OFT's send takes LayerZero's SendParams and then optional trailing bytes (a minimum credited, a minimum price, flags and co-signer ceilings); its IDL gives the base fields and says so. Three of the splitter's launch arguments (LaunchV2Args, Peers, SignedPrice) use the splitter's own packed layout, not Borsh: the IDL names them and gives each layout in its docs, and Anchor's coder cannot encode them, so the data for those instructions is built by hand.

## API: everything you can do from code

Every endpoint is under `https://www.pangea.trade/api`, answers JSON (a few plain text), and needs no key or account. The general rules (errors, limits, units, names) are in [API reference →](https://www.pangea.trade/app/docs/v2#api) Launching from code has its own section, with keys: [Launch API →](https://www.pangea.trade/app/docs/v2#launch-api)

### By task

| To | Call | Described in |
| --- | --- | --- |
| List every coin, its pools and prices on every chain | `GET /pools` | [For integrators](https://www.pangea.trade/app/docs/v2#integrators) |
| Follow new launches as they go live | `GET /v1/launches`, `GET /v1/launches/stream` | [API reference](https://www.pangea.trade/app/docs/v2#api) |
| Read one coin: addresses, pair asset per chain, supply, tokenomics | `GET /coin/[id]` | [API reference](https://www.pangea.trade/app/docs/v2#api) |
| Read a coin's name, logo and links | `GET /token/meta`, `GET /logo/[cid]/[file]` | [For integrators](https://www.pangea.trade/app/docs/v2#integrators) |
| Trades, volume and candles | `GET /history` | [For integrators](https://www.pangea.trade/app/docs/v2#integrators) and below |
| Holders, per chain | `GET /holders` | [API reference](https://www.pangea.trade/app/docs/v2#api) |
| Supply for CoinGecko and CoinMarketCap | `GET /supply/[token]` and its `/total` and `/circulating` | [API reference](https://www.pangea.trade/app/docs/v2#api) |
| Price a buy or a sale, on one chain or the cheapest route | `POST /trade/quote` | [API reference](https://www.pangea.trade/app/docs/v2#api) |
| Price and build a bridge transfer | `POST /bridge/quote`, `POST /bridge/solana-tx`, `POST /cosign` | [Bridging from code](https://www.pangea.trade/app/docs/v2#bridge-code) and below |
| Follow a transfer or a transaction | `GET /bridge/activity`, `POST /bridge/arrival`, `POST /chain/tx`, `GET /trade/tx-status` | [API reference](https://www.pangea.trade/app/docs/v2#api) |
| Launch a coin | `POST /v1/launch/prepare` → `pay` → `submit` → `status` / `events` | [Launch API](https://www.pangea.trade/app/docs/v2#launch-api) |
| Check what a launch may use before quoting | `GET /launch/factory-gen`, `/launch/pairs`, `/launch/stocks`, `/launch/open-routes` | Below |
| Launch buys: what a wallet deposited, and reclaiming it | `GET /launch/launch-buys-lines`, `GET /token/launch-buys` | [Launch buys](https://www.pangea.trade/app/docs/v3#v3-launch-buys) and below |
| Who a coin's fees are paid to, and a change waiting | `GET /coin/[id]/fee-receivers`, `/pending` | [API reference](https://www.pangea.trade/app/docs/v2#api) and below |
| Stock pairs: which coins, and fees in native | `GET /stock-pairs`, `GET, POST /token/fee-native` | Below |
| Tokenomics vaults, holder rewards and burns | `GET /coin/[id]/tokenomics`, `/tokenomics`, `/tokenomics/v2/*` | Below |
| Platform revenue, creator rewards and all-time volume | `GET /revenue`, `/creator-rewards`, `/alltime` | Below; the platform's own fee figures are in the API reference |
| Community takeovers | `GET /cto`, `GET /cto/burns` | [Creator rewards](https://www.pangea.trade/app/docs/v3#v3-creator-rewards) and below |
| Elysium: launch settings, pair tokens, trades, deposits and withdrawals | `/elysium/*` | [Elysium](https://www.pangea.trade/app/docs/v3#v3-elysium) |

### Platform figures

| Endpoint | Answer | Parameters, limit, cache |
| --- | --- | --- |
| `GET /revenue` | `{ status, from, to, exact, platformUsd, creatorUsd, officialUsd, creatorOtherUsd, missingChains, unpricedRows, chains: { <chain>: { platformUsd, creatorUsd, officialUsd, creatorOtherUsd, payouts, assets: [{ asset, native, kind, payeeKind, amount, decimals, usd, rows, unpriced }] } } }`: the platform’s and the creators’ fee payouts in the span, in US dollars at each payout’s own time. `creatorUsd` counts only shares paid to a creator; a creator share that went to a tokenomics vault, was burned after a renounce, or is held for a creator with no wallet on that chain is in `creatorOtherUsd` ({ tokenomics, burn, bucket, unknown }) instead. `officialUsd` is the official PANGEA coin’s creator share. `exact: false` means at least these figures: a chain in `missingChains` is not fully recorded for the span. | `from`, `to`: ISO time or unix seconds; `to` is now and `from` a day before it unless given. No limit; held 30 seconds. `400` for a span that is not one. |
| `GET /alltime` | `{ readAt, coins, since, complete, totals: { volumeUsd, trades }, chains: [{ chain, quoteSymbol, volume, volumeUsd, trades, pools, complete }], rates }`: all-time volume and trades of every listed coin, per chain. `complete: false` means at least. | No parameters. No limit; held a minute. |
| `GET /creator-rewards` | `{ status, totalUsd, officialUsd, platformUsd, payouts, complete, chains: [{ chain, asset, creator, usd, payouts, assets: [...] }], platformWindows: { "24": {...}, "168": {...} }, updatedAt }`: everything creators have been paid, all time, with stock-token payouts listed apart under `assets`. | No parameters. No limit; held a minute. |
| `GET /cto` | `{ ready, coins: [{ slug, launchId, chains: { <chain>: { from, to, tx, at } } }], readAt }`: the coins whose creator fee stream the platform moved in a community takeover. `ready: false` means it could not be read, not that there are none. | 120 a minute; held 15 seconds. |
| `GET /cto/burns` | `{ status, slug, known, totals, recent }`: the burns of a taken-over coin whose fees are bought back and burned. | `slug`. 60 a minute. `404` for a coin whose fees are not bought back and burned. |

GET /revenue (24 hours, trimmed):

```json
{
  "status": "ok",
  "from": "2026-11-02T05:10:00.000Z",
  "to": "2026-11-03T05:10:00.000Z",
  "exact": false,
  "platformUsd": 4343.05,
  "creatorUsd": 11213.81,
  "officialUsd": 4913.13,
  "chains": {
    "solana": {
      "assets": [{ "asset": "native", "native": true, "kind": "creator", "amount": "20802751835", "decimals": 9, "usd": 1919.59, "rows": 463, "unpriced": 0 }]
    }
  }
}
```

### Coins: stock pairs, fees in native, fee receivers

| Endpoint | Answer | Parameters, limit, cache |
| --- | --- | --- |
| `GET /stock-pairs` | `{ coins: { <slug>: [{ chain, quote: "native" \| { ticker, address, logo } }] }, readAt }`: every coin with at least one stock-paired chain. One coin’s pair assets are also in `GET /coin/[id]`’s `chains.<chain>.quote`. | No parameters. 120 a minute; held a minute. |
| `GET /token/fee-native` | `{ launchId, available, evm: Side, solana: Side }`, each side `{ paired, stockPaired, convertible, note, chains, native, source, at, signers }`: whether that side’s creator fees in its pair token are sold for the chain’s native coin when claimed. `paired` is true when the side’s pair is not its own coin (any token); `stockPaired` is the same value under its first name. `convertible` is false, with a `note`, on a community-takeover coin whose pair token Pangea’s custodial wallet cannot sell yet: its fees are forwarded in the token. `signers` are the wallets that may switch it. | `launch`: slug, token address or launch id. 120 a minute. |
| `POST /token/fee-native` | `{ launch, kind, message: { launchId, side, native, nonce, issuedAt, expiresAt }, signature }`: switches it. On the EVM side the signer signs EIP-712 typed data (domain `{ name: "Pangea Coin Fee Payout", version: "1" }`, type `FeeNative(bytes32 launchId,string side,bool native,bytes32 nonce,uint64 issuedAt,uint64 expiresAt)`); on Solana a fixed text message. Good for 15 minutes at most, each nonce once. | 20 in ten minutes; 30 changes a coin a day. Pangea’s own pages only (another site’s `Origin` is `403`). |
| `GET /coin/[id]/fee-receivers/pending` | `{ slug, launchId, chains: { <chain>: { factory, splitter, creator, pendingCreator, adminPendingCreator } }, complete, settled }`: a change of fee receiver proposed and not yet accepted. It takes effect only when the new address accepts. | 60 a minute; held 30 seconds. |

GET /token/fee-native?launch=elon-033386:

```json
{
  "launchId": "0x0333…2564",
  "available": true,
  "evm": { "paired": false, "stockPaired": false, "chains": [], "native": false, "source": "default", "signers": [], "at": null },
  "solana": { "paired": true, "stockPaired": true, "chains": ["solana"], "native": false, "source": "default", "signers": ["6bok…k9Dg", "8WQV…6Tza"], "at": null }
}
```

### Tokenomics: vaults, holder rewards and burns

| Endpoint | Answer | Parameters, limit, cache |
| --- | --- | --- |
| `GET /coin/[id]/tokenomics` | `{ slug, launchId, launchChains, tokenomics, tokenomicsKnown, chains: { <chain>: { tokenomics } } }`: the config as the launch signed it (`version`, `vault`, `buckets`, `perChain`, `holders: { minHolderBps, select, count }`) and each chain’s vault read from the chain. | `live=0` for the config alone. 20 a minute. |
| `GET /tokenomics` | `{ chain, token, tokenomics: { vault, split, buckets, spent, totals: { receivedWei, coinBurned, coinToTreasury, gasRepaidWei, liquidityAdded }, minExecuteWei, lastSwap } }`: one chain’s vault, or `tokenomics: null` for a coin without one. | `chain`, `token` (a Pangea coin’s address or mint). 60 a minute; held a minute. |
| `GET /tokenomics/v2/holder` | `{ chain, vault, rewards: [{ index, token, symbol, decimals, entitlement, paid, claimable, voucher }] }`: what one holder is owed by a coin’s vault, per reward token, in base units. A holder may claim `claimable` themselves with `voucher`. | `chain`, `token`, `holder`. 30 a minute; never cached. On Solana, POST `{ chain: "solana", token, holder, index }` answers the unsigned claim transaction. |
| `GET /tokenomics/v2/burn` | `{ chain, vault, shareBps, totals: { held, spent, rolled }, targets: [{ index, token, symbol, decimals, bps, enabled, waiting, spent, burnt, lastBuy }], recent }`: a vault's burn tokens, the other tokens it buys to burn (tokenomics v2.2), on the EVM chains. | `chain`, `token`. 30 a minute. `404` for a coin that burns no other token. |
| `GET /tokenomics/v2/reward-route` | `{ chain, token, status: "ok" \| "none" \| "unknown", via? }`: whether a token can be bought on that chain to pay holders with, the check the launch form makes. `unknown` with `why: "busy"` means ask again. | `chain`, `token`, and `from` for a stock-paired chain’s stock. 20 a minute. |

### Bridging and trades: the rest

| Endpoint | Answer | Parameters, limit, cache |
| --- | --- | --- |
| `GET /bridge/health` | `{ ok: true, problems: [] }`, or `424` with the problems. | None. |
| `POST /cosign` | For a v3 transfer larger than one part carries: the transfer co-signed by Pangea’s delivery service, with `minCreditedLD` to send it with. A bare `503` means the service is not answering: send it in parts, as the quote’s `split` says. | `{ chain: "evm", chainId, tx, gapToleranceBps? }` (`tx` a registered v3 token’s `send`) or `{ chain: "solana", tx }`. 6 a minute, 30 in ten minutes. |
| `GET /trade/tx-status` | `{ status: "pending" \| "success" \| "failure" }` for an EVM transaction. | `chain`, `hash`. 90 a minute; past it `pending` with `429`. |

### Before you quote a launch

| Endpoint | Answer | Limit |
| --- | --- | --- |
| `GET /launch/factory-gen` | What a launch may use right now: `{ gen, marketCap: { min, max, default }, selfSolana, solana, solanaPrograms, v3: { on, launchBuys, bundleKit, minMarketCapUsd, perChain, degen } }`. `v3.perChain` is each chain’s minimum opening market cap. | Never cached. |
| `GET /launch/pairs` | The assets each chain’s pool may pair with: the Solana splitter’s allowlist and each EVM pair registry’s listed assets. | 60 in ten minutes; held a minute. |
| `GET /launch/stocks` | `{ config: { issuers, tickers, marketHours, cells: [{ chain, ticker, address, issuer, symbol, decimals, multiplier, devBuyRoute, gapRoute, lowLiqWarning, enabled }] } }`: the stock table the launch form offers, by contract address. | 60 in ten minutes. |
| `GET /launch/open-routes` | Whether Solana’s four routes can be opened at launch, and the price; read its `v3` part. | 60 in ten minutes; held a minute. |
| `GET /launch/launch-buys-lines` | A payer’s launch-buy deposits and what is left of each: `launchId`, `payer`. | 30 a minute. |
| `GET /launch/dev-buy, /launch/burn-fees, /launch/chain-select, /launch/same-address` | Whether each option is offered: `{ on }`. The dev buy answers `{ "on": false, "note": "Dev buy temporarily unavailable" }` today. | Never cached. |

GET /launch/factory-gen (2026-11-03):

```json
{
  "gen": 2,
  "marketCap": { "min": 600, "max": 500000, "default": 3000 },
  "selfSolana": true,
  "solanaPrograms": { "splitterProgramId": "Hb5uTppRbNxc3RjVRqTWqfdU3E3GiZyGYKccxYf9tUej", "oftProgramId": "SNyKyiZYU4R54SF9sYLmjCaCUsa1sC6QouNAj3x3Zzf" },
  "solana": true,
  "v3": {
    "on": true, "launchBuys": true, "bundleKit": false, "bundleKitHeld": false, "minMarketCapUsd": 600,
    "perChain": { "bsc": 600, "ethereum": 600, "robinhood": 600, "base": 600, "solana": 600 },
    "degen": { "supplyMode": 0, "marketCapUsdPerChain": 600 }
  }
}
```

### What the big reads carry besides

- `GET /pools`: each launch also has `factoryGen`, `factoryV3` (v3 coins), `supplyMode`, `supply`, `tokenomics`, `listedAt`, `chainsLive`, `launchChains` and `cheapest: { chain, usd }`; each pool also has `venue` (`uniswap-v4` or `meteora`), `priceUsd`, `depth`, `tick`, `sqrtPriceX96`, `locker`, `launchBlock`, and on a stock-paired chain `pair: { address, symbol, ticker, decimals, usd, liquidity, thin }`. A chain the coin is not on is listed with `error: "not launched on this chain"`. The whole answer is about 4 MB: read it once a minute at most.
- `GET /history`: `launch` takes a slug, launch id or token address. `interval` (seconds: 1, 15, 60, 300, 900, 3600, 14400, 86400, 604800 or 2592000) sets the candle width and lets `hours` reach 720. Trade pages: `trades=latest` or `trades=before:<next>` with `limit` 50, 100 or 200 (240 uncached in ten minutes). Chart pages: `before` and `interval` (600 uncached in ten minutes). One coin’s answer also has `chainCandles` (every chain the coin is open on has a value in every candle from its pool’s opening: a candle it did not trade in carries its last price, with no volume, marked `f: 1`), `flow` and `recent`; the answer for every coin does not.
- `GET /token/meta`: also `imageCid`, `discord`, `uriFrom`, `metadataAuthority`, and `edited` when the creator has changed the socials. A document that cannot be read is still a `200`, with `resolvable: false` and `image: null`.
- `GET /bridge/activity`: `token` takes a slug, launch id or token address; each transfer also has `sentTx`, `receivedTx`, `sentTs` and `receivedTs`.
- `POST /bridge/quote`: `routes` is a list, the standard lane first. A v3 transfer too large for one send has `split` (`count`, `parts`, `maxSendLD`); `retry: true` means a figure could not be read just now.

### The site’s own, not an API

These answer only Pangea’s own pages, or build a transaction from a signed ticket the page holds, and may change without notice: the launch form’s `/launch/prepare`, `/launch/submit`, `/launch/pay-solana` and `/launch/proof-check` (a program uses the `/v1/launch` routes, which run the same code), the trade card’s `/trade/boxes`, `/trade/recover`, `/trade/route-status`, `/trade/relay-status` and `/trade/solana-*`, `/chain/solana-send`, `/fees/convert-route`, `/metadata` (the launch form’s picture upload), `/profile/*` (signed in with a cookie), `/support/*` (the support chat) and `/release`. `/admin/*` is the team’s.

> **Note:** The live updates the site’s pages show come over a WebSocket, `wss://www.pangea.trade/live`, and it is public and read-only: pools, trades, bridges and new coins, pushed as they happen, with replay by cursor. Its reference is under WebSocket in [the API reference](https://www.pangea.trade/app/docs/v2#api). Polling `GET /pools`, `GET /history` and `GET /bridge/activity`, or opening `GET /v1/launches/stream`, works as well.

## Questions and answers

Short answers in plain words. Each one links to the part of the docs that goes into detail.

### What is Pangea?

A launchpad where one coin launches on up to five chains at once: Ethereum, Base, BNB Chain (BSC), Robinhood Chain and Solana. It is the same coin on every chain, and it moves between them over LayerZero. All of a coin's supply goes into its trading pools, locked for good. There is no team allocation, treasury or vesting. [How it works →](https://www.pangea.trade/app/docs/v3#v3-overview)

Every Pangea coin's address ends in "6ea": the last three characters on every chain.

### How do I launch a coin?

Open Launch, fill in the name, ticker, picture and links, pick the chains and the trading fee, check the summary and pay. The page then shows each chain going live. You pay once, on one chain, and that covers every chain of the launch.

You need a wallet with a little of the coin of the chain you pay on: ETH on Ethereum, Base or Robinhood Chain, BNB on BSC, SOL on Solana. [Launching on v3 →](https://www.pangea.trade/app/docs/v3#v3-launch)

### What does a launch cost?

The launch fee is what the launch costs to send on each chain (gas, and rent on Solana), plus a 20% margin, at the prices of the moment. It is not a fixed price: the page shows the exact amount, in the coin you pay with and in dollars, before you sign. A quote is good for 10 minutes. Extras you tick, like the gas of launch buys or opening the Solana bridge routes, are added and shown on their own lines. The money launch buys spend is deposited apart, beforehand, and what is not spent comes back.

The fee is held, not taken, until your launch lands. If the launch never happens, ask for a refund with the form on the launch page.

### Which chains can I launch on?

Any two to five of the five chains, as long as at least one is an EVM chain (Ethereum, Base, BSC or Robinhood Chain). You only pay for the chains you pick. Chains cannot be added later by the creator.

### What is the lowest starting market cap?

On v3 a coin can open at $600 of market cap a chain, so $3,000 for a coin on all five chains. Every chain opens at the same price.

### Why does a launch take about a minute?

A launch is several transactions on several chains, not one. The payment has to confirm, the launch price is signed, Solana launches first when it is in the launch, and then each chain's launch is sent and confirmed. Ethereum blocks come about every 12 seconds, so it is often the last to show live. Chains that are already live can be traded while the rest finish. If a chain takes longer, Pangea's launcher sends it again: you do not need to do anything, and you do not pay again. [Launch flow and timing →](https://www.pangea.trade/app/docs/v3#v3-launch)

### What is a stock pair?

Instead of pairing your coin with ETH, BNB or SOL, a chain's pool can pair with a tokenized stock, like Apple or Tesla stock tokens. On the launch form, every chain has a "Pairs with" menu: its own coin, or a stock token listed on that chain. Each chain uses its own issuer's stock token. Chains can differ. [Stock pairs →](https://www.pangea.trade/app/docs/v3#v3-stocks)

### Can I get my stock-pair fees in ETH, BNB or SOL instead of the stock?

Yes: switch on "Receive fees in native" on the launch form or, later, on your profile's fee rows. Your fees in the pair token (a stock, a stable or any token) are then sold for the chain's own coin from your own wallet when you claim, at no worse than Pangea's price less 1.5%. Off, you keep the pair token. [Stock fees →](https://www.pangea.trade/app/docs/v3#v3-stock-fees)

### What does "thin liquidity" mean?

It means the stock token has only a small market on that chain. Trades there move the price a lot, buyers may first need to get the stock token somewhere else, and some things can be off on that chain (for example bridging, where the token has no on-chain price route yet). The form warns you, and you must tick the warning for each warned chain, or untick that chain, before you can launch.

### Can I launch a stock pair when the US market is closed?

Yes, any hour of any day. Stock tokens trade on chain around the clock, and a launch is priced from their on-chain markets the same way whether the US market (09:30 to 16:00 New York time on trading days) is open or not. Outside market hours the form shows a notice, because those markets are thinner and the price may move when the market opens.

### How do trading fees work, and what does the creator get?

You choose the trading fee when you launch, between 0.3% and 5%. It can be different on each chain, and it can never be changed after launch. Every trade pays it. Part goes to the platform and the rest to the creator, or to the fee receiver the creator chose. [Fees on v3 →](https://www.pangea.trade/app/docs/v3#v3-fees)

Fees are paid in what the pool is paired with: ETH, BNB or SOL, or the stock token on a stock-paired chain. Never in your own coin.

Creator fees are paid out automatically when there is enough to be worth the gas, or you can claim them at once from your Profile, under Creator fees.

### What are custom tokenomics?

An option at launch that spends the creator's share of the fees automatically, in shares you set for each chain: burn (buy your coin and burn it), buy and hold, add to liquidity, pay your holders, pay up to 10 wallets, or burn other tokens. Holders can be paid in the pool's own pair token, in ETH or BNB, or in any token. It works for stock-paired coins too. It is fixed at launch and the platform takes no cut of it. [Custom tokenomics on v3 →](https://www.pangea.trade/app/docs/v3#v3-tokenomics)

### Can I buy my own coin at launch?

Yes, with launch buys: up to 10 wallets on each EVM chain buy inside the launch transaction itself, before anyone else can trade. Your EVM fee wallet pays for them beforehand, and what is not spent comes back to it. Dev buys are off for now. [Launch buys →](https://www.pangea.trade/app/docs/v3#v3-launch-buys)

### What is a CTO?

A community takeover. When a creator abandons a coin and its community takes it over, the platform can move the coin's creator fees to a wallet it holds for that coin, and either pass them on to the community's new owner or use them to buy the coin and burn it. The coin shows a CTO badge. [Creator rewards →](https://www.pangea.trade/app/docs/v3#v3-creator-rewards)

### How do I move my coin to another chain?

Open Bridge, pick the coin, the chain it is on and the chain you want it on, enter the amount and sign. A standard transfer usually arrives in seconds (from Ethereum, about half a minute or more). The quote shows every fee before you sign. [Bridging →](https://www.pangea.trade/app/docs/v2#bridging)

On a v3 coin, moving from a chain where it is cheaper to one where it is dearer can cost the price gap: that part is burned. Moving the other way does not. [The price-gap fee →](https://www.pangea.trade/app/docs/v3#v3-gap-fee)

### What is the cheapest route?

A switch on the trade card. When another chain's pool gives you a better result after every fee, your trade is done there, and you still pay and receive on your own chain. You pay all the fees, and they are shown before you sign. It is off by default. [Cheapest route →](https://www.pangea.trade/app/docs/v3#v3-cheapest)

### Which wallets can I use?

Press Connect and use your own wallet (for example MetaMask, Phantom, Solflare, Backpack, Coinbase Wallet, Rainbow, Robinhood Wallet or WalletConnect), or log in with e-mail, which makes a Pangea wallet for you with one EVM and one Solana address. EVM chains and Solana use different wallets, so moving between them needs both kinds (an e-mail login has both).

A Solana wallet used for a launch must be able to sign a plain text message. Many hardware wallets and multisigs cannot: use one that can.

### I got a "wrapped SOL" error on Solana. What do I do?

Wrapped SOL (WSOL) is SOL held as a token, in a token account of your wallet. A Solana fee claim pays SOL to your wallet, or wrapped SOL into your wrapped-SOL account when your wallet cannot take it directly: it is still your SOL, and wallets can unwrap it. A Solana launch sent from your own wallet can leave your wrapped-SOL account open with its rent in it: the launch page's Reclaim button closes it and returns the rent. A payment the page refuses because a swap would spend from an account that is not your own wallet's wrapped SOL was not sent: nothing left your wallet. Try again from the same wallet, and ask support if it keeps happening.

### I withdrew from Elysium to HyperEVM. Where is it?

Withdrawals to HyperEVM take about 5.5 days (the challenge period), then you must claim them on HyperEVM. They are not sent automatically. It can be up to ~6 days in all while the next checkpoint is posted. The wait is Elysium's challenge period (the rollup's confirmPeriodBlocks on HyperEVM), set in Elysium's rollup contracts: this site cannot shorten it. Until you claim, the money waits in Elysium's bridge, not lost.

The claim pays out to the wallet you withdrew to. Open the bridge page, From Elysium, connected with that wallet: it lists your withdrawals with their state (Initiated, Waiting with the date it becomes claimable, Ready to claim, Claimed). Once it says Ready to claim, press Claim on HyperEVM and sign; you pay a little HyperEVM gas. elyscan shows the same list: https://elyscan.live/withdrawals, searched by your address. [Elysium →](https://www.pangea.trade/app/docs/v3#v3-elysium)

### Is it safe?

Liquidity is locked on every chain: no contract function or program instruction can withdraw it, and nobody can mint more of a coin than was launched and bridged. The contracts were reviewed in repeated audit rounds before going live.

The Pangea team never asks for your seed phrase, recovery phrase, private key or login code, never asks you to send funds or to sign anything to "verify", "fix" or "refund" a wallet, and never messages you first. Anyone who does is a scammer. The only messages pangea.trade asks you to sign during a launch start with "Pangea launch:" and move nothing.

More on what nobody can do to a coin: [Security model →](https://www.pangea.trade/app/docs/v3#v3-security)

### Where do I get help?

Use the support chat on pangea.trade. If a paid launch failed, use the refund form on the launch page ("Launch failed? Ask for a refund"). The only official account besides the site is X: x.com/LaunchOnPangea. A bridge transfer can be followed by its transaction hash on layerzeroscan.com.
