Fee sharing hook on Ethereum

Uniswap v4 Hook Contract 0x1b15b1a9df975ee5c302429e23b8e45e8b8d28cc on Ethereum · Fee sharing

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

What it does

A single-pool hook that takes a fixed, unverified percentage cut from every swap and pays it to a hard-coded owner, while LPs can add (subject to checks) and withdraw freely.

How it works step by step

  • Locks itself to a single pool on first initialization; only one pool can be created with this hook.
  • Takes a cut (CUT_BPS, exact value not readable from bytecode) from swaps using swap return deltas and records it as owed.
  • Accrued fees can be paid out to a fixed owner/token address through pay() and accrue() functions that settle via the PoolManager.
  • Checks new liquidity positions in beforeAddLiquidity, likely enforcing a tick spacing or open-tick rule.
  • Has no remove-liquidity callbacks, so LP withdrawals are never touched.
Swap behaviour
On every swap the hook runs before and after the trade and can deduct a percentage cut from swap amounts using return deltas. The exact cut is a hard-coded constant that cannot be read from the decoded bytecode.
Liquidity behaviour
Adding liquidity passes through a check that may reject positions not matching the hook's tick or spacing rules. Remove-liquidity callbacks are disabled, so LPs can always withdraw freely.
Fee behaviour
A fixed cut (CUT_BPS constant) is taken from swaps and tracked as owed, then paid to a hard-coded recipient (likely OWNER or TOKEN-related). The exact percentage is unknown from bytecode, but it appears to be an immutable constant rather than admin-adjustable.
Owner & admin controls
No setter functions for fees or recipients were found; OWNER, TOKEN, CUT_BPS and SPACING appear to be immutable constants. One unnamed boolean-taking function exists whose purpose is unknown.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeAddLiquidity, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta

beforeInitialize: binds the hook to one pool; beforeAddLiquidity: validates LP positions; beforeSwap: applies the cut on input side; afterSwap: applies or records the cut on output side; beforeSwapReturnDelta/afterSwapReturnDelta: let the hook deduct its cut from swap amounts.

Security & trust assessment

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

Who controls it: Values appear immutable with a fixed OWNER address receiving accrued fees; no fee-changing admin functions were identified, though one unnamed boolean function is unclear.

Risk to user funds: Traders pay a fixed but unverified percentage cut on swaps; LP principal sits in the PoolManager and cannot be locked or taxed by this hook.

Security findings

  • [medium] Unverified swap fee cut: The hook can deduct tokens from swaps via return deltas, and the cut size is a constant that cannot be confirmed from bytecode.
  • [low] Unknown boolean toggle: An unnamed function taking a boolean exists; it could be a switch affecting swaps, but its effect cannot be determined.
  • [info] LP withdrawals unrestricted: Remove-liquidity callbacks are disabled, so the hook cannot block or charge LP withdrawals.

Contract details

Verified source
No
Bytecode size
5,994 bytes
Upgradeable proxy
No
Detected patterns
return-delta, self-unlock

Pools using Fee sharing hook