Probably Fair
The underlying concept of provable fairness is that players have the ability to prove and verify that their results are fair and unmanipulated. This is achieved through the use of a
commitment scheme
, along with cryptographic hashing.
This is simplified in the following representation:
fair result = Eddies input (server seed*) + viewer decided seed
*Server seed should be decided before client seed gets picked.
It should be unchanged for whole stream and revealed when all drops are generated.
For each verifiable drop, a client seed, a server seed, a nonce and a round number are used as the input parameters for the
random number generation
function.
This function utilises the cryptographic hash function
HMAC_SHA256
to generate bytes which are then used as the foundation for how these Kick Drop Generator values are created.
Round (Incremental Number)
Generator uses 4 bytes of data to generate a single result. Round number is increased by one for each wanted variable. (0=Redemption amount, 1=Wager amount, 2=Drop amount)
For an example if client seed would be: bitcoin and server seed: litecoin generator would generate result for redemption amount like this:
//Create array for all values between min and max claims.
ClaimsArray = array_combine(range({MIN_CLAIMS_AMOUNT},{MAX_CLAIMS_AMOUNT}),range({MIN_CLAIMS_AMOUNT},{MAX_CLAIMS_AMOUNT}));
//Merge array as many times as difference between min and max value is. This is not smartest thing to do, due arrays gets quite big, but it works and every result can be found same amount of times.
for ($x = 0; $x <= {difference}+1; $x++) {
ClaimsArray = array_merge(ClaimsArray , ClaimsArray);
}
hmac_sha256(server_seed, client_seed:nonce:round): e9f6da942286e96fde6712ea44f97312b5fcf67ebcbf6076a2b66e917e3bdb5b
First 4 bytes:
Hex e9 f6 da 94
Base 10 233 246 218 148
(233/256^1) + (246/256^2) + (218/256^3) + (148/256^4)
(0.91015625) + (0.003753662109375) + (0.000012993812561035156) + (3.4458935260772705e-8)
= 0.9139229403808713
0.9139229403808713 * {MAX_CLAIMS_AMOUNT} = 2741.76882114
Result (rounded): 2741
Final Results would be ClaimsArray[{RESULT}] --> 1741 total claims