Launchpad hook on Ink

Uniswap v4 Hook Contract 0x85ab4f352fba1064fcaadf875a26a19475d660c0 on Ink · Launchpad

Volume (24h)
$4.75K
Value locked (TVL)
$0.01
All-time volume
$4.75K
Pools using this hook
1
Swaps (24h)
60 (30 traders)
Total swaps
60

What it does

A launchpad-style hook that applies a dynamic, anti-snipe fee to early buys in newly created pools, with whitelist and tax controls.

How it works step by step

  • Sets a dynamic LP fee per pool via currentFee and updateDynamicLPFee on the pool manager.
  • Applies elevated snipe fees to buys during an initial MAX_SNIPE_DURATION window, capped by MAX_SNIPE_FEE.
  • Checks per-pool whitelist membership (whitelisted mapping) and buy-window limits (MAX_BUY_WINDOW).
  • Tracks per-pool guards and taxes in storage mappings, updated on registration and swaps.
  • Reserves a creator buy allocation (CREATOR_BUY) and a MAX_WHITELIST cap for launch participants.
  • Restricts privileged calls to a configured launchpad address (NotLaunchpad).
Swap behaviour
beforeSwap computes a dynamic fee (currentFee) with snipe and tax limits and can reject buys outside the whitelist or buy window; afterSwap updates guard state.
Liquidity behaviour
beforeAddLiquidity, afterAddLiquidity, beforeRemoveLiquidity and afterRemoveLiquidity are present in the dispatch table with signatures, but their bodies were not confirmed to implement custom logic; treat as pass-through or checks only.
Fee behaviour
Dynamic fee via currentFee(bytes32,bool) and a BASE_FEE, MAX_SNIPE_FEE, MAX_TAX constant set; the hook calls updateDynamicLPFee on the pool manager. Fees appear to be higher for early snipe buys during a MAX_SNIPE_DURATION window and bounded by MAX_BUY_WINDOW and taxes(bytes32) per pool.
Owner & admin controls
No owner or admin setter selectors are dispatched. The only state-changing function is 0xf12c7d22 (nonpayable, 14 uint256 args plus a uint256 array), which appears to write registration, guard, tax and whitelist mappings; its caller authorization cannot be determined from bytecode alone. The hook references a launchpad() getter and a NotLaunchpad error, suggesting the launchpad address gates privileged calls.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeSwap, afterSwap

beforeInitialize: registers a pool or token configuration when a pool is created. beforeSwap: enforces snipe fees, whitelist checks and buy-window limits and returns the dynamic fee. afterSwap: updates guard or tax state after each swap.

Security & trust assessment

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

Who controls it: A privileged launchpad address appears to control registration and guard configuration. Its compromise or misconfiguration could change fees or whitelist status for pools it manages, but the exact set of privileged setters could not be confirmed.

Risk to user funds: The hook can influence swap output through fees charged via the dynamic LP fee and can revert swaps through whitelist or buy-window checks. It does not appear to custody pool tokens directly from the decoded selectors.

Security findings

  • [info] Access control unverified: Only launchpad-gated mutation is inferred from NotLaunchpad error and launchpad() getter; no direct setter selectors were decoded.
  • [medium] Unverified state-writing entry point: Selector 0xf12c7d22 is a nonpayable state writer taking a dynamic array, and its access check could not be confirmed, so it is a potential way to alter guard, tax or whitelist state.
  • [low] Dynamic fee parameters are mutable: Fee logic depends on guard and tax mappings written through 0xf12c7d22; mis-set values could impose high fees on swaps, though MAX_TAX and MAX_SNIPE_FEE caps are present.

Contract details

Verified source
No
Bytecode size
5,488 bytes
Upgradeable proxy
No
Detected patterns
dynamic-fee

Pools using Launchpad hook