Fee sharing hook on BNB Chain

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

Volume (24h)
$0
Value locked (TVL)
<$0.01
All-time volume
$208.36K
Pools using this hook
23
Swaps (24h)
0 (0 traders)
Total swaps
4,045

What it does

Takes a configurable fee from swaps in a pool that uses this hook and sends it to a fee receiver, with an owner-controlled pause.

How it works step by step

  • Runs an afterSwap callback on every swap in pools that use this hook
  • Calculates a fee from feeBps, capped by MAX_FEE_BPS
  • Takes the fee from the swap output via take(address,address,uint256) and afterSwapReturnDelta
  • Sends collected fees to feeReceiver
  • Owner can update feeReceiver and feeBps through setFeeConfig
  • Owner can pause the hook through setPaused, and paused() exposes the state
Swap behaviour
After each swap, afterSwap runs and takes a fee from the output, based on feeBps, and sends it to feeReceiver using take(), with the fee applied through afterSwapReturnDelta.
Liquidity behaviour
No liquidity callbacks.
Fee behaviour
A fee in basis points (feeBps, bounded by MAX_FEE_BPS) is taken from the swap output via afterSwap and the take(address,address,uint256) call, then sent to feeReceiver. The fee is applied as an afterSwapReturnDelta, so the hook keeps a share of swap proceeds.
Owner & admin controls
Owner-gated functions: setFeeConfig(address,uint16) sets feeReceiver and feeBps, setPaused(bool) toggles pause, and selector 0x199249a2 (address,uint16,bool) appears to write fee config and a flag together. Owner is readable via owner(); ownership transfer selector not identified. Pause and fee parameters can be changed by the owner at any time.

Enabled Uniswap v4 callbacks

afterSwap, afterSwapReturnDelta

afterSwap: computes the fee after each swap and routes it to feeReceiver. afterSwapReturnDelta: lets the hook return a delta that changes the amount the pool settles with the trader, which is how the fee is collected.

Security & trust assessment

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

Who controls it: The owner can set feeReceiver to any address and raise feeBps up to MAX_FEE_BPS, redirecting part of each swap's output. The owner can also pause the hook, which may block swaps that depend on it.

Risk to user funds: The hook can take a share of each swap's output through afterSwapReturnDelta and send it to feeReceiver. Pausing may block swaps routed through the hook, so user funds may be stuck until unpaused.

Security findings

  • [info] Hook moves currency on swaps: afterSwapReturnDelta lets the hook take tokens from swap output, so the hook moves user proceeds to feeReceiver on every swap.
  • [medium] Owner can change fee and pause swaps: setFeeConfig and setPaused are owner-gated; the owner can change the fee destination and rate, and pause the hook.
  • [medium] Unverified source limits assurance: The contract is not verified, and the owner check and fee cap are inferred from selectors and storage reads, not confirmed in source.
  • [info] Fixed, non-proxy storage layout: The contract stores an owner, feeReceiver, feeBps and paused flag in a single slot with packed offsets, and reads them in afterSwap. No upgrade pattern was identified.

Contract details

Verified source
No
Bytecode size
3,114 bytes
Upgradeable proxy
No
Detected patterns
dynamic-fee, moves-currency, ownable, pausable, return-delta

Pools using Fee sharing hook