DocsStart here
How to Check a Bet
For players, step by step, from saving the commitment before you play to reading the verifier's report after the seed is revealed.
You don't need to write or read any code to check a bet. You need a few values the site gave you and one page, the verifier. It does its work inside your browser and uploads nothing, so the seeds you type in stay on your device.
The part that surprises people is the timing. A bet can't be checked the moment it's played. It can be checked once the site has retired the secret seed behind it, and step 3 explains why that's a feature and not a stall.
If you'd like to see a check before you do one for real, open the verifier and find the panel headed "TRY A KNOWN RECORD". "Load matching example" fills in a public Dice bet that rolled 56.12. Press "Check record" and you get a clean report. "Load changed example" loads the same bet with its result altered to 12.34, which shows you what a caught difference looks like.
1. Find the Record
A record is a small block of text that holds everything needed to work one bet out again: which game it was, the game's settings, your client seed, the bet's number under that seed (the nonce), the result, and a long code called the commitment. It starts with { and ends with }. You don't have to understand its insides. You only have to copy all of it.
Where it lives depends on the site. Look in the details of a single bet in your history, or in whatever the site calls its fairness panel. Galabet's demo game pages link to the verifier with the record already filled in. A site that doesn't offer a record at all may still show the same values one by one, and the verifier accepts them that way too.
2. Save the Commitment Before You Play
The commitment is 64 characters made of digits and the letters a to f. It's a fingerprint of the site's secret server seed, published before you bet so the seed can't be swapped afterwards.
Copy it somewhere the site can't edit. A note on your phone, a screenshot, an email to yourself. This is the one step that has to happen before the bet, and it's the one most people skip.
It matters because of what the verifier can and can't see. It compares the revealed seed with the commitment written in the record, and the record comes from the site. The report says so in its own words: "Compared with the commitment supplied in this record. Publication timing is not checked." Only your own copy shows the commitment was there first.
If the site lets you set your own client seed, do that before you play as well. It's your contribution to the result, and the site had to commit to its seed without knowing what you'd choose.
3. Wait Until the Seed Is Revealed
While a server seed is in use, the site keeps it secret, and it has to. Anyone holding it could work out every result still to come. So a record from a seed that's still live has no server seed in it, and without the seed there is nothing to recalculate.
The seed becomes public when the site rotates it, which means replacing it with a new one and showing you the old one. Look for a control that rotates or changes your seed pair. On the practice pages at galabets.org the seed is already public, so there is nothing to wait for. There's more on this under rotation and reveal.
Check too early and the verifier doesn't call the bet bad. It says "Some checks remain open.", the "Calculated result" box reads "Awaiting revealed seed", and the Commitment line explains: "The server seed has not been revealed." Come back after the rotation.
4. Open the Verifier
Go to /verify/. There's no account and nothing to install. Above the form you'll see the tag "LOCAL CHECK" and the line "Checked in your browser. Your inputs are not uploaded to Galabet."
Two buttons at the top choose how you hand over the bet: "Open a record" and "Enter inputs".
5. Give It the Bet
With a Record
Stay on "Open a record". Paste the whole record into the box labelled "Record JSON", or press "Open record file" and pick the .json file you saved. After a file opens, the page confirms "Record opened locally. Nothing was uploaded." Records larger than 64 KB are refused.
The record needs the revealed server seed inside it. A copy you saved at the time of the bet won't have one, so fetch the record again from the site after the rotation, or switch to "Enter inputs" and type the seed yourself. Then press "Check record".
If you see "Record JSON is incomplete or invalid. Include the opening and closing braces.", part of the text was lost while copying. Copy it again from the first { to the last }.
With the Separate Values
Choose "Enter inputs" and fill in the form.
| Field | What goes in it |
|---|---|
| "Game calculation" | The game you played |
| "Revealed server seed" | The seed the site showed you after rotation. 64 characters, lowercase. The hint under it reads "Use a revealed value from completed play, never an active secret." |
| "Client seed" | Your client seed exactly as it was. Capital letters count, and so does a stray space at the end |
| "Nonce" | The bet's number under that seed. The first bet is 0, not 1 |
| "Parameters · JSON" | The game's settings. The page fills in the usual ones when you pick a game. Change the number if your bet was different, for instance 8 rows of Plinko instead of 16. Dice and Roulette have none, so leave {} |
| "Saved commitment · optional" | The commitment you saved in step 2 |
| "Original result · optional JSON" | The result the site reported. For Dice that's the roll as a number, such as 56.12. For a card or tile game, paste the complete list |
| "Recorded cursor · optional" | A small number from the record, if the site gave you one |
Then press "Calculate & compare".
Three of those fields say optional, and the calculation does run without them. The verdict is another matter. It stays at "Some checks remain open." until the saved commitment, the original result and the recorded cursor are all filled in. If your site never showed you a cursor, that line will stay at "Not provided" and the overall result stays open even when everything else agrees. Read the Commitment and Outcome lines in that case. They're the two that say whether your result came from the promised seed.
Picking Crash changes the form. It asks for a "Revealed game hash" and a "Salt" instead of seeds and a nonce.
6. Read the Report
The report opens with one of three sentences.
| The page says | Meaning |
|---|---|
| "The checked values match." | Every comparison the verifier needs was made, and all of them agreed |
| "A difference was found." | At least one check came back as a mismatch |
| "Some checks remain open." | Nothing disagreed, but something was missing or couldn't be checked |
Under it sit two boxes, "Recorded result" and "Calculated result". The first is what the site told you. The second is what the seeds produce. For a genuine bet they're identical.
Then comes a list of checks. For a seed-based game there are four: Commitment, Cursor, Signature and Outcome. Each carries one of four states.
"Matches" means the two values were compared and agree. "Mismatch" means they were compared and don't. "Not provided" means the verifier had nothing to compare, which is an unfinished check and not evidence of anything wrong. "Unsupported" means the record contains something this verifier can't check in your browser, and it won't pretend otherwise, so the overall result stays open.
Signature is the exception to watch for. Most records aren't signed, the line reads "This record is unsigned.", and that alone doesn't hold the verdict back.
If you opened a complete record, "Record fingerprint" at the bottom opens to show a single hash of the whole thing. It's handy when you and a support agent need to confirm you're both looking at the same record. It doesn't appear when you typed the values in separately.
7. If It Says Mismatch
Press "Download report" first. It saves galabet-verification-report.json, and the page tells you "Report downloaded. It contains comparison results, not the supplied seeds.", so it's safe to pass on.
Next, look at "First difference". It names the spot, for example "result: recorded 12.34, calculated 56.12." For a result that's a list, such as a deck, it gives a position, and "Array positions start at zero."
Before you accuse anyone, suspect your own typing. Most mismatches start on the checking side.
- The nonce is off by one. With the public example, nonce 41 instead of 42 gives 5.33 where the record says 56.12.
- The parameters aren't the ones the bet used.
- The client seed has a different capital letter or a space you can't see.
- A Commitment mismatch often means you copied the commitment of the new seed, the one shown after rotation, and not the one that was in force when you bet.
Still a mismatch? Raise it with the site. Send the report file, the record, and your saved commitment along with when you saved it. Ask which calculation they use, too. This verifier knows the GFS 1.0 rules and nothing else, and as the page puts it, "A different set of rules can produce a different result." A site running some other provably fair scheme will show a mismatch here without having done anything wrong. A site that says it follows GFS 1.0 and can't explain the difference has a problem.
What the Check Does Not Cover
A report on a seed-based game always ends with the same sentence: "These checks do not establish when a commitment was published, guarantee a payout or certify an operator."
In plainer terms, a match means the result in the record is the one the seeds produce, and that the seed fits the commitment in the record. It can't show when that commitment was published, which is why your own copy from step 2 counts for so much. And it says nothing about whether you were paid the right amount or whether the return the site advertises is real.
What verification proves goes through each of those limits.
