arcade admin
Arc · 5042

launchpad 0x733D6F14612bfa8d1D34dFd51dcAb348B668146f

Stack status read-only · every check is a live read · gating lives on-chain

Arcade stack

ArcadeLaunchpad
ArcadeLaunchHook gate + anti-snipe
ArcadeLPManager
ArcadeSwapRouter

Canonical Arc infra

Uniswap v4 PoolManager
Uniswap v4 PositionManager
StateView
V4Quoter
USDC (ERC-20, 6 dec)

Launchpad settings owner-gated · every change only affects FUTURE launches (each pool snapshots its config at launch)

Existing LP positions keep the treasury slot they were registered with (the position's current treasury holder can move it via updateTreasury in the Danger zone). Anti-snipe sweeps always go to the CURRENT treasury.

tick = floor(ln(mcap × 1e-21) / ln 1.0001), snapped down to ×200

USDC is the quote and has 6 decimals, so the anchor is an exact dollar figure that never drifts — change it only to reprice the opening mcap. Snapping DOWN means the real opening mcap is slightly below the target.

The creator's atomic first buy in the launch tx is exempt. Exact-output swaps are refused during the window. The V4Quoter prices the fee in, so quotes stay exact.

Ownership transfer lives in the Danger zone.

Tokens · fee collection and milestone flags are permissionless — anyone can trigger

Accounting is per token: each launch has its own LP position and fee balance; the batch button just loops collectFees. Claimable = exact eth_call preview of collectFees (creator / treasury). Treasury for new positions: .

Treasury & hook ops anti-snipe fees are booked as ERC-6909 claims on the hook — sweeping is permissionless

Anti-snipe USDC pending (claims on the hook)
Anti-snipe USDC lifetime
Sweep destination (launchpad.treasury, read at sweep time)
Treasury USDC balance

Claims are booked per CURRENCY, not per token: USDC fees from every launch pool share one balance, so there is no per-token breakdown here (the indexer's /tokens/:addr/antisnipe has it). Sells during a window pay the fee in the launched token — sweep those by pasting the token address below.

Danger zone irreversible or custody-moving actions · your roles:ownerLP admintreasury

Move a position's treasury slot (current treasury slot holder)

Each LP position remembers the treasury it was registered with. Only THAT address can redirect its 30% share (updateTreasury). Useful after setTreasury on the launchpad, which only affects new launches.

Rescue LP position (LP admin) — moves LOCKED liquidity out of custody

Transfers a launch's LP NFT from the LP manager to any address. The recipient can then remove the liquidity — this is the ONE way the "locked forever" promise can be broken, which is why the LP admin should be a multisig and eventually renounced. Pending fees are distributed first unless "skip collect" is checked. Type RESCUE to arm.

Transfer roles

LP admin controls the rescue hatch; launchpad owner controls treasury, launch fee, launch tick, anti-snipe and milestones. Use multisigs. Type TRANSFER to arm the ownership transfer.

Renounce LP admin — PERMANENT

Kills the rescue hatch forever: no LP NFT can ever leave custody again, by anyone. This is the strongest "liquidity locked" guarantee you can give users. Type RENOUNCE to arm the button.

Swap simulator read-only · V4Quoter eth_call · includes the 1.5% LP fee and the live anti-snipe fee