Strona główna · Jak działa RNG

Jak działa RNG i Provably Fair

Graj, ale odpowiedzialnie!

Czym jest RNG i dlaczego tyle się o nim mówi

RNG (generator liczb losowych) to algorytm produkujący nieprzewidywalne liczby. W Rocket X to RNG określa moment, w którym rakieta się rozbija, i jaki będzie końcowy mnożnik.

Technicznie w komputerach nie ma „prawdziwej” losowości — wszystkie algorytmy są deterministyczne. To, co nazywamy losowym, to w istocie liczby pseudolosowe wyprowadzone z wartości początkowej zwanej ziarnem (seed). Jeśli znasz ziarno i algorytm, wynik staje się w pełni przewidywalny. Dlatego kluczowe pytanie dla kasyna online brzmi: kto generuje ziarno i jak oraz czy da się to kontrolować lub zweryfikować.

Historycznie cała nieufność wobec kasyn online obracała się wokół tego. Jeśli operator w pełni kontroluje ziarno i algorytm, to teoretycznie mógłby dobierać ziarna niekorzystne dla graczy. Udowodnienie lub obalenie tego publicznie było niemożliwe. Provably Fair zostało wymyślone właśnie jako odpowiedź na ten problem.

Przed Provably Fair: klasyczny model „zaufaj audytorowi”

Klasyczne kasyna online działają tak:

  1. Operator uzyskuje licencję od regulatora: Curaçao Gaming Authority, Malta Gaming Authority, UK Gambling Commission, Kahnawake Gaming Commission i podobnych.
  2. Regulator wymaga użycia certyfikowanego RNG.
  3. Certyfikację przeprowadzają niezależne laboratoria: eCOGRA, GLI, iTech Labs, BMM Testlabs.
  4. Laboratorium otrzymuje dużą próbkę wyników i sprawdza je statystycznie — pod kątem jednorodności rozkładu, braku wzorców i zgodności z deklarowanym RTP.
  5. Jeśli wszystko się zgadza, wydawany jest certyfikat, który kasyno pokazuje graczom.

1win Gaming jako deweloper Rocket X również przechodzi tę procedurę w wyspecjalizowanych laboratoriach. Działa średnio, ale ten model ma fundamentalną wadę: gracz nie może zweryfikować konkretnej rundy. Tylko laboratorium, tylko statystycznie, tylko po fakcie.

Jeśli w jednej konkretnej rundzie straciłeś duży zakład i podejrzewasz, że coś jest nie tak, jedyna droga zakwestionowania wiedzie przez obsługę samego kasyna, jego regulatora i ewentualnie sądy. W praktyce prawie nikt tego nie robi. Provably Fair zamyka tę lukę: możesz zweryfikować dowolną rundę teraz, w przeglądarce, bez pomocy audytora czy regulatora.

Provably Fair: trzy składniki

Podejście Provably Fair pojawiło się około 2014 roku w kasynach kryptowalutowych (SatoshiDice, Bustabit i podobne), a później stało się standardem branżowym dla gier crash. Używa trzech kluczowych komponentów, z których każdy jest widoczny dla gracza w specjalnej sekcji ustawień.

Komponent Kto go generuje Kiedy gracz go widzi Do czego służy
server_seed Serwer kasyna Hash SHA-256 przed serią rund; samo ziarno później Podstawa losowości. Dowodzi, że wynik nie został zmanipulowany
client_seed Gracz (lub automatycznie) W dowolnym momencie w ustawieniach Gwarantuje, że kasyno nie dobrało server_seed pod klienta
nonce Serwer, automatycznie Publiczny, rośnie o 1 z każdą rundą Sprawia, że każda runda w serii jest unikalna, przy tym samym server_seed

Idea jest prosta. Przed startem serii rund serwer generuje server_seed (długi losowy ciąg), oblicza jego hash SHA-256 i publikuje tylko hash. Samo ziarno pozostaje tajne do końca serii. Ponieważ SHA-256 jest nieodwracalny, nie da się odzyskać ziarna z hasha — ale jest ono utrwalone.

Gracz może ustawić dowolny client_seed ręcznie (lub przyjąć automatycznie wygenerowany). Po zakończeniu serii rund serwer ujawnia server_seed. Potem gracz może:

  1. Obliczyć SHA-256 ujawnionego server_seed i porównać z wcześniej opublikowanym hashem — to dowodzi, że ziarno nie zmieniło się w trakcie serii.
  2. Samodzielnie przeliczyć mnożnik każdej rundy z server_seed, client_seed i nonce oraz porównać z tym, co faktycznie pokazano.

Jeśli oba warunki są spełnione, runda jest uczciwa.

Jak hash staje się mnożnikiem

Dokładny wzór zamiany hasha na mnożnik krachu różni się między grami crash. 1win Gaming, jak inni dostawcy, nie publikuje precyzyjnego algorytmu Rocket X — to standardowa praktyka, by utrudnić wykorzystanie ewentualnych błędów implementacji. Ale ogólny szablon gatunku gier crash jest publicznie znany i działa niemal tak samo wszędzie.

Podstawowa logika:

  1. Weź HMAC-SHA256(server_seed, client_seed + ":" + nonce) — daje to 64-znakowy ciąg szesnastkowy.
  2. Z jego pierwszej części (zwykle 8 lub 13 znaków szesnastkowych) pobierana jest liczba całkowita.
  3. Liczba ta jest dzielona przez maksymalną możliwą wartość — dając ułamek między 0 a 1.
  4. Ułamek zamieniany jest na mnożnik krachu wzorem postaci (1 / (1 − x)) × (1 − house_edge), który daje rozkład Pareto: większość rund dostaje niskie mnożniki, rzadkie — bardzo wysokie.
  5. Jeśli wynik jest poniżej 1,00, runda liczy się jako natychmiastowy krach (mnożnik 1,00×). Udział takich rund odpowiada przewadze kasyna (około 3%).
Najważniejsze o rozkładzie

Rozkład mnożników nie jest jednorodny, lecz mocno skośny w prawo (rozkład Pareto). To znaczy: większość krachów następuje poniżej 2,00×, mnożniki 10× występują rzadziej niż raz na dziesięć rund, a 100×+ w tysięcznych częściach procenta rund. To nie „nieuczciwość” — to matematyczna konsekwencja wzoru i dokładnie to daje RTP 97%.

Jak samodzielnie zweryfikować rundę

Załóżmy, że rozegrałeś serię rund w Rocket X. Po zakończeniu serii (lub po zmianie client seed) kasyno ujawnia server_seed. Masz teraz:

  • published_hash — hash SHA-256, który widziałeś PRZED serią
  • server_seed — ujawnione przez serwer po serii
  • client_seed — twój client seed
  • nonce — numer konkretnej rundy w serii
  • actual_multiplier — faktyczny mnożnik tej rundy (z historii)

Minimalny skrypt w Pythonie, który sprawdza oba warunki — że hash nie został podmieniony i że mnożnik naprawdę został policzony z ujawnionego ziarna. Zapisz go do pliku verify.py, zamień wartości na własne i uruchom komendą python3 verify.py:

# verify.py — weryfikacja pojedynczej rundy Provably Fair w Rocket X
import hashlib, hmac, math

# 1. Co otrzymaliśmy od kasyna:
published_hash    = "a3f5...e91d"   # SHA-256 server_seed, opublikowany przed serią
server_seed       = "7b2c...43a8"   # ujawnione przez kasyno po serii
client_seed       = "my_random_seed"
nonce             = 42              # numer rundy w serii
actual_multiplier = 2.47            # z historii rund

# 2. Sprawdzenie #1: kasyno nie podmieniło server_seed
recalculated = hashlib.sha256(server_seed.encode()).hexdigest()
assert recalculated == published_hash, "❌ Hash się nie zgadza — kasyno zmieniło ziarno!"
print("✓ Hash się zgadza: server_seed nie został podmieniony")

# 3. Sprawdzenie #2: przelicz mnożnik
message = f"{client_seed}:{nonce}".encode()
key     = server_seed.encode()
h       = hmac.new(key, message, hashlib.sha256).hexdigest()

# Weź pierwsze 13 znaków hex (52 bity), zamień na liczbę
x = int(h[:13], 16)
e = 2 ** 52

# Wzór na mnożnik (typowy dla gier crash)
if x == 0:
    multiplier = 1.00
else:
    multiplier = math.floor((100 * e - x) / (e - x)) / 100

print(f"Przeliczony mnożnik: {multiplier}×")
print(f"Faktyczny mnożnik:   {actual_multiplier}×")

Jeśli oba sprawdzenia assert przejdą, a przeliczony mnożnik zgadza się z faktycznym, runda jest uczciwa. Jeśli coś się nie zgadza, to poważny powód, by nie grać w tym kasynie i opublikować rozbieżność.

Ważne zastrzeżenie co do wzoru

Dokładny wzór zamiany hasha na mnożnik w Rocket X nie jest publicznie udokumentowany. Powyższy skrypt używa standardowego szablonu gier crash i działa dla większości implementacji gatunku. Jeśli hash się zgadza, ale mnożnik nie, nie musi to oznaczać oszustwa: 1win Gaming może mieć własną stałą obcięcia lub własny wzór konwersji.

Czego Provably Fair nie gwarantuje

Provably Fair to potężna ochrona przed jednym konkretnym rodzajem oszustwa: manipulacją wynikiem konkretnej rundy po fakcie. Ale to nie panaceum. Oto czego ten system nie robi.

Nie zmniejsza przewagi kasyna

RTP pozostaje na poziomie 97%; średnio gracz traci 3% każdego zakładu. Provably Fair gwarantuje uczciwość procesu, a nie opłacalność wyniku. Jeśli rozegrasz tysiąc uczciwie wygenerowanych rund z ujemną wartością oczekiwaną, stracisz pieniądze. Zupełnie jak w uczciwej loterii z RTP 50%.

Nie chroni przed dobraniem „złego” server seed

Technicznie przed serią kasyno mogłoby wygenerować tysiąc kandydujących server_seed, spojrzeć na rozkłady mnożników, jakie dają, i wybrać najmniej korzystny dla gracza. Hash będzie z wybranego ziarna — formalnie wszystko jest „uczciwe”, ale kasyno użyło wiedzy z góry. Ten atak nazywa się atakiem selekcyjnym.

Obroną przed nim jest ustawienie własnego client_seed ręcznie. Jeśli client seed ustawia gracz (a nie serwer), kasyno nie wie z góry, jaki będzie wynikowy mnożnik, i nie może go „dobrać”.

Nie zastępuje licencji regulatora

Provably Fair rozwiązuje tylko zadanie matematycznej weryfikacji rundy. Wszystkie inne aspekty (wypłaty, ochrona danych, przeciwdziałanie uzależnieniom, KYC, AML) leżą w gestii regulatorów i licencji. Kasyno może mieć Provably Fair i mimo to odmówić wypłaty wygranej pod wymyślonym pretekstem — to różne rzeczy.

Nie czyni gry „mądrzejszą”

To, że można zweryfikować wynik rundy po jej zakończeniu, w niczym nie pomaga przewidzieć następnej rundy. Przewidywanie wymaga server_seed, który ujawniany jest dopiero po serii. Wszelkie „sygnały”, „prognozy” i „algorytmy” twierdzące, że przewidują rundy Provably Fair, to oszustwo. Więcej o tym w „Prawdzie o sygnałach”.

Najczęstsze pytania o Provably Fair

Licencja regulatora (Curaçao, MGA, UKGC) potwierdza przejrzystość finansową operatora i istnienie umów ze sprawdzonymi dostawcami gier. Ale regulator sprawdza zgodność z zasadami ogólnie, a nie matematykę każdej pojedynczej rundy. Provably Fair to techniczny dodatek, który pozwala każdemu graczowi zweryfikować konkretny wynik bez zaufania do kasyna czy regulatora. Jest to szczególnie cenne dla publiczności sceptycznej wobec branży hazardowej.
Nie, i na tym polega cały sens mechanizmu. Server seed publikowany jest jako hash SHA-256 jeszcze PRZED rozpoczęciem serii rund. Po ujawnieniu prawdziwego ziarna gracz może sam obliczyć jego SHA-256 i porównać z tym opublikowanym wcześniej. Jeśli wartości się zgadzają, ziarno nie zostało zmienione. Jeśli kasyno spróbuje podmienić ziarno, hash się nie zgodzi, a oszustwo będzie oczywiste dla każdego, kto potrafi obliczyć SHA-256.
Nie. Pomyślna weryfikacja oznacza tylko jedno: kasyno nie sfałszowało wyniku tej konkretnej rundy po fakcie. Nie czyni to gry bardziej wygrywalną dla ciebie i nie znosi przewagi kasyna 3%. Na dłuższym dystansie nadal tracisz średnio 3% każdego zakładu — Provably Fair nie zmienia matematyki gry, gwarantuje jedynie uczciwość procesu.
Nie. Server seed dla aktywnej serii rund pozostaje tajny do końca serii. Gracz widzi tylko hash SHA-256 ziarna — a odzyskanie ziarna z hasha jest matematycznie niemożliwe (na tym polega cały sens funkcji skrótu). Bez ziarna wzór na mnożnik nic nie daje. Każda usługa twierdząca, że „odszyfrowuje Provably Fair do prognozy”, to oszustwo.
Klasyczna certyfikacja (eCOGRA, GLI, iTech Labs) to statystyczne sprawdzenie dużej próbki wyników w warunkach laboratoryjnych. Audytor potwierdza, że generator spełnia wymogi regulatora średnio. Ale gracz nie może zweryfikować konkretnej rundy — ufa audytorowi i regulatorowi. Provably Fair usuwa pośredników: każdą rundę można zweryfikować matematycznie wprost w przeglądarce lub prostym skryptem. Oba systemy raczej się uzupełniają, niż zastępują.