Launchpad hook on Ethereum

Uniswap v4 Hook Contract 0xce80e29fcb8d4b82c3caa97111c62a09fd079fcc on Ethereum · Launchpad

Volume (24h)
$7.75K
Value locked (TVL)
$493
All-time volume
$7.75K
Pools using this hook
1
Swaps (24h)
59 (31 traders)
Total swaps
59

What it does

This launchpad hook charges the launch-window swap fees and creator and platform shares on pool trades, and can restrict or cap buying during the launch period, while LPs add and remove liquidity through its accounting.

How it works step by step

  • Acts as a Uniswap v4 hook for a token launchpad, initializing pools with a launch configuration (fee profile, launch window, creator and platform shares) in afterInitialize.
  • Gates swaps through beforeSwap and records price observations in afterSwap, with an on-chain observation ring buffer (observe, latestObservation, observationCount).
  • Uses return deltas (beforeSwapReturnDelta and afterSwapReturnDelta) and self-unlock via unlockCallback to take or settle currency inside the pool manager, so the hook can alter swap amounts and move tokens.
  • Tracks per-pool fees and governance (pendingFees, governanceOf, poolConfig, positions) and accrues platform and creator shares that can be claimed through claim, claimPlatform and collect.
  • Lets a launcher seed liquidity with seedLiquidity and enforces buyer limits and no-trade periods during the launch window, as suggested by the BuyerLimitExceeded and NoTrade error selectors.
  • Gates liquidity additions and removals through beforeAddLiquidity, afterAddLiquidity, beforeRemoveLiquidity and afterRemoveLiquidity, and has a beforeDonate hook.
Swap behaviour
beforeSwap is gated during the launch window (may revert with NoTrade or BuyerLimitExceeded) and can return a delta; afterSwap records observations and can take a share of the swap via return delta and self-unlock. Exact fee amounts cannot be fully determined without source.
Liquidity behaviour
Liquidity add and remove calls have before and after callbacks that check the position and update accounting (positions mapping); seedLiquidity lets a launcher place initial liquidity into the pool.
Fee behaviour
Fees are read from a FEE_PROFILE and a MAX_FEE_CAP with pendingFees accrued per pool; creator and platform shares are set by DEFAULT_CREATOR_SHARE_BPS, CREATOR_SHARE and PLATFORM_FEE_BPS and are claimable by the creator, the platform recipient and agents (AGENT_SHARE).
Owner & admin controls
A launcher address (NotLauncher error) can seed liquidity and configure launches, a protocol treasury and platform recipient receive platform fees, and a creator recipient and governance value are set per pool. An agent registry exists. No upgrade or pause functions were identified from the decoded selectors, but a proxy cannot be ruled out from bytecode alone.

Enabled Uniswap v4 callbacks

afterInitialize, beforeAddLiquidity, afterAddLiquidity, beforeRemoveLiquidity, afterRemoveLiquidity, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta

afterInitialize sets up the launch configuration per pool; beforeAddLiquidity and beforeRemoveLiquidity gate liquidity changes; afterAddLiquidity and afterRemoveLiquidity update accounting; beforeSwap gates trades; afterSwap records observations and fees; beforeSwapReturnDelta and afterSwapReturnDelta let the hook take a share of swap amounts; beforeDonate and afterDonate are present for donations.

Security & trust assessment

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

Who controls it: The launcher and any owner-like role can configure launch parameters and seed liquidity, and the platform and creator recipients control where accrued fees go.

Risk to user funds: The hook can take currency from swaps through return deltas and holds accrued fees and positions in its own storage, so user trades and LP positions depend on its accounting being correct.

Security findings

  • [medium] Return deltas and self-unlock move pool funds: beforeSwapReturnDelta and afterSwapReturnDelta are enabled and the hook calls unlock and take, so it can take currency from swaps and alter the amounts users receive.
  • [medium] Launch-window trading restrictions: NoTrade and BuyerLimitExceeded errors indicate swaps can be blocked or capped during the launch window, which can prevent users from trading.
  • [medium] Privileged launcher role: A launcher address controls liquidity seeding and launch setup (NotLauncher gate); misconfiguration or key compromise could affect pool parameters.
  • [info] Unverified source: No verified source is available, so exact fee math, admin powers and upgradeability are inferred from decoded selectors and storage only.

Contract details

Verified source
No
Bytecode size
22,956 bytes
Upgradeable proxy
No
Detected patterns
erc20, launchpad, moves-currency, oracle, return-delta, self-unlock

Pools using Launchpad hook