← Writing

Writing

Uniswap token launch for meme coins without pools.trade

  • uniswap
  • token-launch
  • meme-coin
  • robinhood-chain
  • liquidity-launcher
  • v4
  • viem

In August 2026 Uniswap shipped pools.trade, a token launchpad on Robinhood Chain. The product is interesting less for the UI than for what sits underneath: a permissionless Liquidity Launcher stack that creates a fixed-supply token, routes it through a launch strategy, and leaves trading on a permanently locked Uniswap v4 pool.

This article maps that stack, contrasts Instant Launch with Crowd Launch, and walks through a step-by-step Instant Launch with the open-source companion uniswap-meme-coin-launcher - a React web UI plus CLI scripts over the same LiquidityLauncher path.

What is pools.trade?

pools.trade is a frontend for Uniswap’s Liquidity Launcher on Robinhood Chain. Launches themselves are ordinary transactions against those contracts. Integrators do not need a private API: the stable interface is the on-chain entry point plus @uniswap/liquidity-launcher-sdk (predictInstantLaunchTokenAddressCall, buildInstantLaunchTransaction, and related helpers), with post-launch trading through normal Uniswap v4 / Universal Router paths.

Contract sources and changelogs live in Uniswap/liquidity-launcher. Deployment tables are published in the Liquidity Launchpad docs.

Two launch modes

Mode Mechanism Outcome
Instant Launch createToken → distributeToken into an InstantLaunchStrategy inside one LiquidityLauncher.multicall Hookless Uniswap v4 pool opens immediately (native ETH quote, 0.25% fee, 1B supply, single-sided locked liquidity)
Crowd Launch Continuous Clearing Auction (~4 hours), then migration Graduates around ~$10k FDV into a locked v4 pool, or refunds if it fails

Instant Launch is one transaction: the strategy initializes a hookless native-ETH pool, parks the LP NFT in a FeeSplitter forever, and optionally registers a fee beneficiary on the fees-on variant. msg.value is 0 - liquidity is single-sided in the token - so after success there is no bonding-curve contract, only a normal Uniswap v4 pool. Fee autocompounding is driven by searchers against the FeeSplitter / compounding recipient. A same-transaction creator buy (sniping mitigation) is a separate multicall leg via UniversalRouterStrategy, not part of the minimal Instant Launch path.

Creator fee share is not a free-form parameter. Uniswap deploys two strategy variants per chain - fees-on and fees-off - and the builder selects which address to use (creatorFeesEnabled / feeBeneficiary in the SDK). Crowd Launch reuses the same launcher with different configData and the LBP / CCA path; the SDK’s quickLaunch helpers and buildLaunchTransactions cover that flow.

Robinhood Chain

Chain ID 4663
Public RPC https://rpc.mainnet.chain.robinhood.com
Explorer robinhoodchain.blockscout.com

Wallets must be on this network (for example MetaMask’s wallet_addEthereumChain / wallet_switchEthereumChain) before submitting a launch.

Contracts on Robinhood

A full stack redeploy on 2026-08-05 moved Instant Launch onto a new LiquidityLauncher address. The previous launcher remains live and still emits historical events, so indexers should watch both.

Role Address
LiquidityLauncher (current) 0x0000FffFBE8efE702c8703aE3477FF5dE3d319C0
LiquidityLauncher (original) 0x00004c4ccc709Ef590F7C81102C0689F0263D4e9
InstantLaunchStrategy (fees-on) 0x23f8209572b4a1C2AD88A42749E830791Fb027f1
InstantLaunchStrategy (fees-off) 0xAD44D55E7f8337C3cE113fBb591486E85be104b2

Prefer resolving addresses from the SDK (getInstantLaunchAddresses, getLauncherAddresses, getInstantLaunchStrategy) so redeploys follow package updates. Older Instant Launch strategies stay in an append-only registry; getInstantLaunchDeployment(strategy) attributes historical tokens to the instance that created them.

Launch a token step by step

The companion repo wires Instant Launch end to end: MetaMask UI or CLI, optional Pinata image pin, and on-chain uERC20 metadata (description, website, image URL). Repo: github.com/zkovac58/uniswap-meme-coin-launcher.

1. Prerequisites

  • Node.js 20+
  • ETH on Robinhood Chain (4663) for gas (msg.value for Instant Launch is still 0; you only pay gas)
  • MetaMask for the web UI, or a deployer private key for the CLI (typed at a prompt)
  • A Pinata JWT if you want to upload a token image (PINATA_JWT)

2. Clone and install

git clone https://github.com/zkovac58/uniswap-meme-coin-launcher.git
cd uniswap-meme-coin-launcher
npm install
cp .env.example .env

Put PINATA_JWT=… in .env for image uploads. Optionally set RPC_URL / VITE_RPC_URL if the public Robinhood RPC rate-limits you.

3. Decide name, symbol, and metadata

These fields go into the Instant Launch transaction. Name and symbol are create-token arguments; the rest are uERC20 metadata strings encoded into createToken:

What you set On-chain CLI / UI
Name / symbol token args form / TOKEN_NAME / TOKEN_SYMBOL
Description metadata.description form / TOKEN_DESCRIPTION
Website or X URL metadata.website form / TOKEN_WEBSITE
Image metadata.image form / TOKEN_IMAGE or pin a file
Creator fees fees-on vs fees-off strategy checkbox / CREATOR_FEES (+ optional FEE_BENEFICIARY)

The chain stores the image as a string. Pin a PNG to IPFS with Pinata and use ipfs://<cid>, or paste any stable https://… URL.

4a. Launch from the web UI

npm run dev

Open the Vite URL (usually http://localhost:5173), connect MetaMask, and approve Robinhood Chain if prompted (wallet_addEthereumChain / wallet_switchEthereumChain for 4663). Fill name, symbol, optional description, website, and image (paste a URL or upload via Pinata - the UI posts to a local /api/pinata/upload proxy so the JWT never goes into VITE_*). Predict the address if you want, then Launch with MetaMask. Instant Launch sends { to, data, value: 0n } through your EIP-1193 provider.

4b. Launch from the CLI

All commands run from the repo root. The launch script prompts for the private key on stdin (hidden) and ignores PRIVATE_KEY in the environment.

Optional - predict the CREATE2 token address:

WALLET=0xYourAddress TOKEN_NAME="Demo Token" TOKEN_SYMBOL=DEMO npm run predict

Optional - pin a local image (needs PINATA_JWT):

TOKEN_IMAGE_FILE=./logo.png npm run upload-image

Dry run (assemble only, no broadcast - still prompts for the key so the creator address can be derived):

TOKEN_NAME="Demo Token" TOKEN_SYMBOL=DEMO \
  TOKEN_DESCRIPTION="A short blurb" \
  TOKEN_WEBSITE="https://x.com/yourhandle" \
  TOKEN_IMAGE_FILE=./logo.png \
  CREATOR_FEES=false NO_BROADCAST=1 npm run launch

Broadcast on Robinhood mainnet (real gas):

TOKEN_NAME="Demo Token" TOKEN_SYMBOL=DEMO \
  TOKEN_DESCRIPTION="A short blurb" \
  TOKEN_WEBSITE="https://x.com/yourhandle" \
  TOKEN_IMAGE=ipfs://bafy… \
  CREATOR_FEES=false npm run launch

With creator fees (beneficiary defaults to the signing wallet unless you set FEE_BENEFICIARY):

TOKEN_NAME="Demo Token" TOKEN_SYMBOL=DEMO CREATOR_FEES=true npm run launch

You can pass TOKEN_IMAGE_FILE on the live launch as well; the script pins via Pinata first, then builds the tx.

5. Confirm on-chain

Open the printed explorer links for the tx and token on robinhoodchain.blockscout.com. To watch launches yourself, the clean signal is TokenCreated on both LiquidityLauncher addresses (or the mint transfer from the zero address):

ONCE=1 npm run watch

Leave npm run watch running for a live feed.

Live example: ZKToken

This Instant Launch was done with the companion CLI (description, website, Pinata image, fees off). It shows up on pools.trade’s All launches feed and trades as a normal Instant Launch market:

ZKToken listed under All launches on pools.trade

ZKToken Instant Launch trading page on pools.trade

Bottom line: LiquidityLauncher, the official SDK, and Uniswap v4 are the durable integration surface. pools.trade is one convenient client on top of that stack.

Contact

Let’s build something together

Need Instant Launch or Crowd Launch wired into your product, a web launch UI, or Uniswap v4 trading after graduation - I’d like to hear about your project.