CryptoKitties felfedezése - 2. rész: A CryptoMidwives

Ez a blogbejegyzés második része, amely az Ethereum blockchain-ból származó adatok kinyerésére és elemzésére szolgál. Kihagyhatja az Intro-t, ha elolvasta az 1. részt

Intro

Ha ezt olvassa, valószínűleg hallott már a játékról, amely az elmúlt néhány hónapban mindenki figyelmét felhívta az Ethereum hálózatra: CryptoKitties!

Röviden: a játék virtuális macskák gyűjtéséből áll. A macskákat a játék játékosai készítik, akik két macskát tenyészthetnek, hogy újat hozzanak létre. Minden macskának megvan a saját genetikai szekvenciája, amely meghatározza fizikai tulajdonságaikat. Genomjuk a szüleik génjeinek függvénye, plusz némi véletlenszerűség. A tenyésztésen kívül akár 50 000 előre meghatározott tulajdonságokkal rendelkező macskát is létrehozhat az Axiom Zen, a játék mögött álló cég. Van egy piac macskák vételére és eladására, valamint egy másik macskák tenyésztési célú bérbeadására. A játékról itt olvashat bővebben.

A Block Science egy decentralizált gazdasági rendszerek tervezésére és értékelésére szakosodott technológiai kutató és elemző cég. A CryptoKitties gazdaság szempontjainak elemzése nagyszerű lehetőségnek tűnt az adatkitermelő eszközök fejlesztésében, miközben kezünkbe vett néhány valós adatot élő (és élénk!) Decentralizált alkalmazásból.

Ez a blogbejegyzés két részre oszlik:

  • Az 1. rész az Ethereum blokkláncból származó adatok kinyerésével és átalakításával kapcsolatos technikai szempontokat tartalmazza.
  • A 2. rész (ez a bejegyzés) néhány játék adatainak tényleges elemzését tartalmazza.

Az adatok elemzése

Az elemzést azzal kezdtük, hogy adatkeretet készítettünk, amelyben a naplóbejegyzések a 4605167 és 5374870 blokkok között kerültek rögzítésre a három CryptoKitties intelligens szerződés alapján: a játék alapvető mechanikája, az eladási aukció és a siring aukció (ahol a játékosok „bérbe adják” magukat mások számára, hogy tenyésztjenek) ). A számlálásból (1. ábra) két érdekes eredményre juthatunk:

1. ábra - A CryptoKitties események gyakorisági száma
  1. A Terhes esemény sokkal gyakrabban fordul elő, mint az siring aukciós intelligens szerződés AuctionSuccessful eseménye. Ez azt jelenti, hogy a legtöbb tenyésztés ugyanahhoz a játékoshoz tartozó macskák között zajlik, mivel a játék forráskódjából tudjuk, hogy minden sikeres siringárverés terhességet eredményez; és
  2. A transzfer esemény csak 6% -kal gyakoribb, mint az eseményt okozó események összege - a forráskódból tudjuk, hogy minden létrehozott vagy lemondott aukció, minden születés és minden eladás transzfert eredményez. Ez azt jelenti, hogy az átruházások 6% -ára valamilyen más mechanizmuson keresztül kerül sor, mint a hivatalos intelligens szerződésekre - például a játékosoknak, akik kicsapatot adnak a barátoknak. Ezt a százalékos növekedést akkor kell látni, amikor a CryptoKitties tetejére épített új játékok elég népszerűvé válnak, hogy a játékosok például kihívások során elveszítsék macskáikat; vagy ha egyszer megjelennek a fejlettebb kereskedelemmel bíró decentralizált tőzsdék, amelyek lehetővé teszik a kripto-házak felsorolását.

A Kitties szülésének közgazdasági

Látva az új macskák születése körüli gazdasági elem létezését, ezt a folyamatot részletesebben megvizsgáljuk. Amikor két macska tenyészt, a várandós macskán egy változót kell megadni, amely azt mondja, hogy a terhesség melyik blokkja fejeződik be. Az Ethereum hálózatban azonban nincs olyan időzítő, amely lehetővé tenné a kóddarab automatikus végrehajtását egy adott blokkban. Ez azt jelenti, hogy valakinek meg kell hívnia egy olyan funkciót a játék intelligens szerződésében, amely "szül" az új macskának. Ez az giveBirth funkció célja: híváskor ellenőrzi, hogy a terhesség elérte-e a pályáját. Csak akkor, ha az giveBirth függvényt hívják, az utódok géneit meghatározzák egy zárt forrású algoritmus. Annak érdekében, hogy csökkentsék a játékosok esélyét a rendszer játékra, a fejlesztők létrehoztak egy ösztönző mechanizmust a giveBirth hívására, mihelyt a terhesség befejeződött.

Mivel ez a giveBirth () függvény véletlenszerű elemet tartalmaz, kritikus fontosságú, hogy a várható születési idő után gyorsan hívja (250 blokkon belül, vagy kb. 30 perc alatt). Ha a hívás tovább tart, ez lehetőséget ad a rossz szereplőknek arra, hogy genetikai kombinációjuk véletlenszerű elemét újragörgetik, és tisztességtelen előnyt szerezzenek más tenyésztőkkel szemben. Annak érdekében, hogy ez ne történjen meg, megengedjük, hogy bárki felhívja a giveBirth () hívást, és a teljes szülési díjat az első hívónak fizeti, aki sikeresen születi az új cica. (forrás)

A 250 blokk határidejének megemlítése azt jelenti, hogy a CryptoKitties az elvárt születési blokkot megelőző blokk hash-ot használja az entrópia forrásaként az új cica gének meghatározására. A blokk-kivonat csak az EVM-hez érhető el 256 blokknál (~ 250). Ezután a blokkoló hívások nullára térnek vissza. Ez azt jelenti, hogy ha nem létezik ösztönzés a külső ügynökök számára, akkor a játékos szimulálhatja egy új cica születését, és ha nem tetszett nekik az eredmény, várjon 256 blokkot, és próbálja újra.

Frissítés (2018. augusztus 19.): az Erays cikk nemrégiben kiadott kiadása arra késztet minket, hogy ez a gazdasági ösztönző még fontosabb, mint gondoltuk. A cikk szerint, ha a születés a 256 blokk periódus után következik be, a CryptoKitties nem a „nullát” használja az entrópia forrásaként, hanem az aktuális blokk számát. Ez azt jelenti, hogy a támadó nemcsak egy második újratekercset kap, hanem annyi újratekercselést is akart, amennyit csak szeretett volna, egyszerűen azáltal, hogy szimulálta új kiscicájának születését különböző blokkokban.

Tehát a játék minden egyes tenyésztési díjat összegyűjti (úgynevezett születési díjat), és lehetővé teszi, hogy bármely Ethereum-fiók ezt a díjat igényelje, egyszerűen úgy, hogy meghívja a giveBirth funkciót a várandós macskán a megfelelő blokkban (vagy utána). Az új macska továbbra is a várandós macska tulajdonosához kerül. De bárki szülhet egy macskát, amelynek a terhesség ideje befejeződött, és ezzel kompenzációt kaphat.

Ez vezetett a „CryptoMidwives” megjelenéséhez, amint Michael Zargham elnevezte őket: olyan ügynökök, akik még akkor is, ha maguk sem a játék játékosai, kritikus funkciót látnak el a CryptoKitties gazdaságban. A koncepció nem egyedülálló a CryptoKitties számára, és általánosítható a „CryptoServices” kifejezésre - egy olyan tervezési mintára, amelyben az intelligens szerződés bizonyos funkcióit meghívó számla jutalmat kap ennek megszervezéséért.

// Küldje el az egyenlegdíjat annak a személynek, aki a szülés megtörtént.
msg.sender.send (autoBirthFee);

Az eseménynapló-adatkészlet azt mutatja, hogy a legtöbb születést csak néhány fiók okozza. A játék történetének korai szakaszában az AxiomZen-hez kapcsolódó számlák voltak az egyedül a kisgyermekek. Az idő múlásával más fiókok elkezdték a giveBirth módszer hívását. Láthatjuk azt is, hogy csak néhány szülésznő okozza a szülések nagy részét: a 2. ábra narancssárga területe az 1000 blokkból álló öt legfontosabb számot képviseli (összesen 151 számla). A 4.700.000 blokk körüli tüske kivételével az AxiomZen és a legnépszerűbb hívók a szülések döntő többségét képviselik.

2. ábra - A sikeres felhívások összeállítása az idővel, a tranzakció feladója szerint

Úgy tűnik, hogy az AxiomZen aktivitáscsúcsai jól korrelálnak az Ethereum tranzakciók átlagos gázárainak növekedésével. Ez várható volt, mivel a megnövekedett szülési költségek kevésbé vonzóvá teszik a külső ügynököket. A decemberi hálózati torlódásokra adott válaszként az AxiomZen néhány napra növelte a születési díjat 0,002 éterről 0,015 éterre, majd 0,008 éterre csökkentette, amely jól tartott a januári csúcs idején.

Forrás: https://etherscan.io/chart/gasprice

Amikor az eseménynapló adatkészletét az azokat generáló tranzakciókkal kapcsolatos információkkal gazdagítottuk, megfigyeljük, hogy általában a CryptoMidwives nem közvetlenül adja meg a giveBirth függvényt a játékszerződésben, hanem egy közvetítő intelligens szerződést hajt végre. Ez lehetővé teszi számukra, hogy egyetlen tranzakciót hajtsanak végre egy zárt forrású intelligens szerződéshez, amely viszont annyiszor hívja a giveBirth funkciót, ahogyan azt utasítják. Lásd például a 0x6cc717fc tranzakciót.

3. ábra - A sikeres felhívások összeállítása az átvitel időtartama alapján, a tranzakció kedvezményezettje szerint

A blockchain-ban rendelkezésre álló adatokkal megvizsgálhatjuk még ezen ügynökök bevételeit és jövedelmezőségét. Koncentráljunk a 2018 legfontosabb 10 CryptoMidwives-re. A 0x05be6e számla ... a születések számát tekintve a legmagasabb rangú, egyértelműen a verseny előtt. A 0xa21037 számla (amely az AxiomZenhez tartozik) a nyolcadik helyre kerül, ami jó, mert nekik csak utolsó lehetőségként kellene viselkedniük.

4. ábra - A 2018 legfontosabb CryptoMidwives által szállított kislányok száma

December 11 óta a sikeres szülés díja 0,008 ETH. Ezen információk alapján kiszámolhatjuk a tíz legjobb CryptoMidwives bevételét.

5. ábra - A 2018 legfontosabb CryptoMidwives bevételei

A kriptokirálynők szülése azonban díjat számít fel. Emellett a verseny heves a piacon! Számos kísérlet az giveBirth „későn érkezik” felhívása - azaz az ügylet bányászok általi feldolgozásakor a macska már nem várandós, mert először egy másik tranzakciót dolgoztak fel. Azok a későn érkezők nem vesznek annyi gázt, de esetleg jelentős összeget számíthatnak fel díjakban. Az összes ilyen díjat levonva a jutalmakból, az egyes szülésznők nyereségéhez jutunk. Érdekes módon a 0x80cfd2 számla, amely a hatodik bevétel, kiemelkedik ebben a teljesítménymutatóban. Nyilvánvaló, hogy megtaláltak valamit a díjak megtakarításában, akár intelligens szerződés-tervezés, tranzakcióik jobb időzítése, jobb gázárak választása, akár ezek kombinációja révén.

6. ábra - A 2018 legfontosabb CryptoMidwives nyeresége

Az intelligens szerződéstervezési hipotézis vizsgálatához létrehoztunk egy mutatót, amelyet „kódhatékonyságnak” hívunk. Ez a felhasznált gázra jutó kiscicák egyszerű aránya. Ha megvizsgáljuk az intelligens szerződések átlagos kódhatékonyságának normalizált értékeit, amelyeket a legfontosabb szülésznők 2018-ban használnak (7. ábra), látjuk, hogy nagyon kicsi a különbség közöttük.

7. ábra - A 2018 legfontosabb CryptoMidwives által használt intelligens szerződések kódhatékonysága

Ha ahelyett, hogy a hatékonyságot a felhasznált gáz szempontjából definiálnánk, azt profit alapján (a kiszállított kittyre jutó nyereség alapján) definiáljuk, látjuk, hogy a 0x80cfd2 számla sokkal kevésbé hatékony, mint a 0x05be6e számla (8. ábra). Hasonló kódhatékonyságot feltételezve, ez azt jelentené, hogy a 0x80cfd2 magasabb gázárakat fizet azokért a tranzakcióikért, amelyek sikeresen megszületik a kisgyermekek.

8. ábra - A 2018 legfontosabb CryptoMidwives hatékonysága

A magasabb gázárak megmagyarázhatják a 0x80cfd2 számla magasabb jövedelmezőségét - ez azt eredményezheti, hogy minden versenyt megnyernek, hogy megkapják a születési versenyt. És valóban minden, a 0x80cfd2 számláról történő tranzakció egy vagy több kitt megszületését eredményezte. Ugyanez nem mondható el a 0x05be6e-ről, amely nagyszámú tranzakcióval rendelkezik intelligens szerződéseikkel, és amelyek nem adnak semmilyen kismacskát.

9. ábra - A tranzakciók hisztogramja a 0x05be6e és 0x80cfd2 számlák szerint, született kitt szám szerint

A 0x05be6e számlán felmerült, nem születési díjakat azonban nem csak a földgázháborút elvesztő tranzakciók okozzák. Úgy tűnik, hogy a legfontosabb intelligens szerződésük, a 0x39243a, valamiféle időszakos kölcsönhatást igényel, amely a gáz szempontjából nagyon drága. Lásd például a 0xcc0f970e tranzakciót. Ha nem erre a fajta tranzakcióra vonatkozna, akkor a 0x05be6e nemcsak a bevétel rangsorolását, hanem a jövedelmezőséget is vezetné.

Frissítés (2018. május 25.): a további elemzések azt mutatják, hogy a 0xcc0f970e-hez hasonló tranzakciók lehetővé teszik a szülésznő intelligens szerződésével, hogy a tárolási visszatérítések segítségével megtakarítsa a gázokat a kisgyermekeket szülő tranzakciók során - ugyanaz a technika a GasToken mögött. Köszönetet kell mondanom Ricardo-nak, hogy segítette ezt kitalálni. Úgy tűnik, hogy a 0x80cfd2 fiók által használt szerződés is kihasználja ezeket a visszatérítéseket, de egy másik fiók használatával mentheti az adatokat tárolásra (0x3a91b4…). A pontosabb jövedelmezőség-elemzésnek figyelembe kellene vennie az egyetlen ügynökhez tartozó számlacsoportokat és intelligens szerződéseket.

Ezen elemzések forráskódját a Jityter notebookon találja meg a GitHub-ban.

Következtetés

Úgy tűnik, hogy működik a gazdasági ösztönző, amelyet a macskák lehető leghamarabbi megszületésének biztosítására hoztak létre. A születési események néhány számlán történő koncentrációja azt jelzi, hogy robotok jöttek létre a macskák lehető leghamarabbi szülésére. De valószínűnek tűnik, hogy amint az okosabb szülésznői szerződések révén nem lehet további hatékonyságot elérni, a botoknak gázárháborút kell folytatniuk, hogy versenyképesek maradjanak. Ami azt jelenti, hogy a szülési díjak nagy része valószínűleg a bányászok kezébe kerül.

Mindenesetre, a születési díj a CryptoKitties játékát drágábbá teszi, mint ha ez a mechanizmus nem volt szükséges. Mivel az első olyan játék, amely jelentős vonzást szerez az Ethereum hálózaton, a CryptoKitties minden bizonnyal sokáig inspirál számos fejlesztőt. Érdekes lesz látni, hogy az új játékok hogyan kezelik a jövőbeli ilyen kihívásokat.

Jövőbeli munka

Mint sok elemzés esetében, ez további kérdéseket vet fel. Hagyja a véleményét és a visszajelzést a megjegyzésekben! A jövőben tovább fogjuk vizsgálni ezt az adatkészletet.

10. ábra - A tranzakciók hőtérképe a 2018 legfontosabb CryptoMidwives számláján és intelligens szerződésenként. Mit látsz?

Külön köszönet a Block Science csapatnak a kutatásért, betekintésért és áttekintésért.