Hook 0x9008…0880 on Polygon

Uniswap v4 Hook Contract 0x9008162fe3d044d46c606e8b38ca46bf07e00880 on Polygon · Other

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

What it does

Unverified hook that runs logic before swaps and liquidity additions and appears to track and withdraw amounts tied to specific addresses, with names suggesting it may extract value from users.

How it works step by step

  • Enables beforeSwap and beforeAddLiquidity callbacks
  • Increments a swap counter in storage slot 0 on each swap
  • Tracks a per-address mapping (stolenFrom) and a running total (totalStolen)
  • Calls take and transfer to move currency from the pool manager
  • Exposes sweep and sweepETH to withdraw balances held by the contract
Swap behaviour
beforeSwap runs on every swap, writes swap counters and per-address accounting, and can move currency via take and transfer.
Liquidity behaviour
beforeAddLiquidity is enabled and its selector is dispatched; afterRemoveLiquidity and beforeRemoveLiquidity are dispatched but not enabled by the hook permissions.
Fee behaviour
Uses the pool's static fee; no fee logic is visible in the decoded selectors.
Owner & admin controls
Not stated.

Enabled Uniswap v4 callbacks

beforeAddLiquidity, beforeSwap

beforeAddLiquidity: dispatched entry point, purpose not confirmed without source. beforeSwap: enabled, selector 0xb91331b7 takes (address,address,uint256,uint256,uint256,uint256,bool,uint256,uint256,int128,int128,bytes) and writes storage slots 0, 1 and 2, so it likely records swap state.

Security & trust assessment

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

Who controls it: No owner or admin selector is evident in the dispatched functions, but the sweep, sweepETH and attacker selectors suggest a privileged address that can withdraw funds held by the contract; this cannot be confirmed without source.

Risk to user funds: The hook can take and transfer currency through the pool manager during beforeSwap, so user swap funds may be redirected, depending on the unverified body logic.

Security findings

  • [high] Naming and selectors indicate possible value extraction from users: The contract exposes sweep(address), sweepETH(), attacker() and a stolenFrom(address) mapping together with a totalStolen() counter, and calls take() and transfer(). Its naming and structure indicate it may be designed to extract value from swap flow rather than benefit traders or LPs.
  • [high] Hook moves currency via take and transfer: The bytecode includes take(address,address,uint256) and transfer(address,uint256) selectors, meaning the hook can move currency out of the pool manager and send tokens to arbitrary recipients.
  • [medium] Sweep functions may lack verifiable access control: sweep and sweepETH are callable without visible access control in the dispatch list, so any leftover balance held by the hook may be withdrawable depending on the body logic, which cannot be verified without source.
  • [medium] Per-address accounting of taken amounts: Storage slot 0 counts swaps, slot 1 accumulates a total and slot 2 is a per-address mapping, consistent with tracking a victim or attacker address and the amount taken from it.

Contract details

Verified source
No
Bytecode size
4,603 bytes
Upgradeable proxy
No
Detected patterns
moves-currency

Pools using Hook 0x9008…0880