# openlaunch.lol > Open-source (https://github.com/openlaunchlol/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. ## 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, or USDG on Robinhood Chain; 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 0x815542E8b392389A1389E22E588E4B62A67Ade72 · LaunchLocker 0xcd1680D26922fcd9CabFbb8a56bA40C333fD842a Robinhood Chain (4663): LaunchFactory 0x815542E8b392389A1389E22E588E4B62A67Ade72 · LaunchLocker 0xcd1680D26922fcd9CabFbb8a56bA40C333fD842a Uniswap v4: Base PoolManager 0x498581fF718922c3f8e6A244956aF099B2652b2b, Universal Router 0x6fF5693b99212Da76ad316178A184AB56D299b43; Robinhood PoolManager 0x8366a39CC670B4001A1121B8F6A443A643e40951, Universal Router 0x8876789976decbfcbbbe364623c63652db8c0904 USDG (Robinhood, 6 dec): 0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168 ## 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://openlaunch.lol/api/launch/meta {chain, launcher, salt, name, symbol, description?, image_url?, website?, x_handle?} → {uri, token}; pass uri as metadataURI. ## API - GET https://openlaunch.lol/api/launch/list?chain=base|robinhood&sort=new|trending|mcap|volume|gainers&window=1h|24h|all&limit=50 - GET https://openlaunch.lol/api/launch/feed - GET https://openlaunch.lol/api/launch/meta/ - POST https://openlaunch.lol/api/launch/sync?chain=base|robinhood&tx=0x… (index a tx you just sent) - GET https://openlaunch.lol/api/health Pages: / (list, ?chain=), /launch (?chain=), /t// (trade + fees), /rules, /agents.