Skip to main content
launch is the table behind the launch cards and the token page. One row per launch, keyed by the launch token address, updated on every trade, graduation and holder change.

Fields

Indexed for cheap filtering and ordering: curve, creator, code, createdAt, volumeQuote, poolId. The text column currency is not indexed but is fine at the current table size.

Examples

Newest launches, cursor paginated, with the fields the app’s cards need:
One launch by token address, with its currency and latest trades:
Top launches by volume in one currency, curve phase only:
By curve address, or everything one creator has launched:
Several launches at once (the portfolio page does this for a wallet’s holdings):
Launches that are ready but not yet graduated (anyone can call graduate() on these):
With curl:

Reading the numbers

  • Progress towards graduation is realQuote / graduationQuote; both are quote units, so the ratio needs no scaling.
  • The current curve price in the launch currency is lastPriceQuote / 1e18. In USD it is lastPriceUsd / 1e18, or lastPriceQuote / currencyInfo.lastRate if you want to apply a fresher rate yourself.
  • Market value on the curve is lastPriceQuote * tokensSold / 1e36 in the launch currency, or use the full supply of 1e27 for a fully diluted figure.
  • After graduation on Robinhood Chain, lastPriceQuote is the price at graduation, because pool swaps are not indexed there. Read the pool through StateView.getSlot0(poolId) for a live price.

Lookup tables

Two small tables map protocol addresses back to launches. They are mostly useful when you start from an on-chain event rather than from the API. curve maps a bonding curve address to its launch token:
pool maps a Uniswap v4 pool id to a graduated launch and records the token ordering, which you need to interpret Swap deltas and sqrtPriceX96:
tokenIsCurrency0 is true when the launch token’s address is numerically lower than the quote asset’s, which makes it currency0 of the pool key.