Rollin is provably fair. This means we use cryptography to prove that every bet is mathematically fair and manipulation free. Our players can check the fairness of every rolled number and confirm that they are not manipulated. Every number has been randomly generated and is unknown to both the server and the client. Our random numbers are generated through the use of these seeds:
- Server seed.
- Random seed.
- Client seed.
Before the player rolls, we generate a random string of characters on the server used as the "server seed". A hash of the server seed is shown to the player (to prove we can’t change the server seed). We create the server hash by combining the server seed and random seed together.
server_hash = @crypto.SHA256 server_seed + random_seed
The client seed is randomly generated before each roll on the client side. This will ensure that we can't predict your client seed.
nBytes = 20
words = new Array
buffer = new Uint32Array Math.ceil nBytes / 4
for word in buffer
words.push word | 0
client_seed = new @crypto.lib.WordArray.init words, nBytes
The player can also provide his own random client seed. We combine the server seed and client seed to generate the seed that will be used for the Mersenne Twister shuffle. This will generate a random number between 0-99.
seed = @crypto.HmacSHA512 server_seed, client_seed
seed = seed.substr seed.length / 2 - 4, 8
seed = parseInt seed, 16
return @mersennetwister.random 0, 99
At the end of the roll, the server seed and random seed are revealed. The player can now verify the fairness of the roll by using the server seed and the client seed.