Access control hook on Ethereum

Uniswap v4 Hook Contract 0x60652ff376093c1ce0ab459e85bb64f231c88088 on Ethereum · Access control

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

What it does

This hook runs custom logic before every swap and can adjust swap amounts and move pool currency, but the exact fee and pricing effect for traders and LPs cannot be determined from the bytecode alone.

How it works step by step

  • Implements beforeSwap with a return delta, so it can take or give currency during a swap before the pool's own logic runs
  • Calls take(address,address,uint256) on the pool manager to move currency out of the pool during swaps
  • Stores a uint16 value in slot 0, written by selector 0x2ea18189 (two uint256 arguments) and read by beforeSwap and the view function 0xb9ea3ebd
  • Keeps uint256 state in slots 1 and 3, updated during beforeSwap, and a read-only uint256 in slot 4
  • Contains Panic(uint256) revert handling, indicating checked arithmetic or assertion-style failures
Swap behaviour
beforeSwap (selector 0x575e24b4) runs before every swap in the pool, reads and updates storage slots 1 and 3, and can take currency through the pool manager with return deltas; the exact pricing or fee logic cannot be determined without source.
Liquidity behaviour
No liquidity callbacks.
Fee behaviour
Uses the pool's static fee as far as the permissions show; no fee-override return value is enabled, but the hook's return delta may shift the amounts a swapper receives, which cannot be fully determined from the bytecode.
Owner & admin controls
No admin controls found in the decoded selectors; the function 0x2ea18189 writes slot 0 and may be a privileged setter, but its access control cannot be confirmed.

Enabled Uniswap v4 callbacks

beforeSwap, beforeSwapReturnDelta

beforeSwap is used to run custom logic before each swap, and beforeSwapReturnDelta lets the hook adjust the swap's currency amounts and move currency via take.

Security & trust assessment

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

Who controls it: If the setter 0x2ea18189 is unrestricted or controlled by a single key, that key could change the state the hook uses to adjust swap amounts, which could direct value away from traders or LPs.

Risk to user funds: The hook can take currency from the pool through take and adjust swap deltas, so pool and user funds are exposed to whatever logic governs those return deltas.

Security findings

  • [high] Return delta with currency movement: beforeSwapReturnDelta is enabled and the hook calls take on the pool manager, so it can alter the amounts exchanged in a swap and move pool currency.
  • [medium] Unverified setter selector: Selector 0x2ea18189 with two uint256 arguments writes to slot 0 and the hook's behaviour depends on that state; without source it is unknown whether the function is access-controlled.
  • [medium] Unknown pricing logic: The decoded bytecode does not reveal how the return delta is calculated, so the economic effect on swappers and LPs cannot be verified.

Contract details

Verified source
No
Bytecode size
1,122 bytes
Upgradeable proxy
No
Detected patterns
moves-currency, return-delta

Pools using Access control hook