Likely fee sharing hook on Zora
Uniswap v4 Hook Contract 0x3f44fc96dd34bf0dd2c8c5a3daebf669eedaa844 on Zora · Fee sharing
- Volume (24h)
- $0
- Value locked (TVL)
- $1.93
- All-time volume
- $4.50
- Pools using this hook
- 1
- Swaps (24h)
- 0 (0 traders)
- Total swaps
- 5
What it does
A fee-sharing hook that takes a configurable share of swap output and routes it to a fee recipient, with owner-controlled fee rate and recipient.
How it works step by step
- Stores a fee in basis points (feeBips) in slot 0, with an initial sell fee and a fee cooldown block
- After each swap, takes a fee portion through afterSwapReturnDelta
- Routes the fee portion to a fee split address when feeSplitEnabled is true
- Owner can change fee rate (setFeeBips), fee recipient (setFeeSplit) and toggle splitting (setFeeSplitEnabled)
- Checks liquidity additions in beforeAddLiquidity, with an accumulating NFT-related flag
- Swap behaviour
- afterSwap reads the fee configuration and, when enabled, takes a fee from swap output through afterSwapReturnDelta and forwards it to the fee split address.
- Liquidity behaviour
- beforeAddLiquidity is implemented and nftsAccumulating / nftsAreAccumulating state suggests liquidity additions may be tracked or gated. beforeRemoveLiquidity and afterRemoveLiquidity selectors appear in the dispatch table but their logic is not clearly determinable from the decoded bytecode. afterAddLiquidity and afterRemoveLiquidity are also present as selectors.
- Fee behaviour
- Fee is stored in slot 0 (feeBips, uint128) with an initialSellFee and a fee cooldown (feeCooldown / feeCooldownBlock). afterSwap reads the fee and feeSplit state and, when feeSplitEnabled is true, routes a portion of the swap fee to feeSplit address via a return delta. The owner can change feeBips at any time through setFeeBips, subject to the cooldown logic.
- Owner & admin controls
- Owner (Ownable, two-step ownership handover via requestOwnershipHandover/completeOwnershipHandover, renounceOwnership) can call setFeeBips(uint128) to set the fee, setFeeSplit(address) to set a fee recipient, setFeeSplitEnabled(bool) to toggle fee splitting, and transferOwnership. Owner-only functions appear to be guarded by an onlyOwner check (Unauthorized error present in bytecode).
Enabled Uniswap v4 callbacks
beforeInitialize, beforeAddLiquidity, afterSwap, afterSwapReturnDelta
beforeInitialize: runs checks or setup when the pool is initialized. beforeAddLiquidity: gates or inspects liquidity additions. afterSwap: reads fee parameters and may take a fee share via afterSwapReturnDelta. afterSwapReturnDelta: lets the hook take a portion of the swap output as a fee delta, which is then forwarded to the fee split recipient.
Security & trust assessment
Risk level: medium, estimated (decoded bytecode, medium confidence).
Who controls it: The owner controls the fee level (setFeeBips), the fee recipient (setFeeSplit) and whether fee splitting is active (setFeeSplitEnabled). A malicious or compromised owner could raise the fee substantially on swaps or redirect the fee split to an address they control, extracting value from traders and LPs. Ownership can be transferred or renounced.
Risk to user funds: The hook takes a fee portion of swap output via afterSwapReturnDelta and forwards it to the configured fee split recipient. The owner can increase the fee rate or change the recipient, so user swap proceeds are exposed to owner-set parameters. The hook does not appear to hold LP principal beyond transient settlement balances.
Security findings
- [high] Owner-adjustable fee: Owner can call setFeeBips to change the swap fee, and the fee is applied through afterSwap return deltas, so the owner can raise the effective fee to any uint128 value within the cooldown rules.
- [medium] Owner-controlled fee recipient: setFeeSplit lets the owner point the fee split to any address; fee revenue flowing through afterSwapReturnDelta would then be sent there.
- [medium] Hook takes tokens via return delta: The hook uses afterSwapReturnDelta, so it takes a share of swap output tokens. Funds are held in or routed through the hook contract during the swap settlement.
- [info] Single-owner control without timelock: Contract is Ownable with a two-step handover, which reduces accidental ownership loss but still concentrates control in a single key with no timelock visible in the decoded selectors.
- [info] Unverified source: The contract is not verified, so behaviour is inferred from selectors, storage and error signatures; exact fee formulas and cooldown semantics could not be confirmed.
Contract details
- Verified source
- No
- Bytecode size
- 9,429 bytes
- Upgradeable proxy
- No
- Detected patterns
- ownable, return-delta
Pools using Likely fee sharing hook
- ETH / OFAMv2 (0.00% fee) — 24h volume $0, TVL $1.93, 0 swaps today