Fee sharing hook on Arc

Uniswap v4 Hook Contract 0xcf3f1b4e13ca4ffb2df46d403417aad8921aaacc on Arc · 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
3

What it does

A Uniswap v4 hook that appears to take a fee or toll on swaps and split it between a protocol treasury, a pool creator, a holder vault and a token-burn flow.

This read was written for the hook 0xd4d8…6acc on Arc and reused here: the two share a code shape, so constants such as fees, owners and addresses can differ.

How it works step by step

  • Registers and tracks pools in beforeInitialize and maintains per-pool state such as creator and key mappings
  • Takes a toll from swaps via beforeSwapReturnDelta and afterSwapReturnDelta
  • Splits collected fees across protocol treasury, creator, holder vault and burn according to BPS constants
  • Runs custom logic around liquidity additions and removals, including claims and owed balances
  • Supports creator transfer and acceptance and a flush/process flow for accumulated amounts
Swap behaviour
beforeSwap and afterSwap run custom logic and the hook uses swap return deltas to take a share of swap amounts, which are then routed to the protocol, creator, holder and burn recipients.
Liquidity behaviour
beforeAddLiquidity and beforeRemoveLiquidity are implemented and afterAddLiquidity/afterRemoveLiquidity selectors exist; the hook appears to track liquidity-related state, but detailed behaviour cannot be confirmed without source.
Fee behaviour
Constants TOLL_BPS, CREATOR_BPS, HOLDER_BPS, PROTOCOL_BPS and MAX_CREATOR_TAX_BPS suggest a fee split between a protocol treasury, a pool creator, a holder vault and a burn/furnace flow, with the hook taking a toll from swap flows; exact percentages cannot be read from the bytecode alone.
Owner & admin controls
Selectors suggest a creator-role model: setCreator (0xf41440d9), transferCreator (0xf82e9b9d) and acceptCreator (0xc9e75cab) manage a per-pool creator address, and flush (0x79c76e1a) and processBurn (0xeb6dc7c4) are callable functions; no owner or upgrade selector was identified and no pause function was found. Whether setCreator is restricted to the protocol or a current creator cannot be confirmed from bytecode alone.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeAddLiquidity, beforeRemoveLiquidity, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta

beforeInitialize registers pools, beforeAddLiquidity and beforeRemoveLiquidity run custom logic around liquidity changes, beforeSwap and afterSwap track and settle swap flows, beforeSwapReturnDelta and afterSwapReturnDelta let the hook take or adjust currency deltas during swaps.

Security & trust assessment

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

Who controls it: A creator role can be reassigned via setCreator and transferCreator, and creator-side fee parameters appear adjustable; a compromised creator key could redirect the creator share of fees or alter fee parameters.

Risk to user funds: The hook can take a percentage of swap-related currency through return deltas and routes fees to treasury, creator, holder vault and burn flows; it can therefore alter the amounts traders and LPs receive compared with a standard pool, though bytecode alone does not show whether it can block withdrawals.

Security findings

  • [medium] Hook takes currency via return deltas: The hook has return-delta permissions and moves currency (take/transfer selectors present), so it can take a portion of swap amounts that is not part of the pool's standard accounting.
  • [medium] Privileged creator role controls fee routing: Creator management selectors (setCreator, transferCreator, acceptCreator) and a self-unlock path via unlockCallback mean privileged roles control fee routing and pool-level settlement.
  • [low] Self-unlock accounting path: The hook calls unlock on the PoolManager and implements unlockCallback, so it can open its own accounting context; this is a common pattern but increases the surface for accounting errors.
  • [info] Token burn mechanism present: Burn-related functions (processBurn, pendingBurn, lastBurnBlock, BurnCooldown error) indicate a token-burn mechanism tied to swap flows, which can affect token supply and price impact.

Contract details

Verified source
No
Bytecode size
24,567 bytes
Upgradeable proxy
No
Detected patterns
moves-currency, return-delta, self-unlock

Pools using Fee sharing hook