Likely fee sharing hook on World Chain

Uniswap v4 Hook Contract 0x0b2c6c729aaab9c1e1b4d565e3712626d776d4cc on World Chain · 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 tracks pairs and fees, takes a per-swap delta to accrue fees, and exposes owner-controlled pause and withdrawal functions.

How it works step by step

  • Registers each initialized pool into an on-chain pairs registry on afterInitialize.
  • Uses beforeSwap and afterSwap to update per-pair state and fee accounting.
  • Takes and returns currency deltas during swaps via beforeSwapReturnDelta and afterSwapReturnDelta.
  • Records liquidity additions through afterAddLiquidity.
  • Mints and burns ERC-6909 claims and exposes a takeAll helper to settle held currency.
  • Provides owner-only pause, ownership transfer, and withdrawal functions.
Swap behaviour
beforeSwap and afterSwap update pair state and return deltas, so the hook takes or adjusts currency amounts during each swap.
Liquidity behaviour
afterAddLiquidity updates per-pair liquidity accounting (slot 5); the hook also mints and burns ERC-6909 claims, so liquidity-side state is tracked by the hook.
Fee behaviour
Hook uses beforeSwapReturnDelta and afterSwapReturnDelta, so it takes and returns deltas on swaps; fees are tracked per pair in a fees mapping (slot 1) and swapFee is exposed as a view, indicating a hook-managed fee taken off swap amounts rather than only the pool's static fee. Exact rates could not be determined without source.
Owner & admin controls
Owner (storage slot 3) can transfer ownership via setOwner(address) and toggle a global pause via setPause(bool) (slot 7 bit 4); owner can also call withdraw(address,uint256) and mint/burn helpers, which suggests privileged token and fee recovery. No upgrade proxy pattern was identified from the selectors.

Enabled Uniswap v4 callbacks

afterInitialize, afterAddLiquidity, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta

afterInitialize registers each new pool into the pairs and pairList registries; beforeSwap and afterSwap update pair state and fee accounting; beforeSwapReturnDelta and afterSwapReturnDelta let the hook take or give back currency during swaps; afterAddLiquidity records liquidity changes.

Security & trust assessment

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

Who controls it: The owner can pause the hook through setPause, which may block swaps that depend on it, reassign ownership, and withdraw or move tokens the hook holds, including accrued fees.

Risk to user funds: The hook can hold currency from fees and liquidity accounting and can move it through withdraw and takeAll, and its return deltas can change swap outcomes; without verified source the exact conditions cannot be confirmed.

Security findings

  • [medium] Owner pause control: Owner can set a pause flag that the hook reads during swap logic, potentially blocking swaps for all pools using this hook.
  • [medium] Hook can move held funds: withdraw(address,uint256) and takeAll() allow privileged or broad movement of currency held by the hook, which may include accrued fee balances.
  • [medium] Return-delta swap intervention: Hook takes and returns deltas in beforeSwap and afterSwap, so it can alter the amounts users receive or pay on each swap.
  • [low] Single-key ownership transfer: setOwner(address) allows a single key to transfer administrative control with no timelock visible in the bytecode.
  • [info] Self-unlock callback: Hook uses self-unlock and unlockCallback to call back into PoolManager, which is a common pattern but increases the attack surface if callback validation is weak.

Contract details

Verified source
No
Bytecode size
18,172 bytes
Upgradeable proxy
No
Detected patterns
erc6909-claims, moves-currency, return-delta, self-unlock

Pools using Likely fee sharing hook