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.
90
sealed days
271
reports under this root
#963,242
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 #963,242.
14b5479881f4b877e928447f0471d3f57346b30aee1df79b9423cdd5b21a66f1https://a.pool.opentimestamps.orgDownload the .ots proofOne report’s receipt as a single file →
Verify it yourself
ots verify -d 14b5479881f4b877e928447f0471d3f57346b30aee1df79b9423cdd5b21a66f1 crawlcheck-2026-08-19.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.
90 days anchored. Each links to its own root and proof file. Days are sealed once and never recomputed.
All 271 digests as plain text, one per line; the first 20:
01139335ec5459b4d917f8ca586b1fb2a79aa6e9909a25c9d7f35ecc323b1966 020b084087a0f24981ab197f22d7d034150e7cea0a9e57288b3a0ec1eda485d2 035feccbf606a151ff8f3277a861575261eed0520a82e9f3fc38be1c3fec1b76 03927692dc0de988332f948fa6b4475a3a676d32a0c9184a3f735b35ceb1434a 0442861586b513d1969071deaa6c61778c46b8c8519a64172c098f6d7ec7a036 04a7c7ec14f8a326db047256df57f8cee860ac82e9a1d6e7b1ebfce35a857932 04db5b8ca8057050f9a5ee82c5354ea85c9f95d08e993b4e43c6e076d0ec4cf3 0603b3537786b63f7f0e578142a764e5de7951fbc3c88ff50362c32124184de2 062dcdc526c9e87ee80e9a24d19ba818d8a40f5c94a038508f69db058971615a 06515fdd84e18446cfd0e7ba61f7c180a3d5b4feae898c8c97ae3cfa51c6b766 06c36afd6b6c877b049e2a659d788a7b94a0c8e0be6f7640791685ee1d5db3ce 0749eea8f18264380c2d3bc258412e3692c935503dcd19a27d8caa2b7b2a710c 08fc64b192d8838adc37980b2a1bfc6677c72eca4e41e14056ad002c3c22f38c 0a54716600a2d051300f62ffe808c8d75f619d8c10be35a3eeaf5e2a6742eb83 0a698b91b169ba6485a7fbe9aa0ac0aad529b6cda096e00b8ee111dec636decf 0aa6bf108d48a1fb9171ec8c76b079fceef025cb8e3e0b052286565e69737cd8 0aec6c79e29b2e0c8d43ffd3ee298dcac01fc7868c96e2286039a614792b2201 0b1dc83f548d8aa7f5ad172c3a92e2a587351cdaf6d7ec9242683d8ffb65405d 0c348a28b57e520ac46340d618d8fb76e65225f097a8c36a94f8a23e1f016462 0e4da954bd532bb891e686d958252c2ab45a9820422d9385ebe4bc99051e97b5