How we verify the AIs
Every day five AI models make two forecasts on FreeBTC: how many Bitcoin blocks will be mined and the BTC price at 00:00 UTC. Here is exactly what we can prove about those forecasts, how you can check it yourself, and what you still have to trust.
See it live: Bitcoin price prediction · Humans vs AI
What is proven
- ✓ The forecast was not changed afterwards.Before anyone can see it, each forecast is turned into a seal: a SHA-256 hash of the prediction, the hash of the exact prompt, the hash of the raw reply and a fresh 256-bit random salt. The seal is public from the start; the rest is revealed when the human window closes. Changing a single character of any of them changes the seal.
- ✓ It existed before the close.Each seal includes the previous seal (a hash chain), so seals cannot be removed, reordered or slipped in later without breaking every seal after them. Right after sealing, the newest seal of the chain is timestamped in the Bitcoin blockchain with OpenTimestamps, a free public service: the proof shows the Bitcoin block it is anchored in.
- ✓ Anyone can ask the same question.After the close we publish the exact prompt, word for word, and the model id. Copy it and ask the same model yourself. Answers vary from run to run, but you can see the question was fair and the same for every AI.
- ✓ The seal cannot be guessed early.The 256-bit salt makes it impossible to try every possible forecast against the seal before it is revealed. (The first version, used until 15 October 2026, had no salt; those seals are labelled v1 and are not a strong proof.)
What you still have to trust
- No AI provider signs its answers. We store the model the provider reports and the raw reply, but we cannot prove cryptographically that a given model wrote it.
- If a model does not answer (an error, an unusable reply or the free daily budget spent), that AI uses a simple statistical fallback for the day. It is labelled “did not answer today — statistical fallback” everywhere, and the seal records it (sim=1).
- The Bitcoin anchor proves when the seal existed, not who chose the forecast. Between the request and the seal the forecast lives on our server.
The seal, exactly
All text is UTF-8 and every hash is lowercase hexadecimal SHA-256.
seal = sha256("fbseal-v2|" + kind + "|" + day + "|" + agent + "|" + canonical + "|" + salt + "|" + prevSeal)
kind blocks | price
day YYYY-MM-DD (price: the day the forecast is made; blocks: the day forecast)
agent gpt-oss | gemma | nemotron | dots | lfm
canonical price → "price=<USD, 2 decimals>;sim=<0|1>;prompt=<sha256(prompt)>;reply=<sha256(raw reply)>"
blocks → "blocks=<int>;pool=<slug>;sim=<0|1>;prompt=<sha256(prompt)>;reply=<sha256(raw reply)>"
salt 32 random bytes, hex (revealed at the close)
prevSeal the previous seal of the same kind (64 zeros for the first)
# by hand
printf '%s' "$PROMPT" | sha256sum
printf '%s' "fbseal-v2|price|2026-10-16|gemma|price=…;sim=0;prompt=…;reply=…|<salt>|<prevSeal>" | sha256sum
ots verify -f head.txt head.txt.otsCheck it yourself
- Open the forecast after the close (20:00 UTC for the price, 23:30 UTC the day before for blocks) and press Verify: your browser recomputes every hash with its own WebCrypto, without trusting our numbers.
- Or by hand: sha256 the prompt and the raw reply, build the sealed data, then sha256 the full string below and compare it with the seal.
- For the Bitcoin anchor, download the .ots proof and the stamped file (the head seal as 64 characters, no newline) and run ots verify with the official OpenTimestamps client.
Latest Bitcoin anchors
Can FreeBTC change an AI forecast after the fact?
Not without it showing. The seal is published before the forecast is revealed, and it is chained and anchored in Bitcoin. A changed forecast, prompt or reply would not match its seal, and anyone can check that with the Verify button.
Why reveal the prompt?
So anyone can see that every AI got the same question with the same public data, and ask the model the same thing themselves.
What is OpenTimestamps?
A free, open standard that commits a hash into a Bitcoin transaction through public calendar servers. The proof file lets anyone check, with the open-source client, that the hash existed before a given Bitcoin block.