Fair dealing
Every game of Euchre Showdown is dealt from a seed fixed before the first card, and anyone can deal the game again to check it.
How it works
- A seed, sealed. When a game begins, the app draws a secret house seed of 256 bits from the device’s secure random number generator and shows its fingerprint: the SHA-256 of the seed’s 64 hex digits. The fingerprint pins the seed down without giving it away. You’ll find it at the foot of Single Player, before you deal.
- Your phrase, if you like. Once you’ve seen the fingerprint, you can add a phrase of your own. The game’s seed is the SHA-256 of the house seed’s hex digits, a colon and your phrase.
- Every card from the seed. Each deal comes from the game’s seed and the deal’s number, shuffled by a published method. The first dealer, and how each computer player deals, are drawn from the seed too, so the app can’t choose them. Nothing looks at how you play, your level or the score.
- The seed, revealed. When the game is over, or you quit it, its house seed is shown in Fair Dealing. Check the Deal confirms that the seed matches the fingerprint and deals every hand again. The published script does the same on any computer with Python 3, and the checker below does it in your browser.
What it proves, and what it doesn’t
The fingerprint and the reveal prove that nothing changed after the fingerprint was shown: the seed was fixed then, and every card followed from it. Because the app runs on your device with no one else involved, that’s all they can prove on their own. The app chose the house seed, so by itself it could have picked one whose deals it liked before showing you the fingerprint.
Adding your own phrase is what stops that. Your phrase is mixed in after the fingerprint is fixed, so neither the app nor you could have chosen the cards. Type anything: a word, a date, a line from a song.
Check a game here
In the app, open a finished game’s Check the Deal (from Fair Dealing’s list of past games, or from the result when a game ends). Under Seeds, tap Copy beside Command for the verifier script and paste it below. A game with the kitchen-table shuffle deals each hand from the one before, so copy Game record for the verifier script instead: paste it, or choose the saved file.
Pressing Check downloads Pyodide, Python for the browser, from the jsDelivr network: about 6 MB the first time, which your browser keeps for next time. Then it runs this site’s copy of verify_deal.py, unchanged, with what you pasted. What you paste stays on your device.
Run the script yourself
Download verify_deal.py (plain Python 3, standard library only). It’s the same file the app shares in How the Deal Works. Its SHA-256 is:
21a34cb9e8772d473d0384bc183178bd7f431af1bc94442243134723d79f43cc
To compare, run shasum -a 256 verify_deal.py on a Mac, sha256sum verify_deal.py on Linux, or Get-FileHash verify_deal.py in PowerShell.
Then paste the command Check the Deal copies into a terminal, in the folder where you saved the script:
python3 verify_deal.py HOUSE_SEED 'your phrase' --hands 7 --patterns 3232,2323,…
Or save the game record as game.json beside it and run:
python3 verify_deal.py --record game.json
The script prints the fingerprint first, so you can compare it with the one the app showed before the first card, then the game’s seed, the first dealer, how each computer player was drawn to deal, and every deal, hand by hand, to set beside Check the Deal’s list. python3 verify_deal.py --help lists every option.
The method, in full
The script’s opening lines and the app’s How the Deal Works describe each step: the SplitMix64 and xoshiro256** random number generators, the Fisher–Yates shuffle, the order of the deck, how each dealer’s pattern deals the packets, how the first dealer and the computer players’ ways of dealing are drawn, how the seed cuts the deck where the rules have a cut, and how the kitchen-table shuffle riffles and cuts the cards gathered after each hand. Change any of it and every past game would fail its check.