Snapshots
Freeze the numbers.
Prove them later.
An analysis of a pool is only worth sharing if others can check it. A snapshot records the pool's state at one block in a fixed format; its hash, anchored on chain, shows the record existed then and has not been edited since.
01 / The record
A snapshot record (liqvo.snapshot.v1) holds: chain id, the pool key (a v2/v3 pool address padded to 32 bytes, or a v4 pool id), the source block, the pool kind (2, 3 or 4), both token addresses, the two amounts (reserves for v2, pool balances for v3, zero for v4), the price as sqrtPriceX96, the active liquidity and the tick. Integers are written as text so the record survives copy and paste.
The hash is keccak-256 of the ABI encoding of those fields after a fixed tag. The contract exposes the same function, snapshotHash, so anyone can recompute it without trusting this site. A test in the repository checks that the browser and the contract produce the same hash for the same record.
Anchor
anchor(pool, sourceBlock, dataHash) stores who anchored, the source block, the anchoring block and time. The source block may not be ahead of the chain. One entry per author per snapshot; the first anchor of a snapshot is kept for lookups.
Verify
Paste a record on the snapshots page: the hash is recomputed in your browser and looked up with firstAnchorOf. A match shows who anchored it and when. A missing match means the record was changed or never anchored.
Limits
An anchor proves a hash was published, not that the numbers are true. Re-reading the pool at the source block is the full check; the public RPC keeps recent state only, so old blocks may need an archive node.
The contract
LiqvoSnapshotBook has no owner, no admin, no fee, no pause and no upgrade path, and takes no constructor arguments. It cannot hold ETH or tokens. Because Robinhood Chain reports the parent chain's block in block.number, the contract reads the chain's own block number from the ArbSys precompile and falls back to block.number only where that precompile does not exist. Anchoring costs gas only.
Until the contract is deployed, the snapshots page runs in practice mode: the record and its hash are made the same way, your wallet signs a plain message instead of a transaction, and the result stays in this browser.
