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
- wARS / USDC (0.00% fee) — 24h volume $318, TVL $189, 8 swaps today
- USDC / wBRL (0.00% fee) — 24h volume $0, TVL $194, 0 swaps today