UniHooks

HookControllerV2

EthereumRegistered

Controls LP fees dynamically (30 bps normal, 300 bps in defensive mode triggered by liquidation cascades), gates new short positions via a pause flag that any caller can toggle by calling the permissionless updateHookState function (which has no access control), and maintains a per-pool tick observation ring buffer for TWAP computation.

0x90d2ae5c1aabf015670c95eb2937b99791a118c0 First pool 13 May 2026View on explorer
ALooks safeRegistered, verified, immutable
Pools
1
Dynamic-fee pools
1
Last new pool
5mo
Code size
7,623 B

What it can do

Runs code on every swap

Its code executes inside each trade in pools that use it.

Sets its own swap fee

Pools using it let the hook choose the swap fee instead of a fixed tier.

Gates who can add liquidity

It checks every deposit before it goes in.

Runs at pool creation

It runs when a pool is created, often to lock in that pool’s settings.

Safety report

Automated checks, not an audit
✓Not upgradeableNo proxy pattern found: the code is fixed.
!Has an adminowner() is 0xa712…42c5. That account can usually change fees, limits or allowlists after you trade.
✓Listed in Uniswap’s hook registryRegistered with Uniswap Labs (a listing, not a security review).
✓Source code publishedThe code on the block explorer matches what's deployed (contract: HookControllerV2).
iRestricted swapsSwap access: other. Not everyone can trade every pool.
?No audit linkedAutomated checks only.

Pools using this hook

1 total
PairCreatedFeePool ID
WETH / MEME 5mo dynamic 0x1e3f…628e Tx ↗