Fee sharing hook on BNB Chain

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

Volume (24h)
$191
Value locked (TVL)
$1.20K
All-time volume
$186.49K
Pools using this hook
8
Swaps (24h)
26 (18 traders)
Total swaps
7,758

What it does

A Uniswap v4 hook that charges a dynamic fee on swaps in this pool and splits the collected fee between a protocol wallet and an operator wallet.

How it works step by step

  • Sets up pool-specific state in afterInitialize.
  • Applies swap-time logic in beforeSwap that can affect the fee.
  • Takes a fee portion of swaps through beforeSwapReturnDelta and afterSwapReturnDelta.
  • Splits collected fees between protocol and operator wallets using PROTOCOL_SHARES and TOTAL_SHARES.
  • Exposes owner-controlled setters for the protocol and operator wallets with two-step ownership transfer.
Swap behaviour
beforeSwap and afterSwap run with return-delta permissions, so the hook can apply a fee and take a share of the swap currency, with the split governed by protocol and operator share parameters.
Liquidity behaviour
Has beforeAddLiquidity, afterAddLiquidity, beforeRemoveLiquidity and afterRemoveLiquidity selectors present; the hook appears to read liquidity-related state but its exact effect could not be fully determined.
Fee behaviour
Hook declares beforeSwapReturnDelta and afterSwapReturnDelta and has a dynamic-fee tag; it appears to take a fee on swaps (TOTAL_FEE_PIPS, PIPS_DENOMINATOR) and split it between protocol wallet and operator wallet according to PROTOCOL_SHARES and TOTAL_SHARES, with the exact fee rate and split logic not confirmed from source.
Owner & admin controls
Owner (Ownable, two-step transfer via pendingOwner/acceptOwnership, renounceOwnership) can call setProtocol(address) to change the protocol wallet and setOperator(address) to change the operator wallet; an operator-acceptance flow (acceptOperator) exists. Parameters like PROTOCOL_SHARES, TOTAL_SHARES and TOTAL_FEE_PIPS are exposed as views; no pause function was identified.

Enabled Uniswap v4 callbacks

afterInitialize, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta

afterInitialize: initialization setup of pool-specific state. beforeSwap: pre-swap fee or return-delta logic. afterSwap: post-swap accounting and fee distribution with return delta. beforeSwapReturnDelta and afterSwapReturnDelta: the hook can take a portion of swap currency, so it moves funds during swaps.

Security & trust assessment

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

Who controls it: The owner can reassign the protocol wallet and operator wallet, redirecting fee shares; if the owner key is compromised, future fee revenue could be diverted. Ownership transfer is two-step, which reduces accidental transfer risk.

Risk to user funds: The hook can take a share of swap output through return deltas, which reduces the amount received by traders relative to a plain pool; it does not appear to hold user liquidity directly, but the fee take depends on unverified logic.

Security findings

  • [info] Swap-time currency diversion: Hook takes currency during swaps via return deltas and uses a take call, so a portion of swap value is diverted to the hook's fee recipients.
  • [medium] Owner can redirect fee recipients: setProtocol and setOperator are callable by owner and redirect future fee flows to new addresses.
  • [low] Dynamic fee set by hook logic: Bytecode indicates a dynamic-fee hook that may call updateDynamicLPFee; fee levels are set by hook logic, and the bounds could not be verified without source.

Contract details

Verified source
No
Bytecode size
9,271 bytes
Upgradeable proxy
No
Detected patterns
dynamic-fee, moves-currency, ownable, return-delta

Pools using Fee sharing hook