Was passiert on-chain während einer Crash-Runde?
Jede Crash-Runde besteht aus drei On-Chain-Transaktionen, in dieser Reihenfolge:- Commit: Bevor die Wetten öffnen, erzeugt das Backend ein zufälliges 32-Byte-Geheimnis und veröffentlicht dessen SHA-256-Hash on-chain (die Instruktion
start_new_round). Das ist der Commit: Ab diesem Moment kann nur noch genau dieses Geheimnis die Runde abrechnen. Der Commit ist imCrashRoundPrepared-Event der Transaktion öffentlich einsehbar. - Wetten: Die Spieler platzieren ihre Wetten. Das Geheimnis bleibt verborgen; der Commit garantiert, dass es nicht ausgetauscht werden kann.
- Rundenstart / Erfassung der Entropie: Wenn die Runde beginnt (die Instruktion
start_game), liest das Programm den aktuellsten Slot-Hash aus SolanasSlotHashes-Sysvar und speichert ihn in der Runde. Die App nennt diesen Wert den Block-Hash der Runde. Der Crash-Punkt steht jetzt vollständig fest (er ist eine reine Funktion aus dem gespeicherten Slot-Hash und dem festgelegten Geheimnis), aber wer das Geheimnis nicht kennt, kann ihn noch nicht berechnen. Der Wert ist imCrashGameStarted-Event öffentlich einsehbar. - Die Runde läuft: Der Multiplikator steigt, und die Spieler cashen aus.
- Reveal: Das Backend übermittelt das Geheimnis (die Instruktion
crash). Das Programm prüft on-chain, obsha256(secret)dem Commit entspricht (bei Abweichung schlägt die Transaktion fehl), berechnet dann selbst den Crash-Punkt und schließt die Runde ab. DasCrashRoundFinalized-Event veröffentlicht das Geheimnis, den Slot-Hash und den endgültigen Crash-Punkt.
Wie lautet die exakte Formel für den Crash-Punkt?
Der Crash-Punkt wird genau so abgeleitet (das ist die Arithmetik, die das On-Chain-Programm ausführt: Ganzzahlrechnung, keine Überraschungen durch Rundung):- Die Verkettungsreihenfolge ist zuerst blockhash, dann secret.
Xwird Big-Endian aus den ersten 4 Bytes der SHA-256-Ausgabe gelesen.- Divisionen sind abgerundete Ganzzahldivisionen (floor).
- Die Untergrenze
max(10000, …)bedeutet, dass der Multiplikator nie unter 1.00x liegt, und die Begrenzung vonXverhindert astronomisch kleine Nenner.
Rechenbeispiel
MitX = 0xABCD1234 (2,882,343,476) und dem aktuellen Hausvorteil von 1.5% (edge_bps = 150):
Wie die Verteilung aussieht
Die Formel bildet ein gleichverteiltesX auf die klassische Crash-Kurve ab. Die Wahrscheinlichkeit, dass eine Runde mindestens einen Multiplikator m erreicht, beträgt ungefähr:
Was garantiert ist, und was nicht
Vom Programm durchgesetzt:- Sobald der Commit on-chain ist, kann der Betreiber das Geheimnis der Runde nicht mehr ändern: Die Reveal-Transaktion schlägt bei jedem Geheimnis fehl, dessen Hash nicht passt.
- Sobald die Runde gestartet ist (Slot-Hash gespeichert), steht der Crash-Punkt fest. Ob früh, spät oder massenhaft ausgecasht wird, ändert nichts: Das Ergebnis stand fest, bevor der Multiplikator zu steigen begann.
- Der Crash-Punkt wird vom Programm berechnet, nicht vom Backend gemeldet. Ein falscher Wert kann nicht on-chain geschrieben werden.
- Alles, was zur Überprüfung nötig ist (Commit, Slot-Hash, Geheimnis, endgültiger Crash-Punkt), wird dauerhaft in On-Chain-Events veröffentlicht.
- Timing des Starts. Der Betreiber kennt das Geheimnis, bevor die Runde startet, und sein Backend entscheidet, wann die Start-Transaktion übermittelt wird. Da aktuelle Slot-Hashes öffentlich sind, könnte er theoretisch für mögliche Slots den jeweiligen Multiplikator vorab berechnen und den Start so timen, dass er beeinflusst, welcher Slot-Hash erfasst wird. Das Verfahren verhindert das nicht; es macht es beobachtbar: Das Timing der Rundenstarts ist öffentlich, und jede systematische Verzerrung würde sich in der Statistik der veröffentlichten Crash-Punkte zeigen, die jeder in großem Umfang nachrechnen kann.
- Abbrüche. Nach dem Rundenstart kennt der Betreiber das Ergebnis vor den Spielern und könnte eine ungünstige Runde abbrechen, statt das Geheimnis zu enthüllen. Dabei gelten zwei harte Grenzen: Ein Abbruch erstattet jeden Einsatz vollständig (das Programm hat keinen Weg, etwas einzubehalten), und jeder Abbruch erzeugt ein öffentliches Event; die Häufigkeit von Abbrüchen ist das On-Chain-Indiz. Der Abbruch existiert als Wiederherstellungsweg für ein verlorenes Geheimnis (etwa bei einem Backend-Absturz zwischen Commit und Reveal) und soll praktisch nie zum Einsatz kommen.