What is a Commitment Scheme?
A commitment scheme is a cryptographic method that enables both the platform and the player to lock in a secret value while keeping it hidden. It ensures:
Transparency: The hidden value is later revealed to prove nothing changed
Fairness: Neither party can manipulate the outcome after the commitment is made
Auditability: The process is independently verifiable
A commitment scheme works in two phases:
β1. Commit
β2. Reveal
Key Terminology
Term | Description |
Server Seed | A random 64-character string generated by the system. Its SHA-512 hash is visible to the player during gameplay. |
Client Seed | A player-controlled value. Random by default, but editable by the player. Gives players influence over randomness. |
Nonce | Short for "number once." Increments with every bet using the same server + client seed combo. Ensures uniqueness of each round. |
Cursor | A sub-nonce, used to generate multiple random numbers in a single round. Starts at 0 and increases as needed. |
Random Bytes | The underlying data unit (8 binary digits) used to produce randomness. |
Integer | A whole number (no decimal). |
Floating Point Number | A number between 0 (inclusive) and 1 (exclusive), with a fractional component. |
Commit Phase
This phase occurs during every bet placed. It locks in the values used to generate the game result:
Inputs:
Active Client Seed β Player's input (not hashed)
Active Server Seed (Unhashed) β Secret value generated by the server (only hash is shown during play)
Nonce β Increments per bet (starting at 1 for rotated seeds)
Cursor β Starts at 0; increases if more than one random number is needed
Randomness Generation:
RandomBytes = HMACSHA512( Active_Server_Seed, Active_Client_Seed:Nonce:Cursor )
These random bytes are then used to generate either integers or floating point numbers.
π The player only sees the hashed server seed until the reveal phase (to prevent outcome prediction).
Reveal Phase
In this stage, the unhashed server seed is revealed. With all components now available:
Server Seed (unhashed)
Client Seed
Nonce
Players can verify the outcome was fairly generated.
When players rotate their seed pair, the old server seed is revealed and invalidated for future use.
β This allows for independent verification by the player, operator, or third-party auditors.