1. Introduction: From Institutional Trust to Cryptographic Proof
The history of online gambling fairness is a history of trust delegation. First-generation platforms (circa 2000-2015) relied on periodic audits by third-party testing laboratories — eCOGRA, iTech Labs, GLI — that evaluated Random Number Generator output against statistical benchmarks. The player never inspected the algorithm directly; the audit certificate served as a proxy for mathematical integrity.
This model suffers from a fundamental information-theoretic weakness: the player cannot distinguish between a server that faithfully executes the audited code and a server that has been modified since the last audit cycle. The trust boundary extends beyond the cryptographic domain into organizational processes, employee access controls, and deployment pipelines — none of which the end user can observe.
Provably Fair protocols eliminate this entire class of vulnerability. They replace institutional trust with a cryptographic commitment scheme that any participant can verify independently, using nothing more than a web browser and the publicly documented algorithm.
2. Formal Protocol Specification
The Provably Fair protocol used in crash-style games (Lucky Jet, Aviator, JetX) follows a three-phase commit-reveal-verify structure:
Phase 1: Commitment (Pre-Round)
The game server generates a cryptographically secure random byte sequence S of length 32 bytes (256 bits), encoded as a 64-character hexadecimal string. This is the Server Seed.
The server computes the SHA-256 digest of this seed:
commitment = SHA-256(S) // Example: // S = "a1b2c3d4e5f6...64 hex chars..." // commitment = "7f83b1657ff1fc53b92dc18148a1d65dfc2d4b1fa3d677..."
This commitment hash is displayed to all participants before the betting window opens. Because SHA-256 is a one-way function (pre-image resistant under standard cryptographic assumptions), the commitment reveals zero information about the actual Server Seed, yet irrevocably binds the server to that specific seed value.
Phase 2: Entropy Mixing (Round Execution)
Once bets are placed, the system collects an external entropy source — the Client Seed. Depending on implementation, this may be a string explicitly set by the player, a composite hash of the first N bet transaction IDs, or the latest Bitcoin block hash at round initiation.
The critical security property is that the Client Seed must be unknown to the server at the moment of commitment. The game engine computes:
hash = HMAC-SHA256(key: S, message: C || ":" || N) Where: S = Server Seed (known only to server until reveal) C = Client Seed (externally sourced) N = Nonce (sequential round counter)
Phase 3: Multiplier Derivation
The 256-bit HMAC output is converted to the crash multiplier through a deterministic mathematical transformation:
- Bit extraction: The first 52 bits (13 hex characters) of the hash are isolated, providing a uniform integer in [0, 2^52 - 1].
- Normalization: The extracted integer
Xis divided by 2^52 to produce a uniform floatrin [0, 1). - House edge application: With configured house edge
E(typically 0.03):
if r < E:
multiplier = 1.00 // Instant crash (house edge bracket)
else:
multiplier = floor( (1 - E) / (1 - r) * 100 ) / 100
3. Security Analysis
The protocol derives its security guarantees from three well-studied properties of SHA-256 and HMAC:
- Pre-image resistance: Given
H(S), findingSrequires on average 2^255 hash evaluations. At 10 billion hashes/second, this takes approximately 3.67 × 10^57 years. - Second pre-image resistance: Finding a different
S′whereH(S′) = H(S)is equally infeasible, preventing seed substitution after commitment. - HMAC unforgeability: Without knowledge of
S, an adversary cannot computeHMAC-SHA256(S, m)for any messagem, ensuring the Client Seed genuinely contributes entropy.
4. Independent Verification Protocol
After a round concludes and the operator reveals the plaintext Server Seed, any participant can reproduce the exact multiplier:
- Confirm that
SHA-256(revealed_server_seed) == previously_displayed_commitment - Compute
HMAC-SHA256(revealed_server_seed, client_seed + ":" + nonce) - Apply the multiplier derivation formula to the resulting hash
- Compare the computed multiplier against the displayed game result
Our Provably Fair Hash Verifier implements this exact pipeline using the browser-native Web Crypto API (window.crypto.subtle). No data is transmitted to any external server — the entire computation executes locally in the browser context.
5. Limitations and Caveats
- Seed rotation transparency: Operators periodically rotate Server Seeds. The protocol guarantees integrity only within a single seed lifecycle. Players should verify that their Client Seed was not changed without notification during rotation.
- House edge opacity: The configured house edge
Eis embedded in the multiplier derivation formula but is not independently verifiable from the hash alone. Players must trust the stated edge value or compute it empirically from a large sample of verified rounds. - Entropy quality: If the Client Seed is operator-generated (rather than user-provided or blockchain-sourced), the operator could theoretically pre-compute favorable Server Seeds. Using user-specified or blockchain-anchored Client Seeds eliminates this attack vector.