GALABET FAIR / The pocket comes first
Roulette
Thirty-seven pockets, including zero. Watch the selected pocket meet the pointer, then compare it with a colour, number or parity choice.
Interactive public-seed demonstration
Black · European wheel
Selection matches
Selection comparison only. No chips are debited or paid.
Public inputs. Real calculations.
Each new example advances the nonce and runs @galabet/fair in your browser. Results are reproducible, and the seed is visible to everyone.
Inspect this Roulette result · nonce 42
THIS EXAMPLE / NONCE 42
Keep the inputs.
Check the result.
This demonstration uses a public server seed. Its record checks the calculation; it does not establish when a live service published a commitment.
- Client seed
- galabet
- Fractions consumed
- 1
- Highest cursor
- 0
- Server seed commitment
- ab37723062965715c5e6eeb54816f909a8e787bd3bfaee67a3cc0a3b90707de7
Revealed inputs and complete JSON
{
"spec": "GFS/1.0",
"profile": "single-player",
"game": "roulette",
"params": {},
"serverSeed": "5c1f7d3e8a2b4c6d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d",
"clientSeed": "galabet",
"nonce": 42,
"commitment": "ab37723062965715c5e6eeb54816f909a8e787bd3bfaee67a3cc0a3b90707de7",
"cursor": 0,
"result": 20,
"at": 0
}THE SMALL CROSS-LANGUAGE CHECK
Pocket 20.
Same in Python.
A compact mapping makes a useful first test for an independent implementation. Derive the fraction from the same inputs, multiply by 37 and take the integer part.
floor(0.5611712262… × 37) = 20A pocket is not a payout.
Single-number and group selections have different rules. A live result slip should retain the original selection, stake and returned chips alongside the generated pocket. Reproducing pocket 20 alone does not verify settlement.
A SELECTION HAS A FOOTPRINT
Which pockets
does this cover?
A dozen covers twelve numbers. A colour covers eighteen. A single-number selection covers one. Use the table to connect the selection name with the exact pockets the result must match.
Zero changes the denominator.
Red and black cover 36 pockets between them, but the wheel contains 37. A colour selection therefore wins on 18/37 outcomes under the equal-pocket model. Its 2× total return gives an expected table return of 36/37.
The demo API also supports low/high, dozens and columns. A result such as pocket 20 should be checked against the original selection object; the pocket number alone cannot explain whether a particular bet won.
REFERENCE EXAMPLE / NONCE 42
Check the mapping with Python’s standard library
import hashlib
import hmac
server_seed = '5c1f7d3e8a2b4c6d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d'
message = b'galabet:42:0'
# GFS uses the hex STRING, not bytes.fromhex(server_seed).
digest = hmac.new(server_seed.encode(), message, hashlib.sha256).digest()
fraction = int.from_bytes(digest[:4], 'big') / 2**32
pocket = int(fraction * 37)
print(pocket)20 Digest also matches the TypeScript reference.
Executed locally against the TypeScript fixture. This is an illustrative port of the calculation, not a packaged Python integration.
