Documentation
Technical reference for the Indexify Launch platform — token creation, bonding curves, fee mechanics, and stack rewards on Robinhood Chain.
Overview
Indexify Launch is a token launch platform on Robinhood Chain (chain ID 4663). Creators deploy tokens with a single transaction. Each token starts on a bonding curve for price discovery and automatically graduates to a Uniswap v4 pool once the raise cap is reached.
The flow: Creator deploys → Bonding curve trading → Graduation → Uniswap v4 pool.
How the pieces relate: the Factory creates (Token + Curve + Vault) triplets. The Curve handles price discovery. The Vault holds and distributes fees. The Migrator moves graduated tokens to Uniswap v4. The Hook enforces fees post-graduation. The Locker permanently locks LP positions.
Bonding Curve
Each token launches on a constant-product bonding curve. The curve uses two virtual reserves to set the initial price:
- virtualEth — 2.3589 ETH
- virtualTokens — 1,107,692,308 tokens
The invariant is k = virtualEth × virtualTokens. Buys push the price up (more ETH in the pool, fewer tokens available); sells push it down. The curve enforces this invariant on every trade.
Supply allocation
- Total supply — 1,000,000,000 (1B) tokens
- Curve supply — 800,000,000 (800M) tokens available for trading on the curve
- LP reserve — 200,000,000 (200M) tokens held back for the post-graduation Uniswap v4 pool
Graduation
When all 800M curve tokens have been sold, the raise cap is reached and graduation triggers automatically. The ETH raised at graduation is 6.133 ETH(computed from the invariant: k / (virtualTokens − 800M) − virtualEth).
At graduation the token's fully-diluted valuation is 27.6 ETH FDV (on-chain graduationMcapEth = 27.5985). This is denominated in ETH — the dollar equivalent varies with ETH price.
Contracts
Platform Contracts
| Name | Address |
|---|---|
| Factory (proxy) | 0xA952...1235 |
| Factory (implementation) | 0x5bc0...1c35 |
| Timelock | 0x6614...C855 |
| Curve Beacon | 0x1c9d...F97f |
| Vault Beacon | 0xa690...F680 |
| Token Implementation | 0x81c3...D55b |
| Curve Implementation | 0x987d...4754 |
| Vault Implementation | 0x5e1a...0855 |
| Hook | 0xc384...C0cC |
| Migrator | 0x3124...aaaB |
| Locker | 0xf761...bC77 |
| V4SwapHelper | 0x157c...7ae3 |
| Registry | 0x414D...4043 |
| V2 Adapter | 0xdF57...3a57 |
| V3 Adapter | 0xc2b3...4C9f |
| V4 Adapter | 0xe86e...e603 |
Per-Token Contracts
Calling createToken() on the Factory deploys three contracts per token:
- Token — ERC-20 clone. 1B total supply. 800M on the curve, 200M reserved for LP.
- Bonding Curve — Handles buy/sell during the curve phase. Holds ETH raise. Triggers migration at cap.
- Fee Vault — Receives all trading fees. Splits between platform, creator, holders. Runs stack swaps.
These addresses are unique per token. See TokenCreated events on the Factory for a full list.
Network
| Property | Value |
|---|---|
| Chain ID | 4663 (0x1237) |
| Network Name | Robinhood Chain |
| RPC URL | https://rpc-mirror.nexus-aio.com/rpc/ceda5456733bfb22b16e123c5c040869 |
| WebSocket | wss://rpc-mirror.nexus-aio.com/ws/ceda5456733bfb22b16e123c5c040869 |
| Explorer | https://mirror.nexus-aio.com |
| Native Currency | ETH (18 decimals) |
| Block Time | ~250ms (Arbitrum Orbit L2) |
Fees
- Collected in:
Factory.createToken()- Sent to:
- Platform wallet, inline at the end of _createToken()
- Sweep needed?:
- No — sent inline.
- Example:
- Creator calls createToken with 0.0005 ETH + optional initial buy ETH. The 0.0005 goes to the platform wallet. The rest buys tokens.
- Rate:
PLATFORM_CURVE_PIPS = 10,000(100 bps) in IndexifyFees.sol- How charged:
- Additive — charged on top of the token's fee, not carved out.
- Collected in:
IndexifyCurve.buy()/sell()→ routed to vault via routeCurveFee()- Storage:
vault.platformOwed. Requiresvault.sweepPlatform()to transfer to platform wallet.- After graduation:
- Platform fee drops to 0%. Only the token's fee remains.
- Example:
- 1 ETH buy on a 1% token → total fee 2% (0.02 ETH). Platform gets 0.01 ETH (sweep needed). Token vault gets 0.01 ETH (auto-split to creator + holders).
- Rate:
- Set by creator at launch (0–150 bps). Default 100 bps (1%).
- Split:
- Creator receives up to 33% (
MAX_CREATOR_FEE_BPS = 3,300out of 10,000), holders receive the rest. - Collected on:
- Every trade — both curve and post-graduation.
- Creator portion:
- Stored in
vault.creatorOwed. Requiresvault.sweepCreator()(can be swept as stack tokens or ETH). - Holder portion:
- Auto-distributed pro-rata by token balance. Claim via
vault.claim()(ETH) orvault.claimStack()(stack tokens). - Selling:
- Selling never forfeits accrued rewards.
- Example:
- 1 ETH trade on a 1.5% token with 33% creator share. Fee = 0.015 ETH. Creator gets 0.00495 ETH (sweep). Holders share 0.01005 ETH (claim).
- Rate:
MIGRATION_FEE_BPS = 1,000in IndexifyMigrator.sol- Collected when:
- A token graduates (curve cap reached).
- How it works:
- 10% of the total ETH raise is taken before creating the Uniswap v4 pool.
- Gas rebate:
- The graduating buyer receives a gas rebate (capped at 5% of the skim, gas price capped at 2x basefee).
- Remainder:
- Sent directly to platform wallet (no sweep needed).
- Example:
- Token graduates with 6.133 ETH raise. Skim = 0.6133 ETH. Gas rebate ~0.003 ETH (3× gas × 2× basefee). Platform receives ~0.610 ETH. Pool opens with 5.520 ETH + 200M tokens.
Stack Rewards
What is a stack?
A stack is a set of tokens that a creator associates with their token at launch. When fees are claimed, instead of receiving ETH, holders and creators can receive a basket of other tokens — the “stack.”
How it works
- Snapshot at creation — Creator calls
createToken()with aStackEntry[]array. Each entry has a token address, a percentage (all must sum to 100), and an optional intermediate token for 2-hop swaps. Set once, immutable. - Fees accrue in ETH — Trading fees accumulate in the vault as ETH, tracked per-holder via a dividends-per-share index (O(1) per holder, no iteration).
- Claim as stack tokens — Holder calls
claimStack(minAmountsOut, expectedOutputs). The vault takes their accrued ETH, splits it by stack percentages, and swaps each portion into the corresponding stack token via the swap adapter registry. - Per-leg ETH fallback — If any swap fails (slippage, liquidity, adapter error), that leg falls back to ETH sent directly to the holder. A
StackLegFailedevent is emitted. Other legs are unaffected — each leg is isolated. - Creator gets stack too —
sweepCreator(minAmountsOut, expectedOutputs)routes the creator's accrued fees through the same stack swap logic. - Plain ETH always available —
claim()andsweepCreator()(no-args version) pay ETH directly, bypassing the stack entirely.
Why it matters
Stack rewards align token communities. A memecoin creator can stack VIRTUAL + USDG, meaning every trade on their token distributes those tokens to holders. Holders don't just speculate on one token — they earn a diversified basket chosen by the creator.
Post-Graduation
When a token's bonding curve raise cap (6.133 ETH) is reached, graduation triggers automatically and the Migrator contract creates a Uniswap v4 pool.
Migration steps
- Migration skim — 10% of the ETH raise is taken first (see Fees section above).
- Pool creation — The remaining ETH plus the 200M LP reserve tokens are used to seed the Uniswap v4 pool.
- LP position locked — The LP position (an ERC-721 NFT) is transferred to the Locker contract.
Permanent lock
The Locker contract has no unlock, withdraw, transfer, or rescue function. Once the LP NFT is sent to the Locker, it is locked permanently. This is not token burning, and Unicrypt is not involved — the Locker is a purpose-built immutable contract with no way to extract positions.
Locker address: 0xf761...bC77