UniswapV4MulticurveInitializerHook on Base
Uniswap v4 Hook Contract 0x892d3c2b4abeaaf67d52a7b29783e2161b7cad40 on Base · Launchpad · Verified contract
- Volume (24h)
- $56
- Value locked (TVL)
- $1.04M
- All-time volume
- $26.85M
- Pools using this hook
- 39,750
- Swaps (24h)
- 11 (7 traders)
- Total swaps
- 122,149
What it does
A restricting hook for Doppler Multicurve launch pools that only lets the pool's initializer contract create the pool and add liquidity, while emitting events for swaps and liquidity changes.
How it works step by step
- Reverts beforeInitialize unless the sender is the immutable INITIALIZER (the Uniswap V4 Multicurve Initializer), so only that contract can create pools with this hook.
- Reverts beforeAddLiquidity unless the sender is the INITIALIZER, so no third party can add liquidity to these pools.
- Emits a ModifyLiquidity event after liquidity is added or removed, carrying the pool key and params.
- Emits a Swap event after every swap with the sender, pool key, pool id, swap params, both amounts and hook data.
- Always returns zero deltas, so it does not take or redirect any tokens.
- Swap behaviour
- Only afterSwap is used. It emits a Swap event with the swap parameters and resulting amounts, then returns a zero hook delta. Swaps are never blocked or repriced by this hook.
- Liquidity behaviour
- Adding liquidity is restricted: beforeAddLiquidity reverts unless the sender is the INITIALIZER. After add and after remove, the hook emits a ModifyLiquidity event and returns a zero delta. There is no beforeRemoveLiquidity check, but only the initializer holds the positions it mints.
- Fee behaviour
- Uses the pool's static fee, which is chosen at pool creation by the initializer. The hook itself takes no fee. Fees accrued on the positions are handled by the separate initializer contract, for example beneficiary distribution or the Airlock migration.
- Owner & admin controls
- No admin controls found. The hook has no owner, pause, or upgrade logic, and INITIALIZER is immutable, set in the constructor.
Enabled Uniswap v4 callbacks
beforeInitialize, beforeAddLiquidity, afterAddLiquidity, afterRemoveLiquidity, afterSwap
beforeInitialize restricts pool creation to the INITIALIZER. beforeAddLiquidity restricts liquidity additions to the INITIALIZER. afterAddLiquidity emits a ModifyLiquidity event. afterRemoveLiquidity emits a ModifyLiquidity event. afterSwap emits a Swap event.
Security & trust assessment
Risk level: low (verified source, high confidence).
Who controls it: The hook has no privileged key. Any privileged control lies in the Airlock (owner sets module whitelist and collects protocol fees) and the initializer, which are outside this contract.
Risk to user funds: The hook holds no funds and has no state besides the immutable initializer address. It cannot move or block funds. It can only block liquidity additions from non-initializer senders and pool creation by others.
Security findings
- [info] Initializer-only pool creation and liquidity: beforeInitialize and beforeAddLiquidity revert with OnlyInitializer unless sender equals the immutable INITIALIZER. Only that contract can set up pools and add liquidity, which prevents third-party liquidity from altering the curve.
- [info] No return deltas and no fee changes: All delta-returning callbacks return zero (ZERO_DELTA and 0), and no return-delta permissions are enabled. The hook cannot take or redirect user tokens.
- [info] Immutable and non-upgradeable: The hook has no owner, no setters, and no proxy pattern. Behaviour is fixed at deployment.
- [low] Trust depends on the initializer and Airlock: Fund safety is determined by the UniswapV4MulticurveInitializer and Airlock, not by this hook. The Airlock owner can set module states and collect protocol fees, and unlocked pools can be migrated by anyone once the far tick is reached.
- [info] Event-only swap callback: afterSwap only emits an event, adding minor gas cost and no state change. It cannot revert a swap other than by out-of-gas.
Contract details
- Verified source
- Yes (UniswapV4MulticurveInitializerHook)
- Compiler
- solc 0.8.26+commit.8a97fa7a
- Bytecode size
- 3,011 bytes
- Upgradeable proxy
- No
Pools using UniswapV4MulticurveInitializerHook
- AVC / WETH (4.00% fee) — 24h volume $50, TVL $23.00K, 2 swaps today
- ETH / XX (2.00% fee) — 24h volume $5.40, TVL $0.04, 5 swaps today
- WETH / PRCOINMA (4.00% fee) — 24h volume $0.22, TVL $51, 1 swaps today
- WETH / SPORTS (3.00% fee) — 24h volume $0.11, TVL $43, 1 swaps today
- wtSPCX / ASTEROID (2.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- wtCOIN / MEME (1.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- SKELETON / tMIBBO (1.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- tMIBBO / Polybot (1.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- HABITATE / WETH (4.00% fee) — 24h volume $0, TVL $0.09, 0 swaps today
- tMIBBO / HUILO (1.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- MIBBO / HBot (1.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- SSH-R / wtCOIN (1.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- wtCOIN / testNanoStocks (Dynamic fee) — 24h volume $0, TVL $0, 0 swaps today
- SKLTN / MIBBO (1.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- MEME / wtCOIN (1.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- tMIBBO / GEM (1.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- WETH / KWOLFF (4.00% fee) — 24h volume $0, TVL $3.92, 0 swaps today
- WETH / PRRCVTEC (4.00% fee) — 24h volume $0, TVL $0.10, 0 swaps today
- wtCOIN / SSH-R (1.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- PRVORTEX / WETH (4.00% fee) — 24h volume $0, TVL $0.09, 0 swaps today