Algorytm Aviator wyjaśniony: provably fair i SHA-512

ER
Emma Rodriguez·Redaktor ds. odpowiedzialnej gry
Zrecenzowane przezJames Mitchell
6 min czytania

Algorytm Aviator wyjaśniony: kompletny przewodnik techniczny

Jedną z najważniejszych cech Aviatora jest jego algorytm provably fair — system kryptograficzny, który pozwala każdemu graczowi niezależnie sprawdzić, że punkt crashu w danej rundzie został wyznaczony uczciwie i nie był manipulowany. Ten przewodnik wyjaśnia, jak to działa, jaka matematyka za tym stoi i jak samodzielnie zweryfikować wyniki.


Czym jest „provably fair”?

W tradycyjnych grach kasynowych musisz wierzyć, że operator nie manipuluje wynikami. Systemy provably fair eliminują ten wymóg zaufania dzięki kryptograficznym funkcjom skrótu, które matematycznie uniemożliwiają zmianę wyniku po jego zatwierdzeniu.

Podstawowa zasada:

  1. Przed rundą serwer zobowiązuje się do wyniku, publikując jego hash
  2. Po rundzie serwer ujawnia przeciwobraz (seed użyty do wygenerowania hasha)
  3. Możesz zweryfikować, czy zatwierdzony hash zgadza się z ujawnionym seedem
  4. Jeśli się zgadza, wynik nie został zmanipulowany

Funkcja skrótu SHA-512

SHA-512 (Secure Hash Algorithm, 512 bitów) to kryptograficzna funkcja skrótu o dwóch cechach kluczowych dla gier provably fair:

Cecha 1: determinizm

Te same dane wejściowe zawsze dają ten sam wynik:

  • Wejście: „hello” → Wyjście: 9b71d224bd62f3785d96d46ad3ea3d73319bfbc2890caadae2dff72519673ca72323c3d99ba5c11d7c7acc6e14b8c5da0c4663475c2e5c3adef46f73bcdec043

Cecha 2: odporność na odwrócenie (pre-image resistance)

Mając wynik funkcji skrótu, nie da się w praktycznych warunkach odtworzyć danych wejściowych. Nawet przy całej mocy obliczeniowej świata znalezienie danych wejściowych dla danego hasha SHA-512 trwałoby dłużej niż wiek wszechświata.

Oznacza to, że jeśli serwer opublikuje hash przed rundą, nie może później zmienić seeda, nie otrzymując całkowicie innego hasha — a ty od razu byś to zauważył.


Dane wejściowe: server seed i trzy client seedy

Punkty crashu w Aviatorze są generowane z czterech danych wejściowych:

Server seed

Losowy ciąg znaków generowany przez serwer przed rundą. Serwer publikuje hash SHA-256 tego seeda, zanim przyjmie zakłady, a sam seed ujawnia po zakończeniu rundy.

Client seedy

Client seedy pierwszych trzech graczy, którzy postawili zakład w danej rundzie, są zbierane i wyświetlane w szczegółach rundy. Ponieważ pochodzą one od niezależnych graczy, operator nie może z góry znać połączonych danych wejściowych.

Łączenie danych wejściowych

Server seed i trzy client seedy są łączone w jeden ciąg i haszowane algorytmem SHA-512. Powstały 128-znakowy ciąg szesnastkowy wyznacza punkt crashu.


Jak oblicza się punkt crashu

Spribe nie publikuje dokładnych obliczeń, które zamieniają hash SHA-512 na mnożnik. Poniższy przykład wykorzystuje otwartą konstrukcję referencyjną spopularyzowaną przez Bustabit (hash rundy HMAC-SHA256 z nonce), aby pokazać, jak hash staje się mnożnikiem o rozkładzie spełniającym P(crash ≥ x) = 0.97/x. Potok SHA-512 w Aviatorze opiera się na tej samej zasadzie: weź początkowe bity hasha, zamień je na mnożnik, uwzględnij przewagę kasyna.

W konstrukcji referencyjnej punkt crashu wyznacza się w sposób deterministyczny:

Krok 1: wygeneruj hash rundy

round_hash = HMAC-SHA256(server_seed, client_seed + ":" + nonce)

Daje to 64-znakowy ciąg szesnastkowy, na przykład:

a7b3c8d2e9f14056789012345678901234567890abcdef1234567890abcdef12

Krok 2: wyodrębnij liczbę z hasha

Weź pierwsze 8 znaków (32 bity) hasha i zamień je z systemu szesnastkowego na dziesiętny:

h = parseInt(hash.substring(0, 8), 16)
// Example: "a7b3c8d2" → 2,813,000,914

Maksymalna możliwa wartość h to 2^32 − 1 = 4,294,967,295.

Krok 3: zastosuj wzór na punkt crashu

crash_point = floor((1 − houseEdge) × 2^32 / (2^32 − h)) / 100

Gdzie houseEdge = 0.03 (3%).

Po uproszczeniu:

crash_point = floor(0.97 × 4,294,967,296 / (4,294,967,296 − h)) / 100

Przypadek szczególny: natychmiastowy crash

Osobny warunek bezpośrednio uwzględnia przewagę kasyna. Jeśli:

h mod 33 === 0

...runda kończy się crashem natychmiast przy 1.00×, niezależnie od wyniku wzoru. Zdarza się to z prawdopodobieństwem 1/33 ≈ 3.03%, co wymusza przewagę kasyna.


Konkretny przykład krok po kroku

Załóżmy, że pierwsze 8 znaków szesnastkowych hasha rundy to 4f2a1b3c:

h = 0x4f2a1b3c = 1,328,284,988
2^32 = 4,294,967,296

Sprawdzenie: czy 1,328,284,988 mod 33 === 0? Nie → przechodzimy do wzoru.

crash_point = floor(0.97 × 4,294,967,296 / (4,294,967,296 − 1,328,284,988)) / 100
= floor(4,166,117,577 / 2,966,682,308) / 100
= floor(1.4043...) / 100
= 140 / 100
= 1.40×

Punkt crashu w tej rundzie wyniósłby 1.40×.


Dlaczego ten wzór daje właściwy rozkład

Wzór P(crash ≥ x) = 0.97 / x wynika matematycznie z tej konstrukcji:

Aby punkt crashu wynosił co najmniej x, wartość h uzyskana z hasha musi spełniać warunek:

0.97 × 2^32 / (2^32 − h) ≥ x
→ 2^32 − h ≤ 0.97 × 2^32 / x
→ h ≥ 2^32 × (1 − 0.97/x)

Prawdopodobieństwo, że jednostajnie losowe h spełnia ten warunek, wynosi:

P(h ≥ 2^32 × (1 − 0.97/x)) = 1 − (1 − 0.97/x) = 0.97/x

Co daje dokładnie P(crash ≥ x) = 0.97/x — wzór na przewagę kasyna jest matematycznie wbudowany w wyznaczanie punktu crashu.


Jak samodzielnie zweryfikować wyniki

Krok 1: zapisz dane rundy

Po dowolnej rundzie zanotuj:

  • hash server seeda (wyświetlany przed rundą)
  • server seed (ujawniony po rundzie)
  • client seedy pierwszych trzech graczy, którzy postawili zakład

Krok 2: sprawdź zobowiązanie hashem

Oblicz SHA-256(server_seed) i potwierdź, że zgadza się z hashem zatwierdzonym przed rundą. Jeśli się zgadza, server seed nie został zmieniony po zatwierdzeniu.

Krok 3: przelicz punkt crashu ponownie

Korzystając z powyższego wzoru, oblicz ponownie punkt crashu na podstawie seedów. Jeśli zgadza się z podanym punktem crashu, runda była uczciwa.

Korzystanie z Provably Fair Checker w AviatorStats

Nasze narzędzie Provably Fair Checker na AviatorStats.com automatyzuje cały ten proces:

  1. Wpisz ujawniony server seed i trzy client seedy widoczne w szczegółach rundy
  2. Narzędzie oblicza połączenie SHA-512, wyodrębnia h, stosuje wzór na crash i wyświetla oczekiwany punkt crashu
  3. Porównaj z wynikiem podanym przez grę — powinny zgadzać się dokładnie

Dzięki temu uzyskujesz kryptograficzną pewność co do uczciwości rundy bez ręcznych obliczeń.


Co provably fair gwarantuje, a czego nie

Gwarantuje:

  • Punkty crashu nie zostały zmienione po zatwierdzeniu
  • Wyniki są matematycznie wyznaczone przez seedy
  • Przewaga kasyna wynosi dokładnie 3%, zgodnie z deklaracją
  • Każdy może niezależnie zweryfikować dowolną rundę z przeszłości

Nie gwarantuje:

  • Że wygrasz jakąkolwiek konkretną rundę
  • Że ciąg wyników jest „sprawiedliwy” wobec pojedynczego gracza
  • Że strategie mogą pokonać wbudowaną przewagę kasyna
  • Że przeszłe wyniki przewidują przyszłe (nie przewidują)

System provably fair to mechanizm przejrzystości, a nie narzędzie do wygrywania. Zapewnia, że gra działa tak, jak się ją reklamuje — co samo w sobie jest cenne, ale nie ma związku z matematyką długoterminowej wartości oczekiwanej.



Skorzystaj z naszych narzędzi analitycznych Aviator

Analizuj dane Aviator za pomocą naszych statystyk na żywo, analizy rozkładu, wykresów trendów i weryfikatora provably fair. Wszystkie narzędzia są bezpłatne i nie wymagają rejestracji.


Powiązane poradniki

Poradniki do gry:

Strategia i analiza:

Ostrzeżenia przed oszustwami:

Poradniki o platformach:

Zastrzeżenie: To wyjaśnienie techniczne ma charakter edukacyjny. Zrozumienie algorytmu nie daje żadnej przewagi w przewidywaniu wyników. Wyniki Aviatora są kryptograficznie nieprzewidywalne przed każdą rundą. Zawsze graj odpowiedzialnie.

ER

Redaktor ds. odpowiedzialnej gry. Tworzy eksperckie treści o grach crash, analizie RTP i odpowiedzialnym hazardzie dla zespołu Aviator Tracker.

Często zadawane pytania

Provably fair oznacza, że punkt crashu każdej rundy jest kryptograficznie zatwierdzony przed jej rozpoczęciem (przez opublikowany hash server seeda). Po rundzie serwer ujawnia oryginalny seed, a ty możesz sprawdzić, czy zgadza się z wcześniej zatwierdzonym hashem. Jeśli się zgadza, wynik nie został zmanipulowany.
W konstrukcji referencyjnej użytej w tym przewodniku: crash_point = floor((1 − 0.03) × 2^32 / (2^32 − h)) / 100, gdzie h to 32-bitowa liczba całkowita wyznaczona z pierwszych 8 znaków szesnastkowych hasha rundy, a h mod 33 = 0 powoduje natychmiastowy crash rundy przy 1.00×. Własna implementacja Spribe haszuje server seed razem z trzema client seedami algorytmem SHA-512 i nie publikuje dokładnych obliczeń.
Nie. Hash server seeda jest publikowany, zanim runda zostanie rozegrana. Zmiana server seeda po zatwierdzeniu dałaby inny hash, który gracze od razu mogliby wykryć. Zobowiązanie kryptograficzne sprawia, że manipulacja po fakcie jest matematycznie niewykonalna.
Przewaga kasyna pojawia się w dwóch miejscach: (1) współczynnik 0.97 we wzorze na crash proporcjonalnie obniża wszystkie punkty crashu oraz (2) gdy h mod 33 = 0 (prawdopodobieństwo ≈ 3.03%), runda kończy się natychmiast przy 1.00×. Razem dają dokładnie P(crash ≥ x) = 0.97/x.
Skorzystaj z Provably Fair Checker w AviatorStats: wpisz server seed (ujawniony po sesji), hash server seeda, client seed i nonce rundy. Narzędzie ponownie oblicza HMAC-SHA256, wyznacza punkt crashu według wzoru i porównuje go z podanym wynikiem. Zgodność potwierdza uczciwość.