Skip to main content

Bottom.fun Launchpad Integration on Robinhood Chain

Learn how to index and integrate the Bottom.fun launchpad on Robinhood Chain, including contract discovery, ABI events, token pricing, liquidity, bonding state, graduation, and metadata. Integrate Bottom.fun Uniswap v4 hook pools, curve progress, graduation, and metadata. This guide describes the public contract surface for an independent integration.

Network and contracts

Unless another chain is listed, these addresses are for Robinhood Chain (chainId 4663). Verify proxy implementations and mutable configuration at the indexed block.

Market discovery and ABI

The market is a Uniswap v4 pool identified by PoolId, not a pool contract address. Accept only pool keys whose hooks field equals the Bottom.fun hook. Resolve the pool key from the locker and preserve currency0/currency1 order.

Relevant ABI

Launchpad architecture and AMM model

Bottom.fun is a token launchpad built on top of Uniswap v4. PoolManager provides the shared AMM and concentrated-liquidity engine, while the Bottom.fun hook, factory, registry, and locker add launch creation, curve accounting, fees, metadata, and graduation. Classification: Uniswap v4-like with a custom hook. The market is a PoolManager PoolId/PoolKey, uses currency0, currency1, sqrtPriceX96, ticks, and ModifyLiquidity. Unlike a plain v4 pool, the Bottom.fun hook emits CurveSwap, owns curve phase and quote-raised state, and emits an explicit graduation event. Shared with V4: singleton PoolManager identity, PoolKey ordering, square-root pricing, hooks, and concentrated liquidity. Protocol-specific: factory/registry/locker wiring, hook-level swap accounting, phase, quoteRaised, and graduationQuote.

Price calculation

Use sqrtPriceX96 from CurveSwap or PoolManager state with the Uniswap v4 formula currency1/currency0 = sqrtPriceX96² / 2¹⁹², followed by decimal adjustment. Determine whether the launched token is currency0 from tokenIs0.

Liquidity tracking

Before graduation, update quote raised and token/quote flows from each CurveSwap. Track PoolManager ModifyLiquidity for the v4 position. Do not treat the v4 liquidity scalar as reserves; derive token amounts from the current price and tick range.

Launchpad state, bonding, and migration

Read graduationQuote() instead of assuming a constant. While phase < 2, progress = clamp(quoteRaised / graduationQuote × 100). phase >= 2 or Graduated means bonded. Buys add to quoteRaised; sells must subtract according to emitted quote flow.

Metadata

Resolve the registry with factory.registry(), then read launches(token).metadataURI. Fetch JSON from HTTPS/IPFS and map name, symbol, image, description, website, twitter, and telegram; use ERC-20 fields as fallback.

Indexing checklist

  1. Index creation and bind the launched token to its canonical market.
  2. Preserve on-chain token/currency order exactly.
  3. Replay logs in block, transaction, and log-index order.
  4. Keep raw integers until decimals are applied.
  5. Treat graduation as protocol state, not a generic price shortcut.

Historical indexing notes

Use block-scoped reads when initializing historical state. Do not mix latest reads into an old-block replay. Store launched-token identity separately from native pool ordering. For broader methodology, see Bonding Curves Mathematics and Pricing Engine Deep Dive.