Protocol

One Index, One Public Formula

29,704
hooks behind 372,111 hooked pools on Robinhood Chain, read from every PoolManager Initialize event up to block 98,512,906
28,509
of them in no registry, behind 55,264 pools
4,994
hooks in Uniswap's hooklist registry, on 21 chains

Where the hooks come from

Two sources. Uniswap's hooklist registry (hooklist.json and chains.json) gives name, description, deployer, verified source, audit link, the 14 flags and properties such as swap access and upgradeability. The chain gives the rest: every Initialize event of the v4 PoolManager 0x8366a39CC670B4001A1121B8F6A443A643e40951 names the pool's two tokens, fee, tick spacing and hook. Any hook seen there and absent from the registry is marked unlisted. The scan follows new blocks every minute and the 7-day Swap history gives swaps and volume per pool.

The hourly probe

For each active hook, the probe takes its busiest pool, reads slot0 and liquidity from StateView 0xf3334192d15450cdd385c8b70e03f9a6bd9e673b, and quotes a tiny exact-in swap each way through the V4 Quoter 0x8dc178efb8111bb0973dd9d722ebeff267c98f94: one hundred-thousandth of the in-range virtual reserves, small enough to move the price by about 0.001%. It compares the quote with the mid-price minus the LP fee in slot0. The difference is what the hook took, in basis points. Every quote is an eth_call, so nothing is signed and no funds move. The last run covered 984 hooks: 735 took 0.10% or more, 154 reverted.

The safety score

Every hook starts at 100. The score is capped at 100 and floored at 0.

Can change swap amounts (beforeSwapReturnsDelta or afterSwapReturnsDelta)-25
Upgradeable (EIP-1967 implementation or beacon slot set)-20
Source not verified, or verification unknown-15
Swap access gated, or reverted a probe in the last 24 h-15
Dynamic fee-10
First pool younger than 7 days-10
Audit link in the registry+5

Flags come from the hook address itself, upgradeability from its EIP-1967 storage slots, verification from the registry or Blockscout, access and audit from the registry, the revert from the probe. A hook nobody has verified scores unknown rather than unverified on its page, and loses the same 15 points.

The swap and the fee

The DEX quotes every direct pool for a pair and every two-hop route through ETH, WETH or USDG, picks the best output and builds one Universal Router transaction (0x8876789976decbfcbbbe364623c63652db8c0904) with V4_SWAP: a single-pool swap per hop, then settle and take. Your wallet signs it; ERC-20 inputs go through Permit2 0x000000000022D473030F116dDEE9F6B43aC78BA3. Unlisted takes 0% today. Once the UnlistedBonds contract is live, the router takes 0.10% of the output with its portion command and the contract splits it per hook on the route: 40% to that hook's $UNLST bonders, 30% to its deployer, 30% buys $UNLST and burns it.