ArcadeHook on Ethereum

Uniswap v4 Hook Contract 0x2521302b64d33e2285d4332c6c511cbd1d699040 on Ethereum · Oracle · Verified contract

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

What it does

ArcadeHook is a read-only scoreboard for the ETH/UMODE pool that counts swaps, buys, sells and volume without charging any fee or changing trade amounts, so buyers and sellers pay exactly the pool's static fee.

This read was written for the hook 0x2f17…d040 on Ethereum and reused here: the two share a code shape, so constants such as fees, owners and addresses can differ.

How it works step by step

  • Records the pool's start time and identity once, in afterInitialize, and only accepts a pool whose currency0 is native ETH and currency1 is the configured token
  • On every swap in afterSwap, increments total swap, buy and sell counters based on the zeroForOne direction
  • Accumulates the absolute ETH-side amount (amount0) of each swap into ethVolume
  • Tracks a streak of consecutive same-direction swaps (combo) and emits a Combo event per swap
  • Advances a level counter (capped at 20) each time ethVolume crosses doubling thresholds starting at 0.5 ETH, emitting LevelUp
  • Returns no fee override and no return delta, so it does not alter swap amounts or charge anything
Swap behaviour
afterSwap only updates counters and events; it does not change amounts, fees or block swaps. Buys and sells are counted equally and neither pays more or less.
Liquidity behaviour
No liquidity callbacks.
Fee behaviour
Uses the pool's static fee.
Owner & admin controls
No admin controls found. The poolManager and token addresses are immutable, there is no owner, pause or upgrade mechanism, and the pool is fixed at first initialization.

Enabled Uniswap v4 callbacks

afterInitialize, afterSwap

afterInitialize records the pool id and ignition timestamp and validates the ETH/token pair; afterSwap records swap statistics, combo streaks and level progression.

Security & trust assessment

Risk level: low (verified source, high confidence).

Who controls it: No privileged key exists; no party can change fees, pause the hook, upgrade logic or alter tracked state beyond normal swap events.

Risk to user funds: The hook holds no tokens or ETH and has no return-delta or fee path, so it cannot move, hold or block user or pool funds.

Security findings

  • [info] Read-only hook with no return deltas: afterSwap returns a zero int128 delta and beforeSwap is not enabled, so the hook cannot take or redirect user funds or block swaps.
  • [info] Callbacks restricted to PoolManager: Both enabled callbacks use the onlyPoolManager modifier, so external accounts cannot spoof swap or initialization events to the hook.
  • [info] Pool bound once at initialization: afterInitialize reverts if ignitedAt is already set, so only the first initialized pool with the expected ETH/token currencies is recorded.
  • [info] Unbounded counters and volume: swaps, buys and sells are uint64 and ethVolume is uint256 with unchecked increments on the counters; overflow is not practically reachable, and the ETH amount is taken from amount0 without validation of sign beyond absolute value.

Contract details

Verified source
Yes (ArcadeHook)
Compiler
solc 0.8.26+commit.8a97fa7a
Bytecode size
3,266 bytes
Upgradeable proxy
No

Pools using ArcadeHook