Hook 0xc634…6ac0 on Base

Uniswap v4 Hook Contract 0xc6340a6e50a2c233e175c9b27ed8eea4e0196ac0 on Base · Other

Volume (24h)
$6.49K
Value locked (TVL)
$1.12K
All-time volume
$6.49K
Pools using this hook
4
Swaps (24h)
419 (55 traders)
Total swaps
419

What it does

A Uniswap v4 hook that gates swaps and liquidity changes through a trusted-router allowlist and an admin-controlled pause, with its own token accounting and withdrawal paths.

How it works step by step

  • Restricts swap and liquidity calls to an admin-managed trusted router allowlist
  • Supports a global pause flag that halts hook activity
  • Validates pool initialization in beforeInitialize
  • Blocks third-party liquidity changes in beforeAddLiquidity and beforeRemoveLiquidity
  • Tracks token balances and supports admin withdrawal and sweep of those balances
  • Uses the pool manager unlock callback to settle currency during hook operations
Swap behaviour
beforeSwap and afterSwap are enabled; swaps are restricted to trusted routers and can be blocked by the global pause, with the hook running custom logic before and after execution.
Liquidity behaviour
beforeAddLiquidity and beforeRemoveLiquidity are enabled and appear to restrict third-party liquidity (a ThirdPartyLiquidityBlocked error selector is present), while withdrawFloat and sweep functions move tokens held by the hook.
Fee behaviour
Uses the pool's static fee as far as can be determined; a fee-related getter (0x0eccae5a / 0xd2e936dd style mapping) exists but its effect could not be confirmed from the decoded bytecode.
Owner & admin controls
A single admin address (storage slot 0, set via setAdmin) controls setGlobalPaused which can halt the hook, and setTrustedRouter and setTrustedQuoter which manage allowlists of routers and quoters; the admin also gates withdrawFloat, sweep and sets the flag at slot 0 offset 21 used by a callback path. No upgrade mechanism was identified.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeAddLiquidity, beforeRemoveLiquidity, beforeSwap, afterSwap

beforeInitialize validates pool initialization, beforeAddLiquidity and beforeRemoveLiquidity gate liquidity changes, beforeSwap and afterSwap run custom logic around swaps and interact with a router allowlist and a pool-manager unlock flow via unlockCallback and take/settle selectors.

Security & trust assessment

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

Who controls it: The admin key can pause all hook activity, change which routers and quoters are trusted, and call withdrawFloat and sweep to move tokens held by the hook, so users depend on the admin not acting maliciously.

Risk to user funds: The hook holds balances in its own storage-tracked accounting and can move them via admin-controlled withdrawal and sweep functions, and can block trading through the global pause; user funds are therefore exposed to admin discretion.

Security findings

  • [medium] Global pause controlled by admin: Admin can toggle globalPaused, which can halt swaps and liquidity operations for the pool.
  • [medium] Admin token withdrawal functions: withdrawFloat and sweep selectors allow the admin to move token balances held by the hook contract.
  • [info] Router allowlist gating: Swaps and liquidity operations are restricted to trusted routers, so untrusted callers are blocked and the admin decides the allowlist.
  • [info] Hook moves currency during callbacks: The hook uses the pool manager unlock flow with a self-unlock pattern and moves currency through take and settle selectors, meaning it can hold or move funds during callbacks.

Contract details

Verified source
No
Bytecode size
24,519 bytes
Upgradeable proxy
No
Detected patterns
moves-currency, self-unlock

Pools using Hook 0xc634…6ac0