Dynamic fee hook on Arc

Uniswap v4 Hook Contract 0x8ca486e0ee09307880d428c0089ea683a24a40c0 on Arc · Dynamic fee

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

What it does

This hook sets each swap's fee based on the trader, so owner-approved quoters pay one rate and everyone else pays another. It also runs a bid system after swaps, while LPs can always withdraw freely.

How it works step by step

  • Charges a swap fee that depends on who is swapping: approved 'quoter' addresses get one fee rate (quoteFee) and everyone else gets another (settleFee).
  • The owner can set both fee rates and add or remove approved quoter addresses.
  • Includes a bid feature: a user can place a bid tied to a pool and a price tick. The hook can later execute it after swaps or let the bidder cancel it.
  • The hook can itself call the PoolManager to create pools, add or remove its own liquidity, and swap for bid settlement.
Swap behaviour
Before each swap the hook checks whether the swapper is an approved quoter and returns a dynamic fee override, either the quoter rate or the standard rate. After the swap it may process stored bids, but it cannot take tokens from the swap through return deltas.
Liquidity behaviour
No liquidity callbacks; LPs can add and withdraw freely. The hook can manage its own liquidity positions for bids, but it cannot block other LPs.
Fee behaviour
The swap fee is overridden per swap: approved quoters pay the quote fee and other traders pay the settle fee. Both are owner-set and rejected with a BadFee error above an unknown cap. Fees go to LPs through the normal pool fee mechanism.
Owner & admin controls
The owner can change the two fee rates with setFees, which has a cap check whose exact limit is not visible in bytecode, and can approve or revoke quoter addresses. No pause or withdrawal controls were found.

Enabled Uniswap v4 callbacks

beforeSwap, afterSwap

beforeSwap: picks the fee rate based on whether the swapper is an approved quoter; afterSwap: checks and settles stored bids after price moves.

Security & trust assessment

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

Who controls it: A single owner sets the fee rates and the quoter allowlist. At worst they could raise the fees for regular traders up to an unverified cap or favor chosen addresses.

Risk to user funds: The hook cannot take swap tokens or LP principal, and LP withdrawals are unrestricted. Only funds bidders voluntarily deposit into bids pass through the hook, and the exact fee ceiling is unknown from bytecode.

Security findings

  • [low] Owner-set fees with unverified cap: The owner can change both fee rates. A BadFee check exists, but the maximum cannot be confirmed from bytecode.
  • [info] Preferential pricing for whitelisted quoters: Addresses approved by the owner pay a different, likely lower, fee than ordinary traders.
  • [low] Bid funds held via hook: Bidders deposit tokens through a payable function and transferFrom. Settlement and cancellation logic cannot be fully verified without source.
  • [info] LP withdrawals unrestricted: Remove-liquidity callbacks and return deltas are disabled, so LPs can always withdraw.

Contract details

Verified source
No
Bytecode size
8,554 bytes
Upgradeable proxy
No
Detected patterns
dynamic-fee, erc20, moves-currency, ownable, self-unlock

Pools using Dynamic fee hook