Dynamic fee hook on BNB Chain

Uniswap v4 Hook Contract 0xd7fe36521bef1c7879162d46edfd100b9f644880 on BNB Chain · Dynamic fee

Volume (24h)
$0.08
Value locked (TVL)
$20
All-time volume
$4.02M
Pools using this hook
4
Swaps (24h)
1 (1 traders)
Total swaps
3,943

What it does

A Uniswap v4 hook on BNB Chain that tracks liquidity additions and swaps for registered pools, with an admin-controlled initializer and a possible dynamic LP fee override, based on decoded bytecode only.

How it works step by step

  • Registers and tracks pools by a pool ID derived from the pool key
  • Validates liquidity additions in beforeAddLiquidity against position ranges and pools
  • Tracks provider sets and counts per pool
  • Counts swaps per pool in beforeSwap
  • Can return an LP fee override bounded by MAX_LP_FEE for dynamic-fee pools
  • Two-step admin transfer with an initializer address controlled by admin
Swap behaviour
beforeSwap is enabled: the hook increments per-pool swap counters and may override the LP fee for dynamic-fee pools, bounded by a maximum LP fee.
Liquidity behaviour
beforeAddLiquidity is enabled and the hook tracks per-pool provider sets and counts (providerCount, mapping of provider addresses per position), plus PositionRangeMismatch and PositionPoolMismatch errors, indicating it validates liquidity additions against positions in a position manager.
Fee behaviour
Hook exposes OVERRIDE_FEE_FLAG, DYNAMIC_FEE_FLAG, MAX_LP_FEE and LPFeeTooLarge errors, suggesting it can return an overridden LP fee from beforeSwap bounded by a maximum, but exact fee logic cannot be confirmed from bytecode alone.
Owner & admin controls
Two-step admin transfer: transferAdmin(address) proposes a pending admin, acceptAdmin() completes it; setInitializer(address) sets the initializer address. The ADMIN storage slot is controlled by a single key. Parameter changes not determinable from decoded bytecode beyond these.

Enabled Uniswap v4 callbacks

beforeAddLiquidity, beforeSwap

beforeAddLiquidity: validates or records liquidity additions for registered pools and position ranges. beforeSwap: tracks swap counts per pool and may override the LP fee for dynamic-fee pools.

Security & trust assessment

Risk level: medium, estimated (decoded bytecode, low confidence).

Who controls it: A single ADMIN key can propose and accept admin changes and set the initializer, so whoever controls that key controls which initializer can register pools and the hook's administrative state.

Risk to user funds: The hook does not appear to take custody of tokens or use return deltas based on the decoded permissions; funds exposure is primarily indirect through fee overrides and admin control over pool registration, not direct custody.

Security findings

  • [medium] Single privileged admin key: Admin can transfer control via transferAdmin and acceptAdmin, and set the initializer via setInitializer; no timelock or multisig is visible in the decoded functions.
  • [low] Initializer gating: Pool registration and initialization are gated by an initializer address set by the admin, which controls which pools are tracked by the hook.
  • [low] Fee override path: Hook exposes LP fee override logic bounded by MAX_LP_FEE; a misconfigured or malicious admin could alter fee behavior for registered pools, though the bound limits the extent.
  • [info] Unverified source: The hook is not source-verified, so behavior is inferred from selectors and storage only; intent and edge cases cannot be fully confirmed.

Contract details

Verified source
No
Bytecode size
7,955 bytes
Upgradeable proxy
No

Pools using Dynamic fee hook