Launchpad hook on Ethereum

Uniswap v4 Hook Contract 0xa28206f43041ad9d6ad0c6a2b1e175b0337720cc on Ethereum · Launchpad

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

What it does

This launchpad hook takes a fee from swaps through return-delta accounting and routes proceeds to an owner and reserve, but which trades pay more or less and in which direction could not be confirmed from the decoded bytecode.

How it works step by step

  • Launches a token against a Uniswap v4 pool and tracks an opening fully diluted valuation (openingFdvWei) and an opening tick (OPEN_TICK) set when the pool is initialized
  • Uses beforeSwap and afterSwap with return deltas, so the hook can take a share of swap amounts and route it to internal accounting rather than the pool
  • Accumulates fee amounts into owner-owed and reserve buckets (ownerOwed, ownerPaid, toReserve, RESERVE) and settles them through flush() and take() calls to the pool manager
  • Tracks a spot price, a floor and an opened flag, indicating a staged opening where trading and fee routing depend on the launch state
  • Gates liquidity additions and removals and donations through before-callbacks that exist in the dispatch table but whose behaviour cannot be fully confirmed from decoded bytecode
Swap behaviour
beforeSwap and afterSwap are both enabled with return deltas, so the hook can adjust the amounts a swap settles and take a portion of the flow into its own accounting. Which trades pay more or less, and in which direction, cannot be determined from the decoded bytecode alone.
Liquidity behaviour
beforeAddLiquidity, afterAddLiquidity, beforeRemoveLiquidity and afterRemoveLiquidity are present in the dispatch table, so liquidity changes are routed through the hook, but the exact gating or accounting logic is not confirmed.
Fee behaviour
A FEE_PIPS and PIPS constant pair and ownerOwed/ownerPaid/toReserve accounting indicate a hook-level fee is taken from swaps and split between an owner and a reserve. The fee rate and split logic are not confirmed from the bytecode.
Owner & admin controls
An OWNER() getter exists and ownerOwed/ownerPaid track owner proceeds, so the owner appears to control or receive fee revenue. No pause, upgrade or parameter-setter selectors were identified among the dispatched functions.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta

beforeInitialize records the pool's opening state; beforeSwap and afterSwap take or adjust swap amounts through return deltas; beforeSwapReturnDelta and afterSwapReturnDelta allow the hook to move currency; liquidity and donate callbacks are present in the dispatch table but their role is not confirmed.

Security & trust assessment

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

Who controls it: The owner appears to receive fee proceeds and may control the reserve and owner-owed accounting; the exact parameter-setting powers could not be verified.

Risk to user funds: The hook can hold and move swap currency through return deltas and take/flush calls, so swap amounts and fee proceeds pass through hook-controlled accounting.

Security findings

  • [medium] Return-delta fee capture on swaps: beforeSwapReturnDelta and afterSwapReturnDelta are enabled and the bytecode calls take and flush on the pool manager, so the hook can take a share of user swap amounts before they settle.
  • [medium] Owner-controlled proceeds: OWNER(), ownerOwed and ownerPaid indicate the owner accrues and withdraws fee revenue; the withdrawal conditions and any fee-rate setter could not be confirmed from decoded bytecode.
  • [info] Liquidity and donate gating not confirmed: Before-add, before-remove and before-donate callbacks are dispatched, but whether they can revert or block liquidity actions could not be determined without source.
  • [info] Staged opening state: An opened flag and openingFdvWei/OPEN_TICK constants suggest trading behaviour may change before and after launch; the transition logic is not confirmed.

Contract details

Verified source
No
Bytecode size
7,364 bytes
Upgradeable proxy
No
Detected patterns
erc20, launchpad, moves-currency, return-delta

Pools using Launchpad hook