CrawlCheck
Proof

Proof an agent can check without trusting us.

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 running 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.

64

sealed days

93

reports under this root

#969,239

bitcoin block

Three proofs

What each record proves, and how to check it

Each check runs on the reader’s own machine, from files that are published and can be kept.

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.

The latest sealHow it is built

2 · Answers

Signed with Ed25519

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.

The signing keysThe offline verifierWhat an answer holds

3 · History

Logged, chained and witnessed

Every signed answer names its leaf in an append-only Merkle log. Each signed tree head chains to the one before, and a witness running on GitHub, outside our servers, re-checks and co-signs it.

Proves an answer was not rewritten or removed after it was logged.

The log headThe latest witness

Method

How a report becomes a proof

No wallet, no fee, no key held by us. The proof is a file, not a coin.

1Reportmeasurements only2SHA-256one digest3Merkle rootone per day4OpenTimestampstwo calendars5Bitcoin blockpermanent
  1. 1

    Measurements only

    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.

  2. 2

    One digest

    Canonicalised with sorted keys and hashed with SHA-256.

  3. 3

    One root a day

    Digests sorted and folded into a Merkle tree: parent = SHA256(left || right), an odd node paired with itself. Arrival order cannot change the root.

  4. 4

    Anchored

    The root goes to the OpenTimestamps calendars, which commit it into a Bitcoin transaction.

The seal

2026-09-29

Confirmed in Bitcoin block #969,239.

Merkle root
11c9632a4ee8957a18cbe8852771f4967e9197c1e3d5037e02111e8591efd42b
Reports covered
93
Sealed
2026-09-30T01:17:08.312Z
Calendars
https://a.pool.opentimestamps.org
https://b.pool.opentimestamps.org
Bitcoin
block #969,239

Download the .ots proofOne report’s receipt as a single file →

Verify it yourself

ots verify -d 11c9632a4ee8957a18cbe8852771f4967e9197c1e3d5037e02111e8591efd42b crawlcheck-2026-09-29.ots

The 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.

Ledger

Every sealed day

64 days anchored. Each links to its own root and proof file. Days are sealed once and never recomputed.

The 93 digests sealed under this root
025b75a37df1e7da199083d08a3e546317075a89d44a472bb0f45c3eefc0225d
0c70885011f3358aa40f97473e5ac15a63905aefa9e3b17bf9e54d0738bf8845
0eedf4eee027c97f7a9fe53e8f3d2d27de50acaf3ea87f853b706f0d6cbcd2d9
0f27422edebdd194e4a986eccf67fa2f3b45b5d3c6f4feac7103b3299ebb0dab
0fa5c2e6ea22154a554d58c2d68d3ec20773b8d38dac2a4f61a22117a25b95b0
14e7ba51f70ef94325c0e2d036769d210147af8b0b7078f4a82497184323d912
15d84054dde5755251ecbc78e7675f1a3a4ccfd5d5a048f675884f0cba9a115d
1855c42840c1f2a8276db8c97da9869a082889345d277f448b6f0577c373a4ab
18f5183a3ed0d0a8032e9f7d52bdc331e9bfb1662317d185f6505c45b878bdf2
1b34a394d1e26fa33ca7d8863c563c1d4f3ad2c08390a69aaebeadce6b3da9fe
1f9d961fb39f577cdf6142ce12b5611e5debef4c769d0f87dc4affc8bf83a69a
25c2310a7e7c82c4ec056652f04e1ce716f1c954ebfa23cb78ffbbafed473f55
298356f20b57d81574831b34cfa4bc5352ca5628564250a28c2e743d69333bc8
2af02f2404cbd612ff1eb74a2f2774707e55b27da3b49fb3bb1dfc332781897e
2c60626b7ffc225353089ed34c95563cee202867b3de86b67eaaf474ec9d2c87
2da974d1d4eee4647fa9187164a34f5613d053812e381a60cfb3ebf57d92c69c
2e8a4b2611a1b1a399d9b82945b6dfd8ab2c39ee904f8f0b9cb9cee8fdae42bb
333671ed2818c5c8109c29f364f00ffcd7b80a9f41528e8170ea247e0fc0e654
33ce3710726a9c1212bedea89f8560a104684e61dd9c618ff555ca02aa757df6
357b73f6a10876dffa6ca6fadb10f44a62c48764c3f82efccdccbc1fac3bb5da
36c87b19fb153bfe449d7c80f29b01032f0ace6970128c91e8a622b130a4b15f
387b38b709d190a1f7946088481528acefdcb9f48449b71e29b868372820d264
3bb106bc72fbb69525d07eecf4cb044f205df210e2febd1813254a4e242b7ddc
3bf9c0170fa44bb49e63f95534c27dcced4dac2f49a941195059d94898826a53
3d0e0f00f94c006b4d6ff3523c833cd885c280b3562f19217a753630b3b34fba
40fd0147a71708677f6ad0ddcd977adf15a9d67c6baa201ea5d9c87647dfbb4d
42557fd41b5dfa7c50504007d860a86c26f0d3f6572c78b011ba35d04742d3a6
439dc1457ddf16fc74708902b2cce711677ac04afc10950a1fe8fb0bcacb349b
4c5fffc0d50b5ba0ec46ce2759beb7896c4cd209e72c362b5a2017777b855da6
4d29a5167c29cffb2b7a00c506c6ea0ac067d71aa1b66563e0c27051bef3066c
4fd038b83070ccd038377152bbef67d408245c01ec028204d5af153c71dac4cc
5139972b5027e961dce402c2bd02982b880e70b3c04bfdfe8ec1b373fb407e54
5a415dfd4e3154332660881ce7dbf6f63d1a0789d0ee47979e767647a599c0c8
5c48cd49968ebb790d6ab5317cbacced48ccf20a74903c6f91343becad54e8de
5c95c9bb7dd6327986a52a3d52a2fb8a6ce8675b014a1eee7669cf171a35cd57
5cfb6338576b8772cf4bc0686d751bda0e8877d7a5ba5b8e4539e304b2841333
5d9c262e0b258c886dde510c1d3aa5a9119abf55c69aaa65e48da82baaa1bd00
5e4a49b558ef29d661c4df6a689b51f7270e99c8085a23ad18325fbc166cb8cd
5ed0f122fae42136e1ab4e2d7334efd9334142188f40a2ff7dc404e548ffcc58
6022c5b80212ab21276c3ca9dde096132768c8fef7c583fb7ee573125bc43e3a
650f940d4b3ede84f3e2b7cc149b1b3e2d6d9f137e8ec15ef2739754313043dc
6a9d821bae3fa98968a407e434086397e33f581b75f85c073af01e59567728a3
73c9fe7b7e3cc0e90cc11b40c0f6c0bf4c97249a3afe0c4d7e1fac0ddeed42b3
7472fe9a20cb6702eb24afcaea304fe07b0d08e9e35d06301c56b301987c3771
77fea2d00d325eb0085f6aa591f2617d96521f2def7e894fa8090e320dbf6030
7b549f569b56a28bfdf13821be2e9d63faaabb93b72926a7184bd65b696683b0
8b35ed18da06f7f3d7a3e666e0ee446a81f06b60a861a4d34b8fc5b0d2c8c5cd
8d98e0d3549abd3ad54d86341a84928983d04d83a19043e6b3e76f874b6f3ad5
8de5e58918ee455957c4d5db4dd05204b4f8f5401fb3ffb46e27dfb2f27d09de
933df356bad7ad6595ed0774147cc5b09ed17a571eb10729214d3f9f1670bf6a
950b970deff8b753ad8c8d4a3b04db02bf99a2dc966a04a686c58402badeefe5
9c1a0860c376cff63c2e1bcc1ddf13a36c3d573b7d14ce0d4c10abb1b75859fd
9d3a6c386457c48842a379e4c932c44115f22cb4337d350849636901226ce8ba
9e17413a2bbeadb5476443bd502aee8f4a468ee73b8470d086efa8a56340a358
9f51dbeb479af6466213c960acac9110828d1fafa8b6896f2ef80fbe1e55b31d
a46fe8e26f351c2813775f3d9bfe0835edc26150340f9672cdb75ca94a82f903
a528cd7fc65ab119cd6eeeffebb2d4e3a40ba479f9d88879fdd3177e13e1c25c
a7695efa0459a7bf1088d25a28d9005b8a5edab98038eb8eb9f536bda420fc65
a81589beb6138f73f057259e77afb136494ddd4e148cf951610d30a7d7aae9df
a81c72c8aa067764e81e02a9d1c157d31b5d4f48359e6b52e8b9fdd23adceca1
aa9eee11426a7b5ca1587c6644fa56d85f55627c3d2eb2beb95447adf93950ee
b3c39e0d2cd3028f6ef92b0b2c3a79fceed28841ef057787451c8a8baefcd9b5
b45e67deee00714993106bbfaf7876a86f5811b085a7f73c965d4bdc2ab91a0a
b83168d2d9e3d1fbe4b4eb18c0a34dd21f66892e4824caea851e0dbd4d39ca58
b889184cc7e245a4e4085294f6e3d5ef7a1923389afab0975501b111bcd8f47a
b8f5f0fbb48b7676eabf1015947513fc8da2d701642471adf51258c8b224658e
b939627494252ad33d41e1357376a24f2ae871fbded2887551db593bc77c4bb8
bacfb94211253615522b0278714d12a2b67404e7d2b4c04e9ce7635f4fafc120
bd009010d09aa20eb524bf42f982202238ef31227edcf600b3a23e09bddcdc50
bd1582444a8583f7bc960e4f067420fdaf18497238faf53edd0c59c753b6cd90
bde62e66a6057e1402f661c4e156a22cf289316915df5d8d7be7a28f60a98549
c47e741b93409ee2217738997ebb8274f5177acd1f400a504764f08841bae6b2
c6d4a36c8021fdd62c1dbaec46c6dcfc52474a1a241f42ae031a86c288d198e2
c78544dd1ab97f5a5d9bfa6ad5ade7fe9e00164956952cd6261a1be2e257ace2
c8a6ccff95c9a4eee8a104537caa6bef614d32e1857fcf5bfa878f4f0aba186e
cc11a0cd0d09482b88fbdd3e2b944765c1e630dfea3c3a381ca7182978af1420
d0328d0b78b00b421583fd35c6c76d59894c06f5fad97b58feaf203797db6f44
d110143ca820ee488830c6a8f5265ec06452a693fc0a612a66f98cbb19c5647c
d39fb875ab8f478850202530af740c92c822902f53dcd09bf5673a2a73063805
d6e132fd2c07400ec0345483449abbf61617ea190a4b961e3ee887de70d402fb
d7b420212bb6ec98317e5b8344f0d46a239986e1be1f65677b1ca56f8f94c361
d7be7f16776ee6cf19c532973fd3dafa0534b33b1bb5e7e87eb2188ecd9cfa78
d961ae36f84099bde44e86c0d6f7f885ebd98c2f858b69e9041a6c6766576be8
d9b442a374400627e43c0ff6a43c93126803626e3a5365fa37f92e7a21b0cc84
dc7d90a76d6f4991c96bdd853d552cc1f270df5719f3974a08b1e6ede39bb8ba
e3a2e52f2813e19df40a7b9dd5e39fd810c230c571527a08e998298bbc67b7e0
e54b4af2946754c4b29344bd7510de52146754c0b3689a5853ee5619412b7be7
e7c0cb6841cf5c3ce6c678da515d818e38efa02e8ea681642a15543572238855
f221253dbffdb0df681e66b61795f2e52214fde2b5125b2df030bb4863b4325c
f5166051fe24f92ac889fa3c76b52a7407cd4a8abcd50a5e66502a1f8f145296
f5e8c95b2553544d736ea6383beba8bdb71ca411842225c6b71746f2498639ef
f8cd785244af3646e2f45cccd97d482aa1d04812ce13f4ebac9c369ce4491d70
fb23b7d0087c44262722d2ee7a88cb1ac3499434090c51df6d7da2d1391b1b22

Questions about this page

QWhat does the Bitcoin anchor prove?
That a report with exactly this digest existed no later than the anchored block, and that it has not been edited since. It is a proof about time and integrity, not about correctness.
QHow do I verify a report myself?
Download the day’s .ots proof from this page, recompute the report digest from its JSON record, and verify the proof with the OpenTimestamps client against a Bitcoin node or public calendar. No CrawlCheck server is needed for the check.
QWhy exclude wording and layout from the hash?
So an editorial change never invalidates a measurement. Only the measured fields are hashed; the words around them can be improved without the proof breaking.
QWhich days are anchored?
Every sealed day is listed on this page with its digest and proof file. Days are sealed once, after they end, and never recomputed. A day sealed within the last day or so reads as pending in the reference client: the calendar holds the commitment, and the Bitcoin block confirming it is usually mined within 24 hours. The proof file here is upgraded to carry that block header once it exists, so a pending file is a proof waiting on a block, not a missing seal.