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
1,948
reports under this root
#973,903
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 #973,903.
2e538d76776b32b2bc9db7187ce61a223e5975eb5c6f4596b9b4cf02c2c216behttps://a.pool.opentimestamps.orghttps://b.pool.opentimestamps.orgDownload the .ots proofOne report’s receipt as a single file →
Verify it yourself
ots verify -d 2e538d76776b32b2bc9db7187ce61a223e5975eb5c6f4596b9b4cf02c2c216be crawlcheck-2026-10-30.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 1,948 digests as plain text, one per line; the first 20:
000ff05724e3c6d3da63917b22eaae340c2c3241fc3135e097fbf839052a8caa 00306a70bb955af12f3741360e73ec83406c1c5c867f3cc29a20ab97f67f17dc 00698b5b5e9da3ca04b58786cd8320818a048554a982438aa4aed506ec142c79 0081536f704d6bd5fa8a2cf9d443e481e7bbbdbf94d0bfb510bc19dde8916f94 00af587b90041c595cb815f5acb5cf18d7ba56318850b80aac935d62be4781e7 00c9e8dcba4a6b52a77e6ea54266f01a792f7d123543ad22401462469e366460 00d51938aac1d531db5fc8885df062d1edd5e7fbc8a6a1a592562b87a73f1665 00fdd16e0f21409ad07ebe9caded5bf12c7b74aa1353055022ad7f03bcb892b1 012dfdbbb6b68ae0f47ade5de068ac44607407fe3d814edd72faff51d463612c 01465f1d3111d2d850ba20fa41ffa99f6b98a7650b7b77286deaa71686b86e83 018e53d5b146dfba46096918cefab98465aae61ad29f29eb27a68b0fc9b951b8 01baeaa18014034cd730fb77d3e2b0deefbdd2f6eb55821045d61fb1c6a167ca 01e7a2b78f92f8467034986c334c38835f197c1de8fdc3f138021c9dc6bab7cc 01fc7d7be456faf012bfcd6280e59c59aeae58fe90f52c12da48d8f9cbee9e02 0238324c52c75afc4517292d5ea400ff0b6ba1fd5ffd6e494b332d5d9a1ef73f 02be3b4e3483a0c8232c6728b540c4c9e176b057fd2281e8c1ad3358b8b44b3d 02cbe312589da3de4b78063946f7bc12e7028ef3696d959aa21aa4e99c82874f 02e9471fd1cc12e0e54d7d3c8d5aca8df6f2020a8133001ddab44b5c18d7bc86 030990e737bfb204aabffc0197ee169deb9ec4621b0df8d0afbd8fd343d72437 0310612b60e3f23d2776b22ef2de33cf05161d2a74a6c5dd4ad8cd165bfa130c