Chapter 07
Contracts
Addresses, functions and events for LaunchFactory, PersonHook, PersonEscrow, OleyRouter and QuoteRegistry.
| Contract | Address | Role |
|---|---|---|
| LaunchFactory | Reading | Creates the coin, its pool and the single-sided position, and runs the first buy |
| PersonHook | Reading | Takes the 3% on every swap and keeps the fee ledgers |
| PersonEscrow | Reading | Binds a platform account to a wallet, pays claims and runs sweeps |
| OleyRouter | Reading | Exact-input buys and sells |
| QuoteRegistry | Reading | Quote assets and their Chainlink USD feeds |
| PoolManager | 0x8366a39CC670B4001A1121B8F6A443A643e40951 | Canonical Uniswap v4 core |
LaunchFactory
launch(LaunchParams) is payable and creates the coin and pool, with an optional dev buy in the same transaction.
struct LaunchParams {
string name;
string symbol;
address quote; // address(0) = native ETH, else a registered stock token
bytes32 salt;
uint8 platform; // 0 X, 1 YouTube, 2 TikTok, 4 Snapchat, 5 Twitch, 7 Farcaster
string handle; // canonical lowercase handle
uint256 devBuyQuote; // 0 = no dev buy
uint256 devBuyMinOut;
}Emits Launched(id, token, personKey, quote, launcher, platform, handle, sqrtPriceX96, openingTick, liquidity). The factory computes personKey = keccak256(platform, handle) itself and accepts canonical handles only (a-z 0-9 _ . - :, 1 to 64 bytes).
PersonHook
pools(id)returns token, quote, launcher, personKey, quoteIsCurrency0, seeded, launchedAt and haltMaxStaleness.personFees(id)returns the claimable person fees for the pool.previewBuyFees(quoteIn)returns protocolFee, personFee and total.- Emits
HookSwap(id, trader, recipient, isBuy, quoteAmount, tokenAmount, feeQuote)on every swap.
PersonEscrow
persons(personKey)returns wallet, platformUserId and boundAt.bindNonce(personKey)returns the current nonce.attest(Attestation a, bytes sig)binds or rebinds; the caller must bea.wallet.claim(bytes32[] ids, address to)pays each pool in its quote; the caller must be the bound wallet of every pool.cycleStart(id),sweepDue(id)andsweep(PoolKey key)run the 90-day cycle.- Events:
PersonBound,Claimed,Swept.
OleyRouter
buy(key, quoteIn, minOut, recipient, deadline), payable for ETH quotes; approve the router for stock quotes.sell(key, tokensIn, minOut, recipient, deadline); approve the router for the coin first.- Exact input only.
QuoteRegistry
QuoteRegistry.priceUsd8(quote) and quoteHalted(quote, maxStaleness) back the opening price and the trade guard.
Locked liquidity
Every pool's single-sided position is added once by the factory. PersonHook reverts every liquidity removal on its pools, so the position can never be withdrawn by anyone.