Przejdź do głównej zawartości

Provably Fair – schematy zobowiązań

Czym jest schemat zobowiązania:

Schemat zobowiązania to funkcja, która umożliwia graczowi i platformie bezpieczne zobowiązanie się do wybranej tajnej wartości, przy jednoczesnym ukryciu jej przed innymi.

Wartości te można później ujawnić, aby strony trzecie mogły sprawdzić, czy zobowiązanie odpowiada ujawnionej wartości. Schemat zobowiązania zapewnia możliwość weryfikacji kasyna.

Schemat zobowiązania składa się z dwóch faz: Commit i Reveal.

Faza Commit:

Celem fazy Commit jest zobowiązanie/zablokowanie określonych wartości utworzonych przez gracza i operatora w celu wygenerowania wyników gry.

W uproszczeniu wartości 3 są zatwierdzane i wykorzystywane do wygenerowania wyniku gry. Po zatwierdzeniu wartości nie można ich zmienić aż do fazy Reveal. Podczas zatwierdzania stosowane jest haszowanie, aby zapobiec manipulacjom.

  1. Aktywny Client Seed

  2. Aktywny Server Seed (niezahaszowany)

  3. Nonce

Output = Commit(Active_Client_Seed, Active_Server_Seed, Nonce)

Aktywny Client Seed: nie jest zahaszowany i jest wartością określoną przez gracza.

Aktywny Server Seed (niezahaszowany): jest utrzymywany w tajemnicy i tworzony przez serwer. Ta tajna wartość jest haszowana. Operatorowi i graczowi wyświetlana jest wyłącznie zahaszowana wartość.

Nonce jest początkowo ustawiony na 0, ponieważ nie rozegrano żadnej gry. Będzie zwiększany przy każdej rozgrywce.

Połączenie tych 3 zmiennych zapewnia, że wynik zatwierdzenia jest zawsze inny

Faza Reveal:

W fazie Reveal celem jest ujawnienie niezahaszowanego server seed. Gdy niezahaszowane seedy i nonce są znane, użytkownik może zweryfikować swój wynik.

Jeśli gracz chce zweryfikować swoje wyniki, musi najpierw zmienić parę server seed i client seed.

Po wykonaniu tej czynności platforma odhaszuje i wyświetli wcześniej aktywny server seed. Gracze, operator oraz każda strona trzecia będą wtedy znać wszystkie 3 informacje: client seed, server seed i nonce.

Po wprowadzeniu znanych wartości Client Seed, Server Seed i Nonce dla danej rundy zawsze będziemy mogli udowodnić wyniki/rezultat danej gry i rundy.

Server Seed

Server seed jest generowany przez system jako losowy, 64-znakowy ciąg szesnastkowy. Ten seed przechodzi proces haszowania SHA-256. Wyświetlana jest zahaszowana wartość. Haszowanie służy dwóm celom:

  1. Zapobieganie oszustwom: z obliczeniowego punktu widzenia niemożliwe jest uzyskanie przez użytkownika oryginalnego, niezahaszowanego server seed na podstawie hasza (odporność na znalezienie pierwszego obrazu), co zapobiega oszustwom ze strony graczy.

  2. Zapobieganie manipulacjom: ze względu na odporność SHA-256 na kolizje, z obliczeniowego punktu widzenia niemożliwe jest znalezienie dwóch takich samych niezahaszowanych danych wejściowych dających taki sam zahaszowany wynik, co zapobiega oszustwom operatora wobec gracza.

Dopiero po zakończeniu gry i zmianie client seed przez użytkownika kasyno odhaszuje server seed w celu weryfikacji.

Client Seed

Client seed należy do Ciebie, gracza, aby zapewnić Ci wpływ na losowość wyniku każdej gry.

Początkowo client seed jest losowo generowany przez Twoją przeglądarkę, jednak zachęcamy do zmiany client seed na wybraną przez Ciebie wartość. Dzięki temu jako gracz masz wpływ na wynik gry.

Nonce

W kryptografii Nonce oznacza „number once”. Jest to liczba, której wartość wzrasta za każdym razem, gdy zawierany jest nowy zakład przy użyciu tego samego zestawu server seed i client seed.

Zapewnia to, że kombinacja server seed, client seed i nonce jest inna w każdej grze, a wynik schematu zobowiązania jest różny.

Dowiedz się więcej o sposobie implementacji tych wartości w kodzie.

Czy to odpowiedziało na twoje pytanie?