ClankerHookStaticFeeV2 on BNB Chain

Uniswap v4 Hook Contract 0xc5d309026bcab6630888d51ce21154ad2f4828cc on BNB Chain · Launchpad · Verified contract

Volume (24h)
$18
Value locked (TVL)
$8.16K
All-time volume
$3.70M
Pools using this hook
8,632
Swaps (24h)
12 (4 traders)
Total swaps
64,683

What it does

A Clanker launchpad hook for BNB Chain pools that charges a fixed, direction-dependent LP fee, skims 20% of that fee for the Clanker factory, and uses a short anti-sniping MEV module right after launch.

How it works step by step

  • Pools can only be created through the hook's own initializePool (factory) or initializePoolOpen (anyone). Direct PoolManager initialization reverts, and the pool always uses the dynamic fee flag.
  • Each pool stores two fees, one for swaps that buy the Clanker token and one for swaps that sell it. Each is capped at 10% (MAX_LP_FEE = 100000), and the hook applies the matching fee in beforeSwap through updateDynamicLPFee.
  • A protocol fee equal to 20% of the LP fee is taken on the paired-token side. It is minted to the hook as PoolManager claims through beforeSwap and afterSwap return deltas, then burned and sent to the factory on the next swap.
  • For factory pools, an optional MEV module can raise the swap fee up to 80% during the first 2 minutes after pool creation. Liquidity adds are blocked while the module is active.
  • For factory pools, the hook calls the LP locker to collect rewards without unlocking before each swap. It can also call an allowlisted pool extension after each swap, wrapped in try/catch.
Swap behaviour
beforeSwap sets the LP fee from the stored clanker or paired fee by swap direction, and sets the hook protocol fee to 20% of that fee. It then sweeps previously accrued hook fees to the factory, triggers the LP locker fee collection, and runs the MEV module while it is operational. For exact-input buys of the Clanker token and exact-output sells of it, the protocol fee is taken before the swap through a beforeSwapDelta. For the opposite two cases it is taken after the swap through the afterSwap unspecified delta. Finally the pool extension, if set up, is called in a try/catch, so a failing extension does not revert the swap.
Liquidity behaviour
beforeAddLiquidity reverts with MevModuleEnabled while the pool's MEV module is operational (the first 2 minutes of a factory pool). Otherwise adds are allowed. Removing liquidity has no callback.
Fee behaviour
The LP fee is static per pool and per direction, set at initialization and capped at 10%, and the hook pushes it through the dynamic fee mechanism on every swap. The hook protocol fee is 20% of that LP fee, taken on the paired token and sent to the factory. During the MEV window the MEV module can raise the fee up to 80%, and only if the new fee is higher than the current fee.
Owner & admin controls
No owner or pause functions are in the ABI. The factory address is immutable and has privileged access: only it can call initializePool and initializeMevModule, and it receives the protocol fees. The fees of a pool are fixed at creation and the source has no setter. The assigned MEV module can change the swap fee, within caps, during the first 2 minutes. The pool extension allowlist is an external contract whose own admin controls are not visible here.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeAddLiquidity, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta

beforeInitialize reverts any initialization that does not go through the hook's own pool creation functions. beforeAddLiquidity blocks liquidity adds while the MEV module is active. beforeSwap sets the fee, claims accrued hook fees and locker rewards, runs the MEV module, and takes the protocol fee in some swap cases. afterSwap takes the protocol fee in the other swap cases 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 chooses the locker, MEV module and extension when it creates a pool, and it collects the protocol fees. Those modules, once set, can affect swaps (higher fees during the launch window, or reverting calls). The hook has no owner who can change fees or pause it after creation.

Risk to user funds: The hook only holds PoolManager claim balances for accrued protocol fees, which it sweeps to the factory on the next swap. It does not custody LP positions. Swaps can be blocked on a pool if its locker or MEV module reverts. Early liquidity adds are blocked for 2 minutes in factory pools.

Security findings

  • [info] Hook skims 20% of the LP fee via return deltas: beforeSwap and afterSwap mint PoolManager claims to the hook for the protocol fee, which are later burned and taken to the factory. The traders' amounts are adjusted accordingly, so users pay a total of the LP fee plus this share. The share is 20% of the LP fee.
  • [medium] MEV module can set fees up to 80% in the launch window: mevModuleSetFee lets the assigned module raise the LP fee up to MAX_MEV_LP_FEE (800000) for the first 2 minutes of a pool. Early traders can face very high fees, and liquidity adds are blocked during this time.
  • [medium] External calls to locker, MEV module and extension during swaps: Every swap calls the pool's locker (collectRewardsWithoutUnlock) and, while active, the MEV module, with no try/catch. A faulty or malicious locker or module could revert and block swaps on that pool. The extension call is wrapped in try/catch, so it cannot block swaps.
  • [low] Open pool creation by anyone: initializePoolOpen lets anyone create a pool with this hook for arbitrary tokens, with fees chosen by the creator and capped at 10%. These pools have no locker, MEV module or extension, and the clanker token cannot be WETH.
  • [low] Factory controls pool setup and receives fees: The immutable factory sets the locker, MEV module and pool extension for factory pools and receives all accrued protocol fees. The hook itself offers no way to change these later, so the trust placed in the factory and modules is high.

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