Fee sharing hook on Arc
Uniswap v4 Hook Contract 0xd4d8f6a8fbbdf01ff5911c9a85d351b355126acc on Arc · Fee sharing
- Volume (24h)
- $0
- Value locked (TVL)
- $18
- All-time volume
- $128
- Pools using this hook
- 40
- Swaps (24h)
- 0 (0 traders)
- Total swaps
- 1,166
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.
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
- TORTOISE / TOLLY (Dynamic fee) — 24h volume $0, TVL $0, 0 swaps today
- TOLLY / TOLLA (Dynamic fee) — 24h volume $0, TVL $0, 0 swaps today
- TESTV4 / TOLLY (Dynamic fee) — 24h volume $0, TVL $0, 0 swaps today
- TWOLF / USDC (Dynamic fee) — 24h volume $0, TVL $1.64, 0 swaps today
- USDC / DACC (Dynamic fee) — 24h volume $0, TVL $0.04, 0 swaps today
- USDC / SS (Dynamic fee) — 24h volume $0, TVL $0.22, 0 swaps today
- USDC / EVO (Dynamic fee) — 24h volume $0, TVL $0.12, 0 swaps today
- USDC / LAC (Dynamic fee) — 24h volume $0, TVL $0.04, 0 swaps today
- USDC / P4G (Dynamic fee) — 24h volume $0, TVL $0.05, 0 swaps today
- USDC / PI (Dynamic fee) — 24h volume $0, TVL $0.12, 0 swaps today
- USDC / USDUC (Dynamic fee) — 24h volume $0, TVL $0.11, 0 swaps today
- V4TEST / TOLLY (Dynamic fee) — 24h volume $0, TVL $0, 0 swaps today
- XAUM / GA (Dynamic fee) — 24h volume $0, TVL $0, 0 swaps today
- PREDICTFUN / USDC (Dynamic fee) — 24h volume $0, TVL $0.30, 0 swaps today
- USDC / RUNNER (Dynamic fee) — 24h volume $0, TVL $0.05, 0 swaps today
- USDC / AURA (Dynamic fee) — 24h volume $0, TVL $0.22, 0 swaps today
- JAIL / USDC (Dynamic fee) — 24h volume $0, TVL $0.15, 0 swaps today
- USDC / URC (Dynamic fee) — 24h volume $0, TVL $0.05, 0 swaps today
- USDC / USDC (Dynamic fee) — 24h volume $0, TVL $0.10, 0 swaps today
- BABYTOLLY / TOLLY (Dynamic fee) — 24h volume $0, TVL $0, 0 swaps today