LaunchHook on Base

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

Volume (24h)
$0
Value locked (TVL)
$0
All-time volume
$0
Pools using this hook
1
Swaps (24h)
0 (0 traders)
Total swaps
0

What it does

During the first minutes after a coin launches, ordinary buyers and sellers pay a fee that starts high and falls to the coin's chosen 1% or 3% rate, while the launcher's own first buy always pays only the chosen rate.

How it works step by step

  • Sets the LP fee on every swap of a factory-opened pool, overriding the pool's stored fee via the override flag returned from beforeSwap
  • Pays a time-decaying opening fee: a linear fall from startFee at open to the coin's chosen fee (FEE_LOW 1% or FEE_HIGH 3%) over a fixed window in seconds
  • Exempts the factory's own swap (the launcher's first buy) from the opening fee, charging only the chosen fee
  • Refuses to initialize any pool not opened by the factory that deployed it (beforeInitialize requires sender == factory)
  • Blocks liquidity additions by anyone other than the factory while the opening fee window is still running
  • Records each pool's chosen fee and open timestamp once through register(), callable only by the factory
Swap behaviour
Each swap by a non-factory address pays a fee equal to the chosen fee plus a linearly decreasing premium: at open it pays startFee, and it reaches the chosen fee once the window elapses. Swaps by the factory itself always pay only the chosen fee. The hook returns zero delta, so swap amounts are untouched; the fee is charged as an LP fee and accrues to pool liquidity.
Liquidity behaviour
Adding liquidity is blocked for everyone except the factory while the opening window is active; after the window, anyone can add liquidity. The hook has no remove-liquidity callback, so removals are never restricted or altered by the hook.
Fee behaviour
Fees are set dynamically per swap by currentFee(): startFee at opening, falling linearly to the coin's chosen fee (1% or 3%) over the immutable window, then flat at the chosen fee. The factory's own swaps pay the chosen fee directly. The fee is an LP fee paid to pool liquidity, not to the hook.
Owner & admin controls
No owner, no setter and no pause. startFee and window are immutable; the chosen fee and open time per pool are written once by the factory before the pool is initialized. The factory address is immutable and fixed at construction.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeAddLiquidity, beforeSwap

beforeInitialize restricts pool creation to the factory. beforeAddLiquidity blocks non-factory liquidity additions during the opening window. beforeSwap overrides the swap fee with the time-decayed or chosen fee. No return-delta or after-callbacks are enabled.

Security & trust assessment

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

Who controls it: No privileged key exists in the hook itself. Control rests with the immutable factory, which alone can register pools and open them; the factory's logic, which is outside this contract, is the effective trust point.

Risk to user funds: The hook cannot hold, move or block user principal: it returns zero delta, never touches the pool manager's balances and has no removal restriction. Traders are exposed only to the fee they pay, which is elevated early in the window.

Security findings

  • [info] No return-delta permission: beforeSwapReturnDelta and the other return-delta flags are false, so the hook cannot take or move swap or liquidity tokens.
  • [low] Opening-window liquidity lock: During the window, beforeAddLiquidity reverts for every non-factory address, so outside LPs cannot join until it expires; this is intentional but limits participation.
  • [low] Factory trust dependency: register() and pool initialization depend entirely on the immutable factory address; a flawed factory could register arbitrary fees, though the constructor bounds startFee and the chosen fees are fixed constants.
  • [info] Immutable parameters: startFee and window are immutable and the constructor enforces startFee between FEE_HIGH and MAX_LP_FEE and a nonzero window, so the decay can only fall.

Contract details

Verified source
Yes (LaunchHook)
Compiler
solc 0.8.26+commit.8a97fa7a
Bytecode size
2,691 bytes
Upgradeable proxy
No
Detected patterns
launchpad

Pools using LaunchHook