Docs

How HoodMint works.

Protocol

Overview

HoodMint is a place to launch and trade tokens on Robinhood Chain. You can browse launches, open any token to see its details, and trade straight from your wallet.

HoodMint never holds your funds. Every launch and trade is a transaction your wallet asks you to approve, against contracts with no owner, no pause switch, and no upgrade path.

Key facts
  • Names and symbols can be copied. Always check the token address.
  • Prices come from each token’s live bonding curve or Uniswap pool.
  • Launches can be volatile, illiquid, or lose all value.

How launches work

Creating a coin deploys the token and opens its bonding curve in a single transaction. Creation is free — you pay only gas. The creator sets the name, symbol, image, description, and links at creation, and the terms are immutable from that moment.

Every token starts with a fixed supply of one billion. 793.1M tokens are sold by the curve; the remaining 206.9M are reserved for the Uniswap pool at graduation. There is no creator allocation.

01

Create

The token is minted with its full supply and the curve opens in the same transaction. Send ETH with the launch to make an atomic first buy that nothing can execute before.

02

Trade

Buys and sells run against the curve and move the price deterministically. Fees accrue to the creator and the protocol on every trade.

03

Graduate

When the curve sells out, its ETH and reserved tokens move into a permanently locked Uniswap V3 pool, and trading continues there.

Launch protection

A snipe guard is optional and set by the creator at launch. For a window after launch — at most one day; the interface default is two minutes — each wallet’s cumulative buys are capped at a share of supply (interface default 2%). Oversize buys fill to the cap and refund the rest. Selling is never restricted, the creator’s atomic first buy is exempt — it cannot be front-run by construction — and all limits end when the window closes.

Robinhood Chain sequences transactions first-come-first-served, so sniping is a latency race rather than a gas auction. The guard bounds what any single address can grab in that race.

Trading and pricing

Before graduation, every token trades against ETH on its bonding curve — a constant product over virtual reserves, using pump.fun’s exact constants ported to ETH. After graduation it trades against WETH in its own Uniswap V3 pool. The price you see is live and moves with each trade; the amount you actually receive can differ slightly from the quote. Slippage sets how much of that movement you accept.

Price
The current curve or pool price for one token.
Market cap
Price multiplied by the fixed one-billion supply.
FDV
Equal to market cap: the supply is fixed and fully minted at launch.
Price impact
The curve or pool movement caused by the size of your trade.
Slippage
The maximum execution movement your transaction accepts.
Graduation progress
The share of the curve’s 793.1M sellable tokens already bought.

Graduation

A token graduates when the curve sells out — all 793.1M curve tokens bought. Graduation is reserve depletion, not an ETH threshold: with HoodMint’s constants it arrives after roughly 4.25 ETH has been raised, at a market cap near 20.5 ETH, with the price up about 14.7× from launch. The progress line tracks how close a launch is.

Migration is permissionless and idempotent: anyone can trigger it, and triggering it twice does nothing. It creates a 0.30% Uniswap V3 pool at exactly the final curve price — so there is no arbitrage gap at graduation — mints a full-range position from the raised ETH and the reserved 206.9M tokens, and locks that position in the LpLocker forever. The locker has no function that removes liquidity.

If someone sells between graduation and migration, the curve reopens: holders always retain an exit, even if an external Uniswap dependency is unavailable.

Graduation only confirms the curve sold out. It is not a quality signal and does not guarantee future liquidity, price, or an exit.

Fees and claims

Curve trades charge a 1.25% fee, split creator-first: 0.88% to the token’s creator and 0.37% to the protocol — about 70% of every fee goes to the creator. On buys the fee comes off the input before the curve math; on sells it is deducted from the output. The split is a constant of the deployed contract; there is no admin who can change it.

Curve trades1.25% · 0.88% creator + 0.37% protocol
Graduated pool0.30% Uniswap tier · LP fees split 70/30, creator-first
Interface swaps0.1% routing fee on post-graduation swaps quoted through the app
CreationFree · gas only

Creator fees accrue per token inside the curve contract and can be pushed to the creator at any time with claimCreatorFees — anyone may trigger the claim, and the proceeds always go to the creator. After graduation, the locked position’s swap fees are claimed with collect on the LpLocker, which splits them 70/30 between the creator and the protocol in the same transaction.

Protocol fees accrue to a single accumulator that anyone can sweep to the immutable protocol recipient. There is no other path by which ETH leaves the contract.

Risk disclosures

Tokens launched through HoodMint are user-created and experimental. Review the token address, creator, liquidity, holder concentration, and transaction preview before signing.

  • Prices can move quickly and liquidity can be thin.
  • Similar names and images can represent unrelated tokens.
  • Smart contracts, wallets, RPCs, and indexers can fail.
  • Displayed values are estimates, not execution guarantees.
  • The contracts are immutable: there is no pause switch, no rollback, and no rescue authority.

HoodMint is an interface, not investment advice or a representation of token quality.

Integration

Network

A minimal, verifiable integration surface: everything below reads directly off the contracts. Index the curve’s events for a trust-minimized onchain source of truth.

NetworkRobinhood Chain
Chain ID4663
Native assetETH
Public RPChttps://rpc.mainnet.chain.robinhood.com
Explorerrobinhoodchain.blockscout.com
Token supply1,000,000,000 (1e9 · 18 decimals)
Curve fee125 bps
Graduated pool fee3000 (0.30%)
Launch feeNone — gas only

Contracts

Deployed addresses on Robinhood Chain. The curve is a singleton: every launch, trade, quote, and claim goes through it.

Do not substitute canonical Uniswap addresses.

The Uniswap V3 factory address used on other chains is an unrelated contract on Robinhood Chain. Use the addresses below.

HoodMintCurveDeployed at block 15,675,8790x570e51c509a20C63C409A43Bc8d9e2aeA564B61b
LpLockerTerminal owner of every graduated LP position0x072E193e9B3487dDB2687F62D27774a05473a18c
MintToken implementationERC-20 implementation each launch clones0xbcFe80c2af054795c5a3C63Fb6A2B7055348A5aE

Onchain events

Index the curve’s events from its deployment block. Every launch, trade, graduation, and migration is emitted by the single curve contract — one address to watch, with no per-token pools to register before graduation. Onchain events are the authoritative source of truth.

Launched (topic0)0x5bf4eb54f8ca19354b25c05d3cd9a5994b2b62ae7ac242059d92d045eaa37811
Trade (topic0)0x8bc2016ed360b90c8b19a25d6cfbb6b72e5af1f553d41d10739391fdcbb861c3
Graduated (topic0)0x3a11b9c0ca38b86101cb9e6e1dd2f752c31467c6eaa353f931b801a338406de6
Migrated (topic0)0x57aa04076c8e8e00f17b6f082eb7c65ec1aa90f07da036638ccfcb07dcae6cc8
Read launches with viem
import { createPublicClient, http, parseAbiItem } from "viem";

const client = createPublicClient({
  chain: {
    id: 4663,
    name: "Robinhood Chain",
    nativeCurrency: { name: "Ether", symbol: "ETH", decimals: 18 },
    rpcUrls: { default: { http: ["https://rpc.mainnet.chain.robinhood.com"] } },
  },
  transport: http(),
});

const CURVE = "0x570e51c509a20C63C409A43Bc8d9e2aeA564B61b";

const launches = await client.getLogs({
  address: CURVE,
  event: parseAbiItem(
    "event Launched(address indexed token, address indexed creator, string name, string symbol, string metadataURI, uint24 guardSeconds, uint16 guardMaxBuyBps)",
  ),
  fromBlock: 15675879n,
  toBlock: "latest",
});
Read trades
const trades = await client.getLogs({
  address: CURVE,
  event: parseAbiItem(
    "event Trade(address indexed token, address indexed trader, bool isBuy, uint256 ethGross, uint256 ethNet, uint256 tokenAmount, uint256 protocolFee, uint256 creatorFee, uint128 virtualEth, uint128 virtualToken, uint128 realEth, uint128 realToken, bool complete)",
  ),
  fromBlock: 15675879n,
  toBlock: "latest",
});

Every Trade log carries the trade’s direction (isBuy) and the full post-trade reserve state, so an indexer can price the curve from logs alone with no extra reads. After migration, index the token’s Uniswap pool Swap events for post-graduation trades; the pool address is in the Migrated event.

The public RPC times out on wide eth_getLogs ranges. Backfill in bounded block chunks from block 15,675,879.

Reading curve state

Every launch is self-describing onchain. The token is a standard ERC-20 (name, symbol, 18 decimals); its image, description, and links live at the metadataURI emitted with the Launched event; and everything else is in the curve’s curves mapping.

Curve state and quotes
import { parseAbi } from "viem";

const curveAbi = parseAbi([
  "function curves(address token) view returns (uint128 virtualEth, uint128 virtualToken, uint128 realEth, uint128 realToken, address creator, bool complete, bool migrated, uint40 launchedAt, uint24 guardSeconds, uint16 guardMaxBuyBps)",
  "function spotPrice(address token) view returns (uint256)",
  "function quoteBuy(address token, address trader, uint256 ethGross) view returns (uint256 tokensOut, uint256 fee, uint256 refund)",
  "function quoteSell(address token, uint256 tokenAmount) view returns (uint256 ethOut, uint256 fee)",
]);

const [virtualEth, virtualToken, realEth, realToken, creator, complete, migrated] =
  await client.readContract({
    address: CURVE,
    abi: curveAbi,
    functionName: "curves",
    args: [token],
  });

quoteBuy and quoteSell return exactly what the contract would execute, including fees, snipe-guard caps, and the final-buy refund. Snipe-guard state for a specific wallet is available from guardStatus(token, buyer).

Pricing and graduation

Price is the ratio of the curve’s virtual reserves. Token and ETH both use 18 decimals, so no decimal scaling is needed. Convert to USD with any ETH oracle.

Price, market cap, and progress
const priceEth = Number(virtualEth) / Number(virtualToken);
const priceUsd = priceEth * ethUsd; // ethUsd from any ETH oracle

const SUPPLY = 1_000_000_000;
const marketCapUsd = priceUsd * SUPPLY; // supply is fixed; FDV equals market cap

// Graduation progress: share of the 793.1M curve tokens already sold.
const REAL_TOKEN_RESERVES = 793_100_000n * 10n ** 18n;
const progress = 1 - Number(realToken) / Number(REAL_TOKEN_RESERVES);

complete flips when the last curve token is bought and the Graduated event fires; migrated flips when migration lands and the Migrated event carries the pool and position id. From then on, price comes from the pool’s slot0 — square sqrtPriceX96, and invert when the token is not token0.

Locked-LP fees
const lockerAbi = parseAbi([
  "function locks(uint256 tokenId) view returns (address creator, address token0, address token1)",
  "function collect(uint256 tokenId) returns (uint256 amount0, uint256 amount1)",
]);

// collect() claims the position's accrued swap fees and splits them
// 70/30 between the creator and the protocol in the same transaction.

Both claim paths — claimCreatorFees on the curve and collect on the locker — are callable by anyone; proceeds always go to the creator and the immutable protocol recipient.

Versioning and terms

Deployed contracts are immutable and unowned. New versions ship as new curve and locker addresses, listed under Contracts.

The interface’s REST API is an implementation detail of the app, not a stable public contract. Build integrations on the events above.

Onchain data is public and free to read; you are responsible for how you use it. HoodMint is provided as is, without warranties, and the team is not liable for losses arising from integrations, interfaces, RPCs, or indexers. Availability of interfaces and public infrastructure is not guaranteed. Do not present third-party services as operated by HoodMint, and do not imply a partnership or endorsement without a written agreement.