How POOL works
One transaction, pools paired with anything, liquidity locked from block one. The whole model on one page, with the real numbers.
Overview
A launchpad where the liquidity is locked before the first trade, and the pool can be denominated in anything.
POOL is a token launchpad on Robinhood Chain (chain id 4663). One transaction deploys a fixed-supply token and opens one to 5 Uniswap v4 pools with the entire supply inside them, in positions that are locked for good. There is no curve to fill first, no second pool to move to later, and no way for anyone to pull the liquidity out: the contract that owns the positions has no withdraw function and no admin.
Most launchpads pair every new coin with the chain’s gas token. On POOL a pool can be denominated in ETH, a tokenized stock, USDG, a meme, or any ERC-20 the on-chain pricer can value. One token can have up to 5 such pools, opened together, and an aggregator routes each trade across them at the best price.
Words you will see
- Pair
- What a pool is denominated in: the asset buyers pay with and sellers receive. ETH, a stock, USDG, a meme, anything the pricer can value.
- Pool
- Where a token trades. Each pool is the token against one pair. A token has one to five.
- Locked liquidity
- The pair assets sitting in the pools. It is measured in dollars and it can never be withdrawn by anyone.
- Tax
- The creator's cut of every trade, on top of the base fee. Chosen at launch and frozen.
- Policy
- What the tax does: paid to the creator, used to buy back and burn, or shared with holders.
- Milestone
- A flag that flips when locked liquidity reaches a target. Informational. Nothing changes.
How a launch works
You fill in a form. One transaction does the rest, and trading starts in the same block.
- 01
You choose
Name, ticker, logo, banner and links. One to 5 pairs. A creator tax from 0% to 10% and what it does (the fee policy). Optionally a dev buy, paid in ETH even for pools that are not ETH.
- 02
One transaction runs
PoolLaunchFactory.launchTokenruns with the 0.0005 ETH launch fee (plus your dev buy) as value. In order:- aThe pricer values every pair. If any pair has no qualifying route, the launch reverts with a clear error and nothing is deployed.
- bThe token is deployed with CREATE2: 1,000,000,000 supply, 18 decimals, no mint function, no owner, metadata that can never change.
- cThe supply is split equally across your pools. Each pool is initialised (hookless, tick spacing 10, LP fee = 1% base + your tax) at the price that makes the whole launch worth $4,000, and a single-sided position holding that pool’s share is minted straight to
PoolLocker. If any pool key already exists, the whole launch reverts. - dYour dev buy executes through the aggregator, split across the pools.
- e
TokenLaunchedis emitted with the full terms: creator, pairs, pool ids, position ids, tax, policy, milestone target.
Single-sidedA position that holds only your token. The pool starts with token on one side and fills with the pair as people buy. “Hookless” means no custom code is attached to the pool, which is also why its fee can never change.
- 03
Trading starts
In the same block. A short protection window (a same-block multi-buy guard) blunts sniping bots.
Pairs & the pricer
A pair is what a pool is denominated in. The pricer decides which assets can be one.
A pair is the asset buyers pay with and sellers receive. Your token can have up to 5 pools, each with a different pair, so the same coin can be bought with ETH, tokenized Tesla and dollars at once. The pair is a decision, not a detail: a token paired with NVDA rises and falls in dollar terms with NVIDIA, a token paired with USDG moves only when the token itself does.
- ETH
The chain's native asset · ETH
- NVDASPYStocks
Tokenized equities & ETFs on Robinhood Chain · NVDA, SPY
- CATMemes
Culture coins with real liquidity · CASHCAT
- $Stables
USDG and dollar-pegged assets · USDG
0x…Any tokenPaste an address. If it routes to ETH, it works
The pricer
PoolQuotePricer values any asset in ETH from the spot state of Uniswap v3 and v4 pools on Robinhood Chain. Routes are at most two hops: asset to ETH, or asset to USDG to ETH. Each hop needs at least 5 ETH of in-range depth (the USDG leg clears the same floor in USDG). The deepest qualifying route wins. POOL’s own launches are routable without registration, and anyone can register a hookless (or allowed-hook) v4 pool with registerV4Pool.
- NVDANVDA$USDGETH2 hops · 108 ETH of depth
- CATCASHCATETH1 hop · 2,106 ETH of depth
Floor: 5 ETH of in-range depth on every hop. An asset with no route that clears it cannot be a pair, and the launch form says so as “can’t be priced”.
Honest bounds
It is spot pricing, so it is manipulable within the depth floor. There is no TWAP on purpose: stale prices on low-activity pools are a worse failure mode than bounded manipulation. A token quoted in a bad asset inherits that asset’s risk in full.
Spot vs TWAPA spot price is the price right now. A TWAP averages it over a window, which hides manipulation but also hides real moves on quiet pools.
Fees
Two fees on every trade, one fee to launch. All of them are shown before you sign.
| Fee | Amount | Where it goes |
|---|---|---|
| Base fee | 1% per trade | 100% to the protocol wallet. Fees earned in the pair transfer directly; fees earned in the token go to the same wallet, and the protocol can opt to burn those per token. |
| Creator tax | 0–10% per trade | Chosen at launch, 100% creator-side, frozen forever. Uniswap v4 hookless pools have static fees, so a change after launch is architecturally impossible. |
| Launch fee | 0.0005 ETH | One-time, paid in the launch transaction. Owner-adjustable for future launches only. |
| Collection | every 2 min | PoolLocker.collectFees(token) is permissionless: a keeper calls it every 2 minutes, and anyone can. Collected fees go to PoolPolicyVault, which pays the protocol share and runs the launch’s policy. |
- Base fee
- 1% per trade
- 100% to the protocol wallet. Fees earned in the pair transfer directly; fees earned in the token go to the same wallet, and the protocol can opt to burn those per token.
- Creator tax
- 0–10% per trade
- Chosen at launch, 100% creator-side, frozen forever. Uniswap v4 hookless pools have static fees, so a change after launch is architecturally impossible.
- Launch fee
- 0.0005 ETH
- One-time, paid in the launch transaction. Owner-adjustable for future launches only.
- Collection
- every 2 min
PoolLocker.collectFees(token)is permissionless: a keeper calls it every 2 minutes, and anyone can. Collected fees go toPoolPolicyVault, which pays the protocol share and runs the launch’s policy.
Example: a 2% tax means every trade pays 3% in total, 1% to the protocol and 2% to whatever the policy says. Buyers can rely on the tax never rising, because the number is baked into the pool itself.
Fee policies
The tax has to go somewhere. The creator picks one of three policies at launch, and like the tax it is frozen.
Pay me
CREATORYour tax accrues to a claim balance. Claim any time, in the quote assets your pools earn.
Tax proceeds credit
PoolFeeEscrow. The creator, or the recipient set at launch, claims any time.Buy back & burn
BURNYour tax buys the token back through its own pools and burns it. Supply only goes down.
Pair-side proceeds buy the token through its own pools via the aggregator and burn it. Token-side proceeds burn directly.
Reward holders
HOLDERSYour tax accrues per epoch and holders claim their share against a posted snapshot.
Proceeds accrue per epoch. The keeper snapshots holders, posts a Merkle root, and holders claim their share from the vault. Claims are pull-based, because push transfers are a gas trap.
Merkle rootA compact proof of who held what at the snapshot. Each holder proves their own share and claims it, so the contract never has to pay everyone at once.
Trading
One buy or sell is split across a token's pools at the best price. You see the route and the fees before you sign.
All trades in the app go through PoolAggregator, an exact-input router that splits one trade across a token’s pools and converts through USDG or ETH where a leg needs it. It is an execution contract, not a quote endpoint: the app quotes with the Uniswap v4 quoter and StateView, builds validated legs, and sets per-leg and aggregate minimums plus a short deadline.
- Every leg is checked against the canonical launch record.
- The aggregate minimum is enforced from the recipient's actual balance change.
- The contract never retains funds.
- Expired or far-future deadlines are rejected.
What you see before you sign
- Route
- Which pools the trade is split across, for example “Best price across 3 pools”.
- Slippage
- How far the price may move before the trade refuses to go through.
- Minimum received
- The least you will get. Below it, the trade reverts.
- Fee breakdown
- 1% base plus the creator's tax, shown as separate lines.
Pools of one token drift apart between aggregator trades; direct-pool arbitrage closes the gap. That is accepted: arb is volume and volume is fees.
Milestones
A flag, not an event. When locked liquidity reaches the target, the token is marked and nothing else changes.
Each launch records a milestone target, by default 4.2 ETH of pair principal locked across its pools. PoolGraduationRegistry.syncGraduation(token) is permissionless and flags the token graduated once the target is met.
It is informational only: nothing moves, no new pool opens, and there is no ceiling. A token can keep growing past it, and a token below it trades exactly the same way. The badge on a card is the whole effect.
Locked liquidityThe pair assets that buyers have paid into the pools, measured in dollars. This is what the milestone counts, and it is what nobody can withdraw.
Contracts
Eight contracts, each with one job. None of them can move locked liquidity.
PoolLaunchFactory- Entry point. Deploys the token, prices the pairs, opens the pools, mints the locked positions, records the terms. 0xd5F6…ad65
PoolToken- Fixed supply, no mint, no owner, immutable metadata, launch protection window.
PoolQuotePricer- Values any asset in ETH. Route discovery, depth floors, registries. 0x9E4c…5811
PoolLocker- Holds every position NFT. Can only collect fees. 0xAE19…89c4
PoolPolicyVault- Fee accounting and policy execution. Merkle claims for holders. 0xf79A…c07c
PoolFeeEscrow- Pull-payment claim balances. 0x62e7…F48C
PoolAggregator- Multi-pool exact-input execution. 0x2bbd…d67a
PoolGraduationRegistry- Informational milestones. 0xD59e…A183
- Uniswap v4 PoolManager0x8366…0951
- PositionManager0x58da…4fa7
- StateView0xf333…673b
- V4Quoter0x8dc1…8f94
- Permit20x0000…8BA3
- WETH90x0000…df5d
- USDG · 6 decimals0x5fc5…d168
POOL contract addresses are published in contracts/deployments/robinhood.json after deployment and verified on Blockscout and Sourcify. Explorer
Owner powers
What the protocol owner can adjust, and the much longer list of what nobody can.
Can change
future launches only- Launch fee amount
- Protocol fee wallet
- Opening market cap default
- Milestone default
- Pricer parameters: depth floor, allowed hooks, registries
- A pause switch on new launches
Can never touch
not the owner, not anyone- Any live launch, retroactively
- Locked liquidity: no admin function can move it
- A launch's tax or policy
- Trading: it can never be paused
- Fee collection: it can never be paused
- Claims: they can never be paused
Nothing can touch live launches retroactively. No admin function can move locked liquidity. Trading, collection and claims can never be paused.
API
A self-hosted indexer. Every response is JSON and CORS-open.
| Method | Path | What |
|---|---|---|
| GET | /tokens | List tokens, sorted, filtered and paged. sort = newest · market_cap · volume · progress · creator_fees · holders · change — quote, policy, graduated, creator, since, search — limit, offset |
| GET | /tokens/:address | One token with its pools, fee terms and milestone progress. |
| GET | /tokens/:address/trades | Recent trades. limit, before (unix) |
| GET | /tokens/:address/candles | OHLCV in USD. res = 1m · 5m · 15m · 1h · 4h · 1d — limit, up to 500 |
| GET | /tokens/:address/holders | Top holders. limit |
| GET | /tokens/:address/fees | Fee events and finalized epochs. |
| GET | /quotes | The pair registry with ETH and USD prices. |
| GET | /wallets/:address | A wallet's launches, holdings, trades, claimables and creator fees. |
| GET | /claimable/:address | What a wallet can claim right now. |
| GET | /stats | Platform totals. |
| GET | /token-info/4663/:address | DexScreener token-info document, immutable cache. |
| GET | /tradesIndexer | The newest trades across every token, with token and quote metadata (the explore tape). |
| GET | /proofs/:token/:epoch/:accountKeeper | Merkle proof for a holders-policy claim. |
| GET | /rewards/:accountKeeper | Every holder-reward leaf a wallet can claim, across all epochs (the portfolio page claims from these). |
- GET
/tokensList tokens, sorted, filtered and paged.
sort = newest · market_cap · volume · progress · creator_fees · holders · change — quote, policy, graduated, creator, since, search — limit, offset
- GET
/tokens/:addressOne token with its pools, fee terms and milestone progress.
- GET
/tokens/:address/tradesRecent trades.
limit, before (unix)
- GET
/tokens/:address/candlesOHLCV in USD.
res = 1m · 5m · 15m · 1h · 4h · 1d — limit, up to 500
- GET
/tokens/:address/holdersTop holders.
limit
- GET
/tokens/:address/feesFee events and finalized epochs.
- GET
/quotesThe pair registry with ETH and USD prices.
- GET
/wallets/:addressA wallet's launches, holdings, trades, claimables and creator fees.
- GET
/claimable/:addressWhat a wallet can claim right now.
- GET
/statsPlatform totals.
- GET
/token-info/4663/:addressDexScreener token-info document, immutable cache.
- GET
/tradesIndexerThe newest trades across every token, with token and quote metadata (the explore tape).
- GET
/proofs/:token/:epoch/:accountKeeperMerkle proof for a holders-policy claim.
- GET
/rewards/:accountKeeperEvery holder-reward leaf a wallet can claim, across all epochs (the portfolio page claims from these).
Base URL: the indexer service. Addresses are checksummed or lowercase hex; timestamps are unix seconds.
Risk
Plain language, no cope. Read this before you use the app.
- Unaudited. The contracts are new and have not been audited. Use amounts you can afford to lose.
- Spot pricing is manipulable within bounds. The depth floor limits, but does not remove, launch-price manipulation.
- Pair risk passes through. A token paired with a thin or bad asset inherits its problems in full.
- Tokenized stocks are what Robinhood Chain says they are. POOL does not custody or issue them.
- Multi-pool prices drift between trades. You may get a different price on a direct pool than through the aggregator.
- The creator tax is real and permanent. Read the tax before you buy. It cannot go up, and it also cannot go down.
- Nothing here is financial advice. Tokens are created by their communities, not by POOL.
Questions
The eight things people ask first.
Can the creator increase the tax later?
What happens at the milestone?
syncGraduation and the token shows as past its milestone. Nothing moves, no new pool opens, and trading continues exactly as before. There is no ceiling either.Can I pair with a stock?
Why USDG?
Is this audited?
Can the team pause trading?
What is the launch fee?
Where do my fees go?
About POOL
POOL is a small team building on Robinhood Chain. We think the pair of a token matters as much as the token, and that liquidity locked from block one should be the default rather than a feature. POOL does not create tokens. Communities do, and every pool on the platform is theirs.
Brand
The POOL mark is two rings sharing a lens: one token, pooled against anything. Use it in brand blue or white on dark backgrounds, keep clear space of one ring’s width around it, and set the wordmark in Montserrat. Do not recolour, rotate, outline or add effects.
Terms
POOL is non-custodial software. Tokens launched on POOL are created and controlled by their communities, not by POOL, and nothing on this site is financial advice. The contracts are unaudited. By using the app you accept that transactions on Robinhood Chain are final, that token prices can go to zero, and that you are responsible for complying with the laws that apply to you.
Privacy
POOL does not require an account and does not collect personal information. Wallet addresses and transactions are public on Robinhood Chain by design. The site keeps one preference in your browser, the wallet you last connected, and nothing else.