Kolaboro / Public log
Public log
Every day the system writes one line that fixes what we published. Each line contains the fingerprint of the previous one, and each is timestamped in Bitcoin. Rewriting history afterwards, even by us, would show.
Checking the log in your browser…
What one line fixes
- Dataset: the SHA-256 of the open dataset file /data/bali-cases.json at that moment. Every open API answer carries the fingerprint of the dataset it came from in the
x-kolaboro-dataset-sha256header. - Page fingerprints: a Merkle root over the fingerprint of every developer page our research agent read. For any single project you can get a short inclusion proof at
/api/open/proof/IDand check it on Verify, without trusting us or downloading everything. - Site evidence: one root over the fingerprints of every accepted photo and file from site visits.
- Admin audit trail: the head of a hash-chained log of every action taken in our admin (payments recorded, case updates, status changes). The chain is re-verified before each line is written; if anyone edited or deleted an entry, the line says so and the team is alerted.
All lines
| Day | Line (head) | Contents | Check |
|---|---|---|---|
| Loading… | |||
Check it yourself
The rule, so you can recompute any line with any SHA-256 tool:
head = SHA-256( "kolaboro-log-v1|" + day + "|" + dataset_sha256 + "|" + projects_root + "|" + projects_count + "|"
+ evidence_root + "|" + evidence_items + "|" + audit_head + "|" + audit_count + "|" + previous head or "genesis" )The log itself is served signed: /api/open/log carries an Ed25519 signature in x-kolaboro-signature, checkable with the public key at /.well-known/kolaboro-keys.json.
Or use our open-source checker, kolaboro-verify.js (MIT, no dependencies, browser or Node 18+), with test vectors taken from real records:
const KV = require('./kolaboro-verify.js');
const log = await (await fetch('https://kolaboro.com/api/open/log')).json();
console.log(await KV.verifyLog(log.heads)); // { ok: true, checked: N, errors: [] }
const p = await (await fetch('https://kolaboro.com/api/open/proof/BALI-014')).json();
console.log(await KV.verifyProof(p)); // true
// Bitcoin timestamp of a line: https://kolaboro.com/api/kb/stamp?hash=HEAD (OpenTimestamps proof)A new line is written every morning at 07:15 UTC. The dataset changes several times a day when the research agent adds projects; each line fixes the version live when it was written. System status · Verify evidence · Open scoring code