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

032151942122517346271336113082310524163312014319221829728123532620POCKET
POCKET / NONCE 4220

Black · European wheel

Selection matches
A fox croupier places a chip beside a result slip at a curved table.
Read the calculation ↓

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
Open full verifier ↗

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) = 20

A 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.

12 / 37 pockets

Second dozen / 13–24 returns 3× the stake when it wins. The highlighted pockets are the ones that satisfy this selection.

12/37 × 3 = 97.2973%

Expected total return before whole-chip rounding. A straight win returns 36× including the original stake.

012345678910111213•14•15•16•17•18•19•20•21•22•23•24•252627282930313233343536

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

Python · independent specification example
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)
EXPECTED OUTPUT
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.