LaunchGuardHook on Base

Uniswap v4 Hook Contract 0x73669cea70473f28af31fd1e7750e51dcfe5ea20 on Base · Launchpad · Verified contract

Volume (24h)
$522
Value locked (TVL)
$17.71K
All-time volume
$2.15M
Pools using this hook
21
Swaps (24h)
6 (4 traders)
Total swaps
7,834

What it does

A launch-guard hook that locks a token's three initial liquidity positions into a Uniswap v4 pool so they can only be seeded once and cannot be withdrawn, while letting the locker collect fees.

How it works step by step

  • Authenticates pool initialization against a binding made by the factory, including the sqrt price and locker address.
  • Allows exactly three liquidity additions per pool, each matching a pre-derived immutable tick range and liquidity amount, performed only by the registered locker.
  • Seals the pool once all three positions are added, after which the binding is final.
  • Permits only zero-delta liquidity modifications after sealing, which collects fees without removing principal.
  • Rejects donations and all swap and post-liquidity callbacks outright.
Swap behaviour
No swap callbacks.
Liquidity behaviour
Liquidity can only be added once per position, and only by the registered locker, using the three pre-derived immutable tick ranges and exact liquidity amounts. Removal is allowed only after sealing, and only with zero liquidityDelta, which is the fee-collection path; any non-zero removal reverts.
Fee behaviour
The hook does not set or take fees. Pool LP fee is validated at bind time to lie between 2 and 10 percent (MIN_LP_FEE_PIPS 20000, MAX_LP_FEE_PIPS 100000). Fee accounting for creators and platform is performed in the factory and locker, not by this hook.
Owner & admin controls
No owner or admin role in the hook itself. Only the factory can call bind and seal; the factory is set immutably in the constructor, so no upgrade or pause path is present in the hook.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeAddLiquidity, beforeRemoveLiquidity, beforeDonate

beforeInitialize: verifies the pool is initialized by the factory with the bound sqrt price. beforeAddLiquidity: enforces the locker-only, position-matched, one-time seeding of the three launch positions. beforeRemoveLiquidity: permits only zero-delta fee collection after seal. beforeDonate: always reverts. All other callbacks are declared but revert with CallbackDisabled.

Security & trust assessment

Risk level: low (verified source, high confidence).

Who controls it: No admin key exists on the hook. Privileged control rests with the immutable factory address, which alone can bind launch parameters and seal a pool. Trust is therefore placed in the factory contract and its deployment rather than in a hook owner.

Risk to user funds: The hook itself holds no tokens and cannot move funds; it only gates liquidity additions and fee-only removals. Users cannot withdraw principal from seeded positions, and LPs depend on the factory and locker for accounting. The hook cannot block swaps because it has no swap callback.

Security findings

  • [info] Permanently locked launch liquidity: Liquidity removal is blocked by design: non-zero liquidityDelta reverts, so seeded liquidity is effectively locked. Only fee collection (zero delta) is allowed after sealing.
  • [info] Swap path not touched by hook: Donations and afterSwap/afterAddLiquidity/afterRemoveLiquidity/afterInitialize/afterDonate all revert with CallbackDisabled, and beforeSwap is disabled, so the hook does not sit in the swap path.
  • [medium] Fee and custody logic lives in other contracts: Creator and platform fee splits, the locker and conversion routing are handled by contracts outside this hook (the factory and locker). Correctness of those components was not evaluated here and determines most fee-related risk.
  • [low] Locker is trusted at bind time: The hook validates positions against the factory-supplied binding and immutable geometry, which limits the impact of a malicious locker, though the locker address is still set by the factory at bind time.

Contract details

Verified source
Yes (LaunchGuardHook)
Compiler
solc 0.8.26+commit.8a97fa7a
Bytecode size
4,972 bytes
Upgradeable proxy
No
Detected patterns
launchpad

Pools using LaunchGuardHook