Access control hook on BNB Chain
Uniswap v4 Hook Contract 0xd111b3ddd92e627f1864520c770e913ec04e0880 on BNB Chain · Access control
- Volume (24h)
- $0
- Value locked (TVL)
- $1.00
- All-time volume
- $14.26M
- Pools using this hook
- 2
- Swaps (24h)
- 0 (0 traders)
- Total swaps
- 21,346
What it does
An access-controlled Uniswap v4 hook that gates liquidity additions per pool and address and tracks swap activity per pool, most likely used to restrict who can provide liquidity.
How it works step by step
- Implements beforeAddLiquidity to check a per-pool, per-address permission flag before liquidity can be added
- Implements beforeSwap to read pool configuration and update a per-pool swap counter
- Stores pool keys and a pool registration flag keyed by pool id
- Exposes view functions for pool registration, pool key, swap count and config version
- Exposes admin-style setters that write pool configuration and permissions
- Swap behaviour
- beforeSwap is implemented: it reads stored pool configuration and increments a per-pool swap counter; no evidence of fee overrides or token deltas.
- Liquidity behaviour
- beforeAddLiquidity is implemented and reads a per-pool, per-address boolean mapping (slot 3) before allowing liquidity addition, which suggests an allowlist-gated liquidity add; it does not appear to alter amounts.
- Fee behaviour
- Stores a uint24 per pool (storage slot 2) that appears to be a fee-related or pool configuration value, read in swap paths; the exact fee logic cannot be determined without source.
- Owner & admin controls
- A selector-level admin surface is present (ADMIN, initializer, poolConfigVersion, and functions 0x4d909a45, 0xa8b1f5a7, 0xc4452e52 that write pool configuration and per-pool access mappings), but the caller checks cannot be confirmed without source; likely an owner or ADMIN address can register pools and grant/revoke permissions. Upgradeability cannot be determined from the input.
Enabled Uniswap v4 callbacks
beforeAddLiquidity, beforeSwap
beforeAddLiquidity: gates liquidity addition by checking a per-pool, per-address permission mapping. beforeSwap: reads pool configuration and a per-pool swap counter (slot 4) on each swap, indicating swap-time checks or accounting.
Security & trust assessment
Risk level: medium (decoded bytecode, low confidence).
Who controls it: A privileged key that sets pool configuration and grants or revokes per-address permissions could block specific addresses from adding liquidity or change parameters read during swaps.
Risk to user funds: No evidence the hook holds tokens or takes return deltas; its main user-facing effect is possibly blocking liquidity additions from non-permitted addresses or altering swap-time configuration, so funds exposure is indirect and low unless configuration can be changed to block swaps.
Security findings
- [medium] Privileged configuration and permission setters: Writes to pool configuration and permission mappings are reachable via selectors 0x4d909a45, 0xa8b1f5a7 and 0xc4452e52; caller authorization could not be verified from bytecode alone.
- [info] Liquidity add is permissioned: beforeAddLiquidity checks a per-pool, per-address boolean mapping, so the hook can reject liquidity providers not on the list.
- [info] Swap path appears non-custodial: beforeSwap increments a per-pool swap counter and reads pool config; it does not appear to take or return token deltas, so no direct custody of user funds was identified.
- [low] Initialization behaviour not verified: The contract includes an initializer() view and an initialized flag at slot 5; correct one-time initialization could not be confirmed.
Contract details
- Verified source
- No
- Bytecode size
- 7,191 bytes
- Upgradeable proxy
- No
Pools using Access control hook
- USDC / WBNB (Dynamic fee) — 24h volume $0, TVL <$0.01, 0 swaps today
- USDC / WBNB (Dynamic fee) — 24h volume $0, TVL $1.00, 0 swaps today