# openlaunch.lol > Open-source (MIT: https://github.com/Gitlawb/openlaunch), zero-fee token launchpad on Base (8453) and Robinhood Chain (4663). One transaction deploys a token and locks 100% of its supply as > Uniswap v4 liquidity, forever. No platform fee: the factory and locker have no fee address at all. ## Source verification - Base (8453): Basescan https://basescan.org/address/0x58dcc125AEE1E5c204bB9C20581aC2efdD92a46A#code (factory), https://basescan.org/address/0x3880a3B47ec0E24EFf3Bbb9B8b3B74b052EB8E27#code (locker); Blockscout https://base.blockscout.com/address/0x58dcc125AEE1E5c204bB9C20581aC2efdD92a46A?tab=contract (factory), https://base.blockscout.com/address/0x3880a3B47ec0E24EFf3Bbb9B8b3B74b052EB8E27?tab=contract (locker); Sourcify https://repo.sourcify.dev/8453/0x58dcc125AEE1E5c204bB9C20581aC2efdD92a46A (factory), https://repo.sourcify.dev/8453/0x3880a3B47ec0E24EFf3Bbb9B8b3B74b052EB8E27 (locker) - Robinhood Chain (4663): Blockscout https://robinhoodchain.blockscout.com/address/0xf7aCBB9988d99392fA3C791977bEE176f6880092?tab=contract (factory), https://robinhoodchain.blockscout.com/address/0xdBc0bb55a6d8ef68ce7A17717a0986BcfAE3bf8F?tab=contract (locker); Sourcify https://repo.sourcify.dev/4663/0xf7aCBB9988d99392fA3C791977bEE176f6880092 (factory), https://repo.sourcify.dev/4663/0xdBc0bb55a6d8ef68ce7A17717a0986BcfAE3bf8F (locker) ## What a launch does 1. deploys a fixed-supply ERC-20 (1,000,000,000; no mint/pause/blacklist/tax/owner) 2. initializes a Uniswap v4 pool quote/token (quote = ETH, GITLAWB, USDG on Robinhood Chain, or a registry stock token; tick spacing 200, no hook) at the chosen start tick 3. mints one single-sided position holding 100% of supply to an ownerless locker (no withdraw path exists) 4. registers fee routing: lpFee 0 | 10000 (1%) | 30000 (3%) pips; recipients [] = fees burned, else {payout,bps}[] summing to 10000. Fixed forever. Anyone may call locker.collect(tokenId): accrued fees are paid straight to recipients (or burned). ## Contracts Base (8453): LaunchFactory 0x58dcc125AEE1E5c204bB9C20581aC2efdD92a46A · LaunchLocker 0x3880a3B47ec0E24EFf3Bbb9B8b3B74b052EB8E27 Robinhood Chain (4663): LaunchFactory 0xf7aCBB9988d99392fA3C791977bEE176f6880092 · LaunchLocker 0xdBc0bb55a6d8ef68ce7A17717a0986BcfAE3bf8F Uniswap v4: Base PoolManager 0x498581fF718922c3f8e6A244956aF099B2652b2b, Universal Router 0x6fF5693b99212Da76ad316178A184AB56D299b43; Robinhood PoolManager 0x8366a39CC670B4001A1121B8F6A443A643e40951, Universal Router 0x8876789976decbfcbbbe364623c63652db8c0904 USDG (Robinhood, 6 dec): 0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168 GITLAWB (Base, 18 dec): 0x5F980Dcfc4c0fa3911554cf5ab288ed0eb13DBa3 (Gitlawb's token; fees paid in GITLAWB, burned when recipients = []) GITLAWB (Robinhood, 18 dec): 0xd1b0d44E4f6ed940fcC7A9F59Bf30Daf62cCFe3D (LayerZero OFT of the Base token, 1:1) ## Launch (contract call) factory.launch((name, symbol, metadataURI, quote, supply=0, startTick, lpFee, salt, recipients)) startTick 184200 ≈ 10 ETH FDV for 1B supply (raw price = 1.0001^tick token-wei per quote unit; for USDG use ~391400 ≈ $10k FDV). ERC20 quote: token must sort above the quote address → call factory.findSalt(launcher, baseSalt, name, symbol, 0, metadataURI, quote, 64) first. Optional metadata: POST https://basequest.cc/api/launch/meta {chain, launcher, salt, name, symbol, description?, image_url?, website?, x_handle?} → {uri, token}; pass uri as metadataURI. Recommended: buy a little right after launch (a Universal Router swap on the new pool; the site's form suggests ≈ $25). A token with no holder and no price move reads as dead on screeners and sits under "quiet launches" on the home page until an outside wallet trades it. ## API - GET https://basequest.cc/api/launch/list?chain=base|robinhood&sort=live|new|mcap|volume|gainers|holders&window=1h|24h|all&limit=50 sort=live (the home page default; "trending" is an alias): tokens an outside wallet traded in the last 24h first, ranked by outside wallets this hour, then today, then the last outside trade; then each launcher's newest launch under 1h old; then quiet launches, one row per launcher; both by age. "Outside" = not the launcher and not a swap in the sniper window (launch block + 3; a sell there can only be a sniper's). Rows carry traders_1h_ex / traders_24h_ex (those counts), last_outside_trade_at, live_tier (live|new|quiet, live sort only) and launcher_collapsed. - GET https://basequest.cc/api/launch/feed - GET https://basequest.cc/api/launch/meta/ - POST https://basequest.cc/api/launch/sync?chain=base|robinhood&tx=0x… (index a tx you just sent) - GET https://basequest.cc/api/health Pages: / (list, ?chain=), /launch (?chain=), /t// (trade + fees), /rules, /agents.