ATXMV4GlobalHook on Polygon

Uniswap v4 Hook Contract 0x079fd05102b6569dedde57551311bffe83f19f00 on Polygon · Access control · Verified contract

Volume (24h)
$3.45K
Value locked (TVL)
$138.94K
All-time volume
$566.04K
Pools using this hook
6
Swaps (24h)
50 (25 traders)
Total swaps
9,420

What it does

A Uniswap v4 hook that restricts liquidity add and remove operations to an owner-curated pool allowlist with full-range positions, and emits indexer-friendly events for each change.

How it works step by step

  • Gates beforeAddLiquidity and beforeRemoveLiquidity so only allowlisted pools (allowedPools mapping) accept liquidity changes.
  • Requires tick bounds aligned to tickSpacing that cover the full usable tick range, otherwise reverts with NotFullRange.
  • Optionally auto-allowlists pools on initialize when bootstrap is enabled, optionally restricted to a bootstrapper address.
  • Emits PositionLiquidityChanged after each add or remove with the attributed account, liquidity delta and tick range.
  • Attributes the account from 20-byte hookData, or from the Polygon PositionManager NFT owner when the chain is 137.
Swap behaviour
No swap callbacks.
Liquidity behaviour
Before add or remove liquidity it reverts unless the pool is allowlisted and the tick range is aligned to tickSpacing and covers the full usable range. After add or remove it emits PositionLiquidityChanged with an attributed account (from 20-byte hookData, or the Polygon PositionManager NFT owner). It does not hold or move funds.
Fee behaviour
Uses the pool's static fee. The hook does not touch fees and returns zero deltas from liquidity callbacks.
Owner & admin controls
Owner (Ownable) can allowlist or disallow pools individually or in batches via setPoolAllowed and setPoolAllowedBatch, enable or disable auto-whitelisting on initialize and choose the bootstrapper address via setBootstrapConfig, transfer ownership, or renounce ownership. No pause, upgrade proxy or fee-setting controls were found.

Enabled Uniswap v4 callbacks

afterInitialize, beforeAddLiquidity, afterAddLiquidity, beforeRemoveLiquidity, afterRemoveLiquidity

afterInitialize: optionally auto-allowlists new pools when bootstrap is enabled. beforeAddLiquidity and beforeRemoveLiquidity: enforce pool allowlist and full-range position constraints. afterAddLiquidity and afterRemoveLiquidity: emit accounting events for off-chain indexing.

Security & trust assessment

Risk level: medium (verified source, high confidence).

Who controls it: The owner controls which pools can receive liquidity through this hook, so it can block all liquidity additions and removals for any pool by disallowing it. Enabling bootstrap with a zero bootstrapper lets any initializer be auto-whitelisted. The owner can also renounce or transfer ownership at any time.

Risk to user funds: The hook does not take custody of tokens and returns zero balance deltas, so it cannot directly move or hold user funds. Its gating can prevent deposits and withdrawals for a pool, which indirectly affects users' ability to exit positions.

Security findings

  • [medium] Owner can block liquidity operations for allowlisted pools: Only pools in allowedPools can add or remove liquidity; the owner can disallow pools at any time, blocking LP exits as well as entries.
  • [low] Open auto-whitelist when bootstrapper is unset: When bootstrapEnabled is true and bootstrapper is address(0), any caller who initializes a pool is auto-whitelisted, letting arbitrary pools into the allowlist.
  • [info] Full-range-only liquidity: Liquidity is restricted to full-range positions, which limits LP flexibility and capital efficiency by design.
  • [info] Event attribution fallback: Attribution relies on hookData length or the NFT ownerOf call; full position burns fall back to the sender, so event attribution can be inaccurate in that case.

Contract details

Verified source
Yes (ATXMV4GlobalHook)
Compiler
solc 0.8.24+commit.e11b9ed9
Bytecode size
4,658 bytes
Upgradeable proxy
No
Detected patterns
ownable

Pools using ATXMV4GlobalHook