1 · Reports
Sealed and anchored to Bitcoin
Each report’s measurements are hashed; each day’s hashes become one root, committed to a Bitcoin block through OpenTimestamps.
Proves the report existed in exactly this form by that day.
An agent that acts on what CrawlCheck measured should not have to take our word for it. Every report is fingerprinted and each day anchored to Bitcoin; every answer an agent acts on is signed; every signed answer is entered in a log that a witness we run on GitHub, outside our servers, re-checks. Each of the three is checked on the reader’s own machine.
Proves
A report with this digest existed in exactly this form by that day, and has not been edited since.
Does not prove
That the measurement was correct. Only the first claim can be settled by mathematics.
91
sealed days
98
reports under this root
#964,508
bitcoin block
Each check runs on the reader’s own machine, from files that are published and can be kept.
1 · Reports
Each report’s measurements are hashed; each day’s hashes become one root, committed to a Bitcoin block through OpenTimestamps.
Proves the report existed in exactly this form by that day.
2 · Answers
Every Resolve answer an agent receives before it reads, cites, connects or transacts carries a signature over its canonical content.
Proves the answer came from CrawlCheck and was not altered in transit or afterwards.
3 · History
Every signed answer names its leaf in an append-only Merkle log. Each signed tree head chains to the one before, and a witness we run on GitHub, outside our servers, re-checks and co-signs it. It is our own workflow: it proves the log was not rewritten on our servers, not that an independent party checked it.
Proves an answer was not rewritten or removed after it was logged.
No wallet, no fee, no key held by us. The proof is a file, not a coin.
Host, timestamp, section scores, every path and status fetched, every crawler identity and what it received, the citation state. Wording and layout are excluded, so an editorial change never breaks a proof.
Canonicalised with sorted keys and hashed with SHA-256.
Digests sorted and folded into a Merkle tree: parent = SHA256(left || right), an odd node paired with itself. Arrival order cannot change the root.
The root goes to the OpenTimestamps calendars, which commit it into a Bitcoin transaction.
Confirmed in Bitcoin block #964,508.
73d9c372f7553967a72493f1a31af77f2a692838ae9c216b1b4784d37b4f2ffehttps://a.pool.opentimestamps.orgDownload the .ots proofOne report’s receipt as a single file →
Verify it yourself
ots verify -d 73d9c372f7553967a72493f1a31af77f2a692838ae9c216b1b4784d37b4f2ffe crawlcheck-2026-08-28.otsThe reference client checks the file against a Bitcoin node or a public calendar. No CrawlCheck server is needed, or trusted. A fresh seal reads pending confirmation until the next Bitcoin transaction confirms; ots upgrade then stores the block attestation in the file for good.
91 days anchored. Each links to its own root and proof file. Days are sealed once and never recomputed.
All 98 digests as plain text, one per line; the first 20:
02a5605bcad8c0af1fd0b307616f9309c5971706fcb982748cfba70782dd6375 032fcd4948cf31044a4e5c798ba3fdeb70ae29ec86cb60e63ff5e4003834206b 053cac96199d0971df400317b964afcdd2349e5c483759ca5715f9f70b1c7aef 074f68844d3c8f0732b3fd627b94fcc64ddc40e8a512accfd9c9dbc30cdce81e 08d210a4681e898557df1cc5362a443712252b1854eff4b49588d2d83c99cb2b 0f2878ef132d4a749d5c74889c5a9c28f1a76bba67b462c61bba2c93c176e0b4 145b9ae6054d868d07594fc281f1a4e585756cc3facd4e17ae4435e85d13e27c 152d8299abe7066f39dcb1bb98c9504bf7742d192987f249d5b67441ee49df67 16a56101cf8fdde260a69fbbf90b411a361cc5375d4fb7d2fb08ea723b94423a 1878fb997dc3ad623ebe177de80f67e1e7ad277f24f5f4b30c2a47513a5bd162 1ac2ef0f31d2381c55b149cdcdca4c080fef351425a7b90193b74cbfcf50de31 1fb78f35d52568bb2af063799e802d972c165974007df2d618f0e05133cc646c 2022a2f61491f6f62d3e39da637d05595d44f582d189568dbb3cca5f569a0aba 2eeaebd995548d5572c39520e332c7f9ddd71bee3613d4a69f5e920c0d99a4ec 3147235b697f16a3ff6f5716303f1ecb62ca72eba31f3cef682b33921dcd1762 3539dc58d4806526d47ec796c3f5da26e548e3584321eb010b7bb45054031d54 38857b7b59584dfb1e64e0ed0f8d5e08d7be8245bdd5d39bee97db3d2522894e 39faaa2f9b7218e048718a037cce64b16b1b6182b3ef904091549272a293b1e2 3c1eb51bf72c211bd80f79970e9d011c7092979f7a8518a1fdc32a124ea89f24 3c9f4b8de1b5a9b887dbbc8a12159f2432723feef07d2b0438150ea84a937ecf