Likely access control hook on Base

Uniswap v4 Hook Contract 0x569f7f9c8b4ee4215312b62be476d2058b0b08c0 on Base · Access control

Volume (24h)
$318
Value locked (TVL)
$382
All-time volume
$647
Pools using this hook
2
Swaps (24h)
8 (4 traders)
Total swaps
26

What it does

An owner-controlled Uniswap v4 hook that gates liquidity additions and checks price band and pause state on swaps, with privileged functions to move funds and adjust pricing parameters.

How it works step by step

  • Gates liquidity additions in beforeAddLiquidity, likely restricting third-party liquidity.
  • Checks pause state, price band and notional or move windows in beforeSwap.
  • Updates reserve and window accounting in afterSwap.
  • Holds and moves tokens via fund, sweep and take flows.
  • Uses owner and guardian roles to pause, set operator and configure beacon and price band parameters.
Swap behaviour
beforeSwap checks the pause flag, price band and window caps before a swap, and afterSwap updates internal state such as reserves and windows.
Liquidity behaviour
beforeAddLiquidity is enabled and appears to restrict third-party liquidity (NoThirdPartyLiquidity error selector present), so the hook likely gates who may add liquidity. beforeRemoveLiquidity and afterRemoveLiquidity are present as selectors but not enabled in the hook permissions.
Fee behaviour
Not determinable from decoded bytecode; the hook declares no beforeSwap fee override in its permission set beyond the callbacks listed, so the pool's static fee likely applies unless beforeSwap returns a fee override, which cannot be confirmed without source.
Owner & admin controls
Owner (Ownable2Step: owner can transferOwnership, pending owner must acceptOwnership, renounceOwnership available) can set operator, set guardian, set beacon and price band parameters, set reserve floor, fund and sweep funds. Guardian and owner can pause and unpause swaps (pausable flag). No upgrade proxy pattern was identified.

Enabled Uniswap v4 callbacks

beforeAddLiquidity, beforeSwap, afterSwap

beforeAddLiquidity: gates liquidity additions, likely limiting them to authorized accounts. beforeSwap: checks price band, pause state and window caps before a swap executes. afterSwap: updates swap-related state such as reserves, windows or beacon data after a swap.

Security & trust assessment

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

Who controls it: A single owner or operator key controls the hook. It can pause swaps, change the price band and beacon, set reserve floors and move funds through fund and sweep, so users depend heavily on that key behaving honestly.

Risk to user funds: The hook can hold and move pool-related tokens through take, sweep and fund flows and can block swaps through pause, so both user funds and pool liquidity are exposed to the privileged key.

Security findings

  • [medium] Admin pause can block swaps: Owner and guardian can call pause, which halts beforeSwap-gated trading for the pool.
  • [high] Privileged token movement: The hook exposes fund and sweep, which move token balances (the moves-currency tag is set); a privileged key can extract tokens held by the hook.
  • [medium] Admin-adjustable pricing parameters: setPriceBand and setBeacon let an admin change pricing and reference parameters, which could shift execution prices against traders.
  • [info] Self-unlock currency movement: Self-unlock pattern: the hook calls unlock and unlockCallback on the PoolManager, so it moves currency within its own unlock context.
  • [info] Unverified source: Source is unverified, so the behaviour is inferred from selectors and storage only; intent cannot be confirmed.

Contract details

Verified source
No
Bytecode size
23,908 bytes
Upgradeable proxy
No
Detected patterns
moves-currency, ownable, pausable, self-unlock

Pools using Likely access control hook