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