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
- WPOL / USDC (0.30% fee) — 24h volume $0, TVL $0.01, 0 swaps today