Likely fee sharing hook on Zora

Uniswap v4 Hook Contract 0xc0649188074993dfae60ce25e6d64c1df1906844 on Zora · Fee sharing

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

What it does

A Uniswap v4 hook that takes a configurable fee on swaps via afterSwap return delta and can split that fee to an owner-set address, with the owner able to adjust the rate.

How it works step by step

  • Sets a configurable fee rate in basis points (feeBips) that the owner can update
  • Captures a portion of swap output via afterSwap return delta
  • Optionally routes captured fees to a fee split recipient (feeSplit) when feeSplitEnabled is true
  • Enforces a fee cooldown tracked by feeCooldownBlock
  • Gates beforeInitialize and beforeAddLiquidity for pool setup and liquidity checks
  • Uses Ownable two-step ownership handover for admin roles
Swap behaviour
afterSwap applies the configurable fee (feeBips) and, through afterSwapReturnDelta, can capture a share of swap output, optionally forwarding part of it to the fee split recipient when enabled.
Liquidity behaviour
beforeAddLiquidity is implemented as a view-style check and afterAddLiquidity/afterRemoveLiquidity selectors exist in the dispatch table but the hook only requests beforeAddLiquidity permission. No clear liquidity-side fund movement identified from the decoded data.
Fee behaviour
The hook maintains a configurable fee in basis points (feeBips, with initialSellFee and a feeCooldown mechanism) that the owner can change via setFeeBips. A fee split feature (feeSplit address, feeSplitEnabled flag) can route a portion of collected fees to a configured address. Exact fee application logic inside afterSwap cannot be confirmed without source.
Owner & admin controls
Owner (Ownable, two-step ownership handover) can call setFeeBips(uint128), setFeeSplit(address), setFeeSplitEnabled(bool), transferOwnership, renounceOwnership and complete ownership handovers. Owner can change the fee rate and fee split recipient at any time, and can toggle fee splitting on or off.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeAddLiquidity, afterSwap, afterSwapReturnDelta

beforeInitialize: validates or sets up pool state at initialization. beforeAddLiquidity: gate or inspect liquidity additions. afterSwap: applies fee logic and possibly returns a hook delta to the pool. afterSwapReturnDelta: lets the hook take a share of swap output tokens as a delta, which is how fee capture is implemented.

Security & trust assessment

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

Who controls it: The owner controls the fee rate (setFeeBips), the fee split destination (setFeeSplit) and whether splitting is enabled. A malicious or compromised owner could raise fees substantially or redirect the split share to an address of their choosing, extracting value from swappers. Ownership can also be transferred or renounced.

Risk to user funds: The hook can take a share of swap output through afterSwapReturnDelta and can route fees to a fee split address controlled by the owner. It does not appear to hold a custodial balance of user liquidity. Swappers are exposed to fee changes made by the owner.

Security findings

  • [medium] Hook takes swap value via return delta: afterSwapReturnDelta permission lets the hook take tokens from swaps via return delta, so the hook can hold or divert a portion of swap value.
  • [high] Owner can set fee rate without confirmed cap: setFeeBips is callable by the owner without a visible upper bound in the decoded logic, so the owner could set an arbitrarily high fee.
  • [medium] Owner controls fee split recipient: setFeeSplit lets the owner redirect the fee split recipient to any address, and setFeeSplitEnabled toggles the split.
  • [info] Single-owner Ownable access control: Ownable pattern with two-step handover (requestOwnershipHandover, completeOwnershipHandover) is present, so ownership is a single privileged key rather than a multisig, as far as can be determined.

Contract details

Verified source
No
Bytecode size
9,401 bytes
Upgradeable proxy
No
Detected patterns
ownable, return-delta

Pools using Likely fee sharing hook