![RNG](https://cdn.p2x.app/?b=media&f=footer&n=itech-labs.png&w=38)
Click here to view the original iTech Labs Certificate.
System Overview
The random number generator creates provable and completely fair random numbers that are used to determine the outcome of each game played on the site.
Every user can fully verify the outcome of any game in a deterministic manner. By providing one parameter, the client seed, to the inputs of the random number generator, Play2x cannot manipulate the results in its favor.
The Play2x random number generator allows each game to request any number of random numbers from the given initial client seed, initial server seed, and nonce.
Each game uses this list of random numbers to determine its result by transforming them into the required outcome:
- into cards or stones (hilo, stairs,triple)
- Shuffling the list of possible outcomes (keno, mines, tower)
- into numbers (crash, dice)
- into a path (plinko)
Input Data:
Every user has one active client seed, server seed, and nonce, which increments after each game.
Client Seed:
A random string generated by the user. By default, a random string from the server.
Server Seed:
The initial server seed is generated by the server and is a randomly generated hexadecimal (0-9, a-f) string of 64 characters. Play2X hashes the initial server seed using the SHA256 algorithm. (Wikipedia)
The user can change their current server seed. When the seed is changed, a new active seed is automatically generated, and the nonce is reset to 0.
Then, the previous seed, which is now inactive, is revealed and can be verified using SHA256.
Nonce:
Nonce is a number that increments by one each time a game is completed. It allows for generating a unique input for the game, and it is the only parameter that changes after each game.
Converting Input Data 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 generates 64 random bytes (0-255) from the given initial server seed (K) and message (m).
The message is created using the client seed, nonce, and incremental number.
This number, starting from 0, increments by one each time 64 bytes (returned by the HMAC_SHA512(K, m) function) are used. Then, the message is created by concatenating the initial client seed, a colon, the nonce, another colon, and the increment number.
HMAC_SHA512(server_seed, client_seed:nonce:round)
registered address – Curaçao, Abraham de Veerstraat 9