Dynamic fee hook on Arc

Uniswap v4 Hook Contract 0x6708a4995b7cfa4cee1785f84ac0c8f5ae4980c0 on Arc · Dynamic fee

Volume (24h)
$0
Value locked (TVL)
$0
All-time volume
$0
Pools using this hook
2
Swaps (24h)
0 (0 traders)
Total swaps
0

What it does

This hook applies owner-configurable fees to swaps on its pool, with the quoted and settled fee values stored on-chain and adjustable by the owner, so the cost of trades can rise or fall at the owner's discretion.

How it works step by step

  • Stores four uint24 fee parameters packed into storage slot 0 and updates them through setFees.
  • Exposes quoteFee and settleFee getters so the pool's fee configuration can be read on-chain.
  • Maintains an allowlist of quoter addresses (mapping of address to bool) that is managed through setQuoter and queried by isQuoter.
  • Uses a dynamic-fee style hook with beforeSwap and afterSwap callbacks, with an owner recorded in storage slot 0.
  • Stores a manager address and a counter in slot 2 that is written when quoter permissions change.
Swap behaviour
beforeSwap and afterSwap are enabled, and the hook reads its packed fee parameters from storage during swaps, so the fee applied to a swap depends on the stored values; the exact per-direction logic cannot be fully determined from decoded bytecode alone.
Liquidity behaviour
No liquidity callbacks.
Fee behaviour
Fee values are stored as four uint24 parameters in slot 0 and are set by the owner through setFees; swaps read these values to determine the fee, while quoteFee and settleFee expose two of them.
Owner & admin controls
The owner (recorded in storage slot 0 and returned by owner()) can call setFees to change all four fee parameters and setQuoter to grant or revoke quoter status; no pausing or upgrade functions were found.

Enabled Uniswap v4 callbacks

beforeSwap, afterSwap

beforeSwap is used to read the stored fee parameters and gate or price the swap; afterSwap is used for post-swap bookkeeping or accounting against the same stored state.

Security & trust assessment

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

Who controls it: A single owner key can rewrite all four fee parameters at any time and can grant quoter status to arbitrary addresses, which directly changes the cost of every swap for all users.

Risk to user funds: The hook does not appear to hold user tokens directly from the decoded selectors, but high fees set by the owner could make swaps uneconomic, and quoter-gated paths could disadvantage ordinary traders.

Security findings

  • [high] Owner can set arbitrary fees: setFees accepts four uint24 values without any visible bound check in the decoded selector, so the owner can set fees high enough to make swaps extremely expensive or effectively blocked.
  • [medium] Quoter allowlist controls quote access: setQuoter writes to a mapping of addresses that is read by the swap-path selector 1ff16332, so privileged quoter addresses may receive different treatment than ordinary users.
  • [info] No upgrade or pause mechanism observed: No proxy, upgrade, or pause selectors were found in the dispatch table, which limits the ways the owner can alter behaviour beyond the stored parameters.
  • [info] Unverified source: Without verified source the exact fee formula and any hidden gating logic cannot be confirmed, so the analysis relies on decoded selectors and storage layout.

Contract details

Verified source
No
Bytecode size
3,898 bytes
Upgradeable proxy
No
Detected patterns
dynamic-fee, ownable

Pools using Dynamic fee hook