> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mycryptocasino.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Eine Runde überprüfen

> Eine vollständig durchgerechnete Überprüfung einer beendeten Runde aus öffentlichen Daten – plus die kürzeren Checks für Dice und Mines.

Du kannst jede beendete Runde selbst anhand öffentlicher On-Chain-Daten überprüfen – ohne Konto und ohne besonderen Zugang. Drei Dinge gilt es zu prüfen: dass der Commit-Hash veröffentlicht wurde, bevor die Runde begann, dass das aufgedeckte Geheimnis genau diesen Commit-Hash ergibt und dass die öffentliche Formel, neu berechnet, genau das Ergebnis liefert, auf dessen Basis die Runde ausgezahlt hat.

Diese Anleitung nimmt eine beendete [Crash](/de/docs/games/crash)-Runde und überprüft sie von Anfang bis Ende: dass das Geheimnis des Betreibers **vor** der Runde festgelegt (committet) wurde und dass der Crash-Punkt genau dem entspricht, was die [öffentliche Formel](/de/docs/provably-fair/crash) ergibt. Du brauchst keinen besonderen Zugang: Alles stammt aus öffentlichen On-Chain-Daten. Ein kurzer Abschnitt am Ende behandelt [Dice](#dice-and-mines) und Mines, die sich jeweils anhand einer einzigen Transaktion überprüfen lassen.

## Was du beweist

1. **Der Commit kam zuerst.** Der Hash des Geheimnisses stand on-chain, bevor die Runde begann – das Ergebnis kann also nicht erst nach deiner Wette ausgewählt worden sein.
2. **Das Geheimnis passt zum Commit.** `sha256(secret)` entspricht dem festgelegten Hash.
3. **Der Multiplikator ist ehrlich.** Wenn du die Formel aus dem Geheimnis und dem Block-Hash neu berechnest, erhältst du genau den Crash-Punkt, auf dessen Basis die Runde ausgezahlt hat.

## Schritt 1: Öffne die Fairness-Daten der Runde in der App

Öffne deinen Wettverlauf (oder den Rundenverlauf) und klicke auf eine beendete Runde, um ihre Details zu öffnen. Neben dem Ergebnis der Runde findest du:

* **Gecrasht bei**: den finalen Multiplikator, den du überprüfen willst.
* **Hash des Spielgeheimnisses**: das aufgedeckte 32-Byte-Geheimnis. Das Feld verlinkt auf die **Commit-Transaktion** in einem Solana-Explorer.
* **Block-Hash**: den Solana-Slot-Hash, der als Entropie aus der Chain dient. Er verlinkt auf die **Rundenstart-Transaktion**.
* **„Ist dieses Spiel fair? Fairness-Tool nutzen“**: öffnet das Fairness-Tool mit bereits eingetragener Runde. Das Tool ruft die drei Transaktionssignaturen der Runde (Commit, Block-Hash, Reveal) und das Netzwerk ab und berechnet alles, was unten folgt, mit einem Klick für dich neu.

Das Fairness-Tool ist der bequeme Weg. Der Rest dieser Seite beschreibt den vollständig unabhängigen Weg, bei dem du nichts vertrauen musst außer der Chain und deinem eigenen Computer.

## Schritt 2: Die drei Transaktionen einer Runde

| Fairness-Daten | On-Chain-Instruktion | Was sie veröffentlicht |
| - | - | - |
| Commit-Transaktion | `start_new_round` | Den Commit `sha256(secret)` im Event `CrashRoundPrepared`, bevor die Wetten geöffnet werden |
| Block-Hash-Transaktion | `start_game` | Den erfassten Solana-Slot-Hash im Event `CrashGameStarted`; ab diesem Moment steht das Ergebnis fest |
| Reveal-Transaktion | `crash` | Das aufgedeckte Geheimnis und den finalen Crash-Punkt im Event `CrashRoundFinalized` |

## Schritt 3: Lies die Werte in einem Solana-Explorer ab

Öffne jede Transaktion im Explorer deiner Wahl (Solscan, Solana Explorer, SolanaFM …) – und zwar in dem Netzwerk, in dem die App läuft. Suche auf der Transaktionsseite nach den dekodierten **Events** des Programms (manchmal unter „Logs“ oder „Instruction data“; Explorer, die die IDL des Programms kennen, dekodieren die Event-Felder mit ihren Namen).

Sammle vier Werte:

* `commit_hash`: 32 Bytes, aus der Commit-Transaktion.
* `blockhash`: 32 Bytes, aus der Block-Hash-Transaktion.
* `local_e`: das 32-Byte-Geheimnis, aus der Reveal-Transaktion.
* `crash_point_bps`: der finale Crash-Punkt in Basispunkten, aus der Reveal-Transaktion (29948 bedeutet 2.9948x).

<Tip>
  **Kodierungen**

  Je nach Website zeigen Explorer 32-Byte-Werte als Hex, Base58 oder Byte-Array an. Das Skript unten erwartet **Hex**; wandle die Werte um, falls dein Explorer Base58 anzeigt (jeder Base58-Decoder funktioniert – entscheidend sind die Byte-Werte, nicht die Schreibweise).
</Tip>

## Schritt 4: Prüfe die Reihenfolge

Vergleiche im Explorer den **Slot** (oder die Blockzeit) der Commit-Transaktion und der Block-Hash-Transaktion. Der Commit muss früher liegen. Das ist der Kern des Verfahrens: Das Geheimnis wurde versiegelt, bevor die Entropie, mit der es kombiniert wird, überhaupt existierte.

## Schritt 5: Berechne den Crash-Punkt neu

Führe das hier mit Node.js aus (keine Abhängigkeiten nötig) und trage die drei Hex-Strings aus Schritt 3 ein:

```js theme={null}
const { createHash } = require("node:crypto");
const sha256 = (buf) => createHash("sha256").update(buf).digest();

// ── Aus den On-Chain-Events der Runde eintragen (Hex, je 32 Bytes) ──
const commit = Buffer.from("<commit_hash hex>", "hex"); // aus der Commit-Tx
const blockhash = Buffer.from("<blockhash hex>", "hex"); // aus der Block-Hash-Tx
const secret = Buffer.from("<local_e hex>", "hex"); // aus der Reveal-Tx
const edgeBps = 150n; // Hausvorteil in bps zum Zeitpunkt der Runde; siehe Gebühren und Limits

// 1. Das aufgedeckte Geheimnis muss zum Commit passen
console.log("commitment ok:", sha256(secret).equals(commit));

// 2. Crash-Punkt neu berechnen: dieselbe Ganzzahl-Arithmetik, die das Programm ausführt
const hash = sha256(Buffer.concat([blockhash, secret])); // zuerst blockhash, dann secret
const X = BigInt(hash.readUInt32BE(0)); // erste 4 Bytes, Big-Endian
const TWO32 = 1n << 32n;
const cappedX = X < TWO32 - 1000n ? X : TWO32 - 1000n;
const raw = ((10000n - edgeBps) * TWO32) / (TWO32 - cappedX); // BigInt-Division rundet ab
const crashBps = raw > 10000n ? raw : 10000n;

console.log("crash point:", `${Number(crashBps) / 10000}x`, `(${crashBps} bps)`);
```

Beide Checks müssen bestehen: `commitment ok: true`, und der ausgegebene Crash-Punkt muss dem Multiplikator **Gecrasht bei** der Runde entsprechen (und dem `crash_point_bps` im Reveal-Event). Ist das der Fall, hast du bewiesen – ohne irgendjemandem vertrauen zu müssen –, dass das Ergebnis dieser Runde schon vor ihrem Start feststand und exakt nach der öffentlichen Formel berechnet wurde.

<h2 id="dice-and-mines">
  Dice und Mines
</h2>

Die Sofortspiele werden genauso überprüft, nur mit weniger Transaktionen:

* **Dice**: eine Transaktion pro Wette. Ihr Event `DiceBetSettled` enthält alle Eingaben der Herleitung (`slothash`, `user`, `nonce`) sowie den `roll` und die Auszahlung. Rechne mit der Formel unter [Dice-Fairness](/de/docs/provably-fair/dice) nach.
* **Mines**: zwei Transaktionen pro Spiel. Die Start-Transaktion veröffentlicht den Commit des Spielfelds und den Slot-Hash; die Abrechnungstransaktion deckt den Seed und das vollständige Spielfeld auf. Rechne mit der Formel unter [Mines-Fairness](/de/docs/provably-fair/mines) nach.

## Wenn etwas nicht übereinstimmt

Schließe zuerst die üblichen Verdächtigen aus: ein Base58-Wert, wo Hex erwartet wurde, die falsche Transaktion (jede Runde hat drei) oder ein anderer Hausvorteil als der zum Zeitpunkt der Runde (der Vorteil steht in der On-Chain-Konfiguration, und jede Änderung daran ist selbst eine On-Chain-Transaktion).

Bekommst du trotzdem eine echte Abweichung, dann ist das genau das, was dieses System sichtbar machen soll: Die Daten sind öffentlich und dauerhaft, also kann jeder deinen Check wiederholen. Wende dich mit der Rundennummer an den Support – und beachte: Für eine echte Abweichung beim Commit oder bei der Formel gibt es keine ehrliche Erklärung. Genau deshalb macht das Verfahren sie unmöglich zu verbergen.
