Kryptofelieton #3 „Gry na Blockchain … ale nie do końca”

Parę dni temu na łamach magazynu Bitcoinpl.org pojawił się artykuł, który przykuł moją uwagę – był to wywiad między redaktorem owego magazynu, a właścicielem portalu mmorpg.org.pl i dotyczył rozmów na temat tego czy “Blockchain odmieni przyszłość gier?”.

Zagadnienie ogólnie jest interesujące, przecież Blockchain to pieniądze, a myślę, że każdy (szczególnie twórcy gier) je lubią. Cały problem jaki dostrzegam to to, iż te gry są bardziej para-blockchainowe i ciężko będzie stworzyć prawdziwą blockchainową grę z bardzo prostego powodu. Ludzie są chciwi, jak tworzą coś to zazwyczaj nie z ideologii (chociaż takie osoby również są oczywiście), a z powodu zarobku.

Jak podzielić gry “na Blockchainie”?

Nie ma kryterium podziału, więc może wprowadzę własne 😉 .

Gry, które przechowują “przedmioty” na blockchainie

Jest to rozwiązanie, w którym angaż w blockchain jest minimalny. Sama gra rozgrywa się na lokalnych bazach danych, jednak gra przechowuje przedmioty różnego rodzaju (np. karty w grze karcianej) w sieci. Te karty z powodu dużych opłat transakcyjnych (tego typu gry są głównie na Ethereum) są zapisywane najczęściej w bazach gry (podpisane kluczem prywatnym z portfeli ETH) i opcjonalnie mogą być wypłacane i wymieniane blockchainową drogą.

Dostarcza to wielu problemów logicznych – czym jest gra na blockchainie? Jak niektórzy wiedzą jestem właścicielem gry “SteemNova”, a do autoryzacji użytkowników używam kont z blockchaina Steem. Więc w sumie jest to gra na blockchain czy nie? 😉

Gry, które przechowują interakcje na blockchainie

Przykładem takiej gry jest Spliterlands, w której blockchain jest bazą danych dla całej gry. Jest to prawie idealna sytuacja (chociaż ma wady). Wtedy dokładnie wiesz wszystko o wszystkich, bo możesz odczytać z sieci – Jakie karty wysłał do pojedynku, jakie karty otrzymał, jakie wysłał i tak dalej. Bardzo dobra sytuacja, ale nawet często to rozwiązanie ma wady z powodu chciwości twórców. Twórcy muszą zarobić, więc nie udostępniają swoich gier np. na licencji Open Source. Tak więc zaufanie w grze istnieje.

Na przykład w Spliterlands jak wyślesz karty do gry, to potem przez API twórców gra nasłuchuje kolejnych informacji, których na blockchainie nie ma – np. jak przebiegała rozgrywka. Tak więc nie jest to wszystko zautomatyzowane jakbyśmy chcieli i jest mimo to spora doza zależności od twórcy gry.

Taka gra może działać prawdopodobnie tylko na platformach bez opłat transakcyjnych, gdyż po założeniu konta już można zacząć grać i korzystać z możliwości sieci bez ponoszenia kosztów. Stworzenie takiej gry na Ethereum (czy innej platformie) jest możliwe, ale niewiele osób by grało, bo niewiele osób by chciało ponosić koszta grania.

Gry, które są w blockchainie

Tego typu gier (typowych) niestety nie ma i możliwe, że przez długi czas nie będzie. Mówimy tutaj o sytuacji, w której cała gra znajduje się w blockchain, a ludzie poprzez dedykowanych klientów grają. Taki klient przy okazji sprawdza czy “wszystko się zgadza” i wysyła stosowne transakcje. To mogłaby być ciekawa rewolucja w grach, szczególnie MMO.

Niestety tego typu gier nie ma – natomiast na tej zasadzie działają kasyna na Ethereum, co mnie niestety nie interesuje …

Czemu trudne jest stworzenie “prawdziwej” gry na Blockchainie?
Jest parę problemów, na które cierpi ta branża – podstawowym jest wydajność sieci.

Steem ma bloki co 3 sekundy, ale interakcje możemy robić co 6. Wyobraźmy sobie, że ktoś zrobi szachy na Steemie – jest to możliwe, ale nie da się zrobić szachów błyskawicznych z powodu dużych opóźnień.

Drugim problemem są opłaty w sieciach typu Ethereum … które są. Gracz im częściej gra tym więcej kosztów ponosi, a to może się mu nie spodobać w erze darmowych “scentralizowanych” gier.

Trzecim jest niechęć do wydawania kodu open source. Powoduje to taki problem, że ktoś może wziąć nasz projekt, usprawnić i wygryźć nas z rynku. A tego wiele osób by nie chciało. Drugim problemem jest to, że twórcy w niejawnej wersji mogą oszukiwać. Na przykład jeśli walczysz z użytkownikiem o nicku “fervi” to nawet jeśli jest on sporo gorszy, może mieć wyjątkowe szczęście. Nie da się tego najczęściej sprawdzić jeśli nie wiemy jak liczone są np. obrażenia w grze.

Marazm wszędzie

Może z czasem powstaną naprawdę “blockchainowe gry” czego Wam i sobie życzę. Wiem natomiast, że będzie to naprawdę trudne zadanie. Szczególnie gdy grę połączymy z “DAO” i gracze będą mogli rekonfigurować grę (np. exp wypadający z potworów). Ciekawe to może być doświadczenie 🙂

Bonus kolizyjny

Jest to bardzo hipotetyczne zagadnienie – ile osób sprawdza czy kasyna kryptowalutowe działają poprawnie? Prawdopodobnie niewielu patrząc po wpadce “Epic Dice”, który używał seeda (wartość potrzebna do generatora liczb, powinna być nieznana graczowi i najlepiej serwerowi) jako ID transakcji. Jeden użytkownik to zauważył i zanim wysyłał “transakcje” do sieci to patrzył jaki ma ID i czy dana transakcja pozwoli mu wygrać czym oszukał kasyno na ponad 2000 złotych.

Ciekawym problemem “scentralizowanych” kasyn może być pomysł narzędzia do wyszukiwania seeda “grupowego”, który nawet jeśli gracz miał wygrać, to przegra.

O co chodzi? W wielu kasynach używa się “ziarenka” (czyli seed) po stronie serwera. To ziarenko istnieje przez np. minutę (i jest przez ten czas tajne dla graczy), a z czasem zostaje uwolnione, by można było sprawdzić wynik losowania.

W grze, która w świecie krypto nazywa się kostką chodzi o to, że wybieramy zakres, w którym losowa liczba wypadnie (np. mniej niż 10). Im mniejszy zakres tym większa nagroda, ale również mniejsza szansa na wygraną.

Dla przykładu nasze ziarenko wynosi 1, a projekt jest napisany w PHP 7.3 i używam wbudowanej funkcji losowania (tak dla przykładu).

Dla ziarna równego 1 liczby od 0 do 99 wynoszą: 23, 15, 28, 78, 26.

Jednak znane są na razie 4 liczby, a 5 ma niebawem być odkryta – owe 26. Ale twórca kasyna nie jest uczciwy i chciałby zwiększyć zyski.

Jeśli kod kasyna jest prosty (można powiedzieć – źle napisany), to sam twórca może szukać takiego ziarna, które sprawi, że poprzednie liczby są poprawne, a następne zupełnie inne. Im więcej liczb tym trudniej coś takiego wygenerować.

Napisałem prosty “system do wyszukiwania kolizji” (jaka ładna nazwa!) by spwadzić czy uda się znaleźć akie ziarno, by pierwsze cztery liczby dla seeda 1 były poprawne, a następne – już nie.

Napisałem dość prosty kod (nie zależało mi na szybkości łamania, a można tutaj było dużo dokonać) i udało się znaleźć parę ziaren z zakresu od 2 do 999999999, dokładnie – 20. Sprawia to potencjalnie taki problem, że serwer może ostatecznie na podstawie gry gracza piątego wybrać takie ziarno, by przegrał (mimo, że np. zgodnie z oryginalnym seedem by wygrał).

Dla przykładu dla 4007867 mamy wyniki: 23, 15, 28, 78, 4.
Dla 10335137: 23, 15, 28, 78, 54.
Czy dla 27253466: 23, 15, 28, 78, 16.

Dlatego warto weryfikować zawsze kasyno czy ich system losowania liczb jest bardzo dobrze zrobiony.

Oczywiście to tylko ogólne spostrzeżenie, że tak może potencjalnie być. Kasynom internetowym nie opłaca się kantować ludzi, gdyż gracz jest zawsze w plecy – na przykład ma 49% szans na podwojenie pieniedzy wpłaconych. Ten jeden procent ostatecznie sprawia, że wszystkie kasyna są niesprawiedliwe.

autor: LordFervi

3 komentarze

  1. Andrzej Wrz 06, 2019
    • 'Ndc. Wrz 06, 2019
      • Fervi Wrz 06, 2019

zostaw odpowiedź