Launchpad hook on Ethereum
Uniswap v4 Hook Contract 0x3e402dba7ffb667cd52b1401d6e3f2996edceacc on Ethereum · Launchpad
- Volume (24h)
- $0
- Value locked (TVL)
- $0
- All-time volume
- $0
- Pools using this hook
- 1
- Swaps (24h)
- 7 (4 traders)
- Total swaps
- 7
What it does
This launchpad hook charges a fixed basis-point fee on swaps through its return-delta permissions, while a privileged launcher controls which coins are opened and liquidity is managed by the hook itself.
How it works step by step
- Hook exposes a launch flow: an owner-style open(address) call sets up a coin and a pool key, and coin() / allCoins(uint256) / coinCount() expose a registry of launched coins.
- Uses a genesisLauncher() getter and NotLauncher / WrongCoin / NoTokens errors, suggesting a launcher contract creates and gates these coins.
- Uses the pool manager unlock pattern (unlockCallback, settle, take, sync, modifyLiquidity) so the hook can add or remove its own liquidity during an unlock.
- Return-delta permissions (beforeSwapReturnDelta, afterSwapReturnDelta) mean the hook can take or give currency on swaps, and it moves currency via transfer and balanceOf calls.
- Contains a FEE_BPS() getter and a tick-based position with startTick, openTick and TICK_LOWER, indicating a fee in basis points and a bounded liquidity range around the launch price.
- Liquidity add/remove and donate hooks are present with before/after variants, but their bodies are not decoded in detail.
- Swap behaviour
- beforeSwap and afterSwap are both active and both have return-delta permission, so the hook can alter the amounts of a swap and take a fee in basis points (FEE_BPS) on the trade; which direction pays more cannot be determined from the decoded bytecode.
- Liquidity behaviour
- beforeAddLiquidity, afterAddLiquidity, beforeRemoveLiquidity and afterRemoveLiquidity are present, and the hook calls modifyLiquidity through unlockCallback, so it manages its own position; external LPs may be restricted but this cannot be confirmed without source.
- Fee behaviour
- A basis-point fee constant FEE_BPS is exposed and the hook has return-delta permission, so it appears to take a fee on swaps rather than using the pool's static fee; the exact fee routing (to owner, launcher or LPs) is not determined.
- Owner & admin controls
- open(address) is a nonpayable state-changing function on the hook and a launcher address (genesisLauncher) is referenced, so a launcher or privileged role appears to control launch; no pause or upgrade mechanism was identified in the decoded selectors.
Enabled Uniswap v4 callbacks
beforeInitialize, beforeAddLiquidity, beforeRemoveLiquidity, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta
beforeInitialize sets up pool state on pool creation; beforeAddLiquidity and beforeRemoveLiquidity gate liquidity changes; beforeSwap and afterSwap run around each swap; beforeSwapReturnDelta and afterSwapReturnDelta let the hook alter swap amounts and take currency; beforeDonate and afterDonate are present but not clearly used.
Security & trust assessment
Risk level: medium, estimated (decoded bytecode, medium confidence).
Who controls it: A launcher address or privileged caller controls open() and the coin registry, so that key can decide which coins launch and bind the hook to pools; no upgrade or pause function was identified.
Risk to user funds: The hook has return-delta permission and moves currency, so it can take a portion of swap amounts and hold or settle balances; the exact amounts and destinations cannot be verified from bytecode alone.
Security findings
- [medium] Hook takes currency via return deltas: beforeSwapReturnDelta and afterSwapReturnDelta are enabled and the hook calls transfer, take and settle, so it can move user or pool currency during swaps.
- [medium] Privileged open and launcher gating: open(address) is state-changing and NotLauncher / genesisLauncher indicate a privileged launcher controls which coins are opened, so that launcher can influence which pools are live.
- [info] Fee rate is a fixed constant in bytecode: FEE_BPS is exposed as a pure getter, so the fee appears fixed in code rather than adjustable by an owner, though this should be confirmed.
- [info] Unverified source limits analysis: No verified source is available, so the exact fee destination, balance accounting and launcher trust assumptions cannot be fully confirmed.
Contract details
- Verified source
- No
- Bytecode size
- 9,430 bytes
- Upgradeable proxy
- No
- Detected patterns
- erc20, launchpad, moves-currency, return-delta, self-unlock