Skins: 0
Coins: 0.00
0 Online
Provably Fair
Select a game from the list below to learn about how we ensure that the results are always random and never tampered with.
skins.latestupdate.zip uses provably fair method, that doesn't allow us to manipulate the outcome once the game is started, below you can see how the outputs are caluclated.
You can execute the code straight from your browser with tools such as this NodeJS tester. Simply replace all parameters with the ones in the round you want to check.
Info
This is a passphrase or a randomly generated string that is determined by the player or their browser. This can be edited and changed regularly by yourself.
Client Seed
This field is required
To reveal the hashed server seed, the seed must be rotated by the player, which triggers the replacement with a newly generated seed. From this point you are able to verify any bets made with the previous server seed to verify both the legitimacy of the server seed with the encrypted hash that was provided.
You can validate hashed server seed using this script. The hashed server seed is a SHA-256 hash of the seed so after you unhash it, you can check that it matches with the hashed version.
Server Seed Hashed
This field is required
You can validate hashed server seed using this script. The hashed server seed is a SHA-256 hash of the seed so after you unhash it, you can check that it matches with the hashed version.
var sha256 = require('sha256');
var seed = 'f0c82c85ba6ef5cbba7406db81ee5451a1a795120e335116dc637d34a105e6e6';
function fair_getHash256(seed){
return sha256(seed);
}
console.log('Hashed: ' + fair_getHash256(seed));
Id
Server Seed
Useds
Created At
No data found
Unboxing Game
In the Provably Fair tab, you can change the client seed and regenerate the server seed.
Server seed is SHA-256 hash generated from random 32 bytes. You can regenerate server seed in any time. You cannot see the original server seed, yet you will be able to check that it was unmodified later after regenerating the server seed.
Client seed is generated first time for user, same way like server seed. As the client seed affects every roll result, changing it to any seed of your choice at any time means you can ensure that it's impossible for us to manipulate the result.
However, the SHA-256 function we use to generate the roll is deterministic, if the client seed is combined with the same server seed, it will generate exactly the same roll result every time. This could be used to abuse the system, so we use something called a 'nonce' which prevents this from being abusable. Each roll done using the same server seed & client seed pair will also be paired with a different nonce, which is simply a number starting at 0 and incremented by 1 for each roll done.
The nonce is based on numbers that we can't manipulate (they naturally increment by 1 after each roll).
The total tickets is based on sum of tickets from crates.
SHA-256 returns the hash value for the salt hash combination in a hex-encoded form. We then take the first 8 characters from this hash and convert this hex string to a number.
We apply a modulus of 'total_tickets' to converted number, giving us a number in the range of 0-'total_tickets'. Finally, incrementing by 1 produces a integer number in the range 1-'total_tickets' + 1.
Each roll can be verified using this formula as soon as you have revealed your server seed for the previous rolls. The published unhashed server seeds can be checked by simply applying the SHA-256 function to it, this will produce the previously published hashed version of the server seed, which was made visible to you before any roll using it was ever made. Each user can check the integrity of every roll made using this information.
var crypto = require('crypto');
var roll_server_seed = '2c3eea4603280f3cadfb0046b248e7b756930b0b6886997ac73f96d478c823f3';
var roll_client_seed = '0b3eeb63c10796f00e3faff36207b369';
var roll_nonce = 12;
var roll_total_tickets = 10000;
function fair_getCombinedSeed(server_seed, public_seed, nonce) {
return [server_seed, public_seed, nonce].join('-');
}
function fair_generateSaltHash(seed) {
return crypto.createHmac('sha256', seed).digest('hex');
}
function fair_getRoll(salt, max) {
return Math.abs(parseInt(salt.substr(0, 12), 16)) % max;
}
var generated_seed = fair_getCombinedSeed(roll_server_seed, roll_client_seed, roll_nonce);
var generated_salt = fair_generateSaltHash(generated_seed);
var generated_roll = fair_getRoll(generated_salt, roll_total_tickets) + 1;
console.log('Roll: ' + generated_roll);
Id
Server Seed
Client Seed
Nonce
Tickets
Roll
No data found
Case Battle Game
Casae Battle uses a provably fair system in which the public seed is not known until after a battle game has started. The result for each battle is generated using the SHA-256 hash of 3 separate inputs:
The server seed is a securely random value, generated when a round is created. The SHA-256 hash of the server seed is displayed to all players immediately after a round is created. Players can check that the private seed revealed after the coinflip result is made known matches this SHA-256 hash.
The public seed is the ID of an EOS block, which is to be generated after the countdown is finished. When the countdown is finished, our system chooses a block number on the EOS blockchain that will be generated in the near future. The ID of this block is what will be used as the public seed. This way, neither the players nor our system know what data will be used to generate the coinflip result until after both players have committed their bets.
The nonce is based on numbers that is the round id.
The rounds is based on numbers that is the number of cases the battle have.
The players is based on numbers that is the number of players the battle have.
The output is a matrix. Each row represents the round and the column represents the player position. Each value is based on numbers that is the case roll.
var crypto = require('crypto');
var roll_server_seed = '48dc637aedd2d53c1dbf4d0cb8c48e3be1a243a6fb9e6738cd528cef1db1159e';
var roll_public_seed = '11db6dc55673ab3d610ee1b96593a08ed5029231f4a0fa1e8d54e1b4abd34c5f';
var roll_nonce = 3;
var roll_rounds = 4;
var roll_players = 2;
function fair_getCombinedSeed(server_seed, public_seed, nonce) {
return [server_seed, public_seed, nonce].join('-');
}
function fair_generateSaltHash(seed) {
return crypto.createHmac('sha256', seed).digest('hex');
}
function fair_getRoll(salt, max) {
return Math.abs(parseInt(salt.substr(0, 12), 16)) % max;
}
function fair_getRollCaseBattle(salt, rounds, players) {
var array = [];
for(var i = 0; i < rounds; i++) {
array.push([]);
for(var j = 0; j < players; j++) {
var salt_position = fair_generateSaltHash(salt + '-' + i + '-' + j);
var roll = fair_getRoll(salt_position, Math.pow(10, 8)) / Math.pow(10, 8);
array[i].push(roll);
}
}
return array;
}
var generated_seed = fair_getCombinedSeed(roll_server_seed, roll_public_seed, roll_nonce);
var generated_salt = fair_generateSaltHash(generated_seed);
var generated_roll = fair_getRollCaseBattle(generated_salt, roll_rounds, roll_players);
console.log('Roll: ' + JSON.stringify(generated_roll));
Id
Server Seed
Public Seed
Block id
Roll
Created At
29
74233fc62e9ee86fe50ad296a37bc4694f8abd43279b7d0d464f763051fac934
16b7f2256a7ec587cfbfd46eb8572f909838c483e2e6a0a3aa68a9449de3cec7
381153829
30 June 2024, 09:22 PM
28
30ae2fd0845c361164ba548abf50456d2fb9385a3b572530c6d5226a67abc37a
16b7f0f218f7ad237eef2069d69200963666c63f345f543292e68cbfffe49db1
381153522
30 June 2024, 09:20 PM
27
bac6644bc248a4635f980a8219b7a445728d4275be3decf2c876ef01ae4e826f
16b7ef2d6b7b92ac09450fbe98fcdf67d3d8efc63689d35fa7a438dbabe52e8f
381153069
30 June 2024, 09:16 PM
26
4e4fc00c205ff10eace45f00cf195be973683a3f9b7594510b6babf8041bf24e
16b7edc9b838905878b9a162f47713cd74c54296c3efecbb28ffef4ce07d59d2
381152713
30 June 2024, 09:12 PM
25
316edefd93c09ded3bb883693eace8f1217bb6a73068ec3945a0626091316c1b
16b7ed15ba5548fa5737b5284d7ef51f32b3f67c48bcf502100b1823a97f3be5
381152533
30 June 2024, 09:11 PM
24
8fd45a64b2b1e770ce34e82d94e8e60cbecacbd18438acb7d840c74935f5b265
16b7ec619d9328de6b9fc8cd322afefef2e0f1bc78f2fb7253a1c4046076f248
381152353
30 June 2024, 09:09 PM
23
d6bcb53857ae625d30b6645a9cbf18a87306e6cf2c5d32828a4762d5fe90440a
16b7ea219d4d900a4367807fd1b4b05ba84b68e0689218bd023a44d5dd4d3ea3
381151777
30 June 2024, 09:04 PM
22
9c9aa7e0d1399018385bf448e1a72c9520f7e4425e79ef7c293984b82a17f437
16b7c8117f96bb231caa65784c36834a74c7c896c5942d4a7a7e34f085f2f322
381143057
30 June 2024, 07:51 PM
21
0bb84451c0775e9aae98194e38984edbb88f034734f466510a3b9a64b495e6cb
16adeac28082289d5f559ef2f1c6490c13546eab284bbee1d9b85d3fc1ce2c99
380496578
27 June 2024, 01:58 AM
20
98f264951e837e705d32cff0d50319eba36603eb7759cf9843629b632de6b9e3
16adea5ee110ba8abeb191a60949819477ad1f36a0e21b24ca1788cd6eb9efdb
380496478
27 June 2024, 01:57 AM
19
aa4e87c7866e38a7c7fc680f4ffd424731471e15de60761b91d47985f5b16fc1
16ade9e36beb44abc2c10b1c9e8956cb0f2db69929c749942cc151944ac01e87
380496355
27 June 2024, 01:56 AM
18
002cc4281ba10918edebfeb15519d4401788f528e1178e84722c7a30b29406f3
16ade97f87a2c8767d0813e45565642234b50ca068b3a2c19c5cfd932a846522
380496255
27 June 2024, 01:55 AM
17
05e64f85bcb19ee0691c3d66bda6042136b42b0aeeef640c0b32c7861acadaff
16ade902730c5095f9746132c5ae07a8c4c877f37ae78de34f2974d649362441
380496130
27 June 2024, 01:54 AM
16
1e246911e44e16f554348a2d4f858a4e2597882f4bb652f26f764dbaeb479450
169bd754e850c919c1a102428dd814d2351d645da1973e6a3ad6504afc5cde42
379311956
20 June 2024, 05:09 AM
15
606753a334657eae22b566ee12898187ea95898775db7d3a849055fe6601b7bb
169bd6e85d032e9f736e64bfa4c407cf3bf0760eaab439e571727fbc4eb16065
379311848
20 June 2024, 05:08 AM
14
05d7e0131fb12a8fdfbdf3badf84e07ec6ec05b3563f689e0f7b964fc4864b28
1665e88b514302f7bcdd84016ad537edc1a5a2bba18398021c07ab3c6fa862f8
375777419
30 May 2024, 05:35 PM
13
227f851243cdc14df34816fcea7b20ca9c23e08d9344c6c967060c3797629533
1665e68f3876fe36cce7663c60af33eca596fbcecc7179709bd14813130f3b08
375776911
30 May 2024, 05:30 PM
12
c1539fdbc6d254c11cec58f411efed343915d8c132cb367eab2bc0ceb86c1b22
1665dc036f0d29f55e28239d7fe1694ffc96a7f43ded585220e3e4a985d8a32f
375774211
30 May 2024, 05:06 PM
11
f048d6b560f5844e4b4a1ab6028300429dca138ea9eb1fd0bbae4c00d97b20dd
1665d57712e4d9bff4a834807a9684f19c7e5ef17767bba22dd2f523ca3415e7
375772535
30 May 2024, 04:54 PM
10
dcaf743ac6e4a3971f174f6ca535608927af08912f3e902114f5b19ea2c0abfb
1665d3e44940b3799ab0be96a79ba08cda6711973d9267cdf69850629c049566
375772132
30 May 2024, 04:51 PM
9
38144628e61678994a7a0b51743e0931481fd4ae4874527b8c556eb64eb8b2b4
166444d00d71cd70c25e7bde986c2d59ee911f8a934036085d9f2fe5f0c9a7de
375669968
30 May 2024, 02:38 AM
7
767ff626b5f8433a86b28707135db5052e9dd55ce3533cf60c605a9e5303a316
16642ec879fd2ece71b0826343510a944a0dee3a807798a28b6258d986cb8098
375664328
30 May 2024, 01:51 AM
6
0ff3d8ffdd3c03f71f86116067a01fdf47500f19920f43883a668dfbc2f121dd
16642e403053aad198dacb9e19b7dba1852f81fb5dea5f6b552ee5a0e3d2df6b
375664192
30 May 2024, 01:50 AM
5
dd63f05067608ae9970dd3c6c8b0cd29da1c5a489a24826d18fb202d1c83933d
16642dcc7592ab9caa0a57ee684d46c2ca2e495b7624d6fbe1b40429410b0e27
375664076
30 May 2024, 01:49 AM
4
38cc5a3986ee44eb73e96bf7b9c72e14881d7f3d16e5d1c0edcfacd4a4b216a1
1664267808ce7c4192b71ea6af574a7182ffe020fede23f6eeb4217fd23b3aa1
375662200
30 May 2024, 01:33 AM
3
cf02f9d60ea7e296f30ecc9e34b831c176e5c4b7727e79b67096e03321c3a8ff
166425bc722edc85ae061f2bb4e960ae61d6edfc2382949352da48f22e52b83a
375662012
30 May 2024, 01:32 AM
2
cddc81ce864957d2858907fc02d112714ac8086b0de51161e364c2b776d0aee7
166417bc3affe54b00c3714283f3db06ed00f57b97ccad980d53ad9f0928da01
375658428
30 May 2024, 01:02 AM
1
f6cccd1854fdf600ed559e70491b700cd675185f6dac59e0b2dc2a7e14f36cd8
16641668b3e102b02325d0594bb014b032decb7857631adf95812c80ae1ffc27
375658088
30 May 2024, 00:59 AM
Upgrader Game
In the Provably Fair tab, you can change the client seed and regenerate the server seed.
Server seed is SHA-256 hash generated from random 32 bytes. You can regenerate server seed in any time. You cannot see the original server seed, yet you will be able to check that it was unmodified later after regenerating the server seed.
Client seed is generated first time for user, same way like server seed. As the client seed affects every roll result, changing it to any seed of your choice at any time means you can ensure that it's impossible for us to manipulate the result.
However, the SHA-256 function we use to generate the roll is deterministic, if the client seed is combined with the same server seed, it will generate exactly the same roll result every time. This could be used to abuse the system, so we use something called a 'nonce' which prevents this from being abusable. Each roll done using the same server seed & client seed pair will also be paired with a different nonce, which is simply a number starting at 0 and incremented by 1 for each roll done.
The nonce is based on numbers that we can't manipulate (they naturally increment by 1 after each roll).
SHA-256 returns the hash value for the salt hash combination in a hex-encoded form. We then take the first 8 characters from this hash and convert this hex string to a number.
We apply a modulus of 10000 to converted number, giving us a number in the range of 0-9999. Finally, division by 100 produces a decimal number in the range 0-99.99.
Each roll can be verified using this formula as soon as you have revealed your server seed for the previous rolls. The published unhashed server seeds can be checked by simply applying the SHA-256 function to it, this will produce the previously published hashed version of the server seed, which was made visible to you before any roll using it was ever made. Each user can check the integrity of every roll made using this information.
var crypto = require('crypto');
var roll_server_seed = '2c3eea4603280f3cadfb0046b248e7b756930b0b6886997ac73f96d478c823f3';
var roll_client_seed = '0b3eeb63c10796f00e3faff36207b369';
var roll_nonce = 0;
function fair_getCombinedSeed(server_seed, public_seed, nonce) {
return [server_seed, public_seed, nonce].join('-');
}
function fair_generateSaltHash(seed) {
return crypto.createHmac('sha256', seed).digest('hex');
}
function fair_getRoll(salt, max) {
return Math.abs(parseInt(salt.substr(0, 12), 16)) % max;
}
var generated_seed = fair_getCombinedSeed(roll_server_seed, roll_client_seed, roll_nonce);
var generated_salt = fair_generateSaltHash(generated_seed);
var generated_roll = (fair_getRoll(generated_salt, 10000) / 100) % 100;
console.log('Roll: ' + generated_roll);
Id
Server Seed
Client Seed
Nonce
Roll
No data found