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

NameAddress
Factory (proxy)0xA952...1235
Factory (implementation)0x5bc0...1c35
Timelock0x6614...C855
Curve Beacon0x1c9d...F97f
Vault Beacon0xa690...F680
Token Implementation0x81c3...D55b
Curve Implementation0x987d...4754
Vault Implementation0x5e1a...0855
Hook0xc384...C0cC
Migrator0x3124...aaaB
Locker0xf761...bC77
V4SwapHelper0x157c...7ae3
Registry0x414D...4043
V2 Adapter0xdF57...3a57
V3 Adapter0xc2b3...4C9f
V4 Adapter0xe86e...e603
Users interact with the Factory proxy. The implementation holds the logic but is never called directly.

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

PropertyValue
Chain ID4663 (0x1237)
Network NameRobinhood Chain
RPC URLhttps://rpc-mirror.nexus-aio.com/rpc/ceda5456733bfb22b16e123c5c040869
WebSocketwss://rpc-mirror.nexus-aio.com/ws/ceda5456733bfb22b16e123c5c040869
Explorerhttps://mirror.nexus-aio.com
Native CurrencyETH (18 decimals)
Block Time~250ms (Arbitrum Orbit L2)

Fees

Creation Fee
0.0005 ETH
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.
Platform Fee
1% (curve only)
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. Requires vault.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).
Token Fee
up to 1.5%
Rate:
Set by creator at launch (0–150 bps). Default 100 bps (1%).
Split:
Creator receives up to 33% (MAX_CREATOR_FEE_BPS = 3,300 out of 10,000), holders receive the rest.
Collected on:
Every trade — both curve and post-graduation.
Creator portion:
Stored in vault.creatorOwed. Requires vault.sweepCreator() (can be swept as stack tokens or ETH).
Holder portion:
Auto-distributed pro-rata by token balance. Claim via vault.claim() (ETH) or vault.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).
Migration Skim
10%
Rate:
MIGRATION_FEE_BPS = 1,000 in 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

  1. Snapshot at creation — Creator calls createToken() with a StackEntry[] 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.
  2. 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).
  3. 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.
  4. Per-leg ETH fallback — If any swap fails (slippage, liquidity, adapter error), that leg falls back to ETH sent directly to the holder. A StackLegFailed event is emitted. Other legs are unaffected — each leg is isolated.
  5. Creator gets stack too — sweepCreator(minAmountsOut, expectedOutputs) routes the creator's accrued fees through the same stack swap logic.
  6. Plain ETH always available — claim() and sweepCreator() (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

  1. Migration skim — 10% of the ETH raise is taken first (see Fees section above).
  2. Pool creation — The remaining ETH plus the 200M LP reserve tokens are used to seed the Uniswap v4 pool.
  3. 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