Click here to view the original iTech Labs Certificate.
System Overview
The random number generator produces provably fair and completely random numbers used to determine the result of each game played on the site.
Every user can verify the outcome of any game in a fully deterministic way. By providing just one parameter — the client seed — as input to the random number generator, Play2x cannot manipulate the result in its favor.
The Play2x RNG allows any game to request any number of random values based on a given client seed, server seed, and nonce.
Each game uses this sequence of random numbers to determine the outcome by converting them into the required form:
- into cards or stones (hilo, stairs, triple)
- shuffle a list of possible outcomes (keno, mines, tower)
- into numbers (crash, dice)
- into a path (plinko)
Input Data:
Each user has one active client seed, server seed, and a nonce that increments after every game.
Client Seed:
A random string generated by the user. By default, it is a server-generated random string.
Server Seed:
The server seed is generated by the server as a randomly generated 64-character hexadecimal string (0-9, a-f). Play2x hashes the server seed using the SHA-256 algorithm (Wikipedia)
The user can change their current server seed. Upon changing, a new active seed is automatically generated, and the nonce is reset to 0.
The previous (now inactive) seed is revealed and can be verified via SHA-256.
Nonce:
The nonce is a number that increments by 1 after each completed game. It ensures a unique input for each game and is the only parameter that changes between games.
Input Conversion to Bytes:
The client seed, server seed, and nonce are used as input parameters for the random number generator.
Bytes are generated using the HMAC_SHA512(K, m) function (Wikipedia). This function returns 64 pseudo-random bytes (values 0–255) from the server seed (K) and message (m).
The message is created using the client seed, nonce, and an incremental number.
This incremental number starts at 0 and increases by 1 each time 64 bytes from the HMAC_SHA512 function are consumed. The message is built by concatenating client seed, a colon, the nonce, another colon, and the round number.
HMAC_SHA512(server_seed, client_seed:nonce:round)
registered address – Curaçao, Abraham de Veerstraat 9