Likely access control hook on Ethereum
Uniswap v4 Hook Contract 0x3333bb45f8c780f386341308b588bb4deaa48fc0 on Ethereum · Access control
- Volume (24h)
- $0
- Value locked (TVL)
- $0
- All-time volume
- $0
- Pools using this hook
- 1
- Swaps (24h)
- 848 (51 traders)
- Total swaps
- 22,749
What it does
An upgradeable, owner-controlled gatekeeper hook that only lets whitelisted routers and traders (optionally with approver signatures) swap or add liquidity, charges no extra fee beyond the pool's static fee, and may be able to block withdrawals.
This read was written for the hook 0xd333…0fc0 on Ethereum and reused here: the two run the same code.
How it works step by step
- Gates swaps and liquidity actions to whitelisted routers and traders kept by the owner.
- Can require an off-chain approver signature for swaps, tracked with a per-user nonce to prevent replay.
- Has an owner-controlled on/off switch plus several mode flags that change which checks apply.
- Runs as an upgradeable proxy, so the owner can replace the hook logic at any time.
- Swap behaviour
- Before a swap the hook checks the enabled flag, router and trader whitelists, and possibly an approver signature and nonce, then reverts if the checks fail. It does not take any fee from swaps.
- Liquidity behaviour
- Adding liquidity can be restricted to whitelisted traders when gating is on. The remove-liquidity callback reads the enabled flag, so withdrawals may be blockable depending on configuration, and an upgrade could add blocking logic.
- Fee behaviour
- Uses the pool's static fee; the hook has no return-delta permissions and cannot take swap or LP fees.
- Owner & admin controls
- The owner can upgrade the implementation, toggle the hook on or off, set the signature approver, whitelist or delist routers and traders, and change mode flags. No caps limit these powers.
Enabled Uniswap v4 callbacks
beforeAddLiquidity, afterAddLiquidity, beforeRemoveLiquidity, afterRemoveLiquidity, beforeSwap, afterSwap
beforeSwap: enforces router, trader and signature checks; afterSwap: post-swap hook with no fee effect; beforeAddLiquidity: gates LP deposits by whitelist and flags; afterAddLiquidity: passive callback; beforeRemoveLiquidity: checks the enabled flag on withdrawals; afterRemoveLiquidity: passive callback.
Security & trust assessment
Risk level: high, estimated (decoded bytecode, medium confidence).
Who controls it: A single owner controls upgrades, the enable switch, whitelists and the approver. At worst they can block trading, block deposits and possibly withdrawals, or upgrade to new logic.
Risk to user funds: The hook cannot take fees from swaps or liquidity under current permissions, but it can revert swaps and possibly withdrawals. Through an upgrade the owner could change behaviour, so LP access to principal is not guaranteed.
Security findings
- [high] Upgradeable proxy: The owner can swap the implementation via upgradeToAndCall, changing all hook behaviour including on swaps and withdrawals.
- [medium] Withdrawal callback reads enable switch: beforeRemoveLiquidity checks an owner-controlled flag, so LP withdrawals may be blocked depending on settings; exact logic is unverified.
- [medium] Trader and router allowlist: Swaps and deposits can be restricted to owner-approved addresses and approver signatures.
Contract details
- Verified source
- No
- Bytecode size
- 176 bytes
- Upgradeable proxy
- Yes
- Detected patterns
- ownable, upgradeable
Pools using Likely access control hook
- ELEVATE / GIVE (0.30% fee) — 24h volume $0, TVL $0, 847 swaps today