LauncherHook on Ethereum
Uniswap v4 Hook Contract 0xd17adf71ff38093ddeea2cb2df8da2ad8b5b4500 on Ethereum · Launchpad · Verified contract
- Volume (24h)
- $144
- Value locked (TVL)
- $0
- All-time volume
- $144
- Pools using this hook
- 1
- Swaps (24h)
- 4 (4 traders)
- Total swaps
- 4
What it does
LauncherHook is a launchpad helper that lets a token's creator add and remove liquidity through the hook, with no swap callbacks and no fee taken, so swaps pay the pool's static fee and neither trade direction is favoured.
This read was written for the hook 0x59f2…c500 on Ethereum and reused here: the two run the same code.
How it works step by step
- Hook only enables afterAddLiquidity and afterRemoveLiquidity callbacks; it does not touch swaps or pool initialization logic beyond its own registry
- Keeps a per-token position registry (positions mapping, getPosition, poolIdOf) and uses the pool manager unlock flow via unlockCallback to settle liquidity for a launched token
- addLiquidity and removeLiquidity entry points let a token creator seed and withdraw liquidity through the hook, with PositionAlreadyAdded and PositionAlreadyRemoved guards
- Owner-gated initializePool creates a pool keyed to the hook for a given token, tracked by TokenAlreadyInitialized
- After-callbacks return their selectors without custom return deltas, so the hook takes no fee and holds no pool currency beyond settlement it performs itself
- Swap behaviour
- No swap callbacks.
- Liquidity behaviour
- afterAddLiquidity and afterRemoveLiquidity are enabled and are view functions that only validate the position state; liquidity is added and removed via the hook's addLiquidity and removeLiquidity functions, which move tokens through the pool manager during unlockCallback.
- Fee behaviour
- Uses the pool's static fee; no fee is taken or shared by the hook, and no return deltas are enabled.
- Owner & admin controls
- Ownable: the owner can call initializePool. Token-level actions are gated by NotTokenOwner and NotCreator checks. No pause, upgrade proxy or parameter setter was identified in the ABI.
Enabled Uniswap v4 callbacks
afterAddLiquidity, afterRemoveLiquidity
afterAddLiquidity: records or validates a launched position after liquidity is added. afterRemoveLiquidity: validates and finalises a position after liquidity is removed.
Security & trust assessment
Risk level: medium (verified source, medium confidence).
Who controls it: The owner controls pool initialisation, and token creators control their own positions; no upgrade or fee-change path was found in the decoded ABI.
Risk to user funds: The hook can hold and move pool funds during add and remove liquidity via the unlock flow, so user liquidity depends on correct delta settlement, though no direct fund seizure path was identified.
Security findings
- [medium] Hook moves currency during liquidity callbacks: The hook calls the pool manager to settle and take currency in unlockCallback, and its tokenised positions depend on correct accounting. Errors such as ExpectedOwedDelta and UnexpectedCurrency0Delta show the flow is delta-sensitive, so mismatched settlement could strand funds.
- [low] Owner can initialize pools: initializePool is restricted to the owner, so the owner decides which tokens get a hook-backed pool, an operational centralisation point.
- [info] No return deltas enabled: Neither after-callback is paired with a RETURNS_DELTA flag in the address permissions, so the hook cannot take a cut of swaps or liquidity deltas.
Contract details
- Verified source
- Yes (LauncherHook)
- Compiler
- solc 0.8.26+commit.8a97fa7a
- Bytecode size
- 9,073 bytes
- Upgradeable proxy
- No
- Detected patterns
- erc20, launchpad, moves-currency, ownable, self-unlock
Pools using LauncherHook
- ETH / SWOLF (0.00% fee) — 24h volume $144, TVL $0, 4 swaps today