Daily proofs
Each day's observations (one line per site and file, raw facts only: HTTP status or fetch error, final URL, SHA-256 of the body and of the kept headers) are sorted and hashed into a Merkle root (RFC 6962 hashing). A short statement naming the day, the leaf count and the root is timestamped with OpenTimestamps, which anchors it in the Bitcoin blockchain within hours. One stamp per day.
| Day | Leaves | Merkle root | OpenTimestamps | Files |
|---|---|---|---|---|
| 2026-10-27 | 50,435 | 99abfe21c93f936522d5… | complete (bitcoin block 973493) | statement · .ots · manifest |
| 2026-10-26 | 50,831 | eb599ad417c868dbf434… | complete (bitcoin block 973294) | statement · .ots · manifest |
Verify a day
curl -sO https://infrarabbit.com/crawlers/proofs/<day>.txt curl -s https://infrarabbit.com/crawlers/proofs/<day>.ots -o <day>.txt.ots ots verify <day>.txt.ots # pip install opentimestamps-client
Then rebuild the root from /crawlers/data/manifest/<day>.tsv: leaf = SHA-256(0x00 || line), node = SHA-256(0x01 || left || right), split at the largest power of two below n. A single site's line is proven with /crawlers/api/v1/proof/<day>?domain=<site> (audit path).