"Igre za denar zunaj blockchaina morajo umreti"

"Igre za denar zunaj blockchaina morajo umreti"

Zmagovalec igre je postal Dmitry Pichulin, znan pod vzdevkom "deemru". Flostonski raj, ki ga je razvil Tradisys na verigi blokov Waves.

Za zmago v igra, je moral igralec opraviti zadnjo stavo v obdobju 60 blokov – preden je drugi igralec stavil in s tem ponastavil števec na nič. Zmagovalec je prejel ves denar, ki so ga stavili drugi igralci.

Bot, ki ga je ustvaril, je Dmitriju prinesel zmago Patrollo. Dmitry je naredil le osem stav na en WAVES in na koncu zmagal 4700 VALOV (836300 XNUMX rubljev). V intervjuju je Dmitry spregovoril o svojem botu in možnostih za igre na blockchainu.

Povejte nam nekaj o sebi. Kaj počneš? Kdaj vas je začela zanimati tehnologija blockchain?

Sem razvijalec na področju informacijske varnosti. V blockchain sem prišel s pompom leta 2017, razumel sem tehnologijo in ostal za tehnologijo.

Kaj je bila glavna motivacija za sodelovanje v igri?

Najprej tehnični interes. Želel sem ugotoviti, kako deluje, poiskati ranljivosti, ne pustiti, da se igra konča, in seveda "trolati" druge igralce.

Ste se že odločili, kako boste porabili dobitek? Kako ga boste shranili, če se odločite, da ga še ne boste porabili?

Nisem mogel ugotoviti, kaj naj naredim z dobitkom. Nisem pričakoval, zato nimam načrtov. Za zdaj bo ostalo tako kot je. Mogoče se bo to steklo v kakšen projekt na Wavesu.

Zakaj ste se odločili sodelovati v igri z uporabo bota? Kako je nastala ideja za Patrollo? Nam lahko poveste kaj več o njegovem razvoju?

Z ranljivostmi ni šlo. Igro sem pobral na testnem omrežju, se igral sam s seboj, preizkusil vse možnosti, vendar se je vse izkazalo za "hardwired", v pogodbi ni bilo nobenih ranljivosti. Postalo je jasno, da na ta način ni mogoče zmagati.

Kako ste iskali ranljivosti? Kakšne so bile vaše hipoteze? Ali lahko navedete primer kode?

Bili sta dve hipotezi. Prvič, napad na vrste podatkov preverja zapise podatkovnih transakcij. Na primer, pričakoval sem, da bo slabo kodiranje zaobšlo preverjanje ponovne uporabe ID-ja transakcije. Drugi je napad prekoračitve celih števil. Ugotovil sem, da obstaja način, da višino nastavim previsoko ali negativno in poskušam končati v preteklosti.

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

Kaj ste storili, ko ste videli, da vaša pričakovanja glede ranljivosti niso bila izpolnjena?

V svojem telegramskem klepetu se je Tradisys pritožil, da bo igra večna, medtem ko je v omrežju vse tiho, toda v zmedi (s posodobitvami vozlišč ali nepričakovanimi forki) se povečajo možnosti za dobre bote. Tam sem v klepetu sprejel izziv, da napišem dobrega bota, kar mi je par dni kasneje tudi uspelo. Kodo Patrollo sem napisal v PHP, ki temelji na mojem ogrodju WavesKit, v katerem poskušam zajeti vse najboljše tehnike za delo z blockchainom.

Preizkusil sem ga na testnem omrežju, objavil kodo na github, zagnal bota na glavnem omrežju in pozabil nanj.

Moja konfiguracija Patrollo je morala rešiti dva problema: stave čim redkeje in čim bolj zanesljivo delovanje.

O prvem odločajo izjemno tvegane stave, po možnosti prav v zadnjem bloku. Na koncu sem bota vseeno postavil na predzadnji blok, a z dodatnim zamikom 29 sekund. To je omogočilo le osem stav med celotno igro.

Zakaj ravno 29 sekund? Kako ste prišli do te številke?

29 sekund se je pojavilo postopoma. Sprva ni bilo zamude, vendar sem opazil, da so bili na predzadnjem bloku primeri sočasnih stav - torej ni bilo smisla staviti. Potem je prišlo do zamude - mislim, da je bilo 17 sekund, vendar tudi to ni pomagalo: še vedno so bile sočasne stave. Potem sem se odločil, da bom bolj tvegal, a zagotovo ne, da bom imel simultane stave. Zakaj 17, 29 itd.? Samo ljubezen do praštevil. 24, 25, 26, 27, 28, 30 - vse spojine. In več kot 30 sekund bi bilo popolnoma tvegano.

Kako je bilo rešeno vprašanje zanesljivosti?

Zanesljivost je bila obravnavana predvsem z mehanizmom za izbiro delujočega vozlišča in v manjši meri z vnaprejšnjo izvedbo prenosne transakcije za stavo, tako da bi se stava v datumski transakciji že natančno sklicevala na obstoječo transakcijo v blockchainu.

Med vsakim krogom cikla so bila vsa vozlišča, podana v konfiguraciji, anketirana glede njihove trenutne višine, izbrano je bilo vozlišče z najvišjo trenutno višino in z njim je potekala nadaljnja interakcija. Po mojem razumevanju naj bi to zaščitilo pred forki, nedostopnostjo, predpomnjenjem in morebitnimi napakami na vozliščih. Obstaja prepričanje, da je prav ta preprost mehanizem pripeljal do zmage.

Katere so po vašem mnenju glavne značilnosti in prednosti blockchain iger? Kako obetavne so javne verige blokov na splošno in zlasti veriga blokov Waves za razvoj iger?

Glavne prednosti so znana, fiksna in nespremenljiva pravila igre ter enaki pogoji za dostop do igre od kjerkoli na svetu.

Denarne igre zunaj verige morajo umreti.

Waves ima bogato tehnično funkcionalnost, vendar obstajajo nianse, ki so značilne za katero koli verigo blokov in specifične. Oba se še ne odražata dobro v obstoječih orodjih za razvijalce.

Če bi se na primer poskušali odzvati na transakcije v realnem času in ne na razdalji 5-10 potrditev, bi izvedeli za redke, a pojavljajoče se pojave: transakcije, ki skačejo iz bloka v blok, transakcije, ki manjkajo v nekaterih blokih in se pojavljajo v drugih . Vse to je ključnega pomena za hitrost in zanesljivost vsake aplikacije in je treba rešiti na splošno, a zaenkrat vsak razvijalec sam doseže raven zanesljivosti, ki jo zahteva. Sčasoma se bo vse to seveda rešilo, vendar za zdaj obstaja določena, precej visoka vstopna ovira in strah pred specifiko dela resnično decentraliziranih blokovnih verig nasploh.

Kako se igra FOMO razlikuje od drugih iger blockchain, ki jih poznate? Kakšne so njegove prednosti in slabosti?

To so dolge igre. Zanimanje za takšne igre narašča z višino dobitkov, višina dobitkov pa sčasoma raste.

V idealnem primeru se igra nikoli ne konča. Ko se igra konča, je žalostno ...

Pred kratkim sem bil začela Igra Flostonski raj 2. Se ga nameravate udeležiti?

Da, če imam čas in zanimanje, bom naredil enake korake: analizo ranljivosti, igranje sam s seboj na testnem omrežju, botu, odprtokodnem sistemu itd.

Za konec nam povejte še o svojih načrtih kot razvijalec.

Zanima me reševanje nerešenih problemov in v temi blockchain je veliko nerešenih problemov. To je pravi izziv! In bil je sprejet.

Vir: www.habr.com

Dodaj komentar