Launchpad hook on Ethereum

Uniswap v4 Hook Contract 0xb4b6414b95018cd8e6103c5987ee6b7ed801e0cc on Ethereum · Launchpad

Volume (24h)
$0
Value locked (TVL)
$0
All-time volume
$0
Pools using this hook
1
Swaps (24h)
4 (2 traders)
Total swaps
4

What it does

This hook takes a fixed fee from each swap in the pool it serves and uses that fee for operations, a target recipient and buybacks that burn the launched token, with fee direction per trade not confirmed from bytecode alone.

How it works step by step

  • Initializes a single pool in beforeInitialize and records the pool key and pool id in storage.
  • On each swap (beforeSwap), takes a fee in the form of a return delta and accrues it as pending ETH or tokens.
  • Tracks pending amounts for an operations wallet and a target, and flushes them through the pool manager unlock flow (unlockCallback and flush).
  • Runs a buyback mechanism: once accumulated ETH crosses a threshold, it spends ETH to buy and burn the launched token (totalTokensBurned, totalEthSpentOnBuyback).
  • Splits fees by configured basis points (FEE_BPS, OPS_BPS, TARGET_BPS, BUYBACK_BPS) against thresholds (BUYBACK_THRESHOLD, TARGET_THRESHOLD).
  • Restricts pool initialization to a launcher address (NotLauncher error selector present).
Swap behaviour
beforeSwap and afterSwap are both enabled with return deltas, so the hook can take a cut of swap amounts on each swap and may move currency during swaps; the exact per-direction rule cannot be confirmed from decoded bytecode alone.
Liquidity behaviour
beforeAddLiquidity, beforeRemoveLiquidity, afterAddLiquidity and afterRemoveLiquidity selectors are present in the dispatch table, but the callback permissions are not enabled for liquidity, so liquidity changes are not gated or altered by the hook.
Fee behaviour
A fee in basis points (FEE_BPS) is taken on swaps as a hook return delta and split between ops, target, and buyback accumulators; the pool itself is initialized as a dynamic-fee pool in beforeInitialize based on the heuristic tag.
Owner & admin controls
No owner or pause function selectors were identified in the dispatch table. Launcher-gated initialization is present. Parameter updates were not identified.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta

beforeInitialize: validates and records the pool key on the first initialization. beforeSwap: computes the fee and applies a before-swap return delta. afterSwap: accrues fee amounts and may trigger flushing or buyback steps. beforeSwapReturnDelta and afterSwapReturnDelta: allow the hook to take currency from swaps as its fee.

Security & trust assessment

Risk level: medium, estimated (decoded bytecode, medium confidence).

Who controls it: Pool initialization depends on the launcher address; no owner or upgrade path was observed, so the main centralization risk is the launcher choosing pool parameters at setup.

Risk to user funds: The hook takes currency from swaps and holds pending ETH and token balances before flushing them to ops, target and buyback recipients, so it does hold user-generated fee funds in transit.

Security findings

  • [medium] Return-delta fee capture on swaps: beforeSwapReturnDelta and afterSwapReturnDelta are enabled, so the hook takes a share of every swap's currency; the hook's share is fixed by bytecode constants (FEE_BPS) with no evidence of an owner setter.
  • [medium] Buyback spends accumulated ETH: Once accumulated ETH crosses BUYBACK_THRESHOLD the hook spends it buying and burning tokens, which trades against the pool and can move price on pool users.
  • [low] Self-unlock flow: The hook calls unlock and implements unlockCallback to settle and take currency, so the correctness of its accounting in that flow is critical and was not verified against source.
  • [info] Launcher-gated initialization: Pool initialization is restricted to a launcher address (NotLauncher error), meaning a single privileged caller controls which pool the hook serves.

Contract details

Verified source
No
Bytecode size
8,269 bytes
Upgradeable proxy
No
Detected patterns
dynamic-fee, launchpad, moves-currency, return-delta, self-unlock

Pools using Launchpad hook