Apex Family documentation
Everything about launching and trading coins on Robinhood Chain: how launches are seeded, how trading and routing work, where every unit of fee goes, and what the contracts can and cannot do.
Overview
Apex Family is a coin launchpad on Robinhood Chain (chain id 4663) built directly on Uniswap V4. There is no bonding curve and no "graduation": the moment a coin is created, its entire supply sits in a real Uniswap V4 pool and it is tradeable.
- Every coin is paired with an asset the creator chooses: ETH, USDG, one of the 194 official Robinhood stock tokens (AAPL, NVDA, TSLA, SPY, …), or any ERC-20 on the chain.
- Buyers do not need the paired asset. They pay with ETH and the router converts through the official stock pools in the same transaction.
- Each coin has a trade fee of 1–5% chosen at launch. 0.3% of volume goes to the platform; the rest goes to one of three fee models: Cashback to holders, Buyback & burn, or Direct to a wallet.
- Liquidity is owned by a contract with no withdraw function. No admin keys, no pause, no upgrade.
Quick start
For creators
- Connect a wallet on Robinhood Chain with a little ETH for gas (a launch costs roughly 0.0003 ETH).
- Open Create. Upload a logo, fill in name, ticker, description and links.
- Pick the paired asset and the trade fee (1–5%) and the fee model. These three are permanent.
- Optionally enter an amount to buy in the same transaction — nobody can front-run it.
- Confirm one transaction. Then sign one message (no gas) to attach your logo and links. You land on the trading terminal within seconds.
For traders
- Open Trade, pick a coin on the left.
- Enter an ETH amount (or a % of your balance when selling). The quote, price, route and minimum received update live.
- Press Buy / Sell. Selling an ERC-20 needs a one-time approval first.
How a launch works
A launch is one transaction to LaunchFactory.createLaunch. Inside it:
- A new
LaunchToken(standard ERC-20, 18 decimals) is deployed with a fixed supply of 1,000,000,000. The supply is the same for every coin and cannot be changed or minted later. - A Uniswap V4 pool is initialised for coin / paired asset with the launchpad hook attached, dynamic fee flag and tick spacing 60.
- The entire supply is deposited as single-sided, full-range liquidity. The position is owned by the hook contract, which has no function to remove it.
- If the creator entered an initial buy, it is executed in the same transaction through the router, so no bot can buy before the creator.
Starting price
The creator does not set a price. Every coin starts at the same market cap, ≈ $2,000, converted into the paired asset using live prices (ETH from the on-chain ETH/USDG pool, stocks from Robinhood's official price feed, USDG = $1). From the first trade the price is driven purely by Uniswap's constant-product curve over the full range. With 1,000,000,000 tokens and a $2,000 cap the starting price is about $0.000002 per token, which is why prices are displayed with subscript zeros (e.g. 0.0₅2010).
What is immutable
- Name, ticker, supply.
- Paired asset and pool parameters.
- Trade fee (bps) and fee model, plus the fee recipient wallet and buyback threshold where applicable.
- The liquidity position. There is no code path that withdraws it.
Logo, description and social links are off-chain metadata stored by the API; only the creator wallet can change them (each update is a signed message).
Paired assets
The paired asset is what the pool holds on the other side of the coin. It determines the currency in which fees are collected and paid out.
| Pair | Notes |
|---|---|
| ETH | Native gas token. Simplest: buyers trade directly against the pool. |
| USDG | Global Dollar stablecoin (6 decimals). Fees and cashback are paid in USDG. |
| 194 official stock tokens | Issued by Robinhood; 18 decimals; logos and prices come from Robinhood's public API. Buyers pay with ETH and are routed through the official stock pools automatically. |
| Any ERC-20 | Paste an address on the create page. The token must have a USD price source for the start-price derivation, otherwise the create button stays disabled. |
Stocks that have no liquid pool against ETH, WETH or USDG on Uniswap V4 can still be used as a pair, but buyers would have to hold the stock themselves — the terminal shows "No ETH route" in that case. The routing graph is refreshed from chain data (currently 174 pools covering 71 stocks).
Trading
Two router contracts exist. The terminal picks the right one automatically.
| Router | Used when | What it does |
|---|---|---|
| LaunchRouter | The coin is paired with ETH | One swap in the coin's pool. Sends exact ETH in, enforces minimum out and deadline. |
| ZapRouter | The coin is paired with anything else | Multi-hop: ETH → (official pools) → paired asset → coin, all inside one Uniswap V4 unlock. Reverse for selling, ending in ETH. |
Quotes, slippage and deadlines
- Quotes are computed on-chain by
ZapRouter.quoteExactIn(aneth_callthat executes the swap and reverts with the result), so they reflect the exact pool state at that moment, including hook fees on the route. - The quote is taken again the instant you press Buy/Sell; Min received = quote × (1 − slippage). Default slippage is 1% for ETH pairs and 3% for routed pairs, because the official stock pools track an oracle and can move between quote and confirmation.
- Every swap carries a 10-minute deadline. A transaction that mines later than that reverts with
Expired. - If any pool on the route cannot absorb the full amount, the router reverts with
PartialFillinstead of leaving funds inside the contract. The terminal then shows "Not enough liquidity for this size".
Approvals
Buying with ETH needs no approval. Selling requires a one-time ERC-20 approval of the coin to the router that will be used (LaunchRouter for ETH pairs, ZapRouter otherwise). The panel asks for it automatically.
Pay with ETH or any stock
A coin paired with NVDA is still bought with ETH. The frontend builds candidate routes of up to three hops from the on-chain pool graph, simulates each one through quoteExactIn, and picks the best output — preferring the shorter route when it is within 3% of the best.
- Pools with a fee above 3% are excluded. Pools whose hook rejects third-party callers (for example hook
0x9a8A…4880used by some WETH/stock pools) are excluded as well. - ETH and WETH are interchangeable on a route: the router wraps ETH when the first pool needs WETH and can unwrap on the way out.
- The launch pool is always the last hop when buying and the first when selling, so the coin's own trade fee applies exactly as with a direct trade.
- Selling always ends in ETH in your wallet — you never receive the intermediate stock.
The same contract also accepts any ERC-20 as input (approve it to ZapRouter and build the path from that asset), which is what integrations can use to pay with a stock directly.
Trade fee & collection
The trade fee is implemented as Uniswap V4's dynamic LP fee: the hook's beforeSwap returns an override equal to the coin's fee (100 bps × taxBps), so the fee is charged by Uniswap itself on every swap in the pool — buy or sell, through any router. The fee accrues to the liquidity position, which the hook owns.
Collection
Anyone can call LaunchHook.collectAndRouteFees(poolKey). A keeper does it automatically every five minutes; the terminal also has a "Collect pending fees" button. The call:
- Collects accrued fees from the position in both currencies.
- Converts the coin-side fees into the paired asset with a swap that is limited to 5% price impact per call; anything beyond that waits as
pendingTokenFeesfor the next collection. - Sends the platform its share:
platformCut = collected × 30 / taxBps, i.e. exactly 0.3% of volume whatever the coin's fee is. - Hands the remainder (the "feature amount") to the coin contract, which applies the fee model.
All amounts are public: the Fee flow tab on every coin lists collections, distributions, claims, buybacks and creator payouts with transaction links.
Fee models
Cashback (holders)
The feature amount is distributed to holders pro-rata using a dividend accumulator (magnifiedDividendPerShare). The denominator is the circulating supply — the pool and the hook are excluded, so holders are not diluted by tokens still sitting in liquidity.
- Cashback accrues continuously; balances transferred later carry their already-accrued amount with them.
withdrawableDividendOf(you)shows what you can claim;claimDividend()pays it in the paired asset. The terminal shows the claim button only to wallets that actually have something to claim.- Nothing to distribute to (no circulating holders) is kept as
undistributedDividendand released on the next distribution.
Buyback & burn
The feature amount accumulates in buybackReserve. Once it reaches the buybackThreshold set at launch, anyone can call triggerBuyback():
- The caller receives 0.1% of the reserve as an incentive (the keeper does this automatically, but anyone may race it).
- The rest is swapped for the coin through the pool by the hook itself — this internal swap is exempt from the trade fee — and the purchased coins are burned, reducing supply permanently.
- If the pool cannot absorb the whole amount, only the filled part is spent; the remainder stays in the reserve.
Direct to creator
The feature amount is sent immediately to the fee recipient wallet fixed at launch (DirectFeeSent event). Nothing is held by the contract.
Worked example
Coin paired with ETH, fee 3%, model Cashback. Over a day the pool sees 1 ETH of volume.
| Item | Amount | Where |
|---|---|---|
| Trade fee charged by the pool | 0.03 ETH | accrues to the hook's position |
| Platform (0.3% of volume = 0.03 × 30/300) | 0.003 ETH | platform treasury |
| Feature amount | 0.027 ETH | distributed to holders pro-rata |
| A wallet holding 10% of circulating supply | 0.0027 ETH | claimable any time |
With a 5% fee the platform share is still 0.3% of volume (0.05 × 30/500) and holders receive 4.7%.
Guarantees & security
- No admin. The factory's only owner function (
setHook) was called once at deployment and cannot be called again. No pause, no upgrade, no allowlist. - Liquidity cannot be withdrawn. The hook owns the position and exposes no removal function; its Uniswap permissions are limited to
beforeSwap. - Fees are deterministic. The split (0.3% platform, remainder to the model) is arithmetic in the contract, not a setting.
- No tax on the way in for the creator. Create-and-buy uses the same pool and pays the same fee as everyone else — the only privilege is ordering.
- Router safety. Both routers enforce minimum output and deadline, refund nothing silently, and hold no balances between transactions.
- Testing. The contracts are covered by 107 tests run against a fork of Robinhood Chain mainnet, including all pair types (ETH, USDG, stocks, token/token), every fee model, buyback atomicity and partial fills, and multi-hop routing through the official stock pools.
Known limits: the official stock pools are operated by third parties with their own hooks; their prices follow off-chain oracles and can move between a quote and its confirmation, which is why routed trades default to 3% slippage. A trade that reverts costs only gas — no funds leave your wallet.
Contracts & addresses
| Contract | Address | Purpose |
|---|---|---|
| LaunchFactory | 0x522935E20ab782Da861e12f9F875C17B0f69BF38 | Creates coins, initialises and seeds pools |
| LaunchHook | 0xeCBAD2f2c011FA7BA907201dBdFa7c6AF5C68080 | Uniswap V4 hook: dynamic fee, fee collection, liquidity owner |
| LaunchRouter | 0x5B6D3DC633ca649205AC8f4373493bdA9B3AcE8D | Direct buy/sell for ETH-paired coins, creator initial buy |
| ZapRouter | 0x09c9Af6318fA912D5a29E3B1e0cdD93Bd818814C | Multi-hop buy/sell with ETH or any asset |
| PoolManager (Uniswap V4) | 0x8366a39CC670B4001A1121B8F6A443A643e40951 | Uniswap V4 singleton |
| USDG | 0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168 | Global Dollar (6 decimals) |
| WETH | 0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73 | Wrapped ETH |
| Platform treasury | 0x3e9eDA13e92ACEaDDE5FB6b32aDE16a87Ed2F5ed | Receives the 0.3% |
| Constant | Value |
|---|---|
| Supply per coin | 1,000,000,000 |
| Starting market cap | ≈ $2,000 |
| Trade fee range | 1% – 5% |
| Platform share | 0.3% of volume |
| Buyback caller incentive | 0.1% of the reserve |
| Pool tick spacing | 60 |
| Fee models | 0 = Direct, 1 = Cashback, 2 = Buyback |
Events worth indexing: LaunchCreated, InitialBuy (factory); FeesCollected (hook); DividendAdded, DividendClaimed, DirectFeeSent, BuybackReserveAdded, BuybackExecuted (coin); QuickBuy, QuickSell (LaunchRouter); Zap (ZapRouter); and Uniswap's Swap on the PoolManager filtered by pool id.
Developer API
The public read API that powers this site (base URL is configured per deployment):
| Endpoint | Returns |
|---|---|
| GET /api/stats | coins launched, 24h volume, trades, cashback paid |
| GET /api/tokens?sort=fdv|volume|newest&pair=eth|usdg|stock|custom&q= | coin list with price, market cap, volume, holders, sparkline |
| GET /api/tokens/:address | full coin detail incl. pool id, fee settings, metadata |
| GET /api/tokens/:address/candles?interval=60 | OHLCV candles (only buckets with trades) |
| GET /api/tokens/:address/trades | recent trades with trader address and tx hash |
| GET /api/tokens/:address/holders | top holders and share of circulating supply |
| GET /api/tokens/:address/fees | fee flow totals and recent fee events |
| GET /api/prices | USD prices for ETH, USDG and every official stock token |
| GET /api/paired-assets | the paired-asset registry with logos |
| POST /api/tokens/:address/metadata | creator-signed logo / description / links update |
ABIs and addresses are published as a single JSON bundle (launchpad.json) in the repository's frontend/ folder, together with the paired-asset registry and the routing pool graph.
Custom pairs & routing
Any ERC-20 on Robinhood Chain can be a paired asset, not only ETH, USDG and the official stocks. Two pieces make that work end to end:
Prices for any token
- The starting market cap of a new coin needs a USD price for the paired asset. Order of sources: the on-chain ETH/USDG pool (ETH), Robinhood's official price feed (stock tokens), USDG = $1, and finally GeckoTerminal for any other token that has a tracked pool on Robinhood Chain.
- Prices are cached for one to two minutes and exposed via
GET /api/prices(all known assets) andGET /api/prices/:address(single token lookup used by the create page). - If no source knows the token, the create button stays disabled with an explanation — a coin cannot start at an unknown price.
Routing through any Uniswap V4 pool
- The indexer records every Uniswap V4 pool initialised on Robinhood Chain (about 150,000 at the time of writing) and keeps the list current block by block.
GET /api/pools/:tokenreturns the pools of a token that currently hold liquidity, read on chain in one batched call and cached for five minutes.- The trade panel merges those pools into the routing graph, so a coin paired with a custom token still gets an ETH route (for example ETH → USDG → PONS → coin). Every candidate is simulated and the best output wins; shorter routes are preferred when within 3%.
- Pools with fees above 10% and pools whose hook rejects third-party callers are excluded.
Logos
Stock token logos are served from the site itself (one PNG per ticker); the official Robinhood CDN returns a generic icon for every token. Coin logos are uploaded by creators; pair badges open a popover with the asset's name, decimals, ISIN and explorer link.
Analytics
The Analytics page shows protocol-wide totals in USD, refreshed every few seconds from GET /api/analytics: total and 24h volume, coins launched, trades, unique holders, and where the fees went — cashback distributed and claimed, buybacks executed, creator payouts and platform revenue (0.3% of volume). It also breaks volume down by paired asset and by fee model, plots hourly volume for the last 48 hours and lists the top coins by 24h volume. Amounts in different paired assets are converted with the same price sources as the rest of the site.
$APEX token
- $APEX is the official token of Apex Family. It launches on Pons; the contract address is published on the $APEX page and on X before launch — anything else claiming to be $APEX is not official.
- Revenue flywheel: 50% of platform revenue (the 0.3% of volume collected from every coin) is used to buy $APEX on the open market from a public wallet; the other 50% funds development, infrastructure and growth. The buyback budget is computed from the same on-chain numbers shown on Analytics.
- What happens to bought-back tokens is published before launch.
Airdrop program
Creators can distribute part of their coin to $APEX holders. Confirmed rules so far — see the Airdrop page for updates:
| Rule | Value |
|---|---|
| Minimum airdrop size (creators) | 3% of supply — 30,000,000 tokens |
| Minimum $APEX held (holders) | $10 worth of $APEX at the snapshot |
| Additional criteria | To be announced before the first airdrop |
| Status | Opens after the $APEX launch |
Eligibility is read from the chain — no registration and no claim fees. Apex Family never asks you to connect to an external site or sign a message to "verify" an airdrop.
Profiles & portfolio
- Every wallet has a public page at
/profile/<address>: avatar, display name, bio and links, plus Portfolio (coins held, share of supply, USD value), Coins created and a full Activity feed (launches, buys, sells, cashback claims, buybacks triggered, creator fees received) with transaction links. - Connect a wallet and open Profile in the navbar to set up your own. Changes are saved with one wallet signature (no gas) via
PUT /api/creators/:address; only that wallet can edit them. - The creator of every coin is shown in the terminal header and under the trade panel, linking to their profile. Data comes from
GET /api/profile/:address.
FAQ
Why did my swap fail?+
Almost always slippage: on routed pairs the official stock pools follow an oracle and moved between your quote and the confirmation. The panel re-quotes at send time and defaults to 3% on routed pairs; raise it to 5–10% during volatile moments. A reverted swap costs only gas.
Why is the price so small?+
Every coin has 1,000,000,000 tokens and starts at about $2,000 market cap, so one token is worth a fraction of a cent. Watch market cap rather than unit price.
Can the creator change the fee or the model later?+
No. Fee, model, recipient and threshold are constructor parameters of the coin and have no setters.
Can the creator or the platform pull liquidity?+
No. The position is owned by the hook contract, which has no function to remove liquidity. The platform only receives the 0.3% fee share.
What happens to stock-paired coins when markets are closed?+
Robinhood stock tokens trade 24/7 on chain, but the official pools widen their spread when the underlying market is closed, so routed quotes can be less favourable at weekends. The coin's own pool is unaffected.
I created a coin but the page said 'Indexing'.+
The data feed follows the chain by a few seconds. The page polls and opens automatically; if it does not appear within two minutes the transaction most likely failed — check the explorer link.
Two coins have the same ticker.+
Tickers are not unique on chain. Always check the contract address, the creator and the age; the logo and links are attached only by the real creator's signature.
Do I get cashback if my coins are in a liquidity pool or a contract?+
Only wallet balances count. The launch pool and the hook are excluded from the circulating supply on purpose; any other contract holding the coin accrues cashback like a wallet and would need to call claimDividend itself.
Glossary
| Term | Meaning |
|---|---|
| Paired asset / quote | The asset on the other side of the coin's pool; fees are paid in it. |
| Feature amount | Trade fee minus the platform's 0.3% of volume; goes to the fee model. |
| Circulating supply | Total supply minus what the pool and the hook hold. |
| Hook | A Uniswap V4 contract attached to a pool that customises fees; here it also owns the liquidity. |
| Zap | A multi-hop swap that converts your ETH (or any asset) into the paired asset and then into the coin in one transaction. |
| Partial fill | A pool could not absorb the whole trade; the router reverts rather than leave funds behind. |
| Min received | Quote × (1 − slippage): the transaction reverts if the output would be lower. |
Explorer: https://robinhoodchain.blockscout.com