Documentation
How a launch works
A Tartarus launch has one state after it lands: trading. There is no curve to fill, no threshold, and no migration. This page follows what happens inside the launch transaction and what runs afterwards.
launchToken / launchAndBuy
|
| one transaction
v
deploy token -> create pool -> register with hook -> lock whole supply
|
v
trading on Uniswap V4, from this block, forever
|
v
fees accrue in the hook -> sweep -> escrow -> claimInside the launch transaction#
The factory does all of this atomically, so a launch either completes or never happened.
- Checks. The launch gate, the config, the quote asset, the creator tranche, the economics pin, the exact launch fee and the ticker.
- Deploys the token with CREATE2 through
TartarusLaunchDeployer. All 1,000,000,000 tokens are minted to the factory. Name, symbol and decimals are immutable, stored in the bytecode. - Creates the bridge wallet when a bridge factory is configured, so the token is ready for Elysium's mirror bridge. None is configured on mainnet yet. See HyperCore.
- Initializes the V4 pool at the config's starting price, with the Tartarus hook attached and an LP fee of zero.
- Registers the pool with the hook, freezing its fee rates and recipients for life.
- Seeds one position holding the entire supply, from the floor price to the top of the tick
range, and hands it to
TartarusLaunchLocker. Any rounding dust is locked too. - Records the launch and emits
LaunchSalt,PoolSeededandTokenLaunched.
launchAndBuy runs the same steps, then buys inside the same transaction, so nobody can get in
between the pool opening and the creator's first purchase.
The pool#
The position is single-sided: it holds tokens and no quote. A buy pays quote into it and takes tokens out, moving the price up. A sell does the reverse. Sells can only return what buys paid in, so the price cannot fall below where the launch started. That starting price is the token's floor. Price and market cap gives the math.
The position cannot be removed. TartarusLaunchLocker has no withdrawal function and no arbitrary
call, for anyone, including its owner. The pool's LP fee is zero, so the position earns nothing and
there is nothing to collect from it. Every fee belongs to the hook.
After launch#
| What | Who | How often |
|---|---|---|
| Take the fee on each swap | the hook | every swap |
| Convert memecoin fees to the quote and pay them to the escrow | the sweep operator (keeper) | about every 6 hours per pool, once enough has accrued |
| Pay out quote fees | the keeper, or the creator directly | any time |
| Deploy a holder-rewards distributor | the jobs service, or anyone | soon after a holder-rewards launch |
| Publish holder-reward epochs | the distributor owner | about weekly |
Nothing here can stop a token from trading. If every Tartarus service went offline, the pools, the tokens and the escrow would keep working, and swaps could still go straight through Uniswap.
Reading a launch#
const launch = await client.readContract({
address: FACTORY, abi: factoryAbi, functionName: "getLaunchedToken", args: [token],
});
// { token, deployer, creatorFeeRecipient, quoteToken, poolId, positionId,
// startingTick, tickSpacing, exists }getLaunchedToken returns a zeroed struct for an unknown address rather than reverting, so check
exists first.