Launchpad hook on Ethereum
Uniswap v4 Hook Contract 0x98a09039fd1f48b61ea55884bc99d9ab231e20cc on Ethereum · Launchpad
- Volume (24h)
- $12.35K
- Value locked (TVL)
- $1.44K
- All-time volume
- $12.35K
- Pools using this hook
- 1
- Swaps (24h)
- 105 (52 traders)
- Total swaps
- 105
What it does
This launchpad hook charges a higher swap fee right after a pool launches, decaying to a standard fee over a set number of blocks, so early buyers and sellers pay more than later traders.
How it works step by step
- Registers a pool at initialization and stores its launch block, so the hook knows when each pool went live
- Applies a protection window after launch during which swap fees are elevated, then decays them over a fixed number of blocks
- Uses beforeSwap and afterSwap with return deltas, so the hook can take a fee portion of swap amounts as currency rather than leaving it in the pool
- Accrues collected fees per pool and lets an authorized caller withdraw them via withdrawFees
- Mints and burns ERC-6909 claim tokens, which indicates it holds fee or delta balances inside the pool manager
- Swap behaviour
- beforeSwap computes a launch-protection fee for the pool based on blocks elapsed since launch, and afterSwap takes a fee amount via return deltas and records it as accrued fees; trades during the protection window pay a higher fee than trades after the decay period, while later trades pay the base FEE_BPS.
- Liquidity behaviour
- No liquidity callbacks.
- Fee behaviour
- Fees are set by the hook in beforeSwap: a launch fee starting at LAUNCH_FEE_START_BPS during LAUNCH_PROTECTION_BLOCKS, decaying over LAUNCH_FEE_DECAY_BLOCKS toward FEE_BPS; the hook's accrued fees are tracked per pool and withdrawable via withdrawFees.
- Owner & admin controls
- withdrawFees takes a pool key and transfers accrued fees; the decoded bytecode does not show a clear owner check in the dispatcher, so the recipient and authorization model cannot be confirmed. A manager() and quoter() reference exist but their roles are not confirmed.
Enabled Uniswap v4 callbacks
beforeInitialize, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta
beforeInitialize registers the pool and records its launch block; beforeSwap sets the dynamic launch fee and gates or prices the swap; afterSwap takes fees through return deltas; beforeSwapReturnDelta and afterSwapReturnDelta allow the hook to claim part of swap currency.
Security & trust assessment
Risk level: medium, estimated (decoded bytecode, low confidence).
Who controls it: Without verified source, the key that can call withdrawFees, and any admin that sets manager or quoter, could collect accrued fees; the extent of owner powers is unconfirmed.
Risk to user funds: The hook takes swap currency via return deltas and holds accrued fees as ERC-6909 claims, so user swap proceeds are partially retained by the hook; its ability to block swaps depends on the beforeSwap logic, which could not be fully confirmed from bytecode.
Security findings
- [medium] Return-delta fee capture: beforeSwapReturnDelta and afterSwapReturnDelta let the hook take a share of every swap's currency, so the effective trade output depends on the hook's fee logic.
- [high] Withdrawal authorization unclear: withdrawFees moves accrued fee balances and no clear access check is visible in the decoded dispatch; if unrestricted, funds could be drained, so this must be verified.
- [info] Launch fee decay depends on block timing: The protection fee is a function of block number relative to launchBlock, so fee level changes predictably per block and can be front-run around the decay boundary.
- [low] Mint and burn of claim tokens: The presence of mint and burn selectors suggests ERC-6909 claim accounting, which adds custody state to the pool manager that depends on correct hook logic.
Contract details
- Verified source
- No
- Bytecode size
- 7,877 bytes
- Upgradeable proxy
- No
- Detected patterns
- erc6909-claims, launchpad, moves-currency, return-delta
Pools using Launchpad hook
- ROCCO / USDC (0.00% fee) — 24h volume $12.35K, TVL $1.44K, 105 swaps today