Launchpad hook on Ethereum

Uniswap v4 Hook Contract 0xadc0abdce5e954bf467e77146fd4b2b5966d60c4 on Ethereum · Launchpad

Volume (24h)
$3.24K
Value locked (TVL)
$0
All-time volume
$3.24K
Pools using this hook
1
Swaps (24h)
27 (20 traders)
Total swaps
27

What it does

This hook is a launchpad-style owned hook that takes a cut of swap flows through an afterSwap return delta, so trades in its pool may receive less than the standard pool quote, while the pool's base fee is otherwise unchanged.

How it works step by step

  • Owned hook that is initialized for a specific pool key and records that pool's id and key in storage during beforeInitialize
  • Uses a launcher/tunnel pattern: a stored address (tunnel) is referenced by the afterSwap path and a launcher-restricted revert (NotLauncher) exists in the bytecode
  • Exposes a poolKey, poolId, and getHookPermissions view surface so external contracts can read the pool configuration
  • afterSwap is nonpayable and, with afterSwapReturnDelta enabled, can take a currency delta from the swapper or the pool during the swap settlement
  • Calls poolManager take(currency, recipient, amount) to move tokens out of the pool manager, indicating it moves currency rather than only observing swaps
  • Ownable with renounceOwnership and transferOwnership; owner can be set to zero address via renounce
Swap behaviour
beforeSwap is exposed but its gating logic cannot be fully determined from the decoded bytecode; afterSwap is nonpayable and, through the return delta, can take a share of the swap output and forward it via poolManager.take, so swappers may receive less than the pool quote.
Liquidity behaviour
beforeAddLiquidity, afterAddLiquidity, beforeRemoveLiquidity and afterRemoveLiquidity selectors are present as views, suggesting pass-through or permission-only handling; no state-changing liquidity logic was identified from the decoded bytecode.
Fee behaviour
Uses the pool's static fee at the pool level; the hook does not appear to set a dynamic LP fee, but afterSwapReturnDelta can take a hook-level cut of swap amounts that behaves like an extra fee, its size not determinable from bytecode alone.
Owner & admin controls
Owner (single address in slot 0) can transfer or renounce ownership; the owner can also call the launcher-related setter at selector 0x624f71ad which writes the tunnel/launcher address, so the owner controls which address is trusted for the launch path.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeSwap, afterSwap, afterSwapReturnDelta

beforeInitialize records pool key and id during pool creation; beforeSwap is enabled for swap-time checks; afterSwap is enabled and can take tokens; afterSwapReturnDelta lets the hook adjust the amounts settled with the pool manager.

Security & trust assessment

Risk level: high, estimated (decoded bytecode, low confidence).

Who controls it: The owner can change the tunnel/launcher address and transfer or renounce ownership; a malicious or compromised owner could redirect hook-taken currency or alter which callers are permitted.

Risk to user funds: The hook can take currency from swaps through the return delta and poolManager take call, so swappers and LPs exposed to this pool may have value diverted; the exact amount and recipient cannot be verified without source.

Security findings

  • [high] Hook takes currency via return delta: afterSwapReturnDelta is enabled and afterSwap calls poolManager take(currency, recipient, amount), so the hook can extract tokens from swap flows; the recipient and amount logic are not visible in decoded form.
  • [medium] Owner-set tunnel/launcher address: Storage slot 1 is written by selector 0x624f71ad, and afterSwap reads that slot; the owner can repoint the trusted address, potentially redirecting taken funds.
  • [medium] Single-owner control with renounce: Ownable pattern with transferOwnership and renounceOwnership; a compromised owner key could change the launcher or reroute value.
  • [info] Gating logic unclear: beforeSwap and launcher checks exist but full branching cannot be confirmed from decoded bytecode, so blocking behaviour is uncertain.

Contract details

Verified source
No
Bytecode size
4,950 bytes
Upgradeable proxy
No
Detected patterns
launchpad, moves-currency, ownable, return-delta

Pools using Launchpad hook