Provably Fair: nachweislich fair, einfach erklärt
So beweist dond.win, dass keine Runde Deal or No Deal manipuliert ist: ein SHA-256-Commitment, das vor deiner Wahl veröffentlicht wird, dein eigener Client-Seed in der Mischung, beide Seeds am Ende offengelegt und eine Prüfseite, die alle 25 Koffer nachrechnet.
Welches Problem Provably Fair löst
Bei einem gewöhnlichen Online-Spiel musst du darauf vertrauen, dass der Betreiber ehrlich gemischt und den Hauptgewinn nach deiner Wahl nicht verschoben hat. Provably Fair, auf Deutsch nachweislich fair, ersetzt dieses Vertrauen durch Rechnen. Der Betreiber legt sich auf die Mischung fest, bevor du handelst, lässt dich die Mischung mit einer eigenen Eingabe beeinflussen und legt danach alles offen, damit du es prüfen kannst.
Was in einer Runde passiert
- Commitment. Bevor du einen Koffer wählst, zieht der Server einen geheimen Server-Seed und veröffentlicht dessen SHA-256-Hash. Der Hash wird im Spiel als Commitment angezeigt. Der Server kann den Seed später nicht ändern, ohne dass sich der Hash ändert.
- Deine Eingabe. Du hast einen Client-Seed. Standardmäßig ist er zufällig; im Einsatzfeld kannst du vor Rundenbeginn einen eigenen eintippen. Der Server kann ihn nicht vorhersagen.
- Die Mischung. Die Leiter mit 25 Gewinnen wird per Fisher-Yates gemischt, mit Zufallsbytes aus HMAC-SHA256, wobei der Server-Seed der Schlüssel und dein Client-Seed die Nachricht ist. Keine Seite kann die Verteilung allein bestimmen.
- Die Offenlegung. Wenn die Runde endet, wird der Server-Seed neben dem Commitment und deinem Client-Seed angezeigt.
- Die Prüfung. Hashe den Server-Seed und vergleiche das Ergebnis mit dem Commitment. Führe die Mischung mit beiden Seeds erneut aus und vergleiche jeden Koffer mit dem, was du gesehen hast. Die Prüfseite erledigt beides in deinem Browser; es wird nichts irgendwohin gesendet.
Der genaue Algorithmus
- commitment = SHA-256(utf8(serverSeed)), hexadezimal kodiert.
- block[i] = HMAC-SHA256(key = serverSeed, msg = clientSeed + “:” + i), für i = 0, 1, 2 …
- Jeder Block liefert acht 32-Bit-Ganzzahlen in Big-Endian-Reihenfolge; r = Wert / 2^32. Ist ein Block aufgebraucht, kommt der nächste.
- Fisher-Yates über die feste Leiter: für i von 24 abwärts bis 1 gilt j = floor(r × (i + 1)), dann werden ladder[i] und ladder[j] getauscht. Koffer k erhält ladder[k].
Das lässt sich in jeder Programmiersprache in wenigen Zeilen nachbauen und ergibt dieselbe Verteilung.
Was es beweist und was nicht
Es beweist, dass die Verteilung feststand, bevor du gewählt hast, und dass der Server sie nicht allein bestimmt hat. Es beweist, dass jedes Angebot, das du gesehen hast, aus der echten Tafel berechnet wurde. Die Chancen ändert es nicht: Die Leiter und die Gebühren sind, wie sie sind, und ebenfalls öffentlich. Fairness heißt hier: Das Spiel, das dir gezeigt wird, ist das Spiel, das gespielt wird.
Eine alte Runde prüfen
Seeds und Commitment stehen auf dem Abschlussbildschirm der Runde und in deinem Verlauf. Du kannst sie jederzeit in die Prüfseite einfügen.
Häufige Fragen
Ist Deal or No Deal auf dond.win manipuliert?
Die Verteilung jeder Runde wird per SHA-256-Hash festgelegt, bevor du einen Koffer wählst, mit deinem eigenen Client-Seed vermischt und am Rundenende offengelegt. Auf der Prüfseite kannst du alle 25 Koffer selbst nachrechnen. Eine manipulierte Verteilung würde diese Prüfung nicht bestehen.
Was ist ein Client-Seed und sollte ich ihn ändern?
Er ist dein Beitrag zur Mischung. Der Standardwert ist zufällig und verhindert bereits, dass der Server die Verteilung bestimmt. Mit einem eigenen Wert wird die Runde mit einer Eingabe reproduzierbar, die nur du gewählt hast.
Kann der Server einen Seed wählen, der das Haus begünstigt?
Beim Commitment kann er die endgültige Verteilung nicht kennen, weil dein Client-Seed erst danach einfließt. Nachträglich austauschen kann er den Seed auch nicht, weil der Hash dann nicht mehr passen würde.
Brauche ich Software, um eine Runde zu prüfen?
Nein. Die Prüfseite berechnet SHA-256 und HMAC-SHA256 in deinem Browser. Du kannst auch jede Programmiersprache nehmen, die diese beiden Funktionen mitbringt.