Provably Fair

This is a algorithm which can be analyzed and verified for fairness on the part of the service operator. Check also: FAQ, TOS


To ensure all rounds on are fair we give you as much information as possible before the roll. The information provided after the round can be compared to the information given before the round in order to verify it.

What we give you

Before the round starts, a public 'client seed' as well as a SHA256 hashed version of the 'server seed' is shown. You are given the ability to generate a new set of seeds at any point in time, you may also set your client seed to a totally custom value, as the server does not receive it until you click the upgrade button.

How it works?

Each final percentage is generated using an HMAC SHA256 hash of the client seed with the server seed used as the key. The first four bytes of the resulting hash are converted (big endian) to an unsigned 32-bit integer, then divided by 232.

Below is the exact code we use to generate the roll on our server, you can run this code yourself using NodeJS. You can execute NodeJS code straight from your web browser with tools like:

const crypto = require('crypto');
class ProvablyFair {
    constructor(server_seed, client_seed) {
        this.server_seed = (server_seed || crypto.randomBytes(16).toString('hex')).toLowerCase();
        this.client_seed = (client_seed || crypto.randomBytes(16).toString('hex')).toLowerCase();
    get server_hash() {
        let hash = crypto.createHash('SHA256');
        return hash.digest().toString('hex');
    get round_result() {
        let hmac = crypto.createHmac('SHA512', this.server_seed);

        let buf = hmac.digest();
        return buf.readUInt32BE() / Math.pow(2, 32) * 100;

You start a new upgrade. Your client seed is d597c1f72790f244b1bd59e177606dba and your server hash is b84776b4a3bbe977f082ca60716adf5e6ecf929d59f8aa0f0aebcf6f84da228c.

You do a 10x upgrade, meaning the server must roll 9.10% or below in game under or 90.90% in game over (without using bonuses).

You win and check your history. The server seed is hgEimWEiD6HMGG06lxmKzlRET2VnMTjI and the round result is 78.47981888335198%. If you want to verify this round, simply run this code after the code above:

//create a new fair generator with your round's server and client seed
var client_seed = "hgEimWEiD6HMGG06lxmKzlRET2VnMTjI";
var server_seed = "8b67685bd66c22fd6880b881256a0bac";
var validator = new ProvablyFair(server_seed, client_seed);

console.log("Server hash: " + validator.server_hash); //should print the server hash you originally got
console.log("Round result: " + validator.round_result); //should print something like 78.47981888335198

Go back to home page