Fee sharing hook on Arc
Uniswap v4 Hook Contract 0x285f3cc5eaf62ae51e14ea6a54885e60518245c7 on Arc · Fee sharing
- Volume (24h)
- $0
- Value locked (TVL)
- $1.07
- All-time volume
- $5.54M
- Pools using this hook
- 12
- Swaps (24h)
- 0 (0 traders)
- Total swaps
- 57,936
What it does
A fee-sharing hook that charges dynamic and overridable swap fees on Uniswap v4 pools and splits the collected revenue between the owner, a creator and a fee recipient, with owner-controlled pause and whitelist features.
How it works step by step
- Sets swap fees per pool using a packed config with base, dynamic and override tiers
- Applies per-address fee overrides set by the owner
- Splits collected fees between owner, creator and fee recipient using BPS settings
- Enforces whitelist-only mode and trusted router or origin checks on swaps
- Counts swaps per pool in afterSwap and takes a fee through return deltas
- Owner can pause swaps and withdraw tokens held by the hook
- Swap behaviour
- beforeSwap checks pause state, whitelist and trusted router access, and sets fees (base, dynamic or per-address override). afterSwap increments a per-pool swap counter and can take a fee through the afterSwapReturnDelta permission.
- Liquidity behaviour
- afterAddLiquidity and afterRemoveLiquidity callbacks are enabled with return-delta permissions, so the hook can take or give a balance delta on liquidity changes. beforeAddLiquidity and beforeRemoveLiquidity selectors exist in the dispatch table but the permission flags do not enable them.
- Fee behaviour
- Fees are configured through a packed fee config (base, dynamic and override tiers stored in slots 3, 4 and 5) with per-address fee overrides, and a portion of fees is split between owner, creator and fee recipient via ownerBps and creatorBps. Exact fee formula could not be confirmed without source.
- Owner & admin controls
- Owner (Ownable, transferOwnership) can set fee recipient, owner and creator BPS splits, whitelist-only mode, trusted routers and origins, per-address fee overrides, exempt address, pause or unpause swaps via setPaused, and withdraw tokens via withdraw(address,address,uint256). Creator address is also referenced in storage.
Enabled Uniswap v4 callbacks
afterAddLiquidity, afterRemoveLiquidity, beforeSwap, afterSwap, afterSwapReturnDelta, afterAddLiquidityReturnDelta, afterRemoveLiquidityReturnDelta
afterAddLiquidity and afterRemoveLiquidity run post-liquidity logic and may return deltas. afterAddLiquidityReturnDelta and afterRemoveLiquidityReturnDelta let the hook take a share of liquidity flows. beforeSwap sets dynamic or overridden fees and checks whitelist and router access. afterSwap records swap counts and may take a fee via afterSwapReturnDelta.
Security & trust assessment
Risk level: medium (decoded bytecode, low confidence).
Who controls it: The owner holds broad control: it can pause swaps, change fee splits and fee overrides, toggle whitelist and trusted routers, and withdraw tokens held by the hook. A compromised owner key could redirect fee revenue or block trading.
Risk to user funds: The hook takes tokens through afterSwap and liquidity return deltas and holds balances that the owner can withdraw. The owner can also pause swaps, so user funds can be temporarily blocked. Pool funds themselves are held by PoolManager, but fee-share and withdrawal logic is controlled by the owner.
Security findings
- [high] Owner withdrawal of hook-held tokens: Owner can call withdraw(address,address,uint256) to move tokens held by the hook, so any balances the hook accumulates from return deltas are controlled by a single key.
- [medium] Owner pause can block swaps: setPaused lets the owner halt swaps through beforeSwap checks, which can block trading for all users.
- [medium] Return-delta fee capture: Several return-delta permissions are enabled, meaning the hook can take part of swap and liquidity amounts, and the owner can redirect fee splits.
- [medium] Per-address fee overrides and whitelist: Owner can set per-address fee overrides and whitelist-only mode, which can discriminate between traders.
- [info] Single owner without timelock: Ownable pattern with transferOwnership; no timelock is visible in the decoded functions.
Contract details
- Verified source
- No
- Bytecode size
- 19,351 bytes
- Upgradeable proxy
- No
- Detected patterns
- moves-currency, ownable, pausable, return-delta
Pools using Fee sharing hook
- USDC / Minara (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- USDC / ARGUS (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- USDC / USDC (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- USDC / FAZE (0.00% fee) — 24h volume $0, TVL <$0.01, 0 swaps today
- CRCL / USDC (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- USDC / TOLLY (0.00% fee) — 24h volume $0, TVL <$0.01, 0 swaps today
- USDC / DUKE (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- USDC / EURC (0.00% fee) — 24h volume $0, TVL $1.07, 0 swaps today
- cirBTC / USDC (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- LONG / USDC (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- USDC / CINU (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- USDC / AKARII (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today