Fee sharing hook on Arc

Uniswap v4 Hook Contract 0xd5601b6a530fe8fcc7af21bf93e58197064120cc on Arc · Fee sharing

Volume (24h)
$0
Value locked (TVL)
$537
All-time volume
$945.10K
Pools using this hook
32
Swaps (24h)
0 (0 traders)
Total swaps
10,558

What it does

A fee-sharing hook that takes a portion of swaps in pools it is attached to and records entitlements for recipients such as a treasury, with claim functions to withdraw them.

How it works step by step

  • Stores a fee configuration per pool id in beforeInitialize and reads it in beforeSwap.
  • Uses beforeSwapReturnDelta and afterSwapReturnDelta to take a share of swap amounts from the PoolManager.
  • Credits the captured amounts to recipient balances in a nested mapping keyed by recipient and token.
  • Lets users or recipients call claim to withdraw balances, with claimable and totalAccounted as read-only views.
  • Exposes registrar, treasury, usdc and poolManager getters for the external addresses it depends on.
Swap behaviour
beforeSwap and afterSwap run on every swap; the hook uses return deltas to capture a fee-based share of the swap and records the amount in its claimable ledger.
Liquidity behaviour
No liquidity callbacks.
Fee behaviour
beforeSwap reads fee configuration keyed by pool id (feeConfigs and storage slot 1) and the hook uses beforeSwapReturnDelta and afterSwapReturnDelta to take a portion of swap amounts, which appears to route fees to a treasury address and accrue balances per token per recipient in the ledger mapping.
Owner & admin controls
Selector 0x6747a8a0 is a nonpayable configuration function that writes storage slot 1 (a uint256-to-address mapping), suggesting an owner or registrar can register or update fee configurations. The exact access check cannot be confirmed without source, but registrar(), treasury(), usdc() and poolManager() getters indicate privileged addresses are configured on-chain.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta

beforeInitialize registers per-pool configuration; beforeSwap and beforeSwapReturnDelta adjust swap deltas so the hook can capture a share of input or output; afterSwap and afterSwapReturnDelta finalize accounting and apply a second delta after execution.

Security & trust assessment

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

Who controls it: A privileged key that can set fee configurations or the treasury/registrar addresses could redirect or raise the share taken from swaps, affecting all traders in pools that use this hook.

Risk to user funds: The hook can take a share of swap currency through return deltas and holds balances owed to fee recipients in its own ledger, so it does hold and move pool-related funds; a bug or misconfigured fee could affect traders and LPs.

Security findings

  • [medium] Hook takes tokens via return deltas: Return-delta permissions let the hook take tokens from every swap through the PoolManager, so any mis-set fee or accounting bug affects user funds directly.
  • [medium] Hook moves currency during swaps: The bytecode includes a call to take(address,address,uint256) and token transfer/approve selectors, so the hook moves currency out of the PoolManager to recipients such as the treasury.
  • [medium] Claimable balance ledger depends on correct accounting: Accounting uses per-user claimable balances (claim, claimable, totalAccounted) that the hook must keep solvent; mismatches between recorded balances and held tokens could leave claims unpaid.
  • [low] Privileged configuration path unverified: Fee-setting and recipient configuration appear to be callable by a privileged role, but the access control could not be confirmed from bytecode alone.
  • [info] Reentrancy guard present: The bytecode contains a ReentrancyGuard error selector, indicating reentrancy protection is present on at least some entry points.

Contract details

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

Pools using Fee sharing hook