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
- USDC / WBNB (Dynamic fee) — 24h volume $0.08, TVL $12, 1 swaps today
- USDC / WBNB (Dynamic fee) — 24h volume $0, TVL $6.18, 0 swaps today
- USDT / DJTB (Dynamic fee) — 24h volume $0, TVL $1.16, 0 swaps today
- USDT / USDC (Dynamic fee) — 24h volume $0, TVL $0, 0 swaps today