Preskúmanie CryptoKitties - Časť 2: The CryptoMidwives

Toto je druhá časť blogového príspevku o extrakcii a analýze údajov z blockchainu Ethereum. Ak ste si prečítali časť 1, môžete preskočiť úvod

intro

Ak toto čítate, pravdepodobne ste už počuli o hre, ktorá v posledných mesiacoch upútala pozornosť všetkých na sieti Ethereum: CryptoKitties!

Stručne povedané, hra pozostáva zo zhromažďovania virtuálnych mačiek. Mačky sú tvorené hráčmi hry, ktorí môžu chovať dve mačky, aby vytvorili novú. Každá mačka má svoju vlastnú genetickú sekvenciu, ktorá určuje ich fyzikálne vlastnosti. Ich genóm je funkciou génov ich rodičov plus určitá náhodnosť. Okrem chovu môže spoločnosť Axiom Zen, spoločnosť za hrou, vytvoriť až 50 000 mačiek s preddefinovanými charakteristikami. Existuje trh na nákup a predaj mačiek a ďalší na „prenájom“ mačiek na chovné účely. Viac informácií o hre si môžete prečítať tu.

Block Science je spoločnosť zaoberajúca sa technologickým výskumom a analýzou, ktorá sa špecializuje na navrhovanie a hodnotenie decentralizovaných ekonomických systémov. Analýza aspektov ekonomiky CryptoKitties sa javila ako veľká príležitosť na vylepšenie našich nástrojov na extrakciu údajov a zároveň získanie rúk z niektorých údajov zo skutočného sveta zo živej (a živej!) Decentralizovanej aplikácie.

Tento blogový príspevok bol rozdelený na dve časti:

  • Časť 1 sa týka technických aspektov týkajúcich sa získavania a transformácie údajov z blockchainu Ethereum.
  • Časť 2 (tento príspevok) obsahuje aktuálnu analýzu niektorých herných údajov.

Analýza údajov

Začali sme svoju analýzu vytvorením dataframe so všetkými záznamami v denníku zaznamenanými medzi blokmi 4605167 a 5374870 pomocou troch inteligentných kontraktov CryptoKitties: hlavná mechanika hry, aukcia predaja a aukcia aukcie (kde si hráči „prenajímajú“ svoje mačky, aby ich chovali s ostatnými ). Z počtu (graf 1) prichádzame k dvom zaujímavým zisteniam:

Graf 1 - Počet frekvencií udalostí CryptoKitties
  1. Gravidná udalosť sa vyskytuje oveľa častejšie ako udalosť aukcie úspešnej aukcie inteligentnej aukcie aukcie. To by malo znamenať, že k najväčšiemu množeniu dochádza medzi mačkami patriacimi tomu istému hráčovi, pretože zo zdrojového kódu hry vieme, že každá úspešná aukčná aukcia vedie k tehotenstvu; a
  2. Udalosť prevodu je iba o 6% častejšia ako súčet udalostí, ktoré ju spôsobujú - zo zdrojového kódu vieme, že každá vytvorená alebo zrušená aukcia, každé narodenie a každý predaj vedú k prevodu. To znamená, že 6% prevodov sa uskutočňuje prostredníctvom iného mechanizmu, ako sú oficiálne inteligentné zmluvy - napríklad prostredníctvom darcov, ktorí rozdávajú mačiatka priateľom. Toto percentuálne zvýšenie by sme mali vidieť, keď sa nové hry postavené na platforme CryptoKitties stanú dostatočne populárnymi, takže hráči napríklad v prípade výziev stratia svoje mačky; alebo akonáhle sa objavia decentralizované burzy s pokročilejšími obchodnými funkciami, ktoré umožňujú kótovanie na nich.

Ekonomika pôrodov pre mačiatka

Keď vidíme existenciu ekonomickej zložky okolo vzniku nových mačiek, pokračujeme v štúdiu tohto procesu podrobnejšie. Keď sa dve mačky množia, nastaví sa na tehotnú mačku premenná, ktorá hovorí o tom, v akom bloku bude tehotenstvo ukončené. V sieti Ethereum však nie je vlastný časovač, ktorý umožňuje, aby sa časť kódu automaticky vykonala v určitom bloku. To znamená, že niekto musí volať do hry inteligentnú zmluvu, ktorá „rodí“ novú mačku. Toto je účel funkcie pôrod: keď sa zavolá, skontroluje, či tehotenstvo dosiahlo svoj priebeh. Gény potomstva sa určia algoritmom uzavretého zdroja iba vtedy, keď sa nazýva funkcia giveBirth. Aby sa znížila pravdepodobnosť, že si hráči hrajú so systémom, vývojári vytvorili stimulačný mechanizmus na to, aby sa dalo rodiť hneď po ukončení tehotenstva.

Pretože táto funkcia giveBirth () obsahuje náhodný prvok, je dôležité, aby sa volala rýchlo po očakávanom pôrodnom čase (do 250 blokov alebo približne 30 minút). Ak výzva trvá dlhšie, poskytuje zlým hercom príležitosť „znovu prevrátiť“ náhodný prvok ich genetickej kombinácie a získať nespravodlivú výhodu voči iným chovateľom. Aby sme tomu zabránili, umožňujeme komukoľvek zavolať giveBirth () a celý poplatok za porodenie dávame prvému volajúcemu, ktorý úspešne narodil nové mačiatko. (Zdroj)

Zmienka o termíne 250 blokov znamená, že CryptoKitties používa hash bloku pred očakávaným pôrodným blokom ako zdroj entropie na určenie génov nových mačiatok. Blokové hashy sú k dispozícii pre EVM iba pre 256 blokov (~ 250). Potom sa volania na blokovanie vrátia nula. To znamená, že ak neexistuje motivácia pre externých agentov, hráč by mohol simulovať narodenie novej mačiatka, a ak sa im výsledok nepáčil, počkajte 256 blokov a skúste to znova.

Aktualizácia (19. augusta 2018): nedávna publikácia dokumentu Erays nás vedie k presvedčeniu, že táto ekonomická motivácia je ešte dôležitejšia, ako sme si pôvodne mysleli. Podľa novín, ak k narodeniu dôjde po perióde 256 blokov, CryptoKitties nepoužíva 'nulu' ako zdroj entropie, ale skôr ako aktuálne číslo bloku. Znamená to, že útočník by nielenže získal druhé opakované hodenie, ale aj toľko opakovaných hodení, koľko chcel, jednoducho simuláciou narodenia svojej novej mačičky v rôznych blokoch.

Preto hra vyberá poplatok z každého chovu (nazývaný poplatok za porod) a umožňuje každému účtu Ethereum požadovať tento poplatok jednoduchým volaním funkcie giveBirth na tehotnú mačku v (alebo po) správnom bloku. Nová mačka stále ide k majiteľke tehotnej mačky. Ktokoľvek však môže porodiť mačku, ktorej tehotenstvo sa skončilo a môže sa za ňu odškodniť.

To viedlo k vzniku „CryptoMidwives“, ako ich nazval Michael Zargham: agenti, ktorí, aj keď sami nie sú hráčmi hry, plnia v ekonomike CryptoKitties kritickú funkciu. Táto koncepcia nie je jedinečná pre CryptoKitties a mohla by sa zovšeobecniť na „CryptoServices“ - návrhový vzor, ​​pri ktorom je za to ocenený účet, ktorý volá určité funkcie inteligentnej zmluvy.

// Za vyrovnávací poplatok pošlite osobe, ktorá sa narodila.
msg.sender.send (autoBirthFee);

Súbor údajov denníka udalostí ukazuje, že väčšina pôrodov je spôsobená iba niekoľkými účtami. Na začiatku histórie hry boli účty spojené s AxiomZen jediné, ktoré porodili mačiatka. Postupom času začali iné účty volať metódu giveBirth. Vidíme tiež, že väčšinu pôrodov tvorí iba niekoľko pôrodných asistentiek: oranžová oblasť v grafe 2 predstavuje päť najlepších účtov v každých 1000 blokoch (celkom 151 účtov). Okrem špice okolo bloku 4 400 000, spoločnosť AxiomZen a najvyšší volajúci po celý čas tvoria väčšinu narodených detí.

Graf 2 - Zloženie úspešných volaní na pôrod v priebehu času odosielateľom transakcie

Zdá sa, že prudký nárast aktivity spoločnosti AxiomZen dobre koreluje s momentmi zvýšenia priemernej ceny transakcií s etérom. Dalo sa to očakávať, pretože zvýšené náklady na pôrod znamenajú, že je pre externých agentov menej atraktívna. V reakcii na preťaženie siete v decembri spoločnosť AxiomZen zvýšila poplatok za porod za pár dní z 0,002 éteru na 0,015 éteru a neskôr ho znížila na 0,008 éteru, čo sa dobre udržalo počas januárového vrcholu.

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

Keď obohatíme súbor údajov denníka udalostí o informácie z transakcií, ktoré ich vygenerovali, zistíme, že vo všeobecnosti CryptoMidwives priamo nenazývajú funkciu giveBirth v hernej zmluve, ale skôr prechádzajú sprostredkovanou inteligentnou zmluvou. To im umožňuje vykonať jednu transakciu v rámci inteligentnej zmluvy s uzavretým zdrojom, ktorá na oplátku volá funkciu giveBirth toľkokrát, koľkokrát je to nariadené. Pozrite si príklad transakcie 0x6cc717fc ....

Graf 3 - Zloženie úspešných hovorov na pôrod podľa času príjemcu transakcie

S údajmi dostupnými v blockchaine sa môžeme dokonca pozrieť na príjmy a ziskovosť týchto agentov. Zamerajme sa na 10 najlepších CryptoMidwives roku 2018. Účet 0x05be6e ... je najvyššie hodnotenie v počte narodení, jednoznačne pred konkurenciou. Účet 0xa21037… (ktorý patrí spoločnosti AxiomZen) je na ôsmom mieste, čo je dobré, pretože by mali konať iba ako posledná možnosť.

Graf 4 - Počet mačiatok dodaných medzi 10 najlepších CryptoMidwives roku 2018

Od 11. decembra je odmena za úspešné narodenie 0,008 ETH. Na základe týchto informácií môžeme vypočítať príjmy z 10 najlepších CryptoMidwives.

Graf 5 - Príjmy z 10 najlepších CryptoMidwives roku 2018

Poplatok za narodenie kryptomotítok však stojí poplatky. Konkurencia na tomto trhu je navyše tvrdá! Veľa pokusov o volanie giveBirth „dorazí neskoro“ - to znamená, že keď je transakcia spracovaná baníkmi, mačka už nie je tehotná, pretože prvá transakcia bola spracovaná ako prvá. Tieto neskoré príchody nezaberajú toľko plynu, ale stále môžu stáť značné poplatky. Odčítaním všetkých týchto poplatkov od odmeny dostávame zisk každej pôrodnej asistentky. Je zaujímavé, že v tomto ukazovateli výkonnosti vyniká účet 0x80cfd2…, ktorý je šiestym príjmom. Je zrejmé, že museli nájsť spôsob, ako ušetriť poplatky, či už prostredníctvom inteligentného návrhu zmluvy, lepšieho načasovania vysielania ich transakcií, lepšieho výberu ceny plynu alebo ich kombináciou.

Graf 6 - Zisky top 10 CryptoMidwives roku 2018

Aby sme preskúmali hypotézu inteligentného návrhu zmluvy, vytvorili sme metriku, ktorú nazývame „účinnosť kódu“. Jedná sa o jednoduchý pomer dodávaných mačiatok na použitý plyn. Ak sa pozrieme na normalizované hodnoty priemernej efektívnosti kódu pre inteligentné zmluvy, ktoré používajú najvyššie porodné asistentky os 2018 (graf 7), medzi nimi vidíme veľmi malý rozdiel.

Graf 7 - Kódová účinnosť inteligentných kontraktov používaných najvyššími CryptoMidwives z roku 2018

Ak namiesto definovania efektívnosti z hľadiska použitého plynu definujeme ju ako zisk (zisk za dodanú mačičku), vidíme, že účet 0x80cfd2 je oveľa menej efektívny ako účet 0x05be6e (graf 8). Za predpokladu podobnej účinnosti kódu by to znamenalo, že 0x80cfd2 platí za svoje transakcie vyššie ceny plynu, ktoré úspešne rodia mačiatka.

Graf 8 - Účinnosť top CryptoMidwives z roku 2018

Vyššie ceny plynu by mohli vysvetliť vyššiu ziskovosť účtu 0x80cfd2 - mohlo by to viesť k tomu, že vyhrá každú rasu, aby porodil, v ktorej súťažia. A skutočne každá transakcia z účtu 0x80cfd2 vyústila do narodenia jednej alebo viacerých mačiatok. To isté sa nedá povedať o 0x05be6e, ktorý má veľké množstvo transakcií so svojimi inteligentnými zmluvami, ktoré nenarodia žiadne mačiatka.

Graf 9 - Histogram transakcií podľa účtov 0x05be6e a 0x80cfd2 podľa počtu narodených mačiatok

Poplatky za účet 0x05be6e, ktoré nemajú za následok žiadne narodenia, však nie sú spôsobené iba transakciami, ktoré stratia cenovú vojnu o ceny plynu. Zdá sa, že ich hlavná inteligentná zmluva, 0x39243a, vyžaduje určitý druh pravidelnej interakcie, ktorá je z hľadiska plynu veľmi nákladná. Pozri napríklad transakciu 0xcc0f970e. Keby to nebolo pre tento druh transakcie, 0x05be6e by nielen viedla poradie výnosov, ale aj ziskovosť.

Aktualizácia (25. mája 2018): ďalšia analýza naznačuje, že transakcie, ako je 0xcc0f970e, umožňujú inteligentnej zmluve pôrodnej asistentky ušetriť na plyne z transakcií, pri ktorých vznikajú mačiatka, a to pomocou „náhrad za skladovanie“ - rovnaká technika ako v prípade GasToken. Musím sa poďakovať Ricardovi, že mi to pomohol prísť. Zmluva použitá pre účet 0x80cfd2 sa tiež zdá, že využíva tieto vrátené prostriedky, ale na ukladanie údajov do úložiska používa iný účet (0x3a91b4…). Presnejšia analýza ziskovosti by musela brať do úvahy zoskupenia účtov a inteligentné zmluvy patriace jednému agentovi.

Zdrojový kód týchto analýz nájdete v notebooku Jupyter v našom GitHub.

záver

Zdá sa, že ekonomická motivácia vytvorená s cieľom zabezpečiť, aby sa mačky narodili čo najskôr, funguje. Koncentrácia udalostí pri narodení v niekoľkých účtoch naznačuje, že pre čo najrýchlejšie porodenie mačiek boli vytvorené roboty. Zdá sa však pravdepodobné, že akonáhle už nebudú existovať žiadne ďalšie výhody, ktoré by bolo možné získať z múdrejších zmlúv o pôrodných asistentkách, robotníci budú musieť viesť vojnu s cenami plynu, aby zostali konkurencieschopní. Čo znamená, že nakoniec veľká časť poplatkov za porodenie pravdepodobne skončí v rukách baníkov.

V každom prípade poplatok za porodenie robí hru CryptoKitties drahšou, než keby tento mechanizmus nebol potrebný. CryptoKitties ako prvá hra svojho druhu, ktorá získala výraznú trakciu v sieti Ethereum, bude určitú dobu určite inšpirovať mnohých vývojárov. Bude zaujímavé vidieť, ako nové hry zvládnu tento druh problémov v budúcnosti.

Budúca práca

Tak ako v prípade mnohých analýz, aj táto vedie k ďalším otázkam. Zanechajte svoje pripomienky a svoje pripomienky v komentároch! V budúcich článkoch sa budeme naďalej zaoberať týmto súborom údajov.

Graf 10 - Prehľad transakcií z 10 najlepších CryptoMidwives z roku 2018 podľa účtu a inteligentnej zmluvy. Čo vidíš?

Osobitné poďakovanie tímu Block Science za výskum, informácie a prehľady.