Provably Fair

Wat is "Provably Fair"?

Spelers zijn altijd bang om belazerd te worden in online games.
Dit is begrijpelijk, want het is technisch gezien heel gemakkelijk voor een aanbieder van online games om je te laten verliezen. Bij Jemlit hebben we hiervoor een oplossing genaamd provably fair. Provably Fair is een tool waarmee jij (de speler) elk worpresultaat kunt verifiëren en ervoor kunt zorgen dat je niet vals gespeeld wordt!


Hoe werkt Provably Fair?

Met deze methode wordt elk worpresultaat berekend met de volgende variabelen:

  • Server Seed - Een willekeurige tekenreeks die wij aanleveren.
  • Client Seed - Een tekenreeks die door je browser wordt gegenereerd en die je kunt wijzigen.
  • Nonce of Play Count - Een getal dat elke keer dat je speelt oploopt.

Je ontvangt een versleutelde hash van de Server Seed voordat je begint met spelen.
Omdat je deze vooraf ontvangt, kunnen we deze later niet meer wijzigen. Deze is echter versleuteld, dus je kunt je eigen worpresultaten niet vooraf berekenen (alleen achteraf, als je de ongehashte Server Seed ontvangt). De Server Seed wordt gehasht met het SHA512 hash-algoritme.

Je browser genereert een willekeurige Client Seed. Je kunt en moet deze Client Seed echter aanpassen voordat je begint. Zo voorkom je dat de site je Client Seed van tevoren kent.

Als je nu een weddenschap plaatst, begint de Nonce met 1. Na elke weddenschap die je plaatst, wordt het nonce-nummer met 1 verhoogd.

"

Het resultaat van de worp berekenen

"

Nu komt het nerdy gedeelte! Er zijn 3 stappen die ons naar het laatste gegooide getal van dit spel brengen.

Stap 1 - De variabelen hashen

In deze stap berekenen we de HMAC met het SHA512/256-algoritme met behulp van de Server Seed als sleutel en de Client Seed en Nonce als de data, samengevoegd door een hypen (-).

Je kunt het zelf berekenen; ga hier en voer deze code uit:
echo hash_hmac('sha512/256', 'your client seed-your nonce', 'server seed');
Het resultaat is 38611068f6936027c4657138536fb5bb8f82a6cb2d883f1acb47cb24013f9e93

Stap 2 - De hash omzetten naar een getal

In stap 2 nemen we het resultaat dat we verkregen in de vorige stap en we zetten het om in een getal; Ga hier en voer deze code uit:
echo number_format(hexdec('38611068f6936027c4657138536fb5bb8f82a6cb2d883f1acb47cb24013f9e93'), 0, ""."", """");
Je krijgt 25501016943689873370561741542489390377389678092728534236058081515070178721792, een heel lang getal.

Stap 3 - De uiteindelijke worp berekenen

Omdat we een decimaal getal tussen 0 en 100 willen gooien, delen we eerst het getal uit de vorige stap door het maximaal mogelijke getal, namelijk 1664 (64 is de lengte van de gehashte letterreeks die we in stap 1 hebben verkregen).
Tenslotte berekenen we de worp:
worp = 0 + gedeeld getal * 100.
In dit voorbeeld is het resultaat 22,0231.

"

Hoe wordt de prijs gekozen?

Wanneer je naar de pagina van een eBox gaat, kunt je de kansen in- en uitschakelen door te klikken op Kansen weergeven. Je kunt de worpen bekijken door onderaan de pagina te klikken op "Bekijk worpen".
Voor elk artikel in de box zie je het getal dat je moet gooien om die prijs te winnen, bijvoorbeeld 95,54 tot 97,22. Dit betekent dat als je een getal gooit dat hoger is dan 95,54 en lager of gelijk aan 97,22, jij die prijs wint.


Hoe kan ik controleren of alles eerlijk is?

Om te controleren of er geen sprake is van vals spelen, volg je de stappen in het vorige punt.
Natuurlijk kun je een spel pas verifiëren nadat je de server-seed hebt onthuld.
Je vindt je server-seed, client-seed en nonce in de pop-up "Fairness" bovenaan de pagina (of in het menu linksboven als je JemLit op je mobiel gebruikt).