Dynamic fee hook on Arc

Uniswap v4 Hook Contract 0x299bb6b6c63a5d751f7e672f9607f8567a7880c0 on Arc · Dynamic fee

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

What it does

This hook sets a dynamic, controller-adjustable swap fee per trade, so registered quoters or specially configured addresses and pools may pay more or less than other traders, while LPs can always withdraw freely.

How it works step by step

  • Sets the swap fee for each trade in beforeSwap instead of using one fixed pool fee.
  • Keeps four configurable fee levels, apparently including a quote fee and a settle fee, plus per-pool and per-address fee overrides.
  • Treats addresses registered as 'quoters' differently when picking which fee applies.
  • A controller address can change fee levels, per-pool fees, per-address fees and the quoter list.
  • Does not touch liquidity adds or withdrawals.
Swap behaviour
Before each swap the hook picks a fee based on the caller (quoter or not), any per-address override and any per-pool override, and returns it as the swap's LP fee. afterSwap does nothing meaningful, and the hook cannot take tokens from swaps because return deltas are disabled.
Liquidity behaviour
No liquidity callbacks; LPs can add and withdraw freely.
Fee behaviour
The swap fee is dynamic, chosen from admin-set values (four global tiers, per-pool and per-address overrides), and it goes to LPs as the normal pool fee. The maximum fee cannot be verified from bytecode. Uniswap v4 itself caps LP fees at 100%.
Owner & admin controls
A controller address (stored separately from the owner) can set the four fee tiers, per-pool fees and per-address fees, and can add or remove quoters. No hard-coded fee cap is visible in the bytecode.

Enabled Uniswap v4 callbacks

beforeSwap, afterSwap

beforeSwap: chooses and overrides the swap fee per trade; afterSwap: no-op pass-through.

Security & trust assessment

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

Who controls it: A single controller address manages all fee settings and the quoter list. The worst it can do is raise swap fees to discourage or overcharge trades; it cannot touch LP principal.

Risk to user funds: The hook holds no funds and cannot deduct tokens directly. Traders only pay the LP fee it sets, whose maximum is unverified, and LP withdrawals are fully unrestricted.

Security findings

  • [medium] Admin-set fees without a visible cap: The controller can change global, per-pool and per-address fees. No upper bound was found in the unverified bytecode, so fees could be raised sharply.
  • [low] Per-address fee discrimination: Quoter status and per-address overrides mean different callers or routers can pay different fees.
  • [info] LP withdrawals unrestricted: Remove-liquidity callbacks and return deltas are disabled, so LPs can always withdraw and the hook cannot take swap tokens.

Contract details

Verified source
No
Bytecode size
5,802 bytes
Upgradeable proxy
No
Detected patterns
dynamic-fee, ownable

Pools using Dynamic fee hook