Colour theme

How to check us

You don't have to trust us. Every prediction version is recorded when it is published, in a public hash chain anchored in the Bitcoin blockchain. Here is how to check that a forecast existed before kick-off and was never changed afterwards.

1. Find the record

Each match page links to the ledger. On a day's ledger page, the “Record” column links to the record of every prediction version, for example /track-record/ledger/entries/00000042.json. The record holds the match, the version, the time it was published, our probabilities, the over/under line and the bookmaker prices at that moment.

2. Compute its fingerprint

Download the file without changing it and compute its SHA-256:

curl -s https://kickoffhour.com/track-record/ledger/entries/00000042.json -o r42.json
sha256sum r42.json          # macOS: shasum -a 256 r42.json

The result must equal the sha256 of record 42 in the chain index, and the prev_sha256 written inside record 43.

3. Follow the chain

Every record contains prev_sha256, the fingerprint of the record before it. Changing any old record would change its fingerprint and break every link after it. So it is enough to check the latest record that was anchored after the one you care about.

4. Check the anchor

After every update we take the head of the chain (anchors/NNNNNNNN.txt: the latest record number and its fingerprint) and timestamp it with OpenTimestamps, a free, open service that writes it into the Bitcoin blockchain. The proof is the matching .txt.ots file.

  1. Download both files, e.g. anchors/00000043.txt and anchors/00000043.txt.ots.
  2. Drop them on opentimestamps.org, or run ots verify 00000043.txt.ots with the open-source client.
  3. The proof shows the Bitcoin block and the time by which the head existed. If that time is before kick-off, the forecast in every record up to that head was public, and fixed, before the match started.

A fresh proof needs a few hours until a Bitcoin block includes it; until then it shows as pending. We upgrade the proofs automatically.

What is in a record

  • prediction: match, kick-off, version, publication time, our 1X2, over/under and both-teams-to-score probabilities, and the bookmaker prices we compared against (with the bookmaker and the method used to remove their margin).
  • closing: the last bookmaker price before kick-off, the benchmark for our market comparison and closing line value.
  • genesis: the start of the chain, pointing to the last day sealed under the old method.

Before the chain

Predictions published before the chain started (17 October 2026) were sealed per day after midnight UTC. Those daily files are still published unchanged and marked “old method”, but they cannot prove on their own that nothing changed between kick-off and the seal.

The database also rejects any edit to a published prediction and any new prediction after kick-off; the chain is how you can check that from outside.