TESTNETRobinhood Chain testnet (id 46630). USDG here is a faucet token anyone can mint — prices, liquidity and fees on this page are not real money.

The Launch

The buzz

Most meme launches are a race: the pool appears, the bots are already there, and the people who read the announcement get the price the bots left behind. Congratulations, you were the exit liquidity for a script. We didn't want to run that race, so we changed the track.

The pool is created CLOSED. The creator seeds it at their own pace — with all the liquidity, at full range — while nothing can trade. Then one transaction opens the doors. Everyone gets the same starting line, and there is no window where the pool exists with no liquidity in it for someone to play with. No sniper block. No "dev bought first". The dev literally could not.

And it all happens on the testnet first, in full, until it is boring. Then mainnet. Boring is the goal. Boring is the alpha.

The boring part

Status

Testnet rehearsal (46630) done, 2026-09-12 — every step signed on the hardware wallet, exactly as mainnet will be; trading open, seed locked until 2026-09-27
Mainnet (4663) not deployed
Independent audit not yet — after the testnet rehearsal, before mainnet

The sequence

Every step is one transaction signed on a hardware wallet. No one else ever holds the key. No "deployer EOA on a laptop".

  1. FLY is deployed to a chosen address — it has to sort above USDG's for the hook, and since it costs nothing, it ends in …999999. All 21,000,000 minted: 1% to the creator, 99% to the wallet that will seed the pool.
  2. The hook is deployed at an address whose low bits encode its permissions (a Uniswap V4 requirement). Yes, the address is mined. Yes, that is a real thing.
  3. The pool is created at the opening price implied by the seed — nothing can trade.
  4. The seed: about 5,000 USDG and 20,790,000 FLY (99% of supply) as one full-range position, minted to the seeding wallet as an ordinary Uniswap position NFT.
  5. The lock: the NFT goes into FlySeedLocker for 15 days to start — extendable, never shortenable (Risks). The next step refuses to run until this one has. The machine will not open the doors while the seed is loose.
  6. openTrading() — one-way. From that block, anyone can trade.
  7. The fee curve is set (k = 15).

Why full range

A concentrated seed would leave the pool with no FLY to sell above its upper bound; full range means the pool can always quote a price, however far it moves. To the moon or to the floor, the pool quotes. The protocol's own bids are what add concentration over time, under the market, where it helps.

Why the gate matters (the part most launches skip)

An empty Uniswap V4 pool is not inert. With zero liquidity, a swap moves the price all the way to the caller's limit without exchanging a single token — so anyone could park the price anywhere before the seed landed, and the seed would then land at their price. Free money for whoever read the docs. The hook refuses every swap until openTrading(); the launch runbook has the creator try a swap in that window on testnet just to watch it fail. We tested the door by kicking it.

What "at the opening price" means

FDV at open ≈ seed USDG × (100 / 99) — about $5,050 at a 5,000 USDG seed. The token opens SMALL on purpose. A $500 buy moves the price about 20% at that depth. That is a meme launch, and these docs would rather say so than let you find out from the price impact box.

After launch

  • The TOKEN CA on the site is replaced with the real address.
  • The television takes ETH from the first block: the ETH → USDG → FLY route ships with it and was rehearsed on testnet both ways.
  • creator and controller move to a multisig via the two-step transfer, which was exercised on testnet first.

For the operator's version — commands, environment, failure modes — see docs/launch-runbook.md in the repository. It has no jokes in it. That one is not for you. 🫡