Reference

Proof, not promises

Every claim below is verifiable in the contracts themselves; sources are verified on Sourcify and the explorer. This page exists because the launchpad we forked our mechanics from keeps admin powers we refuse to hold. Ours are listed exhaustively; what is not listed does not exist.

The claims

Nobody can touch locked liquidity. Not us, not the owner, not anyone.

PopLocker has no withdraw, transfer, or arbitrary-call function. Read the verified source. Every bonded position NFT is minted directly to it.

Nobody can redirect a creator's fees.

There is no admin override of a launch's creator fee recipient anywhere in the code. Only the current recipient can transfer it. Lost keys mean lost future fees. That is the price of this guarantee, and we say it out loud.

Fee terms can never change on a live launch.

Every launch snapshots its economics at creation; the hook's fee policy is a constructor immutable. The owner's config changes apply to future launches only, never to a launch already live.

Pre-bond, the curve's funds have exactly two exits, and neither is a person's wallet.

The factory holds each launch's curve position. Its only paths are bond(), which converts the whole raise into the quote and seeds the locked pool, and a rescue that opens only after a launch has been bond-ready and stuck for 14 days, paying only the launch's own creator fee recipient. During that whole window anyone can still bond it permissionlessly. There is no withdraw-to-anyone function; read the verified source.

The quote allowlist is rules, not opinions.

Anyone can list any graduated Pons token whose permanently locked ETH liquidity clears the floor, proven on-chain against the verified Pons factories. There is no delist function; a quote that loses its backing simply stops hosting new launches, automatically.

Launch tokens are inert.

Plain fixed-supply ERC-20: no owner, no mint, no blacklist, no pause, no transfer hooks. Anti-snipe protection is a decaying launch-window tax enforced by the hook, not token-level control.

Bonding cannot be front-run, griefed, or captured.

Bond-readiness is a price fact recorded by the hook; the bond itself is permissionless, atomic, and retryable. The raise's conversion into the quote is bounded by the quote's own 30-minute TWAP, so a manipulated pool delays a bond rather than repricing it, and the new pool seeds at the curve's terminal price. Every bond is a public market buy of the quote token with the entire raise, visible on-chain.

The only owner powers are config-for-future-launches and constrained rescues.

The four ownable contracts are owned directly by the protocol owner, a single key, and its changes take effect immediately with no delay. That is the weakest part of this deployment and we would rather say so than imply a timelock we did not deploy. What that owner can reach is narrow and worth reading literally: launch configs and the snipe-tax window for FUTURE launches, the $POP holder revenue share on the splitter, and constrained rescue paths for launches or fee balances that get stuck. Every rescue pays only fixed recipients, the launch's own creator recipient or the protocol's, so there is no address the owner can name. The bond rescue unlocks only after a launch has been bond-ready for 14 days, during which anyone can still bond it permissionlessly. It cannot touch locked liquidity, cannot redirect a creator's fees, and cannot change the terms of a launch that already exists.

$POP burns by code. The holder revenue share does not exist, and here is why.

$POP's creator fees accrue to the buyback burner, whose 25% burn ratio is a constructor constant: that slice can only ever leave the contract as $POP sent to the dead address, and $POP's creator fee recipient has been transferred to that burner permanently. The other 75% goes to the protocol. Separately, this page previously claimed 15% of protocol revenue was paid to $POP holders. It is not, and it cannot be: the splitter pays holders by sending $PONS to the token contract and calling sync(), a function only the holder-rewards token variant has, and $POP was launched in quote-burn mode. Every distribution reverted until the share was set to 0%. The splitter's one-time pointer to the platform token is already spent on $POP, so restoring a holder share would require a new splitter, which we are not promising. Past distributions still cannot be clawed back; there simply were none.

No proxies. No upgrades. Anywhere.

Every contract is immutable once deployed. A v2 is a new deployment; v1 launches run forever on v1.

Every contract

PopLaunchFactory
launches, holds each curve position until its bond, executes bonds
0x4615…b440
PopQuoteRegistry
permissionless quote allowlist
0xA2E2…966D
PopHook
V4 fee hook + snipe tax; policy immutable in bytecode
0xf91f…2044
PopLocker
holds every bonded LP NFT forever; no withdraw function
0x600e…5095
PopFeeEscrow
pull-payment revenue ledger; no owner
0xA919…D5ff
PopSwapRouter
stateless ETH-in/ETH-out convenience router; holds nothing between calls
0x8247…88d9
PopRevenueSplitter
protocol fee recipient; holder share currently 0% (see the claim below)
0x90f4…c417
PopBuybackBurner
$POP creator-fee recipient; 25% buys and burns $POP (ratio immutable)
0xBFB1…9e81
Protocol owner
owns factory/hook/registry/locker directly; receives protocol fees
0x16F4…86C5
Uniswap V4 PoolManager (canonical)
not ours, Uniswap's
0x8366…0951
Uniswap V4 PositionManager (canonical)
not ours, Uniswap's
0x58da…4fA7

Each token's own address is on its token page's trust panel, deployed by the factory via CREATE2 and verified from the same source tree; its pools live inside the canonical PoolManager.

Audit status
External audit pending. This section links the report when it lands. Until then: the bonding curve, graduation, and hook mechanics are adapted from the verified, battle-tested PonsV2 sources (86,000+ launches on Robinhood Chain), with the trust model rebuilt as described above. The full diff against the reference is documented in the repository.

Something unclear or wrong? The contracts are the source of truth, and every claim here is checkable on /proof.