Czym jest provably fair i jak to działa?

Skorzystaj z poniższego weryfikatora Provably Fair, aby sprawdzić wyniki i uczciwość Cloudbet Originals.
Above are two provably fair tools: a Game Verification Tool — paste your Server Seed, Client Seed, and Nonce from any round to reconstruct and confirm the outcome — and a Server Seed Verification Tool — verify that a revealed server seed matches the hash Cloudbet published before you played.

Obstawiając zakłady w grach Cloudbet Originals, każdy wynik możesz zweryfikować samodzielnie. Żadnych domysłów, żadnych sztuczek — tylko czysta, dająca się udowodnić losowość, którą możesz sprawdzić sam.

Czym jest „provably fair”?

Provably fair to system stosowany przez kasyna online, który gwarantuje, że każdy wynik gry jest uczciwy i może zostać niezależnie zweryfikowany przez gracza. Zamiast po prostu ufać kasynu, otrzymujesz matematyczny dowód na to, że wyniki nie zostały ustawione ani zmanipulowane podczas rozgrywki.

Przewaga Cloudbet Provably Fair:

  1. Gry Cloudbet Originals działają w oparciu o najnowsze protokoły provably fair, dzięki czemu każdy wynik jest odporny na manipulacje, niezależnie weryfikowalny i matematycznie uczciwy.
  2. Po zakończeniu rundy i ujawnieniu seedów każdy może z matematyczną pewnością zweryfikować, że wynik został wygenerowany uczciwie.
  3. To tak, jakbyś dostawał schemat każdej rundy z góry — bez ukrytych sztuczek i wymówek po zakończeniu gry.

Jak zapewnić provably fair

Bycie provably fair oznacza udowodnienie dwóch rzeczy:

  1. Każda gra ma dostęp do naprawdę losowej, odpornej na manipulacje sekwencji liczb — tę część opisuje właśnie ta strona.
  2. Ta losowa sekwencja w stały i przejrzysty sposób determinuje wynik gry — przy tych samych liczbach zawsze otrzymasz ten sam rezultat. Ta część jest specyficzna dla każdej gry — sprawdź, jak działa to w Mines i pozostałych grach Originals.

Aby zagwarantować prawdziwą losowość, zarówno gracz, jak i Cloudbet biorą udział w generowaniu liczb — dzięki temu żadna ze stron nie może samodzielnie kontrolować wyniku, a Cloudbet musi udowodnić, że nie zmienił swoich danych wejściowych po fakcie.

Kluczowe pojęcia

  1. Bit: podstawowa jednostka informacji cyfrowej — „1” lub „0”. Ciągi bitów reprezentują liczby w systemie binarnym.
  2. Bajt: 8 bitów, reprezentujących do 256 wartości. Nasze seedy wykorzystują liczby 32-bajtowe (256-bitowe).
  3. Seed: wartość wejściowa dla generatora liczb losowych. Ten sam seed zawsze daje ten sam wynik.
  4. Seed serwera: tajny kod Cloudbet — kryptograficznie losowy ciąg 32 bajtów generowany przed rozpoczęciem gry, zablokowany, a następnie ujawniany po jej zakończeniu.
  5. Seed klienta: Twój kod — możesz ustawić go samodzielnie lub pozwolić, aby wygenerowała go Twoja przeglądarka (do 255 znaków).
  6. Nonce: licznik rund, który zwiększa się za każdym razem, gdy grasz z tą samą parą seedów, dzięki czemu każda runda jest unikalna.
  7. Hash / Zobowiązanie: bezpieczny odcisk palca seeda serwera, udostępniany Ci jeszcze przed rozpoczęciem gry. Jest nieodwracalny — nikt nie jest w stanie na jego podstawie odgadnąć seeda, ale gdy seed zostanie ujawniony, samodzielne zahashowanie go powinno dać dokładnie to samo Zobowiązanie.
  8. Sygnatura rundy: seed serwera, seed klienta i nonce połączone i zahashowane razem — to właśnie te dane wejściowe determinują wynik Twojej rundy.
  9. SHA3-256: algorytm hashujący używany do tworzenia Zobowiązań i Sygnatur rundy. Te same dane wejściowe zawsze dają taki sam wynik o stałej długości; proces ten jest nieodwracalny.
  10. SHAKE256: elastyczny algorytm z rodziny SHA-3, który zamienia Sygnaturę rundy w strumień liczb losowych, na podstawie którego budowany jest wynik gry — te same dane wejściowe zawsze dają ten sam wynik, co właśnie umożliwia weryfikację.
  11. Modulo: reszta z dzielenia jednej liczby przez drugą (np. 16 % 5 = 1) — wykorzystywana do przełożenia liczby losowej na jeden z ustalonego zbioru możliwych wyników.
  12. Rotacja seedów: odświeżenie obu seedów w celu uzyskania nowej losowej pary.

Przygotowanie do gry

Przed rozpoczęciem każdej rundy tworzone są dwie wartości: Seed serwera i Seed klienta.

Serwer gry Cloudbet generuje Seed serwera za pomocą kryptograficznej funkcji randomBytes z Node.js — liczby 32-bajtowej (256-bitowej), co w praktyce odpowiada bezpiecznemu cyfrowemu rzutowi monetą powtórzonemu 256 razy. Pozostaje on tajny aż do rotacji pary seedów. Aby udowodnić, że nie zostanie później zmieniony, serwer natychmiast hashuje go (za pomocą SHA3-256) do postaci Zobowiązania, które jest Ci udostępniane jeszcze przed rozpoczęciem gry — dzięki temu, gdy seed zostanie ujawniony, możesz samodzielnie go zahashować i potwierdzić, że wynik nadal się zgadza.

Seed klienta jest domyślnie generowany przez Twoją przeglądarkę, ale możesz też ustawić własny.

Diagram wyjaśniający system weryfikowalnej uczciwości firmy Cloudbet: Server Seed jest haszowany algorytmem SHA3-256, tworząc Commitment wyświetlany przed grą, natomiast Client Seed jest generowany przez przeglądarkę gracza.

W trakcie gry

Twój Seed serwera, Seed klienta i Nonce są łączone i hashowane za pomocą SHA3-256 w jedną Sygnaturę rundy — to trochę jak sytuacja, w której dwie osoby potajemnie dodają swoją połowę imienia, więc żadna z nich nie zna z góry całego wyniku.

Diagram pokazujący, jak system weryfikowalnej uczciwości Cloudbet łączy Server Seed, Client Seed i Nonce, haszując je algorytmem SHA3-256 w jeden Round Signature.

Ta Sygnatura rundy trafia następnie do SHAKE256, który generuje strumień liczb losowych determinujących wynik Twojej gry. Ponieważ SHAKE256 zawsze zwraca ten sam wynik dla tych samych danych wejściowych, każdy, kto zna ujawnione seedy i nonce, może odtworzyć dokładnie Twój wynik — właśnie to umożliwia weryfikację. Przełożenie tego strumienia liczb losowych na konkretny wynik gry (np. gdzie znajdują się miny albo co pokazuje rzut kostką) działa inaczej w każdej grze — sprawdź, jak działa to w Mines i pozostałych grach Originals.

Diagram pokazujący, jak Round Signature trafia do algorytmu SHAKE256, generując strumień losowych liczb stojący za każdym wynikiem gry o weryfikowalnej uczciwości.

Uczciwe wyniki gier opierają się także na próbkowaniu odrzucającym (ang. rejection sampling) — metodzie, która zapewnia, że losowo wygenerowana liczba wybiera spośród wszystkich możliwych wyników z naprawdę równym prawdopodobieństwem, zamiast faworyzować niektóre wyniki z powodu nierównego podziału.

Aby dokładnie zilustrować próbkowanie odrzucające, przygotowaliśmy krótki przykład rzutu 10-ścienną kostką, gdzie — ponieważ mamy 10 możliwych wyników — P wynosi 10.

Rzut 10-ścienną kostką standardowo wykonuje się, losując liczbę „X” i obliczając X modulo 10, ponieważ — podobnie jak rzut kostką — ta operacja ma 10 możliwych wyników. Zrobione w ten sposób, bez wcześniejszego zastosowania próbkowania odrzucającego, niesprawiedliwie faworyzuje jednak niższe wyniki. Załóżmy, że X jest losową liczbą 4-bitową, a więc ma 2⁴=16 możliwych wartości: od 0 do 15. Wówczas wszystkie możliwe wyniki X modulo 10 (X % 10) to:

  1. Jeśli X mieści się między 0 a 9: 0 … 9
  2. Jeśli X mieści się między 10 a 15: 0 … 5

Zostało to zilustrowane poniżej:

Tabela pokazująca, dlaczego systemy o weryfikowalnej uczciwości potrzebują próbkowania odrzucającego (rejection sampling): bez niego wyniki rzutów kością rozkładają się nierówno i są obciążone błędem.

Każdy z wyników rzutu kostką od 0 do 5 może wystąpić przy wygenerowaniu dwóch różnych wartości X, podczas gdy wyniki 6–9 mogą wystąpić tylko przy jednej wartości X. Oznacza to, że wyniki rzutu 0–5 są dwukrotnie bardziej prawdopodobne niż wyniki 6–9, co nie jest sprawiedliwe:

Tabela wskazująca konkretne wyniki rzutów kością, które są nadreprezentowane, gdy generator liczb losowych o weryfikowalnej uczciwości pomija próbkowanie odrzucające.

Dzieje się tak, ponieważ 16 nie dzieli się równo przez 10. Dlatego właśnie w próbkowaniu odrzucającym szukamy największej liczby, która DZIELI się równo przez 10. Przy 4 bitach największą możliwą wartością X jest 15, a największa wielokrotność 10 mieszcząca się w tym zakresie to 10, więc odrzucamy wszystkie wylosowane liczby większe lub równe 10. Oznacza to, że jedynymi możliwymi wartościami X pozostają 0 … 9. Uwaga: jeśli liczba zostanie odrzucona, losowana jest nowa liczba.

Tabela pokazująca, jak próbkowanie odrzucające sprawia, że system weryfikowalnej uczciwości Cloudbet jest nieobciążony, nadając każdemu wynikowi rzutu kością równe prawdopodobieństwo.

Po etapie odrzucania obliczamy X modulo P, aby otrzymać liczbę z zakresu od 0 do P. To właśnie ona określa, który z P możliwych wyników zostanie wybrany.

Jak zweryfikować wyniki swojej gry

  1. Przed rozpoczęciem gry zanotuj Zobowiązanie oraz swój Seed klienta.
  2. Po zakończeniu rundy dokonaj rotacji seedów, aby ujawnić użyty Seed serwera.
  3. Zahashuj ujawniony Seed serwera za pomocą SHA3-256 — wynik powinien zgadzać się z zapisanym wcześniej Zobowiązaniem. Potwierdza to, że seed nie został zmieniony w trakcie gry.
  4. Wklej swój Seed serwera, Seed klienta i Nonce do poniższego kalkulatora weryfikacyjnego — odtworzy on wynik od podstaw.
  5. Porównaj otrzymany wynik z tym, co zobaczyłeś w grze. Zgodność potwierdza, że runda była uczciwa; niezgodność wskazywałaby na manipulację (co w przypadku Cloudbet nie ma miejsca).

Najczęściej zadawane pytania o provably fair

1. Dlaczego seedy są tak długie i wyglądają na tak przypadkowe?

Ponieważ losowość jest sednem uczciwości. Długie ciągi znaków uniemożliwiają zarówno Cloudbet, jak i graczom przewidywanie lub manipulowanie wynikami. Więcej entropii oznacza więcej zaufania.

2. Czy mogę zmienić swój seed klienta?

Tak. Przejdź do ustawień uczciwości w grze i w dowolnym momencie wprowadź własny seed klienta. Możesz go zmieniać tak często, jak chcesz.

3. Co jeśli seed serwera nie zgadza się z pierwotnym hashem?

Oznaczałoby to, że coś jest nie tak. Cały sens hashowania polega na udowodnieniu, że seed został ustalony jeszcze przed rozpoczęciem gry. Niezgodność wskazywałaby na manipulację — ale w przypadku Cloudbet to się nie zdarzy.

4. Czy muszę rozumieć kryptografię, aby z tego skorzystać?

Nie. Narzędzie wykonuje całą trudną pracę za Ciebie. Wystarczy skopiować, wkleić i zweryfikować.

5. Czym dokładnie jest hash?

Można o nim myśleć jak o cyfrowym podpisie. Powstaje poprzez zaszyfrowanie seeda serwera za pomocą algorytmu kryptograficznego. Jeśli ktoś spróbuje później zmienić seed, hash będzie inny — i od razu wykryjesz oszustwo.

6. Czy mogę użyć narzędzi innych firm do weryfikacji wyników?

Tak. System Cloudbet jest kompatybilny z niezależnymi narzędziami weryfikacyjnymi, dzięki czemu możesz sprawdzić wyniki nawet poza naszą platformą.

7. Dlaczego to ważne, skoro gry i tak są przyjemne?

Ponieważ uczciwość nie jest dodatkiem — to wymóg. Obstawiając zakłady w kryptowalutach, zasługujesz na pełną kontrolę i zero domysłów. Provably fair sprawia, że to standard.

Wyjaśnienia provably fair dla poszczególnych gier:

  1. Provably fair Mines
  2. Provably fair Pump
  3. Provably fair Plinko
  4. Provably fair Dice
  5. Provably fair Dice: Golden Ticket
  6. Provably fair Limbo
  7. Provably fair Roulette