Access control hook on Arbitrum

Uniswap v4 Hook Contract 0x6d05bf838b92cfa1983d942f0fba4e94e1186ae0 on Arbitrum · Access control

Volume (24h)
$0.03
Value locked (TVL)
$0
All-time volume
$0.03
Pools using this hook
1
Swaps (24h)
8 (3 traders)
Total swaps
8

What it does

This hook is a per-pool access gate: it adds no extra fee and uses the pool's static fee, but swaps can be restricted or paused and LP withdrawals can be frozen by the pool's vault or manager.

How it works step by step

  • Lets a registered vault or manager configure each pool with feature flags such as router allowlists, one-way swaps, max swap size, owner-only liquidity, order expiry and donation guards.
  • Can pause swaps, adding liquidity, or removing liquidity per pool through runtime flags.
  • Tracks fills for configured order or campaign windows and can stop swaps automatically or before an order starts.
  • Pools must be registered with the hook before they can initialize.
Swap behaviour
Before each swap the hook checks the pool's configuration and may revert if swaps are paused, the router is not allowed, the order has not started or has expired, the trade exceeds a max size, or it goes the wrong direction on a one-way pool. After the swap it records fill progress and does not change swap amounts.
Liquidity behaviour
Adding and removing liquidity are checked against the pool's flags and can be blocked by a pause or an owner-only liquidity rule. Because the remove-liquidity check is active, LP withdrawals can be paused, so LPs are not guaranteed to be able to exit freely.
Fee behaviour
Uses the pool's static fee. No fee-taking logic is visible, and return deltas are disabled, so the hook cannot take tokens from swaps.
Owner & admin controls
A per-pool vault or manager address set at registration can change runtime flags (pause swaps, adds or removals) and set campaign or order parameters. Exact limits cannot be verified from bytecode.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeAddLiquidity, beforeRemoveLiquidity, beforeSwap, afterSwap, beforeDonate

beforeInitialize: only allows registered pools; beforeAddLiquidity: enforces add pauses and owner-only liquidity; beforeRemoveLiquidity: enforces withdrawal pauses; beforeSwap: enforces pauses, router allowlist, direction, size and timing limits; afterSwap: updates fill tracking and auto-stop state; beforeDonate: applies the donation guard.

Security & trust assessment

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

Who controls it: Each pool's registered vault or manager controls its runtime flags and campaign settings. At worst it can halt trading and freeze LP withdrawals indefinitely.

Risk to user funds: The hook takes no fees and cannot move swap or LP tokens. However, LP principal can be locked in the pool whenever removals are paused.

Security findings

  • [high] LP withdrawals can be paused: A PAUSE_REMOVE_LIQUIDITY flag is checked in beforeRemoveLiquidity, so the pool's vault or manager can block LPs from withdrawing for as long as the flag stays on.
  • [medium] Swap gating and pauses: Swaps can be paused, restricted to allowlisted routers, limited to one direction, capped in size, or limited to a time window.
  • [info] No fee extraction: Return deltas are disabled, so the hook cannot take tokens from swaps or liquidity changes.

Contract details

Verified source
No
Bytecode size
7,002 bytes
Upgradeable proxy
No
Detected patterns
access-control, liquidity-management

Pools using Access control hook