- PVSM.RU - https://www.pvsm.ru -

«Игры на деньги вне блокчейна должны умереть»

«Игры на деньги вне блокчейна должны умереть» - 1

Дмитрий Пичулин, известный под ником «deemru», стал победителем игры Fhloston Paradise [1], разработанной Tradisys на блокчейне Waves.

Чтобы победить в игре [2], игрок должен был сделать самую последнюю ставку во время периода из 60 блоков — до того, как ставку сделает другой игрок, обнулив тем самым счетчик. Победителю доставались все деньги, поставленные другими игроками.

Победу Дмитрию принес созданный им бот Patrollo [3]. Дмитрий сделал всего восемь ставок по одному WAVES и в итоге выиграл 4700 WAVES [4] (836300 руб.). В интервью Дмитрий рассказал о своем боте и перспективах игр на блокчейне.

Расскажите немного о себе. Чем занимаетесь? Когда заинтересовались технологией блокчейн?

Я — разработчик в сфере информационной безопасности. В блокчейн пришел с «хайпом» 2017 года, разобрался в технологии и остался ради технологии.

Что стало основной мотивацией для участия в игре?

Прежде всего — технический интерес. Хотелось разобраться как она работает, найти уязвимости, не дать игре закончиться, ну и «потроллить» остальных игроков, конечно.

Вы уже решили, как потратите выигрыш? В чем будете хранить его, если решите пока не тратить?

Не придумал что делать с выигрышем. Не ожидал его, поэтому и планов нет. Пока будет лежать как есть. Может, в какой-нибудь проект на Waves перетечет.

Почему вы решили принять участие в игре с помощью бота? Как пришла идея Patrollo? Могли бы рассказать подробнее о его разработке?

С уязвимостями не вышло. Я «поднял» игру в тестовой сети, поиграл сам с собой, перепробовал все варианты, но все оказалось «железно», уязвимостей в контракте нет. Стало ясно, что этим путем не победить.

Как вы искали уязвимости? Какие у Вас были гипотезы? Не могли бы привести пример кода?

Гипотез было две. Во-первых, атака на проверки типов данных в записях дата-транзакций. Например, я рассчитывал, что плохое кодирование позволит обойти проверку переиспользования transaction ID. Вторая — атака на целочисленное переполнение. Я рассчитывал, что есть способ задать слишком большую или отрицательную высоту и попытаться оказаться в прошлом.

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

Что вы сделали, когда увидели, что ожидания по уязвимостям не подтвердились?

В своем телеграм-чате Tradisys посетовал, что пока в сети все тихо, игра будет вечной, но в неразберихе (при обновлениях нод или непредвиденных форках) шансы у хороших ботов повышаются. Там же, в чате, я принял вызов — написать хорошего бота, — что и сделал через пару дней. Код Patrollo я написал на языке PHP, на основе моего фреймворка WavesKit [5], в котором я стараюсь зафиксировать все самые лучшие техники для работы с блокчейном.

Проверил работу в тестовой сети, выложил код на github, запустил бота в основной сети и забыл про него.

Моя конфигурация Patrollo должна была решать две задачи: делать ставки как можно реже и работать как можно надежнее.

Первое решается крайне рискованными ставками, желательно в самом последнем блоке. В итоге я все же поставил бота на предпоследний блок, но с дополнительной задержкой в 29 секунд. Это позволило сделать всего восемь ставок за все время игры.

Почему именно 29 секунд? Как вы пришли к этому числу?

29 секунд появились постепенно. Сначала задержки не было, но я заметил, что на предпоследнем блоке бывали случаи одновременных ставок — то есть, ставить не было смысла. Тогда появилась задержка — кажется, в 17 секунд, но и она не помогла: все еще были одновременные ставки. Тогда я решил рисковать посильнее, но уж точно, чтобы не было одновременных ставок. Почему 17, 29 итд.? Просто любовь к простым числам. 24, 25, 26, 27, 28, 30 — все составные. А больше 30 секунд уже было бы совсем рискованно.

Как решился вопрос надежности?

Надежность решалась, главным образом, механизмом выбора рабочей ноды и, в меньшей степени, проведением трансфер-транзакции для ставки заранее, чтобы ставка в дата-транзакции уже точно ссылалась на существующую в блокчейне транзакцию.

Во время каждого круга цикла все ноды, заданные в конфигурации, опрашивались на предмет их текущей высоты, выбиралась нода с наибольшей текущей высотой, и с ней происходило дальнейшее взаимодействие. В моем понимании это должно было защитить от форков, недоступности, кэширования и возможных ошибок на нодах. Есть уверенность, что именно этот простой механизм и привел к победе.

В чем, на ваш взгляд, основные особенности и преимущества игр на блокчейне? Насколько перспективны для разработки игр публичные блокчейны вообще и блокчейн Waves в частности?

Главные преимущества — известные, зафиксированные и не меняющиеся правила игры, плюс равные условия доступа к игре из любой точки мира.

Игры на деньги вне блокчейна должны умереть.

У Waves богатый технический функционал, однако существуют нюансы, как присущие любым блокчейнам, так и специфические. И те, и другие пока не очень хорошо отражены в существующих инструментах разработчика.

Например, если бы вы попробовали реагировать на транзакции в режиме реального времени, а не на дистанции в 5-10 подтверждений, вы бы узнали о редких, но имеющих место явлениях: перепрыгивании транзакций из блока в блок, пропаже транзакций в одних блоках и появления в других. Все это критично для скорости и надежности любых приложений и должно быть решено в общем виде, но пока каждый разработчик достигает необходимого ему уровня надежности самостоятельно. Со временем, конечно, все это будет решено, но пока есть определенный, довольно высокий, порог вхождения и страх перед спецификой работы истинно децентрализованных блокчейнов в целом.

Чем игра FOMO отличается от других известных вам игр на блокчейне? В чем ее преимущества и недостатки?

Это — игры вдолгую. Интерес к таким играм растет с величиной выигрыша, а величина выигрыша растет со временем.

Идеально, если игра никогда не закончится. Когда игра заканчивается — это грустно…

Недавно была запущена [6] игра Fhloston Paradise 2 [1]. Планируете ли принять в ней участие?

Да, если будет время и интерес, я предприму те же шаги: анализ на уязвимости, игра с самим собой в тестовой сети, бот, open source и т.д.

В заключение расскажите, пожалуйста, о своих планах как разработчика.

Мне интересно решать нерешенные задачи, а в теме блокчейна много нерешенных задач. Это — настоящий вызов! И он принят.

Автор: Waves_Platform

Источник [7]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/programmirovanie/312690

Ссылки в тексте:

[1] Fhloston Paradise: https://www.multi-pass.club/

[2] игре: https://vk.com/@wavesplatform-na-platforme-waves-zapuschena-novaya-igra-na-osnove-smart-ko

[3] Patrollo: https://github.com/deemru/Patrollo

[4] 4700 WAVES: http://wavesexplorer.com/tx/98L9NZJ8gVnNABBBMHaoBSR9Zj2avZZhNFwB3sspSEre

[5] WavesKit: https://github.com/deemru/WavesKit

[6] запущена: https://vk.com/@wavesplatform-tradisys-perezapuskaet-fhloston-paradise

[7] Источник: https://habr.com/ru/post/445244/?utm_campaign=445244