Likely custom pricing hook on Polygon

Uniswap v4 Hook Contract 0x011dd280a29a45a92ab9305782372cb18d66cac8 on Polygon · Access control

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

What it does

A pausable, owner-managed Uniswap v4 hook that inspects swaps and liquidity actions and can return custom deltas, with an owner-controlled withdrawal function, though its exact pricing logic cannot be confirmed without source.

How it works step by step

  • Runs custom checks before and after swaps through beforeSwap and afterSwap callbacks
  • Returns a swap delta via beforeSwapReturnDelta, allowing the hook to take or adjust currency
  • Stores price numerator and denominator values in contract state (priceNum, priceDen)
  • Supports a pause switch that owners can toggle to halt hook-guarded activity
  • Maintains an owner list and lets owners withdraw ERC20 tokens held by the hook
Swap behaviour
beforeSwap and afterSwap run on every swap; beforeSwap can return a delta that adjusts the swap, and afterSwap updates stored price state. Swaps can be blocked while the hook is paused.
Liquidity behaviour
beforeAddLiquidity, afterAddLiquidity, beforeRemoveLiquidity and afterRemoveLiquidity are exposed. Their logic is not verifiable from the bytecode summary provided, so no specific behaviour can be stated.
Fee behaviour
No fee logic is visible in the decoded functions; the pool's static fee is assumed. beforeSwapReturnDelta is enabled, so the hook can alter swap deltas, which may function as a custom fee or taking mechanism, but this cannot be confirmed from selectors alone.
Owner & admin controls
Owners list (address[] at slot 0) can be added and removed via addOwner and removeOwner; any owner-gated function (setPaused) can pause the hook; withdraw20 lets an owner move ERC20 balances held by the hook. Exact owner check cannot be confirmed without source, but the functions are present and the owner array is written by them.

Enabled Uniswap v4 callbacks

beforeAddLiquidity, beforeRemoveLiquidity, beforeSwap, afterSwap, beforeSwapReturnDelta

beforeInitialize/afterInitialize: pool initialization hook (not enabled in permissions, decoded only). beforeAddLiquidity and beforeRemoveLiquidity: run custom checks before liquidity changes. beforeSwap: runs custom logic before each swap and reads the pool's pause state. afterSwap: updates stored price state after swaps (writes slots 1 and 2). beforeSwapReturnDelta: lets the hook return a delta that modifies the swap amounts, and the bytecode shows take and transfer calls consistent with moving currency.

Security & trust assessment

Risk level: high, estimated (decoded bytecode, low confidence).

Who controls it: Owners can pause swaps through setPaused, add or remove other owners, and withdraw ERC20 tokens from the hook contract. A compromised owner key could therefore freeze trading or drain tokens held by the hook.

Risk to user funds: The hook can take currency through its return-delta path and can hold tokens that an owner can withdraw via withdraw20, so user funds routed through the pool may be affected by hook logic and owner actions. Pausing can block swaps and liquidity changes.

Security findings

  • [high] Return-delta hook moves currency: The hook can return a delta on swaps and calls take and transfer, so it can take or redirect currency from the swap flow.
  • [medium] Pausable by owners: The owner-gated setPaused function can halt beforeSwap-protected trading, blocking swaps and liquidity actions while paused.
  • [medium] Owner can withdraw ERC20 from hook: withdraw20(address,address) allows an owner to transfer ERC20 balances out of the hook, which matters if the hook accumulates fees or tokens.
  • [medium] Owner list controlled by existing owners: Owners are stored in a dynamic address array with add and remove functions; no timelock or multisig is evident from the bytecode.
  • [info] Unverified source: Source is not verified, so the exact access checks, the meaning of priceNum and priceDen, and the logic of the liquidity callbacks cannot be confirmed.

Contract details

Verified source
No
Bytecode size
10,958 bytes
Upgradeable proxy
No
Detected patterns
moves-currency, pausable, return-delta

Pools using Likely custom pricing hook