Architecture
Five contracts of ours, one chain, no proxies.
Chain
Base mainnet, id 8453, 2-second blocks. The quote asset is USDC, 6 decimals, at 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913. Verified sources are on basescan.org.
Contracts
Deployed 2026-09-09 from block 51087244.
| Address | What it does | |
|---|---|---|
MemeLauncherV3 | 0x3D52129945443911052910409F78D55cb7623A30 | launches coins (launch, launchWithEth), opens their pool, performs the bond |
PermanentLockerV3 | 0x57001742B9CFF0CE53487B8B6b1E5266ccc6Fd86 | holds every position NFT forever, books and pays fees |
LTFactory | 0x66b32CE215fBC7204c5e372f12Eb4E0a786feD11 | deploys one vault + one NAV oracle per tracker, routes each to its venue pair |
LtUsdcLiquidityManager | 0xAeb533Ed6694182dD2dCC798cbbcF19058E42EAd | keeps each tracker's USDC reference pool centred on NAV |
NavBatchRelay | 0x1911BeBc5c4A67230d858a7E51a1E5B25180f645 | posts the keeper's signed NAVs to every tracker's oracle in one transaction |
None of them is behind a proxy. What is deployed is what runs, and it cannot be swapped out from under you. Earlier launcher deployments (0x94a7…d517 and before) are de-authorised on the factory and cannot launch.
Canonical Uniswap V3 on Base
| Address | |
|---|---|
UniswapV3Factory | 0x33128a8fC17869897dcE68Ed026d694621f6FDfD |
NonfungiblePositionManager | 0x03a520b32C04BF3bEEf7BEb72E919cf822Ed34f1 |
SwapRouter02 | 0x2626664c2603336E57B271c5C0b26F421741e481 |
QuoterV2 | 0x3d4e44Eb1374240CE5F1B871ab261CD16335B76a |
Fee tiers enabled on this factory: 0.01%, 0.05%, 0.3% and 1%. A coin's pool uses the 1% tier; a tracker's USDC reference pool uses 0.05%; the ETH seed of launchWithEth is swapped through the WETH/USDC 0.05% pool.
The venue
The position behind a tracker lives on Avantis, on the same chain. The two contracts a vault calls are the venue's own EIP-1967 proxies — TradingRouter at 0x44914408af82bC9983bbb330e3578E1105e11d4e (where the keeper's delegate key is registered) and TradingStorage at 0x8a311D7048c35985aa31C131B9A13e03a5f7422d (the USDC spender and the position registry). Those are upgradeable by the venue, not by us; everything of ours is not.
The launcher is the registry
allCoins on the launcher contains exactly the coins it created, in order, and nothing else. The site's board reads it directly.
That has two consequences worth having. Coins from older stacks and abandoned experiments cannot appear at all — there is no deny-list to maintain and no way for a stale index to resurrect one. And a coin is listable in the block it launches, with no indexing lag between the transaction and the board.
What is immutable
| Total supply | 1,000,000,000, minted once in the constructor |
| Fee split | CREATOR_SHARE_BPS = 7000, a constant with no setter |
| Bond threshold | bondBackingUsd = 15,000 USDC, immutable on the launcher |
| Seed floor | minSeedUsdc = 1 USDC, immutable on the launcher |
| Leverage ceiling | MAX_LEVERAGE = 5, a constant on the factory |
| Protocol treasury | immutable on the locker |
| Creator of a coin | written at lock, no setter |
| The liquidity lock | absence of any withdrawal function |
Changing any of these means deploying new contracts at new addresses. There is no admin action that alters them in place, and no upgrade path that could.
What is not
The protocol owner can point the front at a different launcher, list or delist the markets the launch form offers (LTFactory.setUnderlying, with the venue's cap per pair), and, on a tracker's vault, rotate or revoke the keeper's delegate key on the venue and zero the vault's USDC allowance to it — the two controls described in Risks & security. None of these reaches an existing coin: a coin already launched keeps its pool, its lock, its fee split and its creator whatever the site later decides to display or whatever happens to the keeper.
Reading it yourself
Every number this documentation states is a public call. Where a figure could change with a future deployment — the bond threshold, the seed floor, the fee split — the docs name the getter alongside the value, so you can check the live contract rather than a page that may have gone stale.