DropHook on BNB Chain
Uniswap v4 Hook Contract 0x37fec471082628c240e5cef59cb0ef50b86baa40 on BNB Chain · Launchpad · Verified contract
- Volume (24h)
- $0
- Value locked (TVL)
- $0
- All-time volume
- $0
- Pools using this hook
- 3
- Swaps (24h)
- 0 (0 traders)
- Total swaps
- 0
What it does
DropHook lets only the Drop launchpad create and seed pools, locks LP principal so liquidity can only be collected as fees, and periodically sweeps swap fees to the launchpad every 12 hours, while traders pay the pool's static fee with no extra charge from the hook.
This read was written for the hook 0xa945…aa40 on Base and reused here: the two share a code shape, so constants such as fees, owners and addresses can differ.
How it works step by step
- Acts as the Drop Protocol launch hook for Uniswap v4 pools; only the launchpad contract can initialize pools and add liquidity
- Records the initialization timestamp of each pool in collectedAt at beforeInitialize
- Blocks liquidity additions from anyone other than the launchpad, so each pool gets a single launch position
- Allows removeLiquidity only when liquidityDelta is zero, which effectively only collects accrued fees and never withdraws principal
- On afterSwap, if the pool has a nonzero LP fee and at least COLLECT_INTERVAL (12 hours) has elapsed since the last collection, calls the launchpad's collectSwapFees(key) and resets the timer
- Emits a DropSwap event with the swap deltas and the post-swap sqrtPriceX96 for indexing
- Swap behaviour
- Swaps are not altered; the hook only runs afterSwap, returns a zero int128 delta, and at most once per 12 hours for fee-bearing pools triggers collectSwapFees on the launchpad, so the swap's own fee is included in that collection. Traders pay the pool's configured LP fee and no extra hook fee is taken by the hook itself.
- Liquidity behaviour
- Adding liquidity is permitted only when the sender is the launchpad, and the launchpad does so only at launch. Removing liquidity is allowed only with liquidityDelta equal to zero (fee collection), so LP principal is locked and cannot be withdrawn through this hook.
- Fee behaviour
- The hook does not set a dynamic fee and does not take a return delta; the pool's static LP fee applies. Accrued LP fees are collected periodically through the launchpad via collectSwapFees, whose distribution logic is not present in the provided source (launchpad code is not included).
- Owner & admin controls
- No owner, pause, upgrade or parameter-change functions appear in the hook. The launchpad is an immutable address set to msg.sender at deployment and is the sole privileged actor; the launchpad's own controls are outside the provided source.
Enabled Uniswap v4 callbacks
beforeInitialize, beforeAddLiquidity, beforeRemoveLiquidity, afterSwap
beforeInitialize restricts pool creation to the launchpad and records the start time; beforeAddLiquidity restricts additions to the launchpad; beforeRemoveLiquidity permits only zero-delta fee collection; afterSwap triggers the periodic fee collection through the launchpad and emits DropSwap.
Security & trust assessment
Risk level: medium (verified source, high confidence).
Who controls it: The launchpad (immutable address) alone can initialize pools and add liquidity, and its collectSwapFees implementation controls where accrued fees go and whether swaps can revert; a compromised or malicious launchpad could redirect fees or DoS swaps.
Risk to user funds: The hook holds no tokens itself and takes no return deltas, so it cannot directly move trader funds. LP funds are locked by the zero-delta-only removal rule, and the launchpad controls the collected fee flows and can affect swap execution through the afterSwap call.
Security findings
- [medium] Launchpad controls fee collection: afterSwap calls IDropLaunchpad(launchpad).collectSwapFees(key) on a timer; the hook cannot verify what the launchpad does with collected fees, so the fee destination and split are fully determined by the launchpad.
- [info] Principal liquidity is locked: beforeRemoveLiquidity rejects any liquidityDelta other than zero, so LP principal cannot be withdrawn through the hook; this is a deliberate lock but means liquidity providers cannot exit.
- [low] Swap path depends on external call: afterSwap makes an external call to the launchpad during swaps when the interval has elapsed; if collectSwapFees reverts, the swap that triggers it reverts too, so the launchpad can block swaps.
- [info] Fee collection gated by time, not by swap size: The collection timer resets only when a swap occurs after the interval, so the timing of collection depends on swap activity.
Contract details
- Verified source
- Yes (DropHook)
- Compiler
- solc 0.8.37+commit.f401782d
- Bytecode size
- 2,956 bytes
- Upgradeable proxy
- No
- Detected patterns
- launchpad
Pools using DropHook
- BNB / WENLIST (2.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- BNB / LEEK (2.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- BNB / OVERTIME (2.00% fee) — 24h volume $0, TVL $0, 0 swaps today