Dynamic fee hook on Arc

Uniswap v4 Hook Contract 0x58353e4d953d6a9121b207fa0d9cafa9e8866880 on Arc · Dynamic fee

Volume (24h)
$0
Value locked (TVL)
<$0.01
All-time volume
$191.77K
Pools using this hook
3
Swaps (24h)
0 (0 traders)
Total swaps
1,905

What it does

A dynamic-fee hook that sets each swap's fee from admin-managed settings (exact range unverified) and limits new liquidity to whitelisted addresses, while LPs can always withdraw freely.

How it works step by step

  • Requires pools to use dynamic fees and checks pool setup when a pool is created (rejects non-dynamic-fee pools).
  • Sets the swap fee per swap from an owner/registrar-configured fee configuration and per-pool settings; exact formula and caps cannot be confirmed from bytecode.
  • Restricts adding liquidity to whitelisted addresses maintained by the owner or registrar.
  • Tracks per-pool swap state (timestamps or counters) that appear to feed into the dynamic fee calculation.
Swap behaviour
Before each swap the hook computes a fee override for the dynamic-fee pool and records per-pool data; it can reject invalid swap amounts. It cannot take tokens from swaps directly because swap return deltas are disabled.
Liquidity behaviour
Adding liquidity is gated by a whitelist the owner/registrar controls, so non-whitelisted users may be blocked. Remove-liquidity callbacks are disabled, so LPs can always withdraw freely.
Fee behaviour
The pool's LP fee is set dynamically per swap from a stored fee configuration (base/min/max style values plus per-pool parameters); exact percentages and any hard cap are unknown from bytecode, and fees go to LPs through the normal pool fee mechanism.
Owner & admin controls
The owner (two-step ownership) and a registrar can update the global fee configuration, per-pool settings, the registrar address, and the LP whitelist. Whether the fee configuration has a hard upper cap cannot be verified from bytecode.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeAddLiquidity, beforeSwap

beforeInitialize: validates the pool uses dynamic fees and registers pool settings; beforeAddLiquidity: enforces the LP whitelist; beforeSwap: calculates and applies the dynamic swap fee and records swap state.

Security & trust assessment

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

Who controls it: An owner and a registrar control fee settings and the LP whitelist. At worst they can raise swap fees (cap unverified) or stop new liquidity additions, but cannot block withdrawals.

Risk to user funds: The hook holds no user funds and cannot deduct tokens via return deltas; it only influences the pool fee rate, whose maximum is unknown from bytecode. LP principal cannot be locked or drained by the hook.

Security findings

  • [medium] Admin-set dynamic fee with unverified cap: Owner/registrar functions write the fee configuration and per-pool fee parameters; without source the maximum fee cannot be confirmed.
  • [low] Whitelist-gated liquidity adds: Only addresses approved by the owner or registrar can add liquidity; this does not affect existing positions.
  • [info] Withdrawals unrestricted: Remove-liquidity callbacks are disabled, so LPs can always remove their liquidity.

Contract details

Verified source
No
Bytecode size
9,983 bytes
Upgradeable proxy
No
Detected patterns
access-control, dynamic-fee, ownable

Pools using Dynamic fee hook