Fee sharing hook on Arbitrum

Uniswap v4 Hook Contract 0x00aa7f4e36f16569c2db547e93dcea559d9700cc on Arbitrum · Fee sharing

Volume (24h)
$0
Value locked (TVL)
$8.75
All-time volume
$56
Pools using this hook
3
Swaps (24h)
0 (0 traders)
Total swaps
3

What it does

A fee-sharing hook that takes a portion of swap fees on pools it is attached to and splits them between a protocol treasury, creators and token holders.

This read was written for the hook 0xcca1…80cc on Base 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

  • Runs beforeSwap to validate the swap and compute the hook fee
  • Uses return deltas to take a fee portion from swap amounts
  • Runs afterSwap to record accrued creator and holder balances
  • Splits accrued fees between creator, holder dividend and protocol treasury using configured bps shares
  • Lets creators claim pending fees via claimCreatorFees
  • Stores per-pool launch configuration keyed by token id
Swap behaviour
beforeSwap and afterSwap callbacks run on every swap, and the hook adjusts swap deltas to collect its fee share.
Liquidity behaviour
No liquidity callbacks.
Fee behaviour
Fees appear to be split between a creator share (BASIC_CREATOR_FEE_SHARE_BPS), a holder dividend share (BASIC_HOLDER_DIVIDEND_SHARE_BPS) and a protocol treasury, with total fee bounded by MIN_TOTAL_FEE_BPS and MAX_TOTAL_FEE_BPS. Fee amounts are taken through the return-delta path rather than as the pool's static fee; exact math cannot be confirmed without source.
Owner & admin controls
Owner (two-step ownership via transferOwnership/acceptOwnership) can set the protocol treasury (setProtocolTreasury), whitelist-style mapping flags via 0x0fc944e5, and call 83ab9227/8e324fb2 which write per-pool configuration (fee shares, mode, addresses and bps parameters). Owner can also transfer ownership at any time.

Enabled Uniswap v4 callbacks

beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta

beforeSwap: validates the swap and computes the hook's fee/delta before execution. afterSwap: accounts fees and dividend/creator balances after execution. beforeSwapReturnDelta and afterSwapReturnDelta: allow the hook to take a portion of the swap amounts as its fee share.

Security & trust assessment

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

Who controls it: The owner can reconfigure per-pool fee splits, treasury address and launch/registration flags, and can take over ownership in a two-step handover. A malicious or compromised owner could redirect fee shares to a chosen address or change the total fee within configured bounds.

Risk to user funds: The hook can take a share of swap amounts via return deltas and holds accrued creator and holder balances. Owner changes to treasury and fee split affect how those amounts are distributed; users cannot be blocked by a pause since no pause selector was identified.

Security findings

  • [medium] Owner can redirect fee destinations: Owner-controlled setters (setProtocolTreasury and pool configuration writes via 83ab9227/8e324fb2) can change where fees are sent and how they are split.
  • [medium] Return-delta hook takes swap value: The hook takes tokens through beforeSwapReturnDelta and afterSwapReturnDelta, so it has custody-like effect on swap amounts.
  • [low] Creator fee accounting unverified: Pending creator fees are stored per id and claimed via claimCreatorFees; accounting correctness depends on unverified logic.
  • [info] Two-step ownership present: Two-step ownership (acceptOwnership) is present, which reduces accidental transfer risk.

Contract details

Verified source
No
Bytecode size
10,205 bytes
Upgradeable proxy
No
Detected patterns
ownable, return-delta

Pools using Fee sharing hook