Launchpad hook on Base
Uniswap v4 Hook Contract 0xc2b9ff513cf180369596a96a79a4ee67f5cc78e0 on Base · Launchpad
- Volume (24h)
- $0
- Value locked (TVL)
- $0
- All-time volume
- $0
- Pools using this hook
- 1
- Swaps (24h)
- 0 (0 traders)
- Total swaps
- 0
What it does
A token launch auction hook that sells a fixed supply over time by shifting its own liquidity each epoch, blocks outside liquidity and donations, enforces start, end and proceeds limits on swaps, and charges a dynamic LP fee whose exact level is unverified.
This read was written for the hook 0x1b15…f8e0 on BNB Chain and reused here: the two share a code shape, so constants such as fees, owners and addresses can differ.
How it works step by step
- Runs a Doppler-style dynamic Dutch auction (price discovery) that sells a fixed amount of a newly launched token over a set time window.
- Periodically moves the hook's own liquidity positions each epoch, lowering or raising the price depending on whether sales are ahead or behind schedule.
- Blocks swaps before the auction start time and restricts swaps after maturity based on whether minimum proceeds were reached.
- Blocks third-party liquidity additions and donations while the auction is running.
- Lets the initializer (launch factory) migrate the raised proceeds and remaining tokens out once the auction ends or exits early.
- Swap behaviour
- Before each swap the hook checks timing and may rebalance its auction liquidity for the new epoch. Swaps before the start revert, swaps stop once maximum proceeds are reached, and after maturity only certain directions are allowed depending on whether minimum proceeds were met. After the swap it records tokens sold and proceeds.
- Liquidity behaviour
- Outside users cannot add liquidity, because the add-liquidity check reverts for anyone other than the hook itself. Remove-liquidity callbacks are disabled, so the hook never runs on withdrawals; the auction liquidity is owned by the hook and released through migration.
- Fee behaviour
- Uses a dynamic LP fee that is set to a fixed initial value when the pool is initialized. The exact percentage cannot be read from bytecode, and swap fees go to the pool's liquidity, which here is the hook's own positions.
- Owner & admin controls
- Only the initializer address (the launch factory) can call migrate, which pulls the hook's liquidity and sends tokens and proceeds to a chosen recipient after the auction ends. No fee-setting or pause functions were found.
Enabled Uniswap v4 callbacks
beforeInitialize, afterInitialize, beforeAddLiquidity, beforeSwap, afterSwap, beforeDonate
beforeInitialize: records the pool and checks it is set up by the initializer; afterInitialize: sets the initial dynamic fee and places starting liquidity; beforeAddLiquidity: blocks outside liquidity; beforeSwap: enforces auction timing and rebalances liquidity each epoch; afterSwap: tracks tokens sold and proceeds, enforcing the maximum proceeds limit; beforeDonate: blocks donations.
Security & trust assessment
Risk level: medium, estimated (decoded bytecode, medium confidence).
Who controls it: The initializer, likely a Doppler-style factory contract, is the only privileged caller and can migrate the auction liquidity and proceeds. It cannot change fees or block swaps arbitrarily beyond the coded auction rules.
Risk to user funds: Traders are exposed only to normal swap pricing and the dynamic LP fee, whose exact level cannot be confirmed from bytecode. Outside LPs cannot deposit, and the hook only moves its own auction liquidity and proceeds.
Security findings
- [medium] Initializer controls migration of auction funds: The initializer can call migrate to withdraw the auction's liquidity and raised proceeds to a recipient. Conditions for when it may run come from bytecode reads of the early-exit and proceeds flags and could not be fully verified.
- [info] Time and proceeds-based swap restrictions: Swaps revert before the start time, after maximum proceeds are reached, and in some directions after maturity. This is standard auction behaviour, not a hidden pause.
- [info] No swap return deltas: Swap return-delta permissions are disabled, so the hook cannot take tokens directly out of traders' swaps.
Contract details
- Verified source
- No
- Bytecode size
- 21,830 bytes
- Upgradeable proxy
- No
- Detected patterns
- dynamic-fee, erc20, moves-currency, self-unlock
Pools using Launchpad hook
- WETH / IYICOIN (Dynamic fee) — 24h volume $0, TVL $0, 0 swaps today