Access control hook on Arbitrum

Uniswap v4 Hook Contract 0xeda29d099e2804589d908adac5906563049d4080 on Arbitrum · Access control

Volume (24h)
$0
Value locked (TVL)
$0
All-time volume
$0.04
Pools using this hook
2
Swaps (24h)
0 (0 traders)
Total swaps
67,834

What it does

A Uniswap v4 hook on Arbitrum that gates swaps with per-user daily volume limits, holding-period logic and a dynamic swap fee, with an owner-controlled emergency pause.

How it works step by step

  • Enforces a maximum daily USDC-denominated volume per user via dailyVolume and maxDailyVolumeUSDC
  • Tracks per-user holding periods and last MXTK acquisition time to scale trading restrictions
  • Computes a swap fee for each trade through getCurrentFeeForSwap, with per-address bypass flags
  • Exposes an owner-controlled emergency pause that halts swaps
  • Preloads holding periods for a batch of users and adjusts min and max holding period bounds
Swap behaviour
beforeSwap checks the emergency pause flag, user daily volume and holding period state, and computes a swap fee via getCurrentFeeForSwap, updating per-user volume and timestamps.
Liquidity behaviour
beforeAddLiquidity, beforeRemoveLiquidity, afterAddLiquidity and afterRemoveLiquidity are present as selectors but appear to be view stubs with no meaningful state changes; liquidity removal is likely gated by holding period logic but this is not confirmed.
Fee behaviour
getCurrentFeeForSwap exists and reads per-user state and bypass flags, suggesting the hook overrides the swap fee based on user holding period and daily volume; exact fee formula cannot be determined from bytecode alone.
Owner & admin controls
Owner (slot 1) can transfer ownership, set per-address fee/volume bypass flags (setBypass), set max daily volume, set the minimum and maximum holding period range, preload user holding periods, and toggle an emergency pause that blocks swaps. clearPriceCache is also owner-gated per storage access patterns.

Enabled Uniswap v4 callbacks

beforeSwap

beforeSwap is the only enabled permission and is used to enforce per-user trading limits, holding periods and fee logic before each swap; the remaining callbacks are present in the interface but not enabled by the address permissions.

Security & trust assessment

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

Who controls it: The owner can pause all swaps via emergencyPause, grant fee bypass to any address, change the daily volume cap and holding period parameters, and transfer ownership. A compromised owner key could block trading or selectively exempt addresses from restrictions.

Risk to user funds: The hook is a beforeSwap-only hook that reads and writes accounting state and can revert swaps via the pause flag or limit checks; it does not appear to custody tokens, but a paused or restricted hook can block user trades. Whether it takes a return delta or fee cut is not determinable from the selectors alone.

Security findings

  • [medium] Owner can pause swaps: emergencyPause(bool) is owner-controlled and beforeSwap reads the pause flag, so the owner can halt all swaps.
  • [low] Owner-controlled bypass list: setBypass(address,bool) lets the owner exempt addresses from fee or volume logic, which can be used to favour specific actors.
  • [low] Owner can change trading limits: Owner can set maxDailyVolume and holding period ranges that govern user trading limits; changes take effect immediately with no timelock visible in the interface.
  • [info] Unverified source: Source is unverified; behaviour is inferred from selectors and storage access, and the exact fee and limit formulas cannot be confirmed.

Contract details

Verified source
No
Bytecode size
7,813 bytes
Upgradeable proxy
No
Detected patterns
ownable

Pools using Access control hook