Raziskovanje CryptoKitties - 2. del: Kriptovalute

To je drugi del objave na spletnem dnevniku o pridobivanju in analiziranju podatkov iz blokade Ethereum. Intro lahko preskočite, če ste prebrali 1. del

Intro

Če berete to, ste verjetno že slišali za igro, ki je v zadnjih nekaj mesecih pritegnila pozornost vseh v mreži Ethereum: CryptoKitties!

Skratka, igra je sestavljena iz zbiranja virtualnih mačk. Mačke ustvarijo igralci igre, ki lahko vzrejajo dve mački, da ustvarijo novo. Vsaka mačka ima svoje genetsko zaporedje, ki določa njihove fizične lastnosti. Njihov genom je funkcija genov njihovih staršev in nekaj naključnosti. Poleg vzreje lahko Axiom Zen, podjetje, ki stoji za igro, ustvari do 50.000 mačk z vnaprej določenimi lastnostmi. Obstaja trg za nakup in prodajo mačk in še en za najem mačk za vzrejo. Več o tekmi si lahko preberete tukaj.

Block Science je podjetje za tehnološko raziskovanje in analitiko, specializirano za oblikovanje in oceno decentraliziranih ekonomskih sistemov. Analiza vidikov gospodarstva CryptoKitties se je zdela odlična priložnost za izboljšanje orodij za pridobivanje podatkov in hkrati pridobivanje nekaterih resničnih podatkov iz žive (in živahne!) Decentralizirane aplikacije.

Ta spletna objava je razdeljena na dva dela:

  • Prvi del zajema tehnične vidike, povezane z odvzemom in preoblikovanjem podatkov iz verige Ethereum.
  • Drugi del (ta objava) vsebuje dejansko analizo nekaterih podatkov o igrah.

Analiza podatkov

Analiza smo začeli z ustvarjanjem podatkovnega okvira z vsemi vpisi v dnevnike, zabeleženimi med bloki 4605167 in 5374870, s tremi pametnimi pogodbami CryptoKitties: osnovna mehanika igre, dražba prodaje in dražba siringa (kjer igralci svoje mačke oddajajo drugim, da se razmnožujejo s ). Iz štetja (graf 1) pridemo do dveh zanimivih ugotovitev:

Slika 1 - Število pogostnosti dogodkov CryptoKitties
  1. Dogodek Nosečnost se zgodi veliko pogosteje kot AuctionSuccessful dogaditev pametne pogodbe o dražbi siring. To naj bi pomenilo, da se večina vzreje dogaja med mačkami, ki pripadajo istemu igralcu, saj iz izvorne kode igre vemo, da vsaka uspešna dražba parjenja povzroči nosečnost; in
  2. Dogodek prenosa je le 6% pogostejši od seštevanja dogodkov, ki ga povzročajo - iz izvorne kode vemo, da vsaka dražba, ustvarjena ali preklicana, vsako rojstvo in vsaka prodaja povzroči prenos. To pomeni, da 6% prenosov poteka prek kakšnega drugega mehanizma kot uradne pametne pogodbe - na primer igralci, ki darujejo mačke prijateljem. Ta odstotek bi se moral povečati, ko bodo nove igre, zgrajene na vrhu CryptoKitties, postale dovolj priljubljene, da bodo igralci na primer začeli izgubljati svoje mačke; ali ko pridejo decentralizirane borze z naprednejšimi trgovinskimi funkcijami, ki omogočajo, da se na njih uvrstijo kriptovalute.

Ekonomika rojstva mačk

Ko vidimo obstoj ekonomske komponente okoli rojstva novih mačk, podrobneje preučimo ta postopek. Ko dve mački vzrejata, se na noseči mački nastavi spremenljivka, ki pove, na katerem bloku bo nosečnost zaključena. Vendar v omrežju Ethereum ni inherentnega časovnika, ki bi omogočil, da se del kode samodejno izvede v določenem bloku. To pomeni, da mora nekdo poklicati funkcijo v igralni pametni pogodbi, ki "rodi" novo mačko. To je namen funkcije GiveBirth: ko ga pokliče, preveri, ali je nosečnost dosegla svoj potek. Šele ko se pokliče funkcija GiveBirth, se geni potomcev določijo z algoritmom zaprtega izvora. Da bi zmanjšali možnosti igralcev, ki igrajo sistem, so razvijalci ustvarili spodbujevalni mehanizem za poklic GiveBirth takoj, ko je nosečnost končana.

Ker ta funkcija GiveBirth () vključuje naključni element, je kritično, da se pokliče hitro po pričakovanem času rojstva (v 250 blokih ali približno 30 minut). Če razpis traja dlje, slabim akterjem ponuja priložnost, da "na novo" preusmerijo naključni element svoje genske kombinacije in pridobijo nepravično prednost pred drugimi rejci. Da se to ne bi zgodilo, omogočimo vsem, da pokličejo GiveBirth () in celotnemu naročnini, ki uspešno rodi novega mucka, damo celotno pristojbino za rojstvo. (vir)

Omemba roka 250 blokov pomeni, da CryptoKitties uporablja vir hash bloka pred pričakovanim blokom kot vir entropije za določitev genov novih muc. Blokovski heševi so na voljo EVM samo za 256 blokov (~ 250). Po tem klici na blockhash vrnejo nič. To pomeni, da če spodbuda za zunanje agente ne obstaja, bi lahko igralec simuliral rojstvo nove mucke in če rezultat ni bil všeč, počakajte na 256 blokov in poskusite znova.

Posodobitev (19. avgust 2018): nedavna objava prispevka Erays nas navaja, da je ta gospodarska spodbuda še pomembnejša, kot smo mislili prej. Po navedbah prispevka CryptoKitties, če se rojstvo zgodi po obdobju 256 blokov, ne uporablja 'nič' kot vira entropije, temveč trenutno številko bloka. Pomeni, da napadalec ne bi dobil samo ponovnega prevračanja, ampak toliko ponovnih zvijanj, kot so želeli, preprosto s simuliranjem rojstva svoje nove mucke v različnih blokih.

Tako igra pobere pristojbino od vsake vzreje (imenovano porodniška pristojbina) in dovoli, da kateri koli račun Ethereum zahteva to pristojbino tako, da samo pokliče funkcijo GiveBirth na noseči mački na (ali po) pravem bloku. Nova mačka še vedno gre lastniku noseče mačke. Toda vsakdo lahko rodi mačko, katere nosečnostno obdobje se je končalo, in jo za to nadomestilo.

To je povzročilo nastanek "CryptoMidwives", kot jih je poimenoval Michael Zargham: agenti, ki, četudi sami niso igralci igre, opravljajo kritično funkcijo v gospodarstvu CryptoKitties. Koncept ni edinstven za CryptoKitties, zato ga je mogoče posplošiti na "CryptoServices" - oblikovalski vzorec, pri katerem je za to nagrajen račun, ki kliče nekatere funkcije pametne pogodbe.

// Pošljite nadomestilo za bilanco osebi, ki je rodila.
msg.sender.send (autoBirthFee);

Nabor podatkov dogodka nam pokaže, da je večina rojstev povzročenih le z nekaj računi. Na začetku zgodovine igre so bili računi, povezani z AxiomZenom, edini, ki so rodili mucke. S časom so drugi računi začeli klicati metoda giveBirth. Prav tako lahko vidimo, da večino rojstev predstavlja le nekaj babic: oranžno območje na grafikonu 2 predstavlja prvih 5 računov na vsakih 1000 blokov (skupaj 151 računov). Razen trka okoli bloka 4.700.000, AxiomZen in najboljši klicatelji ves čas predstavljajo veliko večino rojstev.

Graf 2 - Sestava uspešnih klicev za oddajo roka čez čas s strani pošiljatelja transakcije

Zdi se, da so rezultati AxiomZen v dejavnostih dobro sovpadali s trenutki povišanja povprečne cene plina pri poslih Ethereum. To je bilo pričakovati, saj povečani stroški porodov naredijo manj privlačne za zunanje dejavnike. Kot odgovor na prezasedenost omrežja v decembru je AxiomZen za nekaj dni povečal pristojbino za rojstvo z 0,002 etra na 0,015 eter, kasneje pa jo znižal na 0,008 etra, kar se je v januarskem vrhuncu dobro držalo.

Vir: https://etherscan.io/chart/gasprice

Ko obogatimo nabor dnevnikov dogodkov z informacijami iz transakcij, ki so jih ustvarile, opažamo, da CryptoMidwives na splošno v pogodbi o igrah ne kličejo funkcije GiveBirth, temveč gre prek posredniške pametne pogodbe. To jim omogoča, da opravijo samo eno transakcijo s pametno pogodbo z zaprtim izvorom, ki funkcijo GiveBirth pokliče tolikokrat, kolikor je zanjo naročeno. Za primer glejte transakcijo 0x6cc717fc ...

Graf 3 - Sestava uspešnih klicev, ki jih prejema prejemnik transakcije čez čas

S podatki, ki so na voljo v blockchainu, lahko celo preučimo prihodke in donosnost teh agentov. Osredotočimo se na prvih 10 CryptoMidwives leta 2018. Račun 0x05be6e… je najvišja uvrstitev po številu rojstev, ki je nedvomno pred konkurenco. Račun 0xa21037… (ki pripada AxiomZen) je na osmem mestu, kar je dobro, saj bi morali delovati le v skrajni sili.

Graf 4 - Število muck, ki jih je prineslo prvih 10 CryptoMidwives leta 2018

Od 11. decembra je nagrada za uspešen porod znašala 0,008 ETH. S temi informacijami lahko izračunamo prihodke vsake od prvih 10 CryptoMidwives.

Graf 5 - Prihodki najboljših 10 CryptoMidwives leta 2018

Vendar pa rojstvo kripto mačk stane pristojbine. Poleg tega je konkurenca na tem trgu huda! Številni poskusi poklicati GiveBirth "prihajajo pozno" - to pomeni, da ko transakcijo rudarji obdelajo, mačka ni več noseča, ker je bila najprej obdelana druga transakcija. Ti pozni prihodi ne jemljejo toliko plina, vendar lahko vseeno stanejo veliko pristojbin. Če odštejemo vse nagrade od nagrad, pridemo do dobička vsake babice. Zanimivo je, da pri tem kazalniku uspešnosti izstopa račun 0x80cfd2…, ki je šesti po prihodku. Jasno so morali najti način, kako prihraniti pri pristojbinah, bodisi s pametnim oblikovanjem pogodb, boljšim časovnim razporedom njihovega posla, boljšo izbiro cene plina ali kombinacijo teh.

Graf 6 - Dobički prvih 10 CryptoMidwives leta 2018

Da bi raziskali hipotezo o pametnem oblikovanju pogodb, smo ustvarili metriko, ki ji rečemo "učinkovitost kod". To je preprosto razmerje muck, dobavljenih na porabljeni plin. Če pogledamo normalizirane vrednosti povprečne učinkovitosti kod za pametne pogodbe, ki jih uporabljajo vrhunske babice os 2018 (graf 7), vidimo, da je med njimi zelo majhna razlika.

Graf 7 - Kodna učinkovitost pametnih pogodb, ki jih uporabljajo vrhunske CryptoMidwives leta 2018

Če namesto da bi izkoristili učinkovitost glede na uporabljeni plin, ga definiramo v smislu dobička (dobiček na dobavljeni mucka), vidimo, da je račun 0x80cfd2 veliko manj učinkovit kot račun 0x05be6e (graf 8). Če predpostavimo podobno učinkovitost kode, bi to pomenilo, da 0x80cfd2 plačuje višje cene plina za svoje transakcije, ki uspešno rodijo mucke.

Graf 8 - Učinkovitost vrhunskih CryptoMidwives leta 2018

Višje cene plina bi lahko razložile višjo donosnost računa 0x80cfd2 - to bi lahko povzročilo, da bodo zmagali na vsaki dirki, da bi dobili rojstvo, v katerem tekmujejo. In res, vsaka transakcija z računa 0x80cfd2 je privedla do rojstva ene ali več muck. Enako ne moremo trditi za 0x05be6e, ki ima veliko pogodb s pametnimi pogodbami, ki ne rodijo nobene mucke.

Graf 9 - Histogram transakcij po računih 0x05be6e in 0x80cfd2 po številu rojenih muck

Vendar provizije, nastale na računu 0x05be6e, ki ne povzročijo rojstva, ne povzročajo samo transakcij, ki izgubljajo vojno s cenami plina. Zdi se, da njihova glavna pametna pogodba 0x39243a zahteva nekakšno periodično interakcijo, ki je z vidika plina zelo draga. Glej na primer transakcijo 0xcc0f970e. Če ne bi šlo za takšno transakcijo, bi 0x05be6e ne vodil le po prihodku, temveč tudi po donosnosti.

Posodobitev (25. maj 2018): nadaljnja analiza kaže, da so transakcije, kot je 0xcc0f970e, tisto, kar omogoča babici pametno pogodbo, da prihrani na plinu pri transakcijah, ki rodijo mucke, z uporabo "nadomestil za skladiščenje" - enaka tehnika za GasToken. Ricardu se moram zahvaliti, da mi je pomagal razbrati to. Zdi se, da pogodba, ki jo uporablja račun 0x80cfd2, izkorišča ta nadomestila, vendar za shranjevanje podatkov v shrambo uporablja drug račun (0x3a91b4…). Natančnejša analiza dobičkonosnosti bi morala upoštevati grozde računov in pametne pogodbe, ki pripadajo enemu agentu.

Izvorno kodo za te analize najdete v prenosnem računalniku Jupyter v našem GitHubu.

Zaključek

Zdi se, da ekonomska spodbuda, da se mačke čim prej rodijo, deluje. Koncentracija rojstnih dogodkov v nekaj računih kaže na to, da so boti ustvarjeni tako, da čim prej rodijo mačke. Vendar se zdi verjetno, da ko bodo bolj pametne babiške pogodbe dobile večjo učinkovitost, bodo morali boti voditi vojno s cenami plina, da bodo ostali konkurenčni. Kar pomeni, da bo končno velik del honorarjev za rojstvo verjetno pristal v rokah rudarjev.

V vsakem primeru je pristojbina za rojstvo CryptoKitties dražja za predvajanje, kot če ta mehanizem ni potreben. Kot prva tovrstna igra, ki je pridobila pomemben oprijem v omrežju Ethereum, bo CryptoKitties zagotovo še nekaj časa navdihnil številne razvijalce. Zanimivo bo videti, kako se nove igre v prihodnosti spopadajo s tovrstnimi izzivi.

Prihodnje delo

Tako kot pri mnogih analizah tudi ta vodi do več vprašanj. Pustite svoje in vaše povratne informacije v komentarjih! Še naprej bomo preučili ta nabor podatkov v prihodnjih člankih.

Graf 10 - toplotni zemljevid transakcij od prvih 10 CryptoMidwives leta 2018, po računu in pametni pogodbi. Kaj vidiš?

Posebna zahvala ekipi Block Science za raziskave, vpogled in pregled.