„Žaidimai už pinigus už blokų grandinės ribų turi mirti“

„Žaidimai už pinigus už blokų grandinės ribų turi mirti“

Žaidimo nugalėtoju tapo Dmitrijus Pichulinas, žinomas slapyvardžiu „deemru“. Fhlostono rojus, kurį sukūrė Tradisys on the Waves blockchain.

Norėdami laimėti žaidimą, žaidėjas turėjo atlikti patį paskutinį statymą per 60 blokų laikotarpį – prieš tai, kai kitas žaidėjas atliko statymą, taip iš naujo nustatydamas skaitiklį į nulį. Laimėtojas gavo visus kitų žaidėjų statymus.

Jo sukurtas botas atnešė pergalę Dmitrijui Patrollo. Dmitrijus atliko tik aštuonis statymus ant vienos BANGOS ir galiausiai laimėjo 4700 bangų (836300 XNUMX RUB). Interviu Dmitrijus papasakojo apie savo robotą ir žaidimų „blockchain“ perspektyvas.

Papasakokite šiek tiek apie save. Ką tu darai? Kada susidomėjote blockchain technologija?

Esu informacijos saugumo srities kūrėjas. Į „blockchain“ atėjau su 2017 m. ažiotažu, supratau technologiją ir likau prie technologijos.

Kokia buvo pagrindinė motyvacija dalyvauti žaidime?

Visų pirma, techninis susidomėjimas. Norėjau išsiaiškinti, kaip tai veikia, rasti pažeidžiamumą, neleisti žaidimui pasibaigti ir, žinoma, „troliuoti“ kitus žaidėjus.

Ar jau nusprendėte, kaip išleisite savo laimėjimą? Kaip jį saugosite, jei nuspręsite dar neišleisti?

Negalėjau suprasti, ką daryti su laimėjimais. Nesitikėjau, todėl planų neturiu. Kol kas liks kaip yra. Galbūt tai pateks į kokį nors projektą „Waves“.

Kodėl nusprendėte dalyvauti žaidime naudodami botą? Kaip kilo Patrollo idėja? Ar galėtumėte plačiau papasakoti apie jo vystymąsi?

Nepavyko su pažeidžiamumu. Pasiėmiau žaidimą bandomajame tinkle, žaidžiau su savimi, išbandžiau visus variantus, bet viskas pasirodė „sujungta“, sutartyje nebuvo spragų. Tapo aišku, kad tokiu būdu laimėti nepavyks.

Kaip ieškojote pažeidžiamumų? Kokios buvo jūsų hipotezės? Ar galėtumėte pateikti kodo pavyzdį?

Buvo dvi hipotezės. Pirma, ataka prieš duomenų tipų patikras duomenų operacijų įrašuose. Pavyzdžiui, tikėjausi, kad netinkamas kodavimas apeis operacijos ID pakartotinio naudojimo patikrinimą. Antrasis yra sveikųjų skaičių perpildymo ataka. Supratau, kad yra būdas nustatyti per didelį arba neigiamą aukštį ir pabandyti atsidurti praeityje.

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

Ką darėte, kai pamatėte, kad jūsų lūkesčiai dėl pažeidžiamumo nebuvo patenkinti?

Savo telegramos pokalbyje Tradisys skundėsi, kad nors tinkle viskas tylu, žaidimas bus amžinas, tačiau sumaištyje (su mazgų atnaujinimais ar netikėtais šakėmis) gerų botų tikimybė didėja. Ten, pokalbyje, priėmiau iššūkį parašyti gerą robotą, ką po poros dienų ir padariau. Patrollo kodą parašiau PHP, remdamasis savo sistema WavesKit, kuriame stengiuosi užfiksuoti visas geriausias darbo su blockchain technikas.

Išbandžiau jį bandomajame tinkle, paskelbiau kodą github, paleidau robotą pagrindiniame tinkle ir pamiršau apie tai.

Mano Patrollo konfigūracija turėjo išspręsti dvi problemas: statyti statymus kuo rečiau ir veikti kuo patikimiau.

Pirmąjį lemia itin rizikingi statymai, geriausia pačiame paskutiniame bloke. Galų gale aš vis tiek padėjau botą ant priešpaskutinio bloko, bet su papildomu 29 sekundžių vėlavimu. Tai leido per visą žaidimą atlikti tik aštuonis statymus.

Kodėl būtent 29 sekundes? Kaip jūs pasiekėte šį numerį?

29 sekundės atsirado palaipsniui. Iš pradžių nebuvo delsimo, bet pastebėjau, kad priešpaskutiniame bloke buvo statymų vienu metu – tai yra, nebuvo prasmės statyti. Tada buvo vėlavimas - manau, kad tai buvo 17 sekundžių, bet tai taip pat nepadėjo: vis dar buvo statymų vienu metu. Tada nusprendžiau labiau rizikuoti, bet tikrai ne vienu metu daryti statymus. Kodėl 17, 29 ir tt? Tiesiog pirminių skaičių meilė. 24, 25, 26, 27, 28, 30 – visi junginiai. Ir daugiau nei 30 sekundžių būtų visiškai rizikinga.

Kaip buvo išspręsta patikimumo problema?

Patikimumas daugiausia buvo sprendžiamas taikant veikiančio mazgo pasirinkimo mechanizmą ir, kiek mažesniu mastu, iš anksto atliekant statymo pervedimo operaciją, kad datos operacijos statymas jau tiksliai nurodytų esamą operaciją blokų grandinėje.

Kiekvieno ciklo etapo metu buvo apklaustas visų konfigūracijoje nurodytų mazgų esamas aukštis, parenkamas didžiausią srovės aukštį turintis mazgas ir su juo vyko tolesnė sąveika. Mano supratimu, tai turėjo apsaugoti nuo šakių, nepasiekiamumo, kaupimosi talpykloje ir galimų mazgų klaidų. Yra įsitikinimų, kad būtent šis paprastas mechanizmas lėmė pergalę.

Kokios, jūsų nuomone, yra pagrindinės blockchain žaidimų savybės ir pranašumai? Kiek daug žadančios yra viešosios „blockchain“ apskritai ir „Waves“ blokų grandinė, ypač kuriant žaidimus?

Pagrindiniai privalumai yra žinomos, fiksuotos ir nekintančios žaidimo taisyklės, taip pat vienodos sąlygos patekti į žaidimą iš bet kurios pasaulio vietos.

Ne grandinės pinigų žaidimai turi mirti.

Waves turi daug techninių funkcijų, tačiau yra niuansų, būdingų bet kuriai blokų grandinei, ir specifinių. Abu jie dar nėra labai gerai atspindėti esamuose kūrėjo įrankiuose.

Pavyzdžiui, jei bandytumėte reaguoti į operacijas realiu laiku, o ne 5-10 patvirtinimų atstumu, sužinotumėte apie retus, bet pasitaikančius reiškinius: operacijos šokinėja iš bloko į bloką, kai kuriuose blokuose trūksta operacijos, o kituose pasirodo. . Visa tai labai svarbu bet kurios programos greičiui ir patikimumui ir turi būti išspręsta bendrai, tačiau kol kas kiekvienas kūrėjas pats pasiekia reikiamą patikimumo lygį. Laikui bėgant, žinoma, visa tai išsispręs, tačiau kol kas yra tam tikras, gana didelis, įėjimo barjeras ir baimė dėl tikrai decentralizuotų blokų grandinių darbo specifikos apskritai.

Kuo FOMO žaidimas skiriasi nuo kitų jums žinomų „blockchain“ žaidimų? Kokie jo privalumai ir trūkumai?

Tai ilgi žaidimai. Susidomėjimas tokiais žaidimais auga didėjant laimėjimų dydžiui, o laimėjimų suma laikui bėgant auga.

Idealiu atveju žaidimas niekada nesibaigs. Kai žaidimas baigiasi, liūdna...

Neseniai buvau paleistas žaidimas Fhlostono rojus 2. Ar planuojate jame dalyvauti?

Taip, jei turėsiu laiko ir susidomėjimo, imsiuos tų pačių žingsnių: pažeidžiamumo analizė, žaidimas su savimi testiniame tinkle, botas, atvirasis šaltinis ir t.t.

Galiausiai papasakokite apie savo, kaip kūrėjo, planus.

Man įdomu išspręsti neišspręstas problemas, o blokų grandinės temoje yra daug neišspręstų problemų. Tai tikras iššūkis! Ir jis buvo priimtas.

Šaltinis: www.habr.com

Добавить комментарий