docs.
how 2020.family works, what it costs, and what happens when you launch a token on base.
on this page
what is 2020.family
An open launchpad for b20 tokens on base. Anyone can launch - no allowlist, no gate. Each launch mints a fresh b20 token, seeds a single-sided Uniswap V3 pool against WETH, and hands the token admin to the launcher.
The terminal is a live feed of every token launched through the factory, with in-app buy via Uniswap V3.
how a launch works
One transaction to launch(LaunchConfig) does all of this atomically:
- Validates inputs (fee tier ∈ {0.3%, 1%}, opening tick > 0, name/symbol non-empty, msg.value ≥ 0.001 ETH).
- Calls the b20 factory precompile at
0xB20f…000to deploy the token at a deterministic0xB200…address. Launcher becomes DEFAULT_ADMIN from block 0. - In the bootstrap window, grants the factory
MINT_ROLEand sets the supply cap to 1B. - Factory mints the full 1B supply to itself.
- Creates + initializes the Uniswap V3 pool at your chosen opening tick.
- Mints a single-sided LP position: all 1B on the b20 side, tick range
[MIN_TICK, openTick − spacing]. LP NFT sent to the 2020.family treasury. - Factory renounces its
MINT_ROLE- no further supply can ever be minted. - Forwards 0.001 ETH to the treasury, refunds any excess to the launcher.
- Emits
LaunchDeployedevent for the terminal to pick up in real time.
If any step fails, the whole transaction reverts. No half-launched state.
tokenomics per launch
| parameter | value | notes |
|---|---|---|
| standard | b20 (native) | address prefix 0xB200… |
| supply | 1,000,000,000 | fixed at the contract level |
| decimals | 18 | fixed |
| lp venue | uniswap v3 | single-sided, weth pair |
| lp fee tier | 0.3% or 1% | launcher chooses per launch |
| lp position | [MIN_TICK, openTick − spacing] | range extends far below current tick so it never runs out |
| token admin | to launcher | can update name/symbol/metadata via b20 admin functions |
| mint role after launch | renounced | supply permanently fixed - no future dilution |
setting the opening price
Opening price is set by a signed integer called the opening tick. Since b20 addresses always sort above WETH (0xB200… > 0x4200…), b20 is always token1, so higher openTick = lower starting token price = lower FDV.
App presets, assuming 1B supply @ $1,900 ETH:
| preset | openTick | starting fdv |
|---|---|---|
| 20/20 fair (default) | 206,600 | ~$2,020 |
| medium | 195,600 | ~$6,060 |
| ape mode | 160,600 | ~$202,020 |
Or pick a custom tick. Math: FDV ≈ supply × 1.0001^openTick × ETH_USD / 10^decimals. Every ~23,030 ticks halves/doubles the FDV.
fees & revenue
- launch fee: 0.001 ETH (~$1.90) per launch, forwarded to the treasury. Any excess msg.value is refunded.
- swap fees: whatever pool tier the launcher chose (0.3% or 1%), collected 100% by the treasury via the LP NFT.
- protocol take from swaps: we don't wrap the router. Swap on the terminal, on Uniswap, or via any aggregator - same fees either way.
how to buy a launched token
- Open the terminal. All launches show newest-first.
- Click a token row to open its detail page.
- Use the buy panel - sends you to Uniswap swap with the correct token pre-filled.
- Any wallet on base works. No account needed here.
terminal roadmap
live today:
- Live feed of launched tokens (from
LaunchDeployedevents) - Per-token logo/description/socials from launch metadata
- Live price, market cap, curve-fill percentage per token
- Vision score heuristic based on age, mcap, curve %, verification
- Deep-link to Uniswap for trading
- BaseScan links for every token and pool
shipping next:
- 24h price change, volume
- Holder count and top-holder distribution
- Full price charts (1m / 5m / 1h / 1d candles)
- Per-wallet positions & P&L
- In-app one-tx swap (no more Uniswap deep-link)
addresses (base mainnet)
| what | address |
|---|---|
| b20 factory precompile | 0xB20f000000000000000000000000000000000000 |
| WETH | 0x4200000000000000000000000000000000000006 |
| Uniswap V3 NPM | 0x03a520b32C04BF3bEEf7BEb72E919cf822Ed34f1 |
| Uniswap V3 SwapRouter02 | 0x2626664c2603336E57B271c5C0b26F421741e481 |
| 2020.family factory | 0x6C8B31937D507257265a5d465fBf4328C8bcE210 |
| 2020.family treasury | 0xAeA6041E93e6729535398F67F49dc3DB12050EcE |