How It Works
Our system uses cryptographic hashing to ensure that game outcomes are determined before the bet is placed and can be verified by anyone afterwards. Hereβs a simplified breakdown:
- Server Seed: Before any bets, our server generates a secret random seed (Server Seed).
- Hashed Server Seed: We then hash this Server Seed (e.g., using SHA256) and show this hash to you before you place your bet. Since it's a hash, you can't derive the original Server Seed from it, but it serves as a commitment from us.
- Client Seed: You provide or your browser generates a Client Seed. You can change this seed at any time.
- Nonce: A number (nonce) that increases with each bet you make with the current seed pair.
- Roll Calculation: The game outcome (e.g., a dice roll from 0.00 to 99.99) is calculated using a cryptographic function that combines the Server Seed, Client Seed, and Nonce. For example:
HMAC_SHA512(ServerSeed, ClientSeed + ":" + Nonce). The first few bytes of this result are converted into a number to determine the roll. - Verification: After the bet, we reveal the original Server Seed. You can then independently use the Server Seed, your Client Seed, and the Nonce for that bet to recalculate the outcome using the same algorithm. If it matches what you saw, the game was fair.
Why Is This Fair?
- Server Commitment: By providing the Hashed Server Seed beforehand, we commit to the outcome-determining factor from our side. We cannot change the Server Seed after you've seen its hash without you noticing.
- Player Influence: Your Client Seed ensures that we cannot know or control your input into the random generation process.
- Verifiability: You can verify every single bet you make. This transparency ensures that the odds are as stated and the game is not rigged.
Example Verification (Simplified)
Imagine the following (details vary by implementation):
Server Seed (Revealed After Bet): SuperSecretServerSeed123
Hashed Server Seed (Shown Before Bet): SHA256("SuperSecretServerSeed123") = 3a2f...c9b4
Your Client Seed: MyLuckyClientSeedABC
Nonce for this bet: 15
You would then take these values and run them through the publicly known HMAC_SHA512 algorithm (or similar). The resulting hash is converted to a number (e.g., 0-9999 for a 0.00-99.99 roll). This result must match the roll you observed for that bet.
Note: This is a conceptual overview. The exact cryptographic functions and implementation details for CryptoBet will be documented and verifiable through our platform tools (once implemented). Currently, CryptoBet uses Math.random() for client-side demonstration purposes only.
We are committed to providing a fair and transparent gaming experience. If you have any questions about our provably fair system, please don't hesitate to contact support.