Hook 0x2635…c8c0 on Polygon

Uniswap v4 Hook Contract 0x263547865197ea7aa7111719042e167ec839c8c0 on Polygon · Other

Volume (24h)
$1.20K
Value locked (TVL)
$100
All-time volume
$95.48K
Pools using this hook
1
Swaps (24h)
10 (4 traders)
Total swaps
257

What it does

A Uniswap v4 hook on Polygon that gates liquidity provision through an allowlist and runs swap-time logic against a reference pool price, with owner-controlled enable and sweep functions.

How it works step by step

  • Restricts liquidity additions to addresses marked true in the liquidityAllowed mapping
  • Reads a reference pool and fair sqrt price to inform swap logic
  • Can be enabled or disabled by the owner via setEnabled
  • Settles and takes currency through PoolManager calls in swap callbacks
  • Wraps and unwraps tokens, with USDC, USDCE, PUSD, ONRAMP and OFFRAMP references suggesting a stablecoin on/off-ramp flow
  • Lets the owner sweep tokens and refresh approvals
Swap behaviour
beforeSwap reads the enabled flag and a fair sqrt price, and afterSwap performs currency accounting through the PoolManager (take, settle, sync, wrap, unwrap).
Liquidity behaviour
beforeAddLiquidity checks a per-address allowlist (liquidityAllowed mapping in storage slot 1), so only whitelisted addresses can add liquidity. beforeRemoveLiquidity and afterRemoveLiquidity are present in the dispatcher but are not hook permissions enabled for this address.
Fee behaviour
The hook exposes poolFee, REF_FEE and a reference pool ID, suggesting fees are tied to a reference pool or fair price, but the exact fee computation in beforeSwap/afterSwap cannot be determined from selectors alone.
Owner & admin controls
Owner (slot 0) can transfer ownership, enable or disable the hook via setEnabled, whitelist liquidity providers via setLiquidityAllowed, refresh token approvals, and sweep tokens out of the hook with sweep(address,address,uint256). The owner is a single address with no timelock or multisig evidence visible in the bytecode.

Enabled Uniswap v4 callbacks

beforeAddLiquidity, beforeSwap, afterSwap

beforeAddLiquidity: gates liquidity additions against the allowlist. beforeSwap: reads the enabled flag and runs swap-time logic against a fair sqrt price. afterSwap: runs post-swap logic and can move currency, as indicated by the take/settle/sync/wrap/unwrap calls.

Security & trust assessment

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

Who controls it: The owner can disable the hook, control who may provide liquidity, sweep any tokens held by the hook, and transfer ownership to any address. A compromised owner key could drain hook-held balances or block swaps and liquidity provision.

Risk to user funds: The hook interacts with pool currency via take, settle, sync, wrap and unwrap during swap callbacks and holds token balances that the owner can sweep. User funds in the pool are exposed to owner action and to whatever pricing logic runs in beforeSwap/afterSwap, which cannot be fully verified without source.

Security findings

  • [high] Owner can sweep hook-held tokens: sweep(address,address,uint256) lets the owner move arbitrary token balances held by the hook contract.
  • [medium] Owner can disable the hook: setEnabled(bool) lets the owner toggle hook behaviour, which can block swaps or liquidity actions depending on how the enabled flag is checked in beforeSwap.
  • [medium] Hook moves pool currency during swaps: The hook calls take, settle, sync, wrap and unwrap through the PoolManager, so it can hold and move pool currency during swap callbacks.
  • [info] Single-key ownership: Ownership is a single address with transferOwnership and no evident timelock or multisig in the bytecode.

Contract details

Verified source
No
Bytecode size
17,929 bytes
Upgradeable proxy
No
Detected patterns
moves-currency, ownable

Pools using Hook 0x2635…c8c0