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
- USDC / ARGUS (Dynamic fee) — 24h volume $0, TVL <$0.01, 0 swaps today
- USDC / ARGUS (Dynamic fee) — 24h volume $0, TVL <$0.01, 0 swaps today
- USDC / ARGUS (Dynamic fee) — 24h volume $0, TVL $0, 0 swaps today