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