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
- EMBOW / VVV (3.00% fee) — 24h volume $522, TVL $16.14K, 6 swaps today
- VCAT / VVV (3.00% fee) — 24h volume $0, TVL $966, 0 swaps today
- VVV / ECAT (2.00% fee) — 24h volume $0, TVL $343, 0 swaps today
- AI / VVV (4.00% fee) — 24h volume $0, TVL $126, 0 swaps today
- VDOG / VVV (2.00% fee) — 24h volume $0, TVL $31, 0 swaps today
- VVV / VVV (3.00% fee) — 24h volume $0, TVL $26, 0 swaps today
- VVV / VVVCAT (3.00% fee) — 24h volume $0, TVL $13, 0 swaps today
- ETH / SMOKE (2.00% fee) — 24h volume $0, TVL $0.73, 0 swaps today
- ETH / JEVLATEST (6.00% fee) — 24h volume $0, TVL $32, 0 swaps today
- KEYS / VVV (4.00% fee) — 24h volume $0, TVL $11, 0 swaps today
- SMOKE / cbZEC (3.00% fee) — 24h volume $0, TVL $0.05, 0 swaps today
- ETH / MOLTFINANC (3.00% fee) — 24h volume $0, TVL $3.94, 0 swaps today
- VCAT / VVV (3.00% fee) — 24h volume $0, TVL $3.20, 0 swaps today
- SMOKE / AAPLc (2.00% fee) — 24h volume $0, TVL $0.10, 0 swaps today
- EI / VVV (4.00% fee) — 24h volume $0, TVL $7.25, 0 swaps today
- NOCK / SMOKE (2.00% fee) — 24h volume $0, TVL $0.03, 0 swaps today
- SMOKE / NOCK (2.00% fee) — 24h volume $0, TVL $0.02, 0 swaps today
- NOCK / SMOKE (2.00% fee) — 24h volume $0, TVL $1.23, 0 swaps today
- VVV / JEV (2.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- VVV / CRR (4.00% fee) — 24h volume $0, TVL $0, 0 swaps today