Access control hook on Base

Uniswap v4 Hook Contract 0xf4ad39adfb7033351ccf914854f8b6812f581080 on Base · Access control

Volume (24h)
$0
Value locked (TVL)
$10
All-time volume
$4.03K
Pools using this hook
1
Swaps (24h)
0 (0 traders)
Total swaps
85,645

What it does

A whitelist-gated Uniswap v4 hook where an owner decides which addresses are allowed to interact with the pool.

How it works step by step

  • Stores an owner-managed whitelist mapping of addresses in storage slot 1.
  • Lets the owner add or remove addresses via setWhitelist(address,bool).
  • beforeSwap consults the whitelist to gate swap access.
  • afterInitialize runs setup when the pool is initialized.
  • Liquidity and donate callbacks are present as view stubs without observed logic.
  • Ownable: owner can transfer or renounce ownership.
Swap behaviour
beforeSwap checks the sender against an owner-managed whitelist mapping; afterSwap is a view stub with no observed state changes.
Liquidity behaviour
beforeAddLiquidity, afterAddLiquidity, beforeRemoveLiquidity and afterRemoveLiquidity are dispatched as view stubs; no state-changing liquidity logic was identified in the decoded selectors.
Fee behaviour
Exposes FEE_PUBLIC() and a fee-related constant; the hook does not appear to change the pool fee dynamically from the decoded functions. Fee is effectively the pool's configured fee.
Owner & admin controls
Owner (Ownable) can add or remove addresses from the whitelist via setWhitelist, and can transfer or renounce ownership. No pause or upgrade functions found.

Enabled Uniswap v4 callbacks

afterInitialize, beforeSwap

afterInitialize: setup hook on pool initialization. beforeSwap: checks whether the swapper is whitelisted via the mapping at storage slot 1, which suggests swaps are gated by a whitelist.

Security & trust assessment

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

Who controls it: The owner controls the whitelist of addresses permitted to interact (likely swap), so a privileged key can allow or exclude specific traders at will.

Risk to user funds: The hook does not appear to hold or transfer user tokens directly from the decoded functions. Its main impact is blocking non-whitelisted swappers, which can prevent access to the pool rather than move funds.

Security findings

  • [medium] Swap gating by owner-controlled whitelist: beforeSwap reads a whitelist mapping, so the owner can effectively restrict which addresses may swap in the pool if the hook reverts for non-whitelisted senders.
  • [medium] Single owner controls access: Owner can add or remove any address from the whitelist through setWhitelist, a single privileged key with no visible timelock or multisig requirement in the bytecode.
  • [info] Ownership model without upgradeability: Contract is Ownable and exposes renounceOwnership and transferOwnership; no proxy or upgrade selectors were found, so logic is not upgradeable.
  • [info] Unverified source limits analysis: No source is available, so the exact revert condition in beforeSwap and any fee logic could not be fully verified from selectors alone.

Contract details

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

Pools using Access control hook