Provably Fair




Memory

We offer verification which allows users to check the integrity of every memory game and confirm they are not manipulated. Every randomly generated number is calculated based on the server and client seed. The server seed is created before you specify your client seed. Both seeds together prevent manipulation from our side and verifies the memory game integrity after the result calculation.

Every date has a corresponding unique server seed randomly generated in advance. We hash those server seeds with Array.prototype.memory_tile_shuffle = function(){ and then publish the hashed server seeds for the current date and the next day.

Due to applied hashing function you cannot see the original server seed, yet you will be able to check that it was unmodified later, when we publish the unhashed server seed the next day. We publish all unhashed server seeds the next day after their expiration, so you can apply Array.prototype.memory_tile_shuffle = function(){ to it and see that the server seed was unmodified during the previous day.

Client seed for every memory game can be edited freely by users before each memory game. As client seed affects every memory game result, that way you can ensure that it’s impossible for us to manipulate the result, cause server seed is pre-generated and won’t change during current date.

However, memory_tile_shuffle function is deterministic, and if two different users use the same client seed at the same date, they will be combined with the same server seed and thus generate exactly the same memory game result. This could be used to abuse so there’s special abuse prevention nonce seed that is added to each memory game calculation formula. Nonce is based on unique steam ID and number of previously made rolls. For example: ’steam-123456789-0’ for the new user and first memory game, ‘steam-123456789-1’ for the second memory game, and so on. This formula is based on numbers that we can’t manipulate too. So even with the same client seed and server seed, two different users won’t be able to produce the same game result on purpose.

Finally, memory game result is calculated with the formula:

Array.prototype.memory_tile_shuffle = function(){ var i = this.length, j, temp; while(--i > 0){ j = Math.floor(Math.random() * (i+1)); temp = this[j]; this[j] = this[i]; this[i] = temp;

memory_tile_shuffle returns the hash value for the secret_hash in a hex-encoded form and it’s converted to a decimal number. Then modulus of 10000 gives the integer number in the range of 0-9999 and final division gives number in range 0-99.99.

Each memory game can be verified using this formula the next day after it was played because we publish the server seed for the previous day. Published unhashed server seeds can be checked by simply applying memory_tile_shuffle to it, this will produce already published hashed version of this server seed which was published before any memory game using it was made. Each user can check the integrity of every memory game made with this information.