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
- NFTT / USDC (Dynamic fee) — 24h volume $0, TVL $10, 0 swaps today