ClankerHookStaticFeeV2 on Robinhood Chain
Uniswap v4 Hook Contract 0x48b8f6ad3a1b4aa477314c9a23035b8f84dde8cc on Robinhood Chain · Launchpad · Verified contract
- Volume (24h)
- $211.90K
- Value locked (TVL)
- $190.82K
- All-time volume
- $13.99M
- Pools using this hook
- 15,250
- Swaps (24h)
- 1,693 (368 traders)
- Total swaps
- 122,493
What it does
Clanker v4 static-fee hook for token launch pools: it applies a fixed LP fee per swap direction, skims a 20% protocol cut of that fee via return deltas, and enforces a short MEV-protection window after pool creation.
How it works step by step
- Pools can only be created through initializePool (factory only) or initializePoolOpen (anyone). Direct initialization reverts with UnsupportedInitializePath. ETH pools are rejected and the pool always uses the dynamic-fee flag.
- On every swap it sets the LP fee from stored per-pool values: clankerFee when the swap buys the paired token, pairedFee when it buys the clanker token. Each is capped at 10% (100,000).
- It takes a protocol fee of 20% of the LP fee, always in the paired token. The fee is minted as ERC-6909 claims to the hook, then burned and sent to the factory on the next swap.
- For factory pools it triggers the LP locker's collectRewardsWithoutUnlock on the clanker token before each swap, and can run an allowlisted pool extension after each swap. Extension failures are caught and only emit an event.
- A per-pool MEV module can raise the swap fee up to 80% for the first 2 minutes after pool creation. Adding liquidity is blocked while that module is operational.
- Swap behaviour
- beforeSwap sets the dynamic LP fee, sweeps accrued protocol fees to the factory, calls the locker fee claim, and runs the MEV module (which may raise the fee and may disable itself). It then takes the protocol fee up front through a before-swap delta on exact-input swaps buying clanker and exact-output swaps selling clanker. afterSwap takes the fee through the unspecified delta on the other two swap cases, and then calls the pool extension if one is set up and the sender is not the locker.
- Liquidity behaviour
- beforeAddLiquidity reverts with MevModuleEnabled while the pool's MEV module is still operational, which is the first 2 minutes after creation if the module is enabled. Otherwise adds are allowed. Removing liquidity has no hook callback.
- Fee behaviour
- The LP fee is dynamic but set from static per-pool values chosen at initialization: clankerFee and pairedFee, each at most 10%. They have no setter after initialization. The MEV module can temporarily raise the fee up to 80% in the first 2 minutes. The hook takes 20% of the applied fee as a protocol fee in the paired token and forwards it to the factory.
- Owner & admin controls
- There is no owner or pause function in the verified source. The factory address is immutable and has privileged rights: it initializes factory pools, sets each pool's locker and MEV module, enables the MEV module, and receives the protocol fees. A pool's assigned MEV module can call mevModuleSetFee. Fees are fixed per pool after initialization. The pool extension allowlist address is immutable, but its contents are controlled by whoever manages that external contract.
Enabled Uniswap v4 callbacks
beforeInitialize, beforeAddLiquidity, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta
beforeInitialize blocks any pool initialization that does not go through the hook's own initializePool functions. beforeAddLiquidity blocks liquidity adds while the MEV module is active. beforeSwap sets the fee, claims fees, runs the MEV module and takes the protocol fee on some swap directions. afterSwap takes the protocol fee on the other directions and runs the pool extension. beforeSwapReturnDelta and afterSwapReturnDelta let the hook adjust swap amounts to collect the protocol fee.
Security & trust assessment
Risk level: medium (verified source, high confidence).
Who controls it: The factory controls pool setup, including which locker, MEV module and pool extension each pool uses, and it receives all protocol fees. It cannot change per-pool base fees after initialization. A malicious or faulty MEV module or locker chosen by the factory could raise fees to 80% for 2 minutes or block swaps. No upgrade proxy or owner function appears in the hook.
Risk to user funds: The hook does not custody user funds long-term. Protocol fees are held briefly as ERC-6909 claims in the PoolManager until the next swap sends them to the factory. Swaps and liquidity adds can be blocked if the external locker or MEV module reverts, or during the MEV window for adds. Liquidity removal has no hook callback, so LPs can always exit.
Security findings
- [info] Hook takes fees via return deltas: beforeSwap and afterSwap return deltas that divert 20% of the LP fee to the hook, which mints ERC-6909 claims and later sends them to the factory. This is disclosed in the code, but swappers receive slightly less or pay slightly more than the pool's fee alone implies.
- [medium] MEV module can set an 80% fee: The assigned MEV module can raise the swap fee up to MAX_MEV_LP_FEE (800,000, i.e. 80%) during the first 2 minutes after pool creation. The module is chosen by the factory per pool and is external code. The window is hard-limited by MAX_MEV_MODULE_DELAY.
- [medium] Swaps depend on external calls: Every swap calls the LP locker's collectRewardsWithoutUnlock and the MEV module's beforeSwap without try/catch. A reverting or malicious locker or module set by the factory could block swaps. Pool extension calls are wrapped in try/catch, so they cannot block swaps.
- [low] Liquidity adds blocked at launch: beforeAddLiquidity reverts while the MEV module is operational. This is bounded to 2 minutes after creation, and the module can also disable itself earlier.
- [info] Open pools skip the MEV module and locker: initializePoolOpen lets anyone create a pool with this hook. Such pools have no locker or MEV module and cannot have extensions. They still pay the 20% protocol cut, taken only in the paired token, and WETH cannot be the clanker side.
Contract details
- Verified source
- Yes (ClankerHookStaticFeeV2)
- Compiler
- solc 0.8.28+commit.7893614a
- Bytecode size
- 16,405 bytes
- Upgradeable proxy
- No
- Detected patterns
- access-control, dynamic-fee, launchpad, mev-protection, return-delta
Pools using ClankerHookStaticFeeV2
- WETH / 0xZAPS (Dynamic fee) — 24h volume $198.81K, TVL $177.68K, 1,273 swaps today
- WETH / TWR (Dynamic fee) — 24h volume $6.92K, TVL $5.64, 235 swaps today
- WETH / TasQ (Dynamic fee) — 24h volume $5.98K, TVL $2.12K, 136 swaps today
- WETH / DOOM (Dynamic fee) — 24h volume $151, TVL $1.16, 7 swaps today
- WETH / VEILPORT (Dynamic fee) — 24h volume $16, TVL $151, 2 swaps today
- WETH / polydash (Dynamic fee) — 24h volume $11, TVL $902, 1 swaps today
- WETH / HOODEDPENIS (Dynamic fee) — 24h volume $6.41, TVL $17, 2 swaps today
- WETH / LIT (Dynamic fee) — 24h volume $0.63, TVL $0.38, 3 swaps today
- WETH / TOOLS (Dynamic fee) — 24h volume $0.53, TVL $0.46, 2 swaps today
- WETH / OGLE (Dynamic fee) — 24h volume $0.29, TVL $0.26, 1 swaps today
- WETH / TR (Dynamic fee) — 24h volume $0.29, TVL $0.26, 1 swaps today
- WETH / 🇺🇸 (Dynamic fee) — 24h volume $0.28, TVL $0.26, 1 swaps today
- WETH / NVDOG (Dynamic fee) — 24h volume $0.28, TVL $0.26, 1 swaps today
- WETH / PAPERFARM (Dynamic fee) — 24h volume $0.28, TVL $0.26, 1 swaps today
- WETH / NVDARTXS (Dynamic fee) — 24h volume $0.28, TVL $0.26, 1 swaps today
- WETH / FARM (Dynamic fee) — 24h volume $0.28, TVL $0.26, 1 swaps today
- WETH / RTXS (Dynamic fee) — 24h volume $0.28, TVL $0.26, 1 swaps today
- WETH / NAS (Dynamic fee) — 24h volume $0.28, TVL $0.26, 1 swaps today
- WETH / NVDOG (Dynamic fee) — 24h volume $0.28, TVL $0.26, 1 swaps today
- WETH / TCO (Dynamic fee) — 24h volume $0.28, TVL $0.26, 1 swaps today