Launchpad hook on Ink

Uniswap v4 Hook Contract 0x8052f050e71b7e6e1947e30486f8ee23427f20c0 on Ink · Launchpad

Volume (24h)
$1.13K
Value locked (TVL)
$4.83
All-time volume
$1.13K
Pools using this hook
1
Swaps (24h)
6 (3 traders)
Total swaps
6

What it does

A launchpad-oriented dynamic fee hook that appears to charge elevated fees on early snipe trades in new pools and then falls back to a base fee.

How it works step by step

  • Is registered for beforeInitialize, beforeSwap and afterSwap callbacks on Uniswap v4
  • Stores per-pool guard state in a uint64 mapping keyed by pool id
  • Computes a dynamic LP fee in beforeSwap bounded by BASE_FEE and MAX_SNIPE_FEE
  • Pushes the computed fee to the pool through updateDynamicLPFee
  • Restricts certain setup paths to a configured launchpad address (NotLaunchpad)
  • Exposes CREATOR_BUY and FLAGS constants that suggest creator-buy allocation logic
Swap behaviour
beforeSwap computes a dynamic fee (via currentFee and the BASE_FEE and MAX_SNIPE_FEE constants) and updateDynamicLPFee applies it to the pool; afterSwap updates the guard state stored in the hook.
Liquidity behaviour
Has beforeAddLiquidity, afterAddLiquidity, beforeRemoveLiquidity and afterRemoveLiquidity selectors, but the decoded bytecode gives no detail on what they enforce.
Fee behaviour
Sets a dynamic LP fee through updateDynamicLPFee and exposes currentFee(bytes32,bool) with a BASE_FEE and a MAX_SNIPE_FEE constant, suggesting an elevated fee for early snipe trades on a new launch that decays toward the base fee. The exact decay formula cannot be confirmed without source.
Owner & admin controls
No admin controls found. The selectors decoded include launchpad(), poolManager(), BASE_FEE(), MAX_SNIPE_FEE() and CREATOR_BUY() as views, and a NotLaunchpad() error suggests a launchpad address gates some function, but no owner or setter selector was identified.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeSwap, afterSwap

beforeInitialize is used to set up pool state at pool creation. beforeSwap is used to compute the dynamic fee for each swap. afterSwap is used to update guard or snipe state after each swap.

Security & trust assessment

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

Who controls it: The launchpad address is referenced as a gate (NotLaunchpad error), so whoever controls that address or the initialization path effectively controls which pools are configured and their fee schedule. No owner key was found.

Risk to user funds: The hook can alter the fee charged on every swap in its pool via updateDynamicLPFee, which directly affects trader proceeds and LP fee income. It does not appear to hold tokens itself, and no return-delta or token-taking permission is enabled, but a high fee setting would penalise traders. The exact bounds on fees could not be verified from bytecode.

Security findings

  • [medium] Hook controls swap fees: Permissions are beforeInitialize, beforeSwap and afterSwap, and the hook overrides fees dynamically through updateDynamicLPFee, so the fee charged to traders is determined by this contract.
  • [info] Stateful snipe guard: The hook writes to storage slot 0 (mapping uint256 to uint64) during beforeInitialize and afterSwap and reads it during fee computation, which indicates per-pool or per-block snipe guards that the hook itself maintains.
  • [info] Launchpad-gated initialization: The launchpad() getter and NotLaunchpad() error indicate that a privileged launchpad caller is required for certain operations; the bytecode alone cannot establish whether that caller is an EOA, a multisig, or a contract with upgrade rights.

Contract details

Verified source
No
Bytecode size
3,625 bytes
Upgradeable proxy
No
Detected patterns
dynamic-fee

Pools using Launchpad hook