„Gry na pieniądze poza blockchainem muszą umrzeć”

„Gry na pieniądze poza blockchainem muszą umrzeć”

Zwycięzcą partii został Dmitry Pichulin, znany pod pseudonimem „deemru”. Raj Fhloston, opracowany przez Tradisys na blockchainie Waves.

Aby wygrać gra, gracz musiał postawić ostatni zakład w ciągu 60 bloków, zanim inny gracz postawi zakład, resetując w ten sposób licznik do zera. Zwycięzca otrzymał wszystkie pieniądze postawione przez innych graczy.

Stworzony przez niego bot przyniósł zwycięstwo Dmitrijowi Patrol. Dmitry postawił tylko osiem zakładów na jedną FALĘ i ostatecznie wygrał FALE 4700 (836300 XNUMX rubli). W wywiadzie Dmitry opowiedział o swoim bocie i perspektywach gier na blockchainie.

Powiedz nam coś o sobie. Co robisz? Kiedy zainteresowałeś się technologią blockchain?

Jestem programistą w dziedzinie bezpieczeństwa informacji. Przyszedłem do Blockchain pod wpływem szumu 2017 roku, zrozumiałem technologię i zostałem dla niej.

Jaka była główna motywacja wzięcia udziału w grze?

Przede wszystkim zainteresowanie techniczne. Chciałem dowiedzieć się, jak to działa, znaleźć słabe punkty, nie dopuścić do zakończenia gry i oczywiście „trolować” innych graczy.

Czy już zdecydowałeś, jak wydasz swoją wygraną? Jak je przechowasz, jeśli zdecydujesz, że jeszcze ich nie wydasz?

Nie wiedziałem, co zrobić z wygraną. Nie spodziewałem się tego, więc nie mam planów. Na razie pozostanie tak, jak jest. Może trafi to do jakiegoś projektu na Waves.

Dlaczego zdecydowałeś się wziąć udział w grze za pomocą bota? Jak zrodził się pomysł na Patrollo? Czy możesz powiedzieć nam więcej o jego rozwoju?

Nie wyszło z lukami w zabezpieczeniach. Wybrałem grę w sieci testowej, grałem ze sobą, wypróbowałem wszystkie opcje, ale wszystko okazało się „na stałe”, w umowie nie było żadnych luk. Stało się jasne, że w ten sposób nie da się wygrać.

Jak szukałeś luk w zabezpieczeniach? Jakie były Twoje hipotezy? Czy mógłbyś podać przykładowy kod?

Hipotezy były dwie. Po pierwsze, atak na sprawdzanie typów danych w rekordach transakcji danych. Na przykład spodziewałem się, że złe kodowanie ominie kontrolę ponownego użycia identyfikatora transakcji. Drugi to atak przepełnienia liczb całkowitych. Pomyślałem, że istnieje sposób, aby ustawić wysokość zbyt wysoko lub ujemnie i spróbować skończyć w przeszłości.

$tx = $wk->txBroadcast( $wk->txSign( $wk->txData( [ 'heightToGetMoney' => -9223372036854775807 ] ) ) );

Co zrobiłeś, gdy zobaczyłeś, że Twoje oczekiwania dotyczące podatności na zagrożenia nie zostały spełnione?

Na swoim czacie telegramowym Tradisys skarżył się, że chociaż w sieci jest cicho, gra będzie wieczna, ale w zamieszaniu (z aktualizacjami węzłów lub nieoczekiwanymi rozwidleniami) zwiększają się szanse na dobre boty. Tam na czacie przyjąłem wyzwanie napisania dobrego bota, co zrobiłem kilka dni później. Napisałem kod Patrollo w PHP, bazując na moim frameworku Zestaw Waves, w którym staram się uchwycić wszystkie najlepsze techniki pracy z blockchainem.

Przetestowałem go w sieci testowej, umieściłem kod na githubie, uruchomiłem bota w sieci głównej i zapomniałem o tym.

Moja konfiguracja Patrollo musiała rozwiązać dwa problemy: obstawiać zakłady tak rzadko, jak to możliwe i działać tak niezawodnie, jak to możliwe.

O tym pierwszym decydują wyjątkowo ryzykowne zakłady, najlepiej w ostatnim bloku. Ostatecznie nadal umieściłem bota na przedostatnim bloku, ale z dodatkowym opóźnieniem wynoszącym 29 sekund. Dzięki temu w całym meczu można było postawić tylko osiem zakładów.

Dlaczego dokładnie 29 sekund? Jak doszedłeś do tej liczby?

29 sekund pojawiało się stopniowo. Na początku nie było żadnych opóźnień, jednak zauważyłem, że na przedostatnim bloku zdarzały się przypadki równoczesnych zakładów – czyli nie było sensu obstawiać. Potem nastąpiło opóźnienie - myślę, że było to 17 sekund, ale to też nie pomogło: nadal były jednoczesne zakłady. Potem zdecydowałem się podjąć większe ryzyko, ale na pewno nie obstawiać jednoczesnych zakładów. Dlaczego 17, 29 itd.? Po prostu miłość do liczb pierwszych. 24, 25, 26, 27, 28, 30 - wszystkie związki. A więcej niż 30 sekund byłoby całkowicie ryzykowne.

Jak rozwiązano problem niezawodności?

O niezawodność zadbano głównie poprzez mechanizm wyboru działającego węzła oraz w mniejszym stopniu poprzez przeprowadzenie transakcji transferu zakładu z wyprzedzeniem, tak aby zakład w dacie transakcji już dokładnie odwoływał się do istniejącej transakcji na blockchainie.

Podczas każdej rundy cyklu wszystkie węzły określone w konfiguracji były odpytywane pod kątem ich aktualnej wysokości, wybierany był węzeł o najwyższej aktualnej wysokości i odbywała się z nim dalsza interakcja. W moim rozumieniu miało to chronić przed forkami, niedostępnością, buforowaniem i możliwymi błędami na węzłach. Istnieje pewność, że to właśnie ten prosty mechanizm doprowadził do zwycięstwa.

Jakie są według Ciebie główne cechy i zalety gier typu blockchain? Jak obiecujące są ogólnie publiczne łańcuchy bloków, a w szczególności łańcuch bloków Waves, w tworzeniu gier?

Głównymi zaletami są znane, stałe i niezmienne zasady gry oraz równe warunki dostępu do gry z dowolnego miejsca na świecie.

Gry pieniężne poza łańcuchem muszą umrzeć.

Waves ma bogatą funkcjonalność techniczną, ale istnieją niuanse, zarówno nieodłączne dla każdego blockchainu, jak i specyficzne. Obydwa nie zostały jeszcze dobrze odzwierciedlone w istniejących narzędziach programistycznych.

Przykładowo, jeśli próbowałbyś odpowiadać na transakcje w czasie rzeczywistym, a nie w odległości 5-10 potwierdzeń, dowiedziałbyś się o rzadkich, ale występujących zjawiskach: transakcjach przeskakujących z bloku na blok, transakcjach, których w niektórych blokach brakuje, a w innych się pojawiają. . Wszystko to ma kluczowe znaczenie dla szybkości i niezawodności dowolnej aplikacji i należy je rozwiązać w sposób ogólny, ale na razie każdy programista samodzielnie osiąga wymagany poziom niezawodności. Z czasem to wszystko oczywiście zostanie rozwiązane, jednak na razie istnieje pewna, dość wysoka, bariera wejścia i obawa co do specyfiki pracy prawdziwie zdecentralizowanych blockchainów w ogóle.

Czym gra FOMO różni się od innych gier typu blockchain, które znasz? Jakie są jego zalety i wady?

To są długie gry. Zainteresowanie takimi grami rośnie wraz z ilością wygranych, a wysokość wygranych rośnie z czasem.

Idealnie byłoby, gdyby gra nigdy się nie skończyła. Kiedy mecz się kończy, jest smutno...

Ostatnio byłem uruchomiona gra Fhloston Raj 2. Planujesz wziąć w nim udział?

Tak, jeśli będę miał czas i zainteresowanie, podejmę te same kroki: analizę podatności, zabawę ze sobą w sieci testowej, bot, open source itp.

Na koniec opowiedz nam o swoich planach jako programisty.

Interesuje mnie rozwiązywanie nierozwiązanych problemów, a w temacie blockchain jest wiele nierozwiązanych problemów. To prawdziwe wyzwanie! I został przyjęty.

Źródło: www.habr.com

Dodaj komentarz