Fee sharing hook on Ethereum

Uniswap v4 Hook Contract 0x1bc2e81fb7c46ed92376329000c84cb7a243e0cc on Ethereum · Fee sharing

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

What it does

This hook takes a return-delta cut of swaps on a pool and routes part of it to an owner and treasury, though the exact fee direction and rates cannot be confirmed from the bytecode alone.

How it works step by step

  • Exposes a TOKEN, MANAGER, NEST, and poolKey, with OWNER and OWNER_SHARE public getters indicating an owner revenue share
  • Sets up time windows (SHORT_WINDOW, LONG_WINDOW, SPACING, OPEN_TICK) and an openingFdvWei value, suggesting a launch or fdv-based pricing mechanism
  • beforeSwap and afterSwap callbacks read and write storage and use return-delta permissions, so the hook can alter swap amounts and move currency
  • flush, take and extsload calls indicate the hook settles accumulated balances with the pool manager and tracks ownerOwed, ownerPaid and treasurySent
  • beforeInitialize and afterInitialize callbacks set up pool state including the opened flag and a launch configuration
Swap behaviour
beforeSwap and afterSwap run on every swap and can apply return deltas that change the amounts traded, and the hook moves currency through the pool manager; the exact fee or price direction cannot be determined from the decoded bytecode alone.
Liquidity behaviour
beforeAddLiquidity, afterAddLiquidity, beforeRemoveLiquidity and afterRemoveLiquidity are present as selectors but their enabled permissions do not include them, so they are not expected to run; liquidity provision is otherwise not clearly controlled by the hook.
Fee behaviour
Exposes FEE_PIPS and PIPS getters and owner revenue share parameters, suggesting a fee is taken and partly sent to the owner, but the precise fee logic cannot be confirmed without source.
Owner & admin controls
An OWNER getter and OWNER_SHARE getter exist, and an owner revenue share is tracked through ownerOwed and ownerPaid; whether owner can pause or change parameters cannot be confirmed from decoded selectors alone.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta

beforeInitialize sets initial pool state; afterInitialize records launch configuration; beforeSwap and afterSwap run swap logic and return deltas to take or adjust amounts; beforeSwapReturnDelta and afterSwapReturnDelta allow the hook to take currency from swaps.

Security & trust assessment

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

Who controls it: An owner key may control or receive the owner share and possibly treasury payouts; without source, it cannot be confirmed whether it can change fees or shares.

Risk to user funds: The hook takes currency via return deltas during swaps and settles it through the pool manager, so trader funds passing through swaps are exposed to hook-side capture.

Security findings

  • [high] Return-delta currency capture on swaps: The hook enables beforeSwapReturnDelta and afterSwapReturnDelta and calls take and flush, so it can capture currency from every swap, which directly affects trader outputs.
  • [medium] Owner revenue share from swap flows: OWNER_SHARE, ownerOwed and ownerPaid indicate that a portion of hook-collected value is routed to the owner, a centralization point that depends on the configured share.
  • [medium] No source to verify parameter bounds: Without verified source, it cannot be confirmed whether FEE_PIPS or OWNER_SHARE are bounded or whether an owner can change them after deployment.
  • [info] Treasury transfer path: A treasurySent slot and a PayFailed error suggest a treasury payout path that could be a fund-movement point.

Contract details

Verified source
No
Bytecode size
5,892 bytes
Upgradeable proxy
No
Detected patterns
moves-currency, return-delta

Pools using Fee sharing hook