Provably Fair
Gra Crash
Tak to jest zbudowane u nas — w sposób, który pozwala każdemu samodzielnie sprawdzić i upewnić się, że nic nie jest manipulowane.
Na start wygenerowaliśmy pełny ciąg składający się z 10 milionów hashy SHA256. Wszystko zaczęło się od jednego początkowego sekretu serwera, a potem wielokrotnie przepuszczaliśmy wynik SHA256 z powrotem przez tę samą funkcję, aż uzyskaliśmy 10 milionów iteracji. Następnie gra crash nie wybiera wyników losowo — tylko porusza się po tym łańcuchu hashy w odwrotnej kolejności, krok po kroku, wykorzystując każdą wartość jako dane wejściowe do generowania wyniku każdej rundy.
Najważniejsze jest to, że każdy może to zweryfikować samodzielnie, bez konieczności zaufania nam. Po zakończeniu każdej gry publikujemy hash użyty do wygenerowania wyniku tej rundy. Jeśli weźmiesz ujawniony seed i przepuścisz go przez funkcję SHA256, otrzymasz hash poprzedniej rundy w łańcuchu. Powtarzając ten proces, możesz cofnąć się aż do pierwszej gry w całej historii tego łańcucha.
NIEZALEŻNA WERYFIKACJA WYNIKÓW
Jeśli chcesz samodzielnie sprawdzić dowolny wcześniejszy wynik, możesz to zrobić tutaj: https://stackblitz.com/edit/stackblitz-starters-f4keaqwt?file=index.js
Wystarczy, że wkleisz hash gry, którą chcesz zweryfikować. Możesz uruchomić to lokalnie w Node.js, jeśli potrafisz, ale wiemy, że nie każdy musi znać programowanie czy konfigurację środowiska. Dlatego przygotowaliśmy też wersję przeglądarkową, żeby można było uruchomić ten sam kod bez instalowania czegokolwiek. Działa dokładnie tak samo jak nasz system — tylko w prostszej formie dostępnej dla każdego.
Uwaga: system generatora liczb losowych został zaktualizowany 20 marca 2020.
Dla wszystkich gier przed Game#135147 z dnia 20 marca 2020 należy używać innego skryptu weryfikacyjnego, bo starszy system działał inaczej i wyniki nie będą się zgadzać.
Formuła weryfikacji hashy gry jest pokazana poniżej. Wystarczy podmienić wartość seed na tę, którą chcesz sprawdzić.
Z punktu widzenia bezpieczeństwa nie jest dobrym pomysłem utrzymywanie jednego łańcucha hashy przez 10 milionów gier bez przerwy. Gdyby taki ciąg działał zbyt długo, teoretycznie rośnie ryzyko (choć nadal bardzo małe), że ktoś mógłby odtworzyć pierwotny seed. Dlatego nie trzymamy jednego łańcucha w nieskończoność. Zastrzegamy sobie prawo do okresowej zmiany bazowego seeda, żeby utrzymać długość łańcucha na bezpiecznym poziomie i zminimalizować ryzyko. Jeśli i kiedy taka zmiana nastąpi, publikujemy nowy seed razem z informacją, od której rundy obowiązuje.
Pierwsza publiczna gra (ID: 1) miała hash:
cadaaef371bc977aae209dc9be1a30665550adf89fa40fc17771051914d1f9fc
Publikując ten seed publicznie, uniemożliwiamy sobie możliwość podmiany łańcucha SHA256 lub zmiany jego fragmentów bez wiedzy użytkowników.
W skrócie: wszystkie przyszłe wyniki są już matematycznie ustalone dzięki właściwościom SHA256. Nie możemy ich zmieniać, a wyniki publikujemy kolejno w miarę rozgrywania gier. Każdy gracz może sprawdzić całą historię i zdecydować, kiedy chce wejść do gry, a kiedy z niej zrezygnować. Ponieważ wyniki są już ustalone i nie możemy zmusić nikogo do udziału, system działa jako uczciwa gra losowa typu „provably fair”.
Wszystkie wyniki zależą wyłącznie od tego, w której rundzie gracz bierze udział i kiedy decyduje się wypłacić wygraną. Punkt „crash” dla danej gry jest wyliczany wyłącznie na podstawie hasha i w żaden sposób nie zależy od działań gracza.
Roll Game
Pełną historię gier, w tym seedy i nonce, można znaleźć na stronie Roll Provably Fair.
Poniższy kod JavaScript pozwala niezależnie zweryfikować dowolny roll — wystarczy podać public seed, niezhashowany server seed oraz nonce gry, którą chcesz sprawdzić.
NIEZALEŻNA WERYFIKACJA
Każdy wcześniejszy roll można sprawdzić samodzielnie, korzystając z poniższego kodu. Wystarczy wpisać publiczny seed, oryginalny (niezahashowany) server seed oraz nonce dla danej rundy.
Możesz uruchomić ten skrypt lokalnie w Node.js, jeśli masz taką możliwość, ale jeśli to dla Ciebie zbyt techniczne, udostępniamy też wersję działającą w przeglądarce. Wykonuje ona dokładnie ten sam kod co oryginał, bez potrzeby instalowania czegokolwiek.
Ważna informacja: implementacja generatora liczb losowych została zaktualizowana 19 października 2022.
Dla gier między Nonce 330,106 a Nonce 3,553,944 należy używać zaktualizowanego skryptu weryfikacyjnego.
Dodatkowa uwaga: system RNG został zaktualizowany 9 maja 2020.
Dla gier między Nonce 58,960 a Nonce 330,105 (od 9 maja 2020) obowiązuje inna wersja weryfikacji.
Jeszcze jedna zmiana: 26 lutego 2020 system RNG został ponownie zmieniony.
Dla gier sprzed Nonce 58,960 należy używać starszej wersji skryptu.
Gra Dice
Kliknij tutaj, aby zweryfikować wynik w przeglądarce
Udostępniamy system weryfikacji, który pozwala graczom sprawdzić każdy wynik i upewnić się, że nie był manipulowany. Każda wygenerowana liczba losowa powstaje na podstawie seeda serwera i seeda klienta. Server seed jest tworzony zanim ustawisz swój client seed. Oba te elementy razem uniemożliwiają manipulację z naszej strony i pozwalają później sprawdzić uczciwość wyniku.
Każdy roll ma swój unikalny server seed generowany z wyprzedzeniem. Ten seed jest aktualizowany dopiero wtedy, gdy zdecydujesz się zmienić swój client seed. Wcześniej publikujemy jego zahashowaną wersję w SHA256, żeby była widoczna publicznie.
Dzięki temu hashowaniu nie widzisz oryginalnego server seeda od razu, ale możesz go później sprawdzić, gdy zostanie ujawniony. Po zmianie client seeda publikujemy oryginalny, niezahashowany server seed, dzięki czemu możesz go zweryfikować. Wystarczy przepuścić go przez SHA256 i sprawdzić, że zgadza się z wcześniej opublikowanym hashem — to dowód, że nic nie zostało zmienione w trakcie gry.
Użytkownik może swobodnie zmieniać client seed przed każdym rollem. Ponieważ wpływa on na wynik, daje to pełną kontrolę po stronie gracza i uniemożliwia nam wymuszanie wyników.
Jednocześnie, mimo że system jest deterministyczny (czyli te same dane wejściowe zawsze dają ten sam wynik), zabezpieczamy go przed nadużyciami za pomocą tzw. nonce. Każdy roll wykonany na tym samym server seed i client seed dostaje kolejny numer nonce, zaczynając od 0 i zwiększając się o 1 przy każdej kolejnej rundzie.
Nonce jest automatycznie inkrementowany i nie da się go kontrolować ręcznie — wynika z naturalnej kolejności gry.
Dodatkowo każdy roll ma też licznik iteracji. Zaczyna się od 0 i służy jako zabezpieczenie na wypadek, gdyby wygenerowana wartość wyszła poza dopuszczalne zakresy albo skończyła się pula dostępnych wyników w hashach. W takim przypadku generujemy nowy hash z tym samym seedem, ale zwiększamy wartość iteracji o 1. Działa to bardzo podobnie do nonce i również nie jest sterowane przez żadną ze stron.
Do wygenerowania wyniku używamy funkcji SHA512, która tworzy hash w formacie heksadecymalnym. Z tego hasha bierzemy pierwsze 5 znaków i zamieniamy je na liczbę całkowitą. Jeśli wynik przekracza 10 000, przechodzimy do kolejnych 5 znaków i powtarzamy proces.
Następnie stosujemy modulo 10 000, co daje zakres od 0 do 9999. Na końcu dzielimy przez 100, aby wynik był wyświetlany jako liczba dziesiętna od 0 do 99.99.
Każdy wynik można sprawdzić dokładnie tą samą metodą, gdy tylko ujawnimy server seed z poprzednich rund. Po publikacji niezahashowanych seedów można je zweryfikować przez SHA256 i potwierdzić, że odpowiadają wcześniej opublikowanym hashom, co daje pełną możliwość sprawdzenia uczciwości każdego pojedynczego losowania.
NIEZALEŻNA WERYFIKACJA
Kliknij tutaj, aby przejść do skryptu niezależnej weryfikacji
Jeśli chcesz samodzielnie sprawdzić dowolny wcześniejszy wynik, możesz to zrobić przy użyciu kodu pokazanego poniżej. Wystarczy, że wpiszesz trzy wartości: client seed, oryginalny server seed (przed hashowaniem) oraz nonce przypisany do konkretnej rundy, którą chcesz zweryfikować. Możesz uruchomić ten kod lokalnie w Node.js, jeśli masz takie środowisko, ale rozumiemy, że nie każdy chce lub potrafi go instalować i konfigurować. Dlatego przygotowaliśmy również wersję działającą bezpośrednio w przeglądarce, dzięki czemu cały proces jest dużo prostszy i nie wymaga żadnych dodatkowych narzędzi. Wystarczy wpisać trzy dane wejściowe — client seed, server seed i nonce — a następnie kliknąć Execute, aby uruchomić weryfikację.
Ważna informacja: algorytm Generatora Liczb Losowych został zaktualizowany 19 października 2022.
Dla wszystkich gier rozegranych przed ID #170,387,106 z dnia 2022-10-19 08:18:07.738+00 należy używać starszego skryptu weryfikacyjnego, ponieważ wyniki z nowego systemu nie będą zgodne z wcześniejszymi rundami.
Case Opening
W Case Opening każdy wynik jest generowany w oparciu o system Provably Fair. Rezultat każdej otwartej skrzynki powstaje z połączenia trzech elementów: server seed, client seed oraz nonce. Taki model sprawia, że wyniki nie mogą być w żaden sposób zmieniane ani manipulowane po ich wygenerowaniu. Server seed jest tworzony z wyprzedzeniem, a przed rozpoczęciem jakiejkolwiek gry jest on hashowany przy użyciu funkcji SHA256, dzięki czemu można go publicznie udostępnić bez ujawniania jego rzeczywistej wartości. Po zakończeniu gry ujawniany jest oryginalny, niezhashowany server seed. Dzięki temu każdy użytkownik może porównać go z wcześniej opublikowanym hashem i sprawdzić, że nie został on zmieniony.
Każde otwarcie używa również nonce, czyli kolejno rosnącego numeru, który zwiększa się o 1 po każdym losowaniu. Dzięki temu nawet przy użyciu tych samych seedów nie dochodzi do powtarzania wyników.
NIEZALEŻNA WERYFIKACJA
Aby zweryfikować dowolny wcześniejszy wynik Case Opening, należy wpisać client seed, server seed oraz nonce do poniższego skryptu. Można go uruchomić w Node.js lub bezpośrednio w przeglądarce za pomocą udostępnionego narzędzia.
https://stackblitz.com/edit/stackblitz-starters-dgzeunmu?file=index.js
System ten zapewnia pełną przejrzystość, dzięki czemu każdy wynik można sprawdzić niezależnie. Porównując ujawnione, niezhashowane server seedy z wcześniej opublikowanymi hashami, można potwierdzić, że gra działa w sposób w pełni uczciwy.
Plinko
Nasza gra Plinko również opiera się na mechanizmie Provably Fair. Wynik każdej rundy jest generowany na podstawie kombinacji server seed, client seed oraz nonce, co gwarantuje brak możliwości manipulacji wynikami. Server seed jest generowany przed rozpoczęciem gry, a gracz może samodzielnie ustawić swój client seed. Połączenie tych dwóch wartości tworzy wynik, który można później zweryfikować za pomocą metod kryptograficznych.
Przed rozpoczęciem gry server seed jest hashowany funkcją SHA256 i publikowany w tej zahashowanej formie. Po zakończeniu rundy ujawniany jest jego oryginalny, niezhashowany odpowiednik. Dzięki temu można porównać oba wyniki i potwierdzić, że seed nie został zmieniony w trakcie gry.
Każda runda korzysta również z nonce, czyli unikalnego licznika zaczynającego się od 0 i zwiększanego o 1 przy każdym kolejnym losowaniu. Zapobiega to powtarzaniu wyników nawet wtedy, gdy używane są te same seedy. Nonce jest aktualizowany automatycznie, co zapewnia niezależność każdej rundy.
NIEZALEŻNA WERYFIKACJA
Możesz zweryfikować wynik każdej rundy Plinko, korzystając z poniższego skryptu. Wystarczy podać server seed, client seed oraz nonce z wybranej rundy. Jeśli nie korzystasz z Node.js, możesz użyć wersji przeglądarkowej, która działa identycznie.
https://stackblitz.com/edit/stackblitz-starters-dzfbetbs?file=index.js
Ten system pozwala każdemu użytkownikowi sprawdzić, że każda runda Plinko jest w pełni Provably Fair. Można wracać do wcześniejszych wyników i porównywać opublikowane server seedy, aby upewnić się, że wszystko pozostało niezmienione.
Quick Upgrade Game
Kliknij tutaj, aby zweryfikować wynik w przeglądarce
Udostępniamy system weryfikacji, który pozwala użytkownikom sprawdzać uczciwość każdej ulepszonej przedmiotu i potwierdzać, że wyniki nie zostały zmanipulowane. Każdy wynik jest generowany na podstawie losowej liczby, która powstaje z kombinacji server seed i client seed. Server seed jest tworzony po naszej stronie jeszcze przed ustawieniem client seeda przez gracza. Połączenie tych dwóch wartości uniemożliwia manipulację wynikiem i pozwala później zweryfikować jego poprawność.
Każda runda posiada unikalny server seed generowany z wyprzedzeniem. Seed ten pozostaje ukryty do momentu, w którym użytkownik zdecyduje się zmienić swój client seed. Wcześniej publikujemy jego hash SHA256, aby był widoczny publicznie. Dzięki temu oryginalna wartość seed pozostaje niewidoczna, ale jednocześnie możliwa do późniejszej weryfikacji.
Po zmianie client seeda publikujemy oryginalny, niezhashowany server seed. Wtedy można go sprawdzić, używając SHA256 i porównując z wcześniej opublikowanym hashem. To potwierdza, że seed nie został zmieniony w trakcie gry. Użytkownicy mogą swobodnie zmieniać client seed przed każdą rundą, co daje im kontrolę nad częścią procesu losowości.
Ponieważ client seed wpływa na wynik, możliwość jego dowolnej zmiany sprawia, że nie da się manipulować wynikami od naszej strony. Jednocześnie system jest deterministyczny, co oznacza, że ta sama kombinacja server seeda i client seeda zawsze da ten sam wynik. Aby zapobiec nadużyciom, stosujemy mechanizm nonce. Każda runda używająca tej samej pary seedów otrzymuje kolejny numer nonce, zaczynając od 0 i zwiększając go o 1 przy każdym losowaniu, co zapewnia unikalność wyników.
Nonce jest generowany automatycznie na podstawie kolejności i nie może być modyfikowany przez żadną ze stron.
Dodatkowo każdy wynik posiada licznik iteracji zaczynający się od 0. Służy on jako zabezpieczenie w sytuacji, gdy wygenerowana wartość wyjdzie poza dopuszczalny zakres lub gdy wyczerpią się możliwe wartości w hashach. W takim przypadku generowany jest nowy hash przy użyciu tych samych seedów, ale z zwiększoną wartością iteracji. Działa to podobnie do nonce i również jest całkowicie poza kontrolą użytkowników.
Do wygenerowania wyniku używana jest funkcja SHA512, która tworzy hash w formacie heksadecymalnym. Z tego hasha pobierane jest pierwsze 5 znaków, które są zamieniane na liczbę. Jeśli wartość przekracza 10 000, przechodzimy do kolejnych 5 znaków i powtarzamy proces.
Następnie stosowane jest modulo 10 000, co daje zakres od 0 do 9999. To właśnie ta wartość stanowi podstawę wyniku końcowego.
Każdy wynik można zweryfikować tą samą metodą po ujawnieniu server seeda z poprzednich rund. Po publikacji niezhashowanego seeda można go sprawdzić przez SHA256 i porównać z wcześniej opublikowaną wersją hash, co pozwala każdemu użytkownikowi niezależnie potwierdzić uczciwość wszystkich wyników.
NIEZALEŻNA WERYFIKACJA
Kliknij tutaj, aby otworzyć skrypt niezależnej weryfikacji
Jeśli chcesz samodzielnie sprawdzić dowolny wcześniejszy wynik, możesz to zrobić przy użyciu kodu podanego poniżej. Wystarczy wpisać trzy wartości: client seed, server seed w oryginalnej, niezhashowanej formie oraz nonce przypisany do konkretnego losowania. Kod można uruchomić lokalnie w Node.js, jeśli ktoś korzysta z takiego środowiska, ale rozumiemy, że nie każdy chce lub potrafi instalować dodatkowe narzędzia czy pracować w środowisku programistycznym. Dlatego udostępniamy również wersję działającą bezpośrednio w przeglądarce, która wykonuje dokładnie ten sam algorytm bez potrzeby żadnej instalacji. Wystarczy wpisać trzy dane wejściowe — client seed, server seed i nonce — a następnie kliknąć Execute, aby uruchomić weryfikację.
Ważna informacja: algorytm Generatora Liczb Losowych został zaktualizowany 19 października 2022.
Dla wszystkich gier rozegranych przed PvP Round ID #201,649,576 należy używać wcześniejszej wersji skryptu weryfikacyjnego, ponieważ wyniki wygenerowane w nowym systemie nie będą zgodne ze starszymi rundami.
PvP – Case Battles
Zweryfikuj grę
PvP Case Battles działają w oparciu o system provably fair, w którym nikt nie zna wyniku przed rozpoczęciem rozgrywki — nawet system. Kluczową zasadą jest to, że publiczny seed nie jest znany aż do momentu, gdy wszyscy gracze zatwierdzą swoje akcje i gra faktycznie się rozpocznie. Ponieważ część danych używanych do generowania wyniku pozostaje nieznana do czasu rozpoczęcia rozgrywki, nie ma możliwości wcześniejszego przewidzenia ani zmanipulowania wyniku.
Udostępniamy również pełny system weryfikacji, który pozwala każdemu użytkownikowi sprawdzić uczciwość wszystkich wyników. Każdy rezultat jest generowany na podstawie struktury składającej się z pary seedów oraz nonce. Para seedów składa się z publicznego seeda i server seeda, a całość jest dodatkowo modyfikowana unikalnym nonce oraz trybem gry, co razem tworzy końcowy wynik.
NONCE
W Case Battles nonce opiera się na PvP play ID, czyli unikalnym, rosnącym numerze przypisanym do każdej akcji PvP na platformie. Każda skrzynka lub box w bitwie jest traktowana jako osobna akcja, a wszystkie działania wszystkich graczy są zatwierdzane przed rozpoczęciem bitwy. Oznacza to, że każdy gracz ma swój własny zestaw akcji, a każda z nich ma przypisany własny PvP play ID, który pełni funkcję nonce dla tej rundy.
Wszystkie wartości nonce są ustalane i publikowane zanim zostanie wygenerowany EOS hash (publiczny seed). Można je zobaczyć w oknie Provably Fair na stronie PvP Duel jeszcze przed rozpoczęciem bitwy, co oznacza, że są one zatwierdzone z wyprzedzeniem i nie mogą zostać później zmienione.
Dodatkowo nonce jest łączony z “trybem gry” jako dodatkowe zabezpieczenie. Dzięki temu różne tryby gry — takie jak Case Battles i Unboxing — nigdy nie używają identycznych konfiguracji seedów, co eliminuje ryzyko potencjalnych nadużyć.
PUBLICZNY SEED (EOS HASH)
Publiczny seed, znany również jako EOS hash, jest ujawniany dopiero wtedy, gdy wszyscy gracze w bitwie zatwierdzą swoje działania. Proces ten polega na odwołaniu się do bloku sieci EOS, który w momencie zatwierdzania nie został jeszcze wykopany, ale zostanie wykopany w niedalekiej przyszłości. Następnie używany jest hash tego przyszłego bloku jako publiczny seed.
Dzięki temu rozwiązaniu nikt — w tym my — nie ma możliwości wcześniejszego poznania ani przewidzenia wartości seeda, ponieważ blok jeszcze nie istnieje w momencie zatwierdzania. To sprawia, że nie da się zaplanować ani zmanipulować wyników przed rozpoczęciem gry.
SERVER SEED
Server seed to losowy ciąg znaków generowany indywidualnie dla każdego gracza w momencie dołączenia do PvP Case Battle. W chwili wejścia do gry system natychmiast tworzy server seed i publikuje jego hash SHA256. Dzięki temu seed jest zatwierdzony, ale jego rzeczywista wartość pozostaje ukryta.
Po zakończeniu wszystkich rund ujawniana jest oryginalna, niezhashowana wersja server seeda. W tym momencie gracze mogą porównać ją z wcześniej opublikowanym hashem SHA256, aby upewnić się, że nie doszło do żadnych zmian ani manipulacji. Można to sprawdzić ręcznie w JavaScript lub za pomocą narzędzi online, takich jak https://xorbin.com/tools/sha256-hash-calculator, porównując wynik hashowania z wcześniejszą wartością.
NIEZALEŻNA WERYFIKACJA
Każdy wynik w PvP Battle można niezależnie sprawdzić, używając tego samego algorytmu, który został wykorzystany do jego wygenerowania. Udostępniamy prosty narzędziowy system w przeglądarce, dzięki któremu można uruchomić dokładnie tę samą logikę bez konieczności instalowania Node.js czy konfigurowania środowiska.
Wystarczy podać trzy elementy: EOS hash (publiczny seed), server seedy oraz nonce. Wszystkie te dane można znaleźć w oknie Provably Fair dostępnym na stronie PvP Duel, gdzie można je łatwo skopiować przed lub po meczu.
Ważna informacja: algorytm Generatora Liczb Losowych został zaktualizowany 19 października 2022. Dla wszystkich gier rozegranych przed PvP Round ID #201,649,576 należy używać poprzedniej wersji weryfikacji.
Dodatkowa ważna informacja: system RNG został również zaktualizowany 28 września 2021 o godzinie 22:57 UTC. Dla wszystkich gier rozegranych przed PvP Round ID #15829596 należy używać starszej metody weryfikacji.
Jeśli masz dodatkowe pytania dotyczące systemu provably fair, możesz skontaktować się z obsługą klienta, aby uzyskać więcej informacji i wyjaśnień.
PvP – Coin Flip
Kliknij tutaj, aby zweryfikować wynik
PvP Coin Flip również działa w systemie provably fair, w którym publiczny seed nie jest znany nikomu aż do momentu, gdy gracze zatwierdzą swoje decyzje i gra się rozpocznie. Dzięki temu nikt nie może znać wyniku wcześniej — nawet system — ponieważ część danych potrzebnych do obliczenia wyniku pozostaje nieznana do czasu rozpoczęcia gry.
Udostępniamy również system weryfikacji, który pozwala sprawdzić każdą grę i potwierdzić, że wyniki nie były manipulowane. Każdy rezultat jest generowany na podstawie struktury składającej się z pary seedów oraz nonce. Para seedów obejmuje publiczny seed i server seed, a następnie całość jest przetwarzana wraz z unikalnym nonce w celu uzyskania końcowego wyniku.
NONCE
W grach Coin Flip nonce to po prostu numeryczne ID rundy PvP. Jest to rosnący, sekwencyjny licznik, który zwiększa się o 1 przy każdej nowej rundzie PvP rozgrywanej na platformie, niezależnie od tego, kto ją uruchamia. Te wartości nonce są już wcześniej ustalane i publikowane jeszcze zanim poznamy EOS Hash (czyli publiczny seed). Można je zobaczyć w oknie Provably Fair na stronie PvP Duel i są dostępne jeszcze przed rozpoczęciem rundy lub wygenerowaniem publicznego seeda.
PUBLICZNY SEED (EOS HASH)
Publiczny seed, znany jako EOS Hash, jest ujawniany dopiero wtedy, gdy wszyscy gracze w rundzie zatwierdzą swoje działania. Robimy to poprzez zobowiązanie się do konkretnego bloku EOS, który w momencie zapisu nie został jeszcze wydobyty, ale zostanie wydobyty w niedalekiej przyszłości. Następnie używamy hasha tego przyszłego bloku jako publicznego seeda. Dzięki temu mamy pewność, że nikt nie mógł znać jego wartości wcześniej, co uniemożliwia przewidywanie lub manipulowanie wynikiem przed rozpoczęciem gry.
SERVER SEED
Na początku każdej rundy PvP generowany jest losowy server seed. Każdy gracz otrzymuje swój własny seed w momencie dołączenia do rundy, a jego hash SHA256 jest natychmiast publikowany. Po zakończeniu rundy ujawniamy oryginalny, niezhashowany server seed. Każdy może wtedy sprawdzić, czy nie doszło do żadnych zmian, porównując wcześniej opublikowany hash z ujawnioną wartością. Można to zweryfikować w JavaScript poprzez ponowne hashowanie ujawnionego seeda lub korzystając z narzędzi online, takich jak https://xorbin.com/tools/sha256-hash-calculator
NIEZALEŻNA WERYFIKACJA
Każdy wynik gry można niezależnie zweryfikować przy użyciu tego samego algorytmu, który generuje wyniki. Udostępniliśmy również wersję przeglądarkową, dzięki której można przeprowadzić weryfikację bez instalowania Node.js czy konfigurowania środowiska.
Wystarczy podać trzy główne elementy: EOS Hash (publiczny seed), server seed oraz nonce, a także dane „selections” w formacie JSON i ID użytkownika. Wszystkie te informacje można skopiować z okna Provably Fair dostępnego na stronie PvP Duel.
Ważna informacja: algorytm Generatora Liczb Losowych został zaktualizowany 19 października 2022. Dla wszystkich gier rozegranych przed PvP Play ID #201,649,313 należy używać wcześniejszej wersji weryfikacji.
Jeśli masz dodatkowe pytania dotyczące systemu provably fair, możesz skontaktować się z supportem w celu uzyskania pomocy i wyjaśnień.
PvP – Dice Duel
PvP Dice Duel działa w systemie provably fair, w którym publiczny seed nie jest znany nikomu aż do momentu, gdy gracze zatwierdzą swoje akcje i gra faktycznie się rozpocznie. Dzięki temu nikt nie może znać wyniku z wyprzedzeniem — nawet system — ponieważ część danych potrzebnych do wygenerowania wyniku pozostaje nieznana do czasu rozpoczęcia rozgrywki.
Udostępniamy narzędzia weryfikacyjne, które pozwalają każdemu użytkownikowi sprawdzić, czy wyniki nie były manipulowane. Każdy wynik jest obliczany na podstawie struktury składającej się z trzech elementów: pary seedów oraz nonce. Para seedów to publiczny seed i server seed, a następnie całość jest łączona z unikalnym nonce w celu wygenerowania końcowego wyniku.
W przypadku Dice Duel każdy gracz ma własną osobną konfigurację trzech elementów. Publiczny seed (EOS Hash) jest wspólny dla wszystkich uczestników rundy, natomiast każdy gracz ma własny server seed oraz nonce przypisany do jego udziału, co zapewnia unikalność wyników dla każdego uczestnika.
NONCE
W Dice Duel nonce również opiera się na PvP play ID, czyli unikalnym, rosnącym numerze przypisywanym każdej akcji PvP na platformie. Każdy gracz w rundzie ma swój własny nonce powiązany z jego PvP play ID. Te wartości nonce są publikowane i zatwierdzane jeszcze przed wygenerowaniem EOS Hash (publicznego seeda). Można je zobaczyć w oknie Provably Fair na stronie PvP Duel jeszcze przed rozpoczęciem gry lub wygenerowaniem publicznego seeda.
Ponieważ w Dice Duel może dojść do remisu (gdy kilku graczy uzyska ten sam wynik), stosujemy mechanizm powtórnego losowania. W takim przypadku uczestnicy remisu zachowują te same seedy, ale ich nonce są zwiększane o 1 i wykonywane jest nowe losowanie aż do wyłonienia zwycięzcy.
Na przykład, jeśli gracz A ma nonce 100, a gracz B ma nonce 200 i dochodzi do remisu, to w kolejnym losowaniu ich nonce wyniosą odpowiednio 101 i 201, przy niezmienionych seedach.
PUBLICZNY SEED (EOS HASH)
Publiczny seed jest ujawniany dopiero po tym, jak wszyscy gracze zatwierdzą swoje działania w rundzie. Generujemy go poprzez odniesienie do bloku EOS, który w momencie zatwierdzania nie został jeszcze wydobyty, ale zostanie wydobyty w przyszłości. Gdy blok zostanie wydobyty, używamy jego hasha jako publicznego seeda. Dzięki temu nikt nie może znać tej wartości wcześniej ani jej przewidzieć.
SERVER SEED
Na początku każdej rundy Dice Duel generowany jest unikalny server seed dla każdego gracza. W momencie dołączenia do gry seed jest tworzony i jego hash SHA256 jest natychmiast publikowany. Po zakończeniu rundy ujawniany jest oryginalny, niezhashowany server seed dla każdego gracza.
Każdy może wtedy sprawdzić, czy seed nie został zmieniony, porównując ujawnioną wartość z wcześniej opublikowanym hashem SHA256. Można to zrobić ręcznie w JavaScript lub użyć narzędzi online, takich jak https://xorbin.com/tools/sha256-hash-calculator
NIEZALEŻNA WERYFIKACJA
Każdy wynik gry można sprawdzić niezależnie przy użyciu tego samego algorytmu, który został wykorzystany do jego wygenerowania. Udostępniliśmy wersję przeglądarkową, dzięki której można przeprowadzić weryfikację bez instalowania Node.js lub konfiguracji środowiska.
Wystarczy wprowadzić trzy elementy: EOS Hash, server seed oraz nonce. Wszystkie te dane można skopiować z okna Provably Fair w interfejsie PvP Duel.
Ważna informacja: algorytm Generatora Liczb Losowych został zaktualizowany 19 października 2022. Dla wszystkich gier rozegranych przed PvP Play ID #201,649,533 należy używać poprzedniej wersji weryfikacji.
Jeśli masz pytania dotyczące systemu provably fair, możesz skontaktować się z supportem w celu uzyskania dodatkowych informacji.