UniswapV4ScheduledMulticurveInitializerHook on Base
Uniswap v4 Hook Contract 0x3e342a06f9592459d75721d6956b570f02ef2dc0 on Base · Launchpad · Verified contract
- Volume (24h)
- $51
- Value locked (TVL)
- $65.73K
- All-time volume
- $25.15M
- Pools using this hook
- 17,252
- Swaps (24h)
- 8 (6 traders)
- Total swaps
- 109,186
What it does
A hook for Doppler multicurve launch pools that blocks all swaps until a per-pool scheduled start time, restricts initialization to the initializer contract, and emits Swap and ModifyLiquidity events without charging any fee.
How it works step by step
- Stores a startingTimeOf timestamp per pool, set by the initializer contract through setStartingTime when the pool is created.
- Reverts every swap with CannotSwapBeforeStartingTime until block.timestamp reaches the pool's starting time.
- Only lets the multicurve initializer initialize pools that use this hook (beforeInitialize checks sender == INITIALIZER).
- Allows liquidity to be added by anyone: the scheduled override of _beforeAddLiquidity returns the selector without the initializer check that the parent hook applies.
- Emits custom ModifyLiquidity events after liquidity is added or removed and a custom Swap event after each swap, for indexing.
- Swap behaviour
- beforeSwap requires block.timestamp >= startingTimeOf[poolId], otherwise it reverts with CannotSwapBeforeStartingTime. It returns a zero delta and no fee override. afterSwap only emits a Swap event with the sender, params, amounts and hookData, and returns a zero delta.
- Liquidity behaviour
- beforeAddLiquidity does no checks in this scheduled version, so any address can add liquidity. This differs from the parent hook, whose description says it restricts liquidity addition. afterAddLiquidity and afterRemoveLiquidity only emit ModifyLiquidity events and return zero deltas. There is no beforeRemoveLiquidity, so removals are never blocked by the hook.
- Fee behaviour
- Uses the pool's static fee. The hook does not override the LP fee, take fees or share fees. The beforeSwap fee override is 0 and no return-delta permissions are enabled. Fee sharing to beneficiaries is handled by the separate initializer contract, not by this hook.
- Owner & admin controls
- There is no owner, pause or upgrade mechanism. The only privileged function is setStartingTime, callable only by the immutable INITIALIZER address. It sets a pool's start time, and past values are clamped to the current block timestamp. How the initializer exposes this is not controllable by the hook itself.
Enabled Uniswap v4 callbacks
beforeInitialize, beforeAddLiquidity, afterAddLiquidity, afterRemoveLiquidity, beforeSwap, afterSwap
beforeInitialize restricts pool creation to the initializer contract. beforeAddLiquidity returns the selector without any check. afterAddLiquidity emits a ModifyLiquidity event. afterRemoveLiquidity emits a ModifyLiquidity event. beforeSwap enforces the scheduled start time. afterSwap emits a Swap event.
Security & trust assessment
Risk level: low (verified source, high confidence).
Who controls it: None at the hook level. The initializer contract, which is configured through the Airlock, decides each pool's start time at creation, so a launch creator could pick a late start time for a pool. After creation the hook offers no way to change the time.
Risk to user funds: The hook holds no funds and has no token transfers or return deltas. Its only effect on funds is that swaps revert before the starting time, which temporarily blocks trading in that pool. Liquidity removal is not blocked by the hook.
Security findings
- [info] Swaps gated by start time: _beforeSwap reverts until block.timestamp >= startingTimeOf[key.toId()]. The start time is a uint256 set at pool creation, so a far-future value would block swaps for that pool until then.
- [low] Liquidity addition not restricted: The scheduled hook overrides _beforeAddLiquidity to return the selector with no onlyInitializer check, unlike the parent hook. Third parties can add liquidity to launch pools, which differs from the parent contract's stated intent.
- [info] Start time set only by the initializer: setStartingTime is guarded by onlyInitializer(msg.sender) against the immutable INITIALIZER. The shown initializer calls it once during initialize, and the hook has no other setter.
- [info] No fee or delta manipulation: None of the return-delta permissions are enabled. beforeSwap returns ZERO_DELTA with fee 0 and afterSwap returns 0, so the hook cannot take tokens from swappers or LPs.
- [info] Not upgradeable: The hook is a plain contract with an immutable initializer and pool manager and no proxy or owner functions.
Contract details
- Verified source
- Yes (UniswapV4ScheduledMulticurveInitializerHook)
- Compiler
- solc 0.8.26+commit.8a97fa7a
- Bytecode size
- 3,315 bytes
- Upgradeable proxy
- No
Pools using UniswapV4ScheduledMulticurveInitializerHook
- WETH / CWC (1.20% fee) — 24h volume $48, TVL $355, 4 swaps today
- WETH / XRESEARCH (1.20% fee) — 24h volume $2.13, TVL $2.66K, 1 swaps today
- nubplus / FXH (10.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- FXH / NEYMO (10.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- VERID / AAPLc (0.30% fee) — 24h volume $0, TVL $13, 0 swaps today
- AAPLc / PPAP (0.30% fee) — 24h volume $0, TVL $26, 0 swaps today
- HAR / FXH (10.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- FXH / Kenz (10.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- WETH / GUILT (0.30% fee) — 24h volume $0, TVL $0.05, 0 swaps today
- SONYc / BILL (0.30% fee) — 24h volume $0, TVL $0, 0 swaps today
- WETH / FUBAL (0.30% fee) — 24h volume $0, TVL $0.02, 0 swaps today
- ALTR / FXH (10.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- AAPLc / 1234 (0.30% fee) — 24h volume $0, TVL $0.03, 0 swaps today
- APLITO / AAPLc (0.30% fee) — 24h volume $0, TVL $0.34, 0 swaps today
- WETH / SPACE (0.30% fee) — 24h volume $0, TVL <$0.01, 0 swaps today
- RG / FXH (10.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- FXH / BTCPIZZA (10.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- FXH / dieg (10.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- MINDGRID / FXH (10.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- FXH / NZBR (10.00% fee) — 24h volume $0, TVL $0, 0 swaps today