Fee sharing hook on BNB Chain

Uniswap v4 Hook Contract 0x0f23bc987361f0e0c8b6b46d1318db5468ecaac0 on BNB Chain · Fee sharing

Volume (24h)
$0
Value locked (TVL)
<$0.01
All-time volume
$47.42M
Pools using this hook
3
Swaps (24h)
0 (0 traders)
Total swaps
156,433

What it does

A fee-sharing hook for Uniswap v4 on BNB Chain that gates pools to registered tokens and computes dynamic fees with a configurable fee collector, based on decoded bytecode without verified source.

How it works step by step

  • Gates pool initialization and liquidity changes on token registration (isTokenRegistered, isInitialized checks)
  • Computes a per-pool fee from BASE_FEE, MEDIUM_FEE and HIGH_FEE tiers via currentFee
  • Tracks pool tick and observation data around swaps (minTick, OBSERVATION_WINDOW)
  • Allows the owner to register tokens and set thresholds (setToken, setThreshold)
  • Assigns a fee collector per token (setCollector) to route fee revenue
Swap behaviour
beforeSwap and afterSwap are enabled and update per-pool fee and tick state, computing a fee via currentFee and recording swap-related data; exact amounts cannot be confirmed without source.
Liquidity behaviour
beforeAddLiquidity, afterAddLiquidity, beforeRemoveLiquidity and afterRemoveLiquidity are present and appear to check registration/initialization state and track pool data; the exact effect on liquidity cannot be fully determined from the bytecode.
Fee behaviour
Decoded selectors include BASE_FEE(), MEDIUM_FEE(), HIGH_FEE() and currentFee(address), indicating the hook computes a per-pool fee dynamically, likely with a collector receiving a share; exact fee logic cannot be confirmed without source.
Owner & admin controls
Owner (slot 0) can call setOwner, setToken, setThreshold and setCollector; setToken and setThreshold appear to register tokens and set per-token thresholds, and setCollector assigns a fee collector per token. No pausing or upgrade functions were identified in the decoded selectors.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeAddLiquidity, beforeRemoveLiquidity, beforeSwap, afterSwap

beforeInitialize: validates and records pool initialization for registered tokens. beforeAddLiquidity and beforeRemoveLiquidity: gate liquidity changes on pool state and token registration. beforeSwap and afterSwap: compute and update fee-related state (currentFee, tick and observation data) around each swap. afterInitialize, afterAddLiquidity and afterRemoveLiquidity are present in the dispatch table but not enabled by the address permissions.

Security & trust assessment

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

Who controls it: The owner can reassign ownership, register or change tokens, change thresholds and redirect the fee collector address, which could redirect fee revenue or alter fee behaviour for pools using this hook.

Risk to user funds: The hook does not appear to hold user tokens directly from the selectors, but beforeSwap and afterSwap can influence fee amounts and fee collection, and the owner can change the collector, so swap proceeds could be affected indirectly.

Security findings

  • [medium] Owner-controlled fee collector: setCollector and setToken let the owner redirect fee-related flows; users depend on the owner key not being misused.
  • [medium] Single-owner control without timelock: setOwner transfers control of all owner-gated functions to a new address with no timelock visible in the bytecode.
  • [low] Registration gating: Pools and swaps depend on token registration; an unregistered token reverts with TokenNotRegistered, so the owner controls which pools function.
  • [info] Unverified source: No verified source is available, so function behaviour and any fee or accounting logic are inferred from selectors and storage only.

Contract details

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

Pools using Fee sharing hook