Access control hook on Ethereum

Uniswap v4 Hook Contract 0x12596c1222e73f120fe348e2342853545300c800 on Ethereum · Access control

Volume (24h)
$0
Value locked (TVL)
$0
All-time volume
$0
Pools using this hook
1
Swaps (24h)
1 (1 traders)
Total swaps
1

What it does

This hook lets only one owner-approved address add liquidity and lets the owner set the pool's swap fee (apparently capped), while all traders pay the same fee and LPs can always withdraw freely.

This read was written for the hook 0x1614…0800 on Optimism and reused here: the two share a code shape, so constants such as fees, owners and addresses can differ.

How it works step by step

  • Restricts who can add liquidity to pools using this hook: only a single owner-set allowed address can deposit.
  • Lets the owner change the pool's LP fee on dynamic-fee pools via an owner-only function, likely capped by a built-in maximum fee constant (exact value not verifiable from bytecode).
  • Does not run on swaps or withdrawals, so trades and LP exits are untouched by hook logic.
  • Owner can change the allowed depositor address and transfer ownership.
Swap behaviour
No swap callbacks. Swaps pay the pool's current LP fee, which the owner can update on dynamic-fee pools.
Liquidity behaviour
Before liquidity is added, the hook checks the depositor against one owner-set allowed address and likely rejects anyone else. Remove-liquidity callbacks are disabled, so LPs can always withdraw freely.
Fee behaviour
The pool's LP fee can be set by the owner through the PoolManager's dynamic fee update, likely bounded by a MAX_LP_FEE constant whose exact value is not confirmed from bytecode. Fees go to LPs as normal; the hook takes no cut.
Owner & admin controls
The owner can set the single allowed liquidity provider address, update the pool's dynamic LP fee (subject to an apparent MAX_LP_FEE cap of unverified size), and transfer ownership.

Enabled Uniswap v4 callbacks

beforeAddLiquidity

beforeAddLiquidity: gates new deposits to a single allowed address.

Security & trust assessment

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

Who controls it: A single owner controls the allowed depositor and the pool fee. The worst case is raising the swap fee up to the unverified maximum or blocking new deposits.

Risk to user funds: The hook cannot move or deduct trader or LP tokens; it only influences the fee rate, whose cap is unverified. LP principal cannot be locked and withdrawals are unrestricted.

Security findings

  • [low] Gated liquidity deposits: Only one owner-chosen address can add liquidity; others are blocked from depositing but never from withdrawing.
  • [medium] Owner-set dynamic fee: The owner can change the swap fee on dynamic-fee pools; a MAX_LP_FEE constant suggests a cap but its value cannot be verified from bytecode.
  • [info] Withdrawals unrestricted: Remove-liquidity callbacks and all return deltas are disabled, so the hook cannot block withdrawals or take tokens.

Contract details

Verified source
No
Bytecode size
2,015 bytes
Upgradeable proxy
No
Detected patterns
dynamic-fee, ownable

Pools using Access control hook