Docs
Everything runs on Robinhood Chain, an Arbitrum Orbit L2. Gas is ETH and a launch costs roughly 0.00007 ETH.
A creator's identity is a hash, not an account:
routeKey = keccak256(abi.encodePacked(platform, handle))
Handles are lowercased and stripped of their prefix first, so @Vitalik and vitalik resolve to the same route. The contract exposes computeRouteKey() so you can verify any route yourself.
Applied identically in the browser, the API and the contract. Any difference would produce a route nobody could ever claim.
Claiming is gated by an EIP-712 signature over this struct, signed by the attestor key after Privy confirms the logged-in account owns the handle:
Claim {
bytes32 routeKey
address wallet
uint256 nonce
uint256 deadline
}Domain is PopsFeeRouter v1, bound to the chain ID and the FeeRouter address. Nonces are single-use and the deadline is ten minutes, so an attestation can't be replayed or banked for later.
The UI is a thin wrapper over one adapter call. Compute the routeKey, then:
LaunchAdapter.launch( string name, string symbol, bytes32 routeKey, uint16 creatorCutBps, // 0–9000 bytes tokenData, // (description, link, image, extra) bytes32 salt )
It emits CoinLaunched with the token address. Anything launched directly against the adapter is picked up by the indexer, so it shows up here without touching this site's API.
Indexed coins. filter=all|bond|grad, limit, offset.
One coin, including its launcher.
Coins launched, routed to creators, creators claimed.
Validates inputs, returns the routeKey. Auth required.
Registers a launched token. Auth required.
Stores a coin logo, returns its URL. Auth required.
Routes claimable by the logged-in account.
Signs the EIP-712 attestation for a claim.
Authenticated routes expect Authorization: Bearer <privy access token>.
Logos are square-cropped to 400px WebP in the browser, capped at 512 KB, and stored server-side. The resulting URL is written into the token's on-chain metadata as well as the index, so it travels with the coin rather than living only here. PNG, JPEG, WebP and GIF are accepted; animated GIFs are kept as-is.
keccak256(abi.encodePacked(platform, handle)) — the on-chain identity of a creator before they have a wallet.
The creator's share in basis points, 0–9000. Fixed in the launch transaction, never mutable.
An EIP-712 signature from the attestor key saying "this wallet owns this routeKey". Carries a nonce and a 10-minute deadline.
A coin whose pool has cleared the launchpad's bonding threshold and trades on the open Uniswap v4 pool.
The phase before graduation, while the launchpad still holds the curve.