Fee sharing hook on Arc
Uniswap v4 Hook Contract 0x3eec06f67ecc830cb6a77ef3c7a61444f91980cc on Arc · Fee sharing
- Volume (24h)
- $70
- Value locked (TVL)
- $33.57K
- All-time volume
- $1.80M
- Pools using this hook
- 2
- Swaps (24h)
- 1 (1 traders)
- Total swaps
- 13,348
What it does
A fee-sharing hook that skims a portion of swap fees on each trade and routes a share to an operations recipient.
How it works step by step
- Charges a fee on swaps using TOTAL_FEE over FEE_DENOMINATOR
- Takes the fee via return deltas and pool manager take() calls
- Routes OPS_SHARE of collected fees to opsRecipient
- Tracks totalFeesCollected and totalOpsCollected in storage
- Liquidity hooks are present but do not alter liquidity flows
- Swap behaviour
- beforeSwap and afterSwap run on every swap; they compute a fee and use return deltas to take it from the swap amounts, forwarding the ops share to the recipient.
- Liquidity behaviour
- Liquidity add and remove callbacks (beforeAddLiquidity, afterAddLiquidity, beforeRemoveLiquidity, afterRemoveLiquidity) exist but appear to be pass-through; no liquidity callback was flagged as permission-enabled.
- Fee behaviour
- Fee is taken on swaps as a share of the swap delta: TOTAL_FEE and FEE_DENOMINATOR constants define the fee rate, and a portion (OPS_SHARE) is routed to opsRecipient while the remainder is tracked as totalFeesCollected. Exact formula not confirmed from decoded bytecode.
- Owner & admin controls
- Owner (Ownable2Step: transferOwnership, acceptOwnership, renounceOwnership) can set the ops recipient via setOpsRecipient and the admin via 0x81ecaa7c, and 0xa6427091 and 0x0d4cadbc are also owner-gated setters. Owner can rotate the admin address; no pause or upgrade mechanism identified.
Enabled Uniswap v4 callbacks
beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta
beforeSwap and afterSwap are used to compute and collect fees on swaps; beforeSwapReturnDelta and afterSwapReturnDelta let the hook take a share of the swap amounts via take(), so it moves pool currency to the ops recipient.
Security & trust assessment
Risk level: medium, estimated (decoded bytecode, low confidence).
Who controls it: The owner can change the ops recipient, which receives the protocol share of swap fees, and can rotate the admin and owner. A malicious or compromised owner could redirect fee revenue to an address of their choice.
Risk to user funds: The hook takes a fee from swap currency through return deltas and holds accumulated fee balances (totalFeesCollected, totalOpsCollected) before forwarding them, so it can hold and move a portion of trader funds on each swap.
Security findings
- [medium] Hook takes swap currency via return deltas: afterSwap and beforeSwap use return deltas and call take() on the pool manager, so the hook moves user swap currency to the recipient on every swap.
- [medium] Owner can redirect fee recipient: setOpsRecipient is owner-gated and redirects accumulated fee revenue; no timelock is evident in the decoded functions.
- [low] Fee parameters may be changeable: Fee rate constants and admin setters appear adjustable, but exact bounds could not be verified without source.
- [info] Unverified source: Absence of verified source limits certainty on fee math and access checks.
Contract details
- Verified source
- No
- Bytecode size
- 5,649 bytes
- Upgradeable proxy
- No
- Detected patterns
- moves-currency, ownable, return-delta
Pools using Fee sharing hook
- USDC / AKARII (0.30% fee) — 24h volume $70, TVL $33.57K, 1 swaps today
- USDC / AKARII (0.30% fee) — 24h volume $0, TVL $0, 0 swaps today