Beweisbare Fairness
Der Ausgang jedes Spiels steht vor der Wette fest und lässt sich von jedem nachrechnen — unser Wort brauchst du dafür nicht.
So funktioniert es
Im echten Casino siehst du die Karte umdrehen, den Würfel fallen, das Rad sich drehen. Online passiert das in einem Programm — und prüfen musst du das Programm.
Vor der Wette veröffentlicht der Server den SHA-256-Hash seines geheimen Seeds. Ihn nachträglich zu ändern ist unmöglich: Der Hash würde es verraten. Nach dem Wechsel des Seed-Paars wird der alte Server-Seed offengelegt — und jeder Wurf, der mit diesem Paar gemacht wurde, lässt sich mit der Formel unten nachrechnen.
Die Gebühr der Plattform beträgt 1%. Die Auszahlung ist Einsatz × 99 ÷ Chance in Prozent, dem Spieler kommen also 99% des Erwartungswerts zurück. Das ist das Einzige, was das Spiel von einer fairen Münze unterscheidet; mehr wird nicht einbehalten.
Seeds
Ein Seed-Paar besteht aus deinem und unserem. Den Server-Seed erzeugen wir zufällig und zeigen seinen Hash sofort: Der Seed selbst bleibt bis zum Wechsel des Paars geheim, sonst wären künftige Würfe im Voraus bekannt. Den Client-Seed legst du selbst fest, und ohne ihn lässt sich kein Wurf berechnen — der Ausgang hängt an beiden Seiten.
Die dritte Zutat ist die Nonce, die Nummer der Wette im aktuellen Paar. Sie wächst mit jedem Spiel um eins, deshalb können zwei Würfe desselben Paars nie dieselben Eingangsdaten haben.
Wie die Zahl entsteht
Server-Seed, Client-Seed und Nonce werden zu einem HMAC-SHA512 verrechnet. Die entstehenden 128 Hex-Zeichen lesen wir in Fenstern zu je fünf: Der erste Wert unter 1 000 000 wird modulo 10 000 genommen — das ergibt einen Wurf von 0 bis 9999, also von 0.00 bis 99.99.
Die Schwelle zum Verwerfen gibt es der Fairness wegen: Ein Fenster aus fünf Hex-Zeichen liefert Zahlen bis 1 048 575, und dieser Bereich lässt sich nicht glatt durch 10 000 teilen — ohne Verwerfen kämen die kleinen Ergebnisse häufiger als die großen. 1 000 000 teilt sich glatt, deshalb sind alle 10 000 Ergebnisse gleich wahrscheinlich. Dass alle 25 Fenster verworfen werden, hat eine Wahrscheinlichkeit in der Größenordnung von 10⁻³³.
hex = HMAC_SHA512(key = serverSeed, msg = clientSeed + "-" + nonce) hex in Fenstern zu je 5 Zeichen nacheinander lesen (0-4, 5-9, …): erster Wert < 1 000 000 → roll = Wert % 10000 (werden alle 25 Fenster verworfen — roll = 9999) Unter: Gewinn bei roll < target · Über: Gewinn bei roll > target Auszahlung = Einsatz × 9900 / chanceUnits (abgerundet) · 1% Gebühr
Code der Engine
Genau das rechnet die Würfe auf dem Server aus, und genau das rechnet sie in deinem Browser nach. Dass beide Seiten übereinstimmen, hält ein Test fest.
const WINDOW = 5; // Hex-Zeichen pro Fenster: 20 Bit, 0..1048575
const REJECT = 1_000_000; // größtes Vielfaches von 10000 im Fenster
function roll(serverSeed, clientSeed, nonce) {
const hex = createHmac("sha512", serverSeed)
.update(`${clientSeed}-${nonce}`)
.digest("hex"); // 128 Zeichen
// Fenster aus je 5 Hex-Zeichen nacheinander: 0-4, 5-9, ... 120-124
for (let i = 0; i * WINDOW + WINDOW <= hex.length; i++) {
const lucky = parseInt(hex.slice(i * WINDOW, i * WINDOW + WINDOW), 16);
if (lucky < REJECT) return lucky % 10000; // 0..9999
}
// alle 25 Fenster verworfen (Wahrscheinlichkeit ~1e-33)
return 9999;
}
// Auszahlung: 1% Gebühr, abgerundet
const payout = (amount, chanceUnits) => amount * 9900n / BigInt(chanceUnits);
So prüfst du dein Spiel
In der Mini-App: Fairness in der unteren Leiste, oder „Spiel prüfen“ in der Karte jeder Wette.
- Tab „Seeds“ — hier steht der Hash des aktuellen Server-Seeds. Er stand schon vor deinen Wetten fest.
- Wechsle das Seed-Paar. Der vorherige Server-Seed wird offengelegt; dein Client-Seed bleibt deiner.
- Tab „Offengelegt“ — der offengelegte Seed steht neben seinem Hash. Prüf nach: Der SHA-256 des Seeds muss mit dem übereinstimmen, was vor den Wetten zu sehen war.
- Tab „Prüfen“ — füg den Server-Seed, den Client-Seed und die Nonce der fraglichen Wette ein. Der Wurf wird direkt in deinem Browser nachgerechnet und mit dem Ergebnis des Spiels verglichen.
Die Berechnung läuft auf deinem Gerät und erreicht unseren Server nie. Mit der Formel oben kannst du sie in jeder Sprache wiederholen — HMAC-SHA512 gibt es überall.