OpenSolve
All data checks

Ledger

Every seal, result and late check, in the order written. Each entry’s hash covers the hash of the entry before it, so changing or removing any entry breaks every hash after it. The database refuses edits and deletions.

What it does not prove on its own: that an entry was written when we say it was. That is what the daily Solana anchor above is for — and even it proves only the time, never whether a prediction was right.

Loading…

Check it yourself

  1. 1Download the ledger

    The endpoint is public and needs no key. It returns up to 1,000 entries at a time; for the next page, set after_seq to the last seq you have.

    curl -s "/api/v1/data-tests/ledger?after_seq=0&limit=1000" -o ledger.json
  2. 2Know the rule

    Each hash is SHA-256 of one line of JSON: the keys at, body, kind, prev and seq, sorted, without spaces, in UTF-8, where body is the entry’s body_text exactly as given. Each prev is the hash of the entry before; the first is 64 zeros.

    sha256( {"at":…,"body":<body_text>,"kind":…,"prev":…,"seq":…} )
  3. 3Recompute it with Python

    Python 3, nothing to install. It downloads every page and stops at the first entry that does not add up.

    import hashlib, json, urllib.request
    
    BASE = "/api/v1/data-tests/ledger"
    prev, seq = "0" * 64, 0
    while True:
        page = json.load(urllib.request.urlopen(f"{BASE}?after_seq={seq}&limit=1000"))
        if not page["entries"]:
            break
        for e in page["entries"]:
            record = {"seq": e["seq"], "at": e["at"], "kind": e["kind"],
                      "body": json.loads(e["body_text"]), "prev": e["prev"]}
            text = json.dumps(record, sort_keys=True, separators=(",", ":"), ensure_ascii=False)
            assert e["seq"] == seq + 1 and e["prev"] == prev, f"chain breaks at seq {e['seq']}"
            assert hashlib.sha256(text.encode("utf-8")).hexdigest() == e["hash"], f"hash differs at seq {e['seq']}"
            prev, seq = e["hash"], e["seq"]
    print(f"chain intact: {seq} entries, head {prev}")
    
  4. 4Or recompute it here

    Your browser downloads the same ledger and recomputes every hash with its own SHA-256. Nothing is sent anywhere.