Likely fee sharing hook on BNB Chain

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

Volume (24h)
$553
Value locked (TVL)
$0
All-time volume
$4.09K
Pools using this hook
2
Swaps (24h)
11 (7 traders)
Total swaps
24

What it does

A fee-sharing hook that charges dynamic and overridable swap fees on Uniswap v4 pools and splits the collected revenue between the owner, a creator and a fee recipient, with owner-controlled pause and whitelist features.

This read was written for the hook 0x285f…45c7 on Arc and reused here: the two share a code shape, so constants such as fees, owners and addresses can differ.

How it works step by step

  • Sets swap fees per pool using a packed config with base, dynamic and override tiers
  • Applies per-address fee overrides set by the owner
  • Splits collected fees between owner, creator and fee recipient using BPS settings
  • Enforces whitelist-only mode and trusted router or origin checks on swaps
  • Counts swaps per pool in afterSwap and takes a fee through return deltas
  • Owner can pause swaps and withdraw tokens held by the hook
Swap behaviour
beforeSwap checks pause state, whitelist and trusted router access, and sets fees (base, dynamic or per-address override). afterSwap increments a per-pool swap counter and can take a fee through the afterSwapReturnDelta permission.
Liquidity behaviour
afterAddLiquidity and afterRemoveLiquidity callbacks are enabled with return-delta permissions, so the hook can take or give a balance delta on liquidity changes. beforeAddLiquidity and beforeRemoveLiquidity selectors exist in the dispatch table but the permission flags do not enable them.
Fee behaviour
Fees are configured through a packed fee config (base, dynamic and override tiers stored in slots 3, 4 and 5) with per-address fee overrides, and a portion of fees is split between owner, creator and fee recipient via ownerBps and creatorBps. Exact fee formula could not be confirmed without source.
Owner & admin controls
Owner (Ownable, transferOwnership) can set fee recipient, owner and creator BPS splits, whitelist-only mode, trusted routers and origins, per-address fee overrides, exempt address, pause or unpause swaps via setPaused, and withdraw tokens via withdraw(address,address,uint256). Creator address is also referenced in storage.

Enabled Uniswap v4 callbacks

afterAddLiquidity, afterRemoveLiquidity, beforeSwap, afterSwap, afterSwapReturnDelta, afterAddLiquidityReturnDelta, afterRemoveLiquidityReturnDelta

afterAddLiquidity and afterRemoveLiquidity run post-liquidity logic and may return deltas. afterAddLiquidityReturnDelta and afterRemoveLiquidityReturnDelta let the hook take a share of liquidity flows. beforeSwap sets dynamic or overridden fees and checks whitelist and router access. afterSwap records swap counts and may take a fee via afterSwapReturnDelta.

Security & trust assessment

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

Who controls it: The owner holds broad control: it can pause swaps, change fee splits and fee overrides, toggle whitelist and trusted routers, and withdraw tokens held by the hook. A compromised owner key could redirect fee revenue or block trading.

Risk to user funds: The hook takes tokens through afterSwap and liquidity return deltas and holds balances that the owner can withdraw. The owner can also pause swaps, so user funds can be temporarily blocked. Pool funds themselves are held by PoolManager, but fee-share and withdrawal logic is controlled by the owner.

Security findings

  • [high] Owner withdrawal of hook-held tokens: Owner can call withdraw(address,address,uint256) to move tokens held by the hook, so any balances the hook accumulates from return deltas are controlled by a single key.
  • [medium] Owner pause can block swaps: setPaused lets the owner halt swaps through beforeSwap checks, which can block trading for all users.
  • [medium] Return-delta fee capture: Several return-delta permissions are enabled, meaning the hook can take part of swap and liquidity amounts, and the owner can redirect fee splits.
  • [medium] Per-address fee overrides and whitelist: Owner can set per-address fee overrides and whitelist-only mode, which can discriminate between traders.
  • [info] Single owner without timelock: Ownable pattern with transferOwnership; no timelock is visible in the decoded functions.

Contract details

Verified source
No
Bytecode size
19,351 bytes
Upgradeable proxy
No
Detected patterns
moves-currency, ownable, pausable, return-delta

Pools using Likely fee sharing hook