CHECK ALL OF IT WITHOUT US

Every number on this deck comes from a call you can make yourself against a public RPC on Robinhood Chain. No account, no key, no permission. If a reading here disagrees with your own, ours is the one that is wrong.

A clock face built from position cards and chain links

THE FOUR READS

all keyless, all on the PositionManager and StateView
01 · who holds itownerOf(tokenId)

Keyless. No signature, no approval. The same call checks anybody else's roster, not just ours.

02 · which pool, which rangegetPoolAndPositionInfo(tokenId)

Returns the PoolKey and the ticks. Read the hooks address in it: a hook can block beforeRemoveLiquidity, and then the hour is theatre.

03 · how biggetPositionLiquidity(tokenId)

Divide by StateView.getLiquidity(poolId) and you have the threat. We publish that ratio before the hour instead of after.

04 · what actually happenedgetPositionLiquidity(tokenId), again

After the hour, the same read says kept or broken for each pledge. A promise with no escrow is worth exactly its record.

THE ADDRESSES

chain 4663 · Blockscout
PositionManager

ownerOf · getPoolAndPositionInfo · getPositionLiquidity · modifyLiquidities

StateView

getLiquidity · getSlot0 — a read-only lens, intended for offchain clients

PoolManager

ModifyLiquidity logs, paged under the 10,000-log cap

UniversalRouter

not used by this deck — listed so you can see what we do not touch

Every one of these was confirmed deployed with eth_getCode before this site was built. The deck deploys no contract of its own and holds no funds.

WHERE EACH NUMBER COMES FROM

source, method, and when it was read
QuantitySourceRead
Active liquidity L of a poolStateView.getLiquidity(poolId) over the public RPCevery page render, cached 60s
Price and tick of a poolStateView.getSlot0(poolId)every page render, cached 60s
Pool reserves in dollarsGeckoTerminal networks/robinhood/pools · reserve_in_usd, keylessevery page render, cached 60s
Owner of a positionPositionManager.ownerOf(tokenId)on every pledge, and again after the hour
Pool and range of a positionPositionManager.getPoolAndPositionInfo(tokenId) — the PoolKey, including the hooks addresson every pledge
Size of a positionPositionManager.getPositionLiquidity(tokenId)on every pledge, and again after the hour
Positions minted on this chainPositionManager.nextTokenId() — 2,638,118live, cached 60s
Who removed what, at the hourPoolManager ModifyLiquidity logs where sender = PositionManager (the event salt is the tokenId), paged under the 10,000-log capper strike
Protocol-level TVL — backdrop onlyDefiLlama api.llama.fi/protocol/uniswap-v4 · chainTvls — 164,456,448 USDhourly, lags up to an hour
The showcase boardRobinhood Chain 4663 public RPC (PoolManager logs, PositionManager reads, StateView reads), GeckoTerminal networks/robinhood pools, DefiLlama protocol/uniswap-v42026-09-12 15:52 UTC · 78 rows
Two lines, never one number

Active liquidity L and pool reserves in dollars are different quantities and they move differently: removing a position that sits outside the current range changes the reserves and leaves L untouched. This deck draws both with their own labels and never adds them together, and it never calls either of them “TVL”.

What this is and is not

Each participant withdraws only their own capital, at a time they chose, by their own transaction. This is expressive protest, not an agreement between competing suppliers to withhold supply from a market. Nothing here is custody, and nothing here is advice.

Showcase records. The pools, positions, wallets and every number are read from chain; the grievance text and the protocol replies are written to show the product's shape and were not filed by those wallets.