Provably Fair

Provably Fair, im Prinzip gar nicht so kompliziert wie man erst denkt, es muss einem nur klar sein, dass „Zufallsgeneratoren“ in der IT quasi nicht existieren – es gibt nur mathematischen Berechnungen, die vortäuschen eine zufällige Zahl zu ermitteln. In Realität muss man beim Programmieren sichergehen, dass dieser Algorithmus mit einem wechselnden Schlüssel (Seed) angesteuert wird – würde man es z.B. vergessen, würde eine Software immer zu dem selben Ergebnis kommen. Damit sowas im Alltag nicht auffällt, nutzen Tools, bei denen das keine große Rolle spielt, für sowas oft die Uhrzeit (in Millisekunden seit 01.01.1970). Bei Stake ist das aber anders – dort wird quasi wie bei einem Handschlag zwischen dir und der Seite ein Seed vereinbart – du steuerst nur den so genannte „Clientseed“ bei – das ist quasi dein Teil vom Seed – Stake wiederrum generiert auf der Serverseite – also so dass du das nicht mitbekommst – ebenfalls einen Seed, den so genannte „Serverseed“. Dazu kommt, dass z.B. Spiele wie Black Jack zusätzlich einen Spielrundenzähler nutzen, sprich die erste Karte ist die 1, die zweite Karte die 2, etc.

Damit man nicht jede Runde einen neuen Clientseed festlegen muss – und weil der Serverseed nur wechselt, wenn man aktiv den Clientseed wechselt, gibt es noch eine „Nonce“, das ist quasi einfach ein Zähler damit man mehrere Runden spielen kann.

Alle diese Infos werden kombiniert und zusammengesetzt an den Zufallsalgorithmus übergeben (eigentlich der „Hash“ dieser Kombination), also z.B. so:

Serverseed+Clientseed+Spielrunde+Nonce

Dadurch kann man im Nachhinein alles problemlos nachrechnen und kontrollieren (und natürlich feststellen, dass alles seine Richtigkeit hatte).

Während man den selben Clientseed spielt, wird einem nur ein „hashed Serverseed“ angezeigt – das ist um nachprüfen zu können, dass der Seed auf der Serverseite der selbe ist, egal ob in der 1. Nonce, oder in der 1 Millionsten Nonce. Da du den eigentlich „unhashed“ Serverseed erst siehst, wenn du den Clientseed wechselst, kannst du nicht vorher wissen, wie die nächste Runde ausgeht.

Was ist ein Hash Verfahren?

Eine Hash Funktion ist eine so genannte Einweg Funktion sowie Kollissionssicher. Aber was bedeutet das? Nun zum einen wenn man einen Text zu einem Hash umwandelt kommt immer der selbe Hash raus, außerdem kann man das nicht wieder umdrehen – sprich aus dem Hash rausbekommen welcher Text dafür zuständig war ist nicht möglich. Die Wahrscheinlichkeit den Zusammenhang zu erraten ist so gering, dass die Zahlen dazu nennen nur für Astronomen „vorstellbar“ sind. Wenn jeder Sandkorn auf der Erde ein Universum wäre, und in jedem Universum es nochmal so viele Sandkörner gäbe – die Chance, zufällig den richtigen Hash zu erraten, wäre immer noch deutlich kleiner. (genau 1 zu 2²⁵⁶ (≈ 1 zu 10⁷⁷)). Ein HMAC-SHA256-Hash ist so sicher, dass kein Mensch und kein Supercomputer in absehbarer Zeit auch nur ansatzweise erraten kann, welche Nachricht oder Schlüssel dahintersteckt – wenn der Schlüssel geheim bleibt.