Access control hook on BNB Chain

Uniswap v4 Hook Contract 0xa9f34ae9c1ccfd561e56358a8b701510ef394800 on BNB Chain · Access control

Volume (24h)
$0
Value locked (TVL)
<$0.01
All-time volume
$15.28M
Pools using this hook
271
Swaps (24h)
0 (0 traders)
Total swaps
300,243

What it does

An allowlist hook that only lets approved liquidity provider addresses add liquidity to a pool, with an owner who manages the list.

How it works step by step

  • Implements beforeAddLiquidity and checks a mapping(address => bool) of allowed providers in storage slot 1.
  • Exposes isAllowedProvider(address) so anyone can see whether an address may add liquidity.
  • The owner (storage slot 0) can set allowed status for one address (0xc4ed4354 with address,bool) or for many addresses at once (0x65d24453 with address[],bool).
  • A function 0x6ff1f06e(address) writes slot 0, which is most likely an ownership transfer, though its name is not known.
  • Custom error selectors E1 and E3(address) are used, probably to reject unauthorized callers or disallowed providers; their exact meaning cannot be confirmed.
Swap behaviour
No swap callbacks.
Liquidity behaviour
Before liquidity is added, the hook reads the allowlist and, judging by the custom errors, reverts if the provider is not approved. Which address is checked (the sender or the position owner) cannot be determined from the decoded output. Removing liquidity is not hooked, so exits are not blocked by this hook.
Fee behaviour
Uses the pool's static fee.
Owner & admin controls
A single owner address in slot 0 can add or remove providers individually or in batches. The owner can probably be changed through function 0x6ff1f06e(address), which is unnamed. No pause, upgrade or fee controls were found in the decoded functions.

Enabled Uniswap v4 callbacks

beforeAddLiquidity

beforeAddLiquidity is used to enforce the liquidity provider allowlist before any position is increased.

Security & trust assessment

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

Who controls it: The owner controls which addresses may add liquidity and can change the list at any time. If ownership can be transferred, the owner role can be handed to another address. The owner has no visible way to change fees, pause swaps or move funds.

Risk to user funds: Low. The hook has no return-delta permissions, no swap or remove-liquidity callbacks and no visible token transfer logic. The only effect on users is that non-approved addresses cannot add liquidity.

Security findings

  • [info] Owner-controlled LP allowlist: Functions 0xc4ed4354 and 0x65d24453 write the allowlist mapping in slot 1 and read the owner in slot 0. The owner therefore decides who may add liquidity.
  • [low] Liquidity can be gated by the owner: The owner can remove any address from the allowlist, which blocks new liquidity additions. This does not affect removals, because beforeRemoveLiquidity is not enabled.
  • [info] Unnamed ownership function: Function 0x6ff1f06e(address) is the only function other than the owner-gated setters that writes slot 0. It is most likely a transfer of ownership, but this is inferred from the storage layout rather than confirmed.
  • [info] No swap, delta or fee logic: Only beforeAddLiquidity is enabled, with no return-delta permissions, so the hook cannot take tokens from swaps or liquidity operations.

Contract details

Verified source
No
Bytecode size
1,685 bytes
Upgradeable proxy
No

Pools using Access control hook