«Гульні на грошы па-за блокчэйнам павінны памерці»

«Гульні на грошы па-за блокчэйнам павінны памерці»

Зміцер Пічулін, вядомы пад нікам «deemru», стаў пераможцам гульні. Fhloston Paradise, распрацаванай Tradisys на блокчейне Waves.

Каб перамагчы ў гульні, гулец павінен быў зрабіць самую апошнюю стаўку падчас перыяду з 60 блокаў - да таго, як стаўку зробіць іншы гулец, абнуліўшы тым самым лічыльнік. Пераможцу даставаліся ўсе грошы, пастаўленыя іншымі ігракамі.

Перамогу Зміцеру прынёс створаны ім бот Patrollo. Зміцер зрабіў усяго восем ставак па адным WAVES і ў выніку выйграў 4700 ХВАЛІ (836300 XNUMX руб.). У інтэрв'ю Дзмітрый расказаў аб сваім боце і перспектывах гульняў на блокчэйне.

Раскажыце крыху пра сябе. Чым займаецеся? Калі зацікавіліся тэхналогіяй блокчэйн?

Я - распрацоўшчык у сферы інфармацыйнай бяспекі. У блокчэйн прыйшоў з «хайпам» 2017 года, разабраўся ў тэхналогіі і застаўся дзеля тэхналогіі.

Што стала асноўнай матывацыяй для ўдзелу ў гульні?

Перш за ўсё - тэхнічная цікавасць. Жадалася разабрацца як яна працуе, знайсці ўразлівасці, не даць гульні скончыцца, ну і «патроліць» астатніх гульцоў, вядома.

Вы ўжо вырашылі, як выдаткуеце выйгрыш? У чым будзеце захоўваць яго, калі вырашыце пакуль не марнаваць?

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

Чаму вы вырашылі прыняць удзел у гульні з дапамогай бота? Як прыйшла ідэя Patrollo? Маглі б расказаць падрабязней пра яго распрацоўку?

З уразлівасцямі не выйшла. Я «падняў» гульню ў тэставай сетцы, пагуляў сам з сабой, перакаштаваў усе варыянты, але ўсё аказалася «жалезна», уразлівасцяў у кантракце няма. Стала зразумела, што гэтым шляхам не перамагчы.

Як вы шукалі ўразлівасці? Якія ў Вас былі гіпотэзы? Не маглі б прывесці прыклад кода?

Гіпотэз было дзве. Па-першае, напад на праверкі тыпаў дадзеных у запісах дата-транзакцый. Напрыклад, я разлічваў, што дрэннае кадаваньне дазволіць абыйсці праверку перавыкарыстання transaction ID. Другая - атака на цэлалікавае перапаўненне. Я разлічваў, што ёсць спосаб задаць занадта вялікую ці адмоўную вышыню і паспрабаваць апынуцца ў мінулым.

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

Што вы зрабілі, калі ўбачылі, што чаканні па ўразлівасцях не пацвердзіліся?

У сваім тэлеграм-чаце Tradisys панаракаў, што пакуль у сеткі ўсё ціха, гульня будзе вечнай, але ў блытаніне (пры абнаўленнях нод або непрадбачаных форках) шанцы ў добрых робатаў павялічваюцца. Там жа, у чаце, я прыняў выклік - напісаць добрага бота, - што і зрабіў праз пару дзён. Код Patrollo я напісаў на мове PHP, на аснове майго фрэймворка WavesKit, У якім я імкнуся зафіксаваць усе самыя лепшыя тэхнікі для працы з блокчейном.

Праверыў працу ў тэставай сетцы, выклаў код на github, запусціў робата ў асноўнай сетцы і забыўся пра яго.

Мая канфігурацыя Patrollo павінна была вырашаць дзве задачы: рабіць стаўкі як мага радзей і працаваць як мага надзейней.

Першае вырашаецца вельмі рызыкоўнымі стаўкамі, пажадана ў самым апошнім блоку. У выніку я ўсё ж паставіў робата на перадапошні блок, але з дадатковай затрымкай у 29 секунд. Гэта дазволіла зрабіць усяго восем ставак за ўвесь час гульні.

Чаму менавіта 29 секунд? Як вы прыйшлі да гэтага ліку?

29 секунд з'явіліся паступова. Спачатку затрымкі не было, але я заўважыў, што на перадапошнім блоку бывалі выпадкі адначасовых ставак - гэта значыць, ставіць не было сэнсу. Тады з'явілася затрымка - здаецца, у 17 секунд, але і яна не дапамагла: усё яшчэ былі адначасовыя стаўкі. Тады я вырашыў рызыкаваць мацней, але ўжо сапраўды, каб не было адначасовых ставак. Чаму 17, 29 ітд.? Проста любоў да простых лікаў. 24, 25, 26, 27, 28, 30 - усе складовыя. А больш за 30 секунд ужо было б зусім рызыкоўна.

Як вырашылася пытанне надзейнасці?

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

Падчас кожнага круга цыклу ўсе ноды, зададзеныя ў канфігурацыі, апытваліся на прадмет іх бягучай вышыні, выбіралася нода з найвялікай бягучай вышынёй, і з ёй адбывалася наступнае ўзаемадзеянне. У маім разуменні гэта павінна было абараніць ад форкаў, недаступнасці, кэшавання і магчымых памылак на нодах. Ёсць упэўненасць, што менавіта гэты просты механізм і прывёў да перамогі.

У чым, на ваш погляд, асноўныя асаблівасці і перавагі гульняў на блокчейне? Наколькі перспектыўныя для распрацоўкі гульняў публічныя блокчейны наогул і блокчейн Waves у прыватнасці?

Галоўныя перавагі - вядомыя, зафіксаваныя і не змяняюцца правілы гульні, плюс роўныя ўмовы доступу да гульні з любой кропкі свету.

Гульні на грошы па-за блокчэйнам павінны памерці.

У Waves багаты тэхнічны функцыянал, аднак існуюць нюансы, як уласцівыя любым блокчейнам, так і спецыфічныя. І тыя, і іншыя пакуль не вельмі добра адлюстраваны ў існуючых інструментах распрацоўшчыка.

Напрыклад, калі б вы паспрабавалі рэагаваць на транзакцыі ў рэжыме рэальнага часу, а не на дыстанцыі ў 5-10 пацверджанняў, вы б даведаліся аб рэдкіх, але мелых месца з'явах: пераскокванні транзакцый з блока ў блок, згубе транзакцый у адных блоках і з'яўленні ў іншых. Усё гэта крытычна для хуткасці і надзейнасці любых прыкладанняў і павінна быць вырашана ў агульным выглядзе, але пакуль кожны распрацоўшчык дасягае неабходнага яму ўзроўню надзейнасці самастойна. З часам, вядома, усё гэта будзе вырашана, але пакуль ёсць вызначаны, даволі высокі, парог уваходжання і страх перад спецыфікай працы сапраўды дэцэнтралізаваных блокчейнов у цэлым.

Чым гульня FOMO адрозніваецца ад іншых вядомых вам гульняў на блокчейне? У чым яе перавагі і недахопы?

Гэта - гульні доўга. Цікавасць да такіх гульняў расце з велічынёй выйгрышу, а велічыня выйгрышу расце з часам.

Ідэальна, калі гульня ніколі не скончыцца. Калі гульня заканчваецца - гэта сумна…

Нядаўна была запушчана гульня Fhloston Paradise 2. Ці плануеце прыняць у ёй удзел?

Так, калі будзе час і цікавасць, я распачну тыя ж крокі: аналіз на ўразлівасці, гульня з самім сабой у тэставай сетцы, бот, open source і г.д.

У заключэнне раскажыце, калі ласка, пра свае планы як распрацоўшчыка.

Мне цікава вырашаць нявырашаныя задачы, а ў тэме блокчейна шмат нявырашаных задач. Гэта - сапраўдны выклік! І ён прыняты.

Крыніца: habr.com

Дадаць каментар