SpyDota korzysta z algorytmu Provably Fair, aby każdy gracz mógł sprawdzić uczciwość gry. Wynik skrzyni lub ulepszenia zależy od ustalonego wcześniej seeda serwera, Twojego seeda klienta i numeru gry, więc nie da się go zmanipulować po rozpoczęciu gry.

Seed serwera to tajna wartość, z której liczony jest wynik gry. Aby przeliczyć grę, seed trzeba ujawnić — karta gry zrobi to za Ciebie.
Kliknij swój awatar w nagłówku, otwórz kartę „Historia” i wybierz „Skrzynie” lub „Ulepszenia”.
Przycisk jest na końcu wiersza gry (na telefonie przewiń tabelę w prawo). W otwartej karcie kliknij „Sprawdź” jeszcze raz.
Aby sprawdzić grę, trzeba ujawnić seed serwera. Utworzymy nową parę seedów: obecny seed zostanie ujawniony i od razu wstawiony do sprawdzenia, a numery gier zaczną się od nowa.
Jeśli seed jest jeszcze tajny, karta zaproponuje „Zmień seedy i sprawdź”. Stary seed zostanie ujawniony — potem można sprawdzić wszystkie gry z nim rozegrane. Nowe gry liczą się od 1, rozegrane się nie zmienią. Jeśli seed jest już ujawniony, tego kroku nie będzie.
Przeglądarka przeliczyła grę z ujawnionego seeda, a wynik zgadza się z zapisem serwera.
Otworzy się strona sprawdzenia. „Zgadza się” oznacza, że Twoja przeglądarka przeliczyła grę i otrzymała to samo, co zapisał serwer. Przedmiot oznaczony jako „wypadł” porównaj z wierszem w historii, a przy ulepszeniu — „Wygrana” lub „Przegrana”.
Przycisku „Sprawdź” nie mają gry rozegrane przed uruchomieniem Provably Fair, prezenty i przydziały. Jeśli przedmiot wymieniono, sprawdzenie dotyczy pierwotnego dropu. Widzisz „Nie zgadza się” — zapisz seed serwera i napisz do wsparcia.
Przed grą widzisz hash seeda serwera, więc serwer nie może już niezauważenie podmienić danych wejściowych.
Twój seed i numer gry biorą udział w obliczeniu, więc wyniku nie tworzy sam serwer.
Wpisz dane gry. Obliczenia odbywają się w Twojej przeglądarce, na serwer nic nie jest wysyłane.
Wpisz dane gry i naciśnij „Sprawdź” — tutaj pojawi się wylosowana liczba i przedmiot.
Seed serwera + Twój seed + Numer gry = Uczciwy wynik
Serwer wybiera losowy seed serwera i pokazuje tylko jego hash SHA-256. Później nie można go podmienić: hash przestałby się zgadzać.
Dla każdej gry liczony jest HMAC-SHA256. Kluczem jest seed serwera jako 64-znakowy ciąg hex, dokładnie taki, jaki jest, bez dekodowania na bajty. Wiadomość składa się z rodzaju gry, gry, Twojego seeda klienta i numeru gry.
Pierwsze 8 znaków hex hasha daje liczbę od 0 do 4 294 967 295. Z niej powstaje bilet od 1 do 100 000 000: floor(liczba × 100 000 000 / 2^32) + 1.
W tabeli szans z momentu gry każdy przedmiot ma własny zakres biletów. Wypada przedmiot, w którego zakres trafił bilet.
Próg to floor(szansa × 100 000 000). Ulepszenie wygrywa, jeśli bilet nie jest większy od progu.
Seed serwera jest ujawniany, gdy zmieniasz seedy. Potem każdą grę pary można przeliczyć w przeglądarce na tej stronie albo własnym kodem.
Kluczem jest ciąg hex seeda serwera taki, jaki jest (64 znaki), a nie zdekodowane z niego bajty. Tu najczęściej mylą się przy samodzielnej weryfikacji.