A Cryptokitties: tudj meg mindent a játékról és lépéseiről

a cryptokitties kriptopénz hírek mycryptoption

A Cryptokitties nem kriptopénzek. Sokkal inkább az Ethereum blokklánc-hálózatán működnek, mint egyedi, nem helyettesíthető tokenek (NFT), tehát minden egyes CryptoKitty egyedi. Minden CryptoKitty egyedülálló és a felhasználó tulajdonában van, a blokkláncon keresztül hitelesített, értéke pedig a piaci kereslet-kínálat alapján változik. A CryptoKitties nem lemásolható, és a felhasználó engedélye nélkül még a játékfejlesztők által sem továbbíthatók.

A CryptoKitties tesztverzióját 2017. október 19-én, az Ethereum hackathon eseményen, az ETH Waterloo-n mutatták be. 2017. december 2-án, a Genesis, a legelső és legkeresettebb macskát 246,9255 ETH-ért (117. 712 dollár) értékesítették.

Az elmúlt évben a DAPP-ok, más néven a decentralizált alkalmazások körül nagy volt a felhajtás. Mint azt valószínűleg te is tudod, a DAPP egyik központi szervezet tulajdonában sem áll, és ez egy várva várt, szükséges paradigmaváltást jelent az egyre centralizáltabb világban.

Ahhoz azonban, hogy a DAPP-ok megkapják a megérdemelt széleskörű figyelmet, egyiküknek áttörést kellett elérnie és nagyszerűvé kellett válnia. (Igen, technikailag a Bitcoin szintén DAPP, de itt nem a kriptovalutákról beszélünk). Persze, több DAPP is volt a Cryptokitties előtt, amelyek figyelmet kaptak, de valamelyiknek ki kellett törnie, és meg kellett ragadnia a közönség figyelmét.

Mi a Cryptokitties?

A Cryptokitties egy blokklánc-alapú virtuális játék, amely lehetővé teszi a játékosok számára, hogy virtuális macskákat szerezzenek, neveljenek és kereskedjenek ezekkel. A játékot a Vancouver székhelyű blokklánc-társaság, az Axiom Zen készítette. Azonban igazán fontos megjegyezni, hogy ez a DAPP első ismert alkalmazása szabadidőre és kikapcsolódásra.

A Cryptokitties értékesítését nagy felhajtás övezte. Az emberek több mint tizenkét millió dollárt költöttek a cryptokitties macskáinak vásárlására. Vannak olyan jelentések is, amelyek szerint voltak olyan személyek, akik több pénzt kerestek a cryptokitties-zel, mintha nyugdíjalapú megtakarításokba fektettek volna.

Számos cikk írt a „cica jelenségről”, melyek szintén jelentős figyelmet szereztek a játéknak.

Minden cica rendelkezik saját, 256 bites egyedi genomkóddal, amelyet genetikai algoritmus felhasználásával minden leszármazott cicához hozzáadnak.

Mi a genetikai algoritmus?

A genetikai algoritmus(GA) egy nem-lineáris optimalizálási problémák megoldására szolgáló optimalizálási technika.  Ugyanúgy működik, ahogyan a biológiai genetika is. Kezdeti esetleges megoldások létrehozásával kezdődik, melyeket a célfüggvény által tesztelnek. Az algoritmus ezután későbbi megoldásokat generál ezekből a kezdeti megoldásokból, olyan biológiai ihletésű tényezők felhasználásával, mint például a kiválasztódás, a keresztezés és a mutáció.

Míg a testünkben lévő gének fehérjékből és különféle egyéb elemekből állnak, a GA-ban számokon ábrázolják őket. Vess egy pillantást az evolúció működésére genetikai algoritmus segítségével. Csak bináris eseteket használunk, azaz azokat az eseteket, amikor a gének 1 és 0 között jeleníthetők meg.

Kiválasztódás:

A kiválasztódás alapvetően azt jelenti, hogy a legjobban teljesítő szülők maradnak meg egyik generációból a másikra. Ezeket a jól teljesítő szülőket részesítik előnyben a szaporodás során. Tehát pl. a kiválasztódás útján kiválasztott két szülő: szülő 1: 1010011000 szülő 2: 1001001010.

Keresztezés

 Itt történik meg az, hogy a két szülő közös változóit választjuk ki, melyeket megkap az utód is. Tehát a példa által így nézne ki: Szülő 1: 1010011000 Szülő 2: 1001001010  Utód: 1000011010. Nagyjából ugyanez történik a valós életben is. Így kapja meg a gyermek az apa és az anya bizonyos vonásait.

 Mutáció

A mutáció az, amikor veszünk egy szülőt, és véletlenszerűen átalakítjuk valamilyen változóval, hogy utódot hozzunk létre. Ennek célja, hogy biztosítva legyen, hogy a rendszer felfedezi az optimális megoldások másféle lehetőségeit is. Szülő: 1010011000 Utód: 0101010001

A Cryptokitties a genetikai algoritmust használja új cicák létrehozásához. A keresztezési mechanizmust használja az utód genomjának generálásához két szülő macska segítségével. Ezt az utód genomot új cica létrehozására használják.

Tehát most, hogy megnéztük a genetikai algoritmus működését, ássunk még mélyebbre, és nézzük meg okos szerződésüket.

A CryptoKitty okos szerződés.

A teljes kód több kisebb szerződésekre oszlik. Ez azért történik így, mert a hatalmas kódrész lehetetlenné tenné a kódkezelést.

A szerződések örökítési fája így néz ki:

contract KittyAccessControl

contract KittyBase is KittyAccessControl

contract KittyOwnership is KittyBase, ERC721

contract KittyBreeding is KittyOwnership

contract KittyAuction is KittyBreeding

contract KittyMinting is KittyAuction

contract KittyCore is KittyMinting

Ahogyan a solidity útmutató kimondja: „Amikor egy szerződés több szerződésből származik, csak egy szerződést jön létre a blokkláncon, és az összes alapszerződésből származó kódot átmásolják a létrehozott szerződésbe.”

Tehát ebben az esetben a KittyCore az a szerződés, amely az összes kódot örökli az alapszerződésekből. Definiáljuk, mit végeznek el ezek a szerződések.

KittyAccessControl

A szerződés speciális szerepeket ad a fejlesztőknek. Ez a szerződés meghatározza a teljes szerződés irányítási rendszerét, semmi köze sincs a játék működéséhez. A szerződés által kijelölt speciális szerepek a következők:

Vezérigazgató: A vezérigazgató átruházhat más szerepeket és megváltoztathatja a függő okos szerződések címeit. Akár a szerződések szünetelésének felfüggesztését is elvégezhetik.

CFO: Pénzt hívhat ki a KittyCore-tól és az aukciós szerződésektől.

COO: Engedélyezhet gen0 kittie-ket aukcióra és promo macskákat hozhat létre (erről később olvashatsz a KittyAuction-nél).

2. CryptokittyBase

A KittyBase a legfontosabb szerződés a „cica meghatározása” szempontjából. Itt állították fel a cicakészítés alapszabályait.

Tehát ezeknek a cryptokittknek  valójában sokféle változóval rendelkező struktúrájuk van.

struct Kitty

{

uint256 genes;

uint64 birthTime;

uint64 cooldownEndBlock;

uint32 matronId;

uint32 sireId;

uint32 siringWithId;

uint16 cooldownIndex;

uint16 generation;

}

A szerződés e része nyomon követi a cica tulajdonosát is. Ezt a következő kódsor végzi:

mapping (uint256 => address) public kittyIndexToOwner;

3. Cryptokitty OwnerShip

Így határozzák meg a KittyOwnerShip-et szerződésükben:

„Ez biztosítja az alapvető nem helyettesíthető token tranzakciókhoz szükséges módszereket, az ERC-721 specifikációs szabványt követve.”

Mi a helyettesíthetőség? A Investopedia az alábbiak szerint határozza meg a helyettesíthetőséget:

„A helyettesíthetőség az áru vagy az eszköz cseréjének lehetősége más, azonos típusú termékekkel vagy eszközökkel.”

Tegyük fel, hogy 20 dollárt kértél kölcsön egy barátodtól. Ha te ugyanúgy 20 dollárost adsz vissza neki, akkor az úgy tökéletes. Valójában akár visszaadhatod úgy is, hogy adsz neki egy 10 dollárost és két darab 5 dollárost. Ez még mindig jól van. A dollárnak helyettesíthető tulajdonságai vannak (bár nem mindig).

Ha azonban kölcsönvetted valakinek az autóját a hétvégére, és amikor visszamész egy másik autót adsz neki vissza, nem a sajátját, akkor ez a személy valószínűleg felpofoz és a saját autóját várja vissza.  Sőt, ha elmentél egy piros Impalával és ugyanúgy egy másik piros Impalával jöttél vissza, de nem ugyanazzal, az sem tökéletes. Az autók ebben a példában nem helyettesíthető eszközök.

4. CryptoKitty Breeding (tenyésztés)

Ez az a szerződés, ahol meghatározzuk azokat a funkciókat, amelyek szükségesek ahhoz, hogy két cica tenyészthessen egy új cicát. Van egy tenyésztési folyamat, majd egy szülési folyamat. Lássuk, hogyan működik mindkettő.

function _breedWith(uint256 _matronId, uint256 _sireId) internal 
 
{
 
    Kitty storage sire = kitties[_sireId];
 
    Kitty storage matron = kitties[_matronId];
 
    matron.siringWithId = uint32(_sireId);
 
    _triggerCooldown(sire);
 
    _triggerCooldown(matron);
 
    delete sireAllowedToAddress[_matronId];
 
    delete sireAllowedToAddress[_sireId];
 
    pregnantKitties++;
 
    Pregnant(kittyIndexToOwner[_matronId], _matronId, _sireId, matron.cooldownEndBlock);
}

Mi történik ebben a kóddarabban?

Először is, vesszünk mind az anya, mind az apa cica azonosítóját vesszük, és az anya „siringwithId” értékével megváltoztatjuk az apa azonosítóját. (Ne feledd: a nem terhes anya siringwithId értéke 0, míg a várandós anyaé a siringwithId az apja azonosítója.)

Ezzel egyidejűleg eggyel nő a terhes macskák száma a rendszerben.

Most nézzük meg, hogyan működik a születési folyamat.

function giveBirth(uint256 _matronId)
    external
    whenNotPaused
    returns(uint256)
{
 
Kitty storage matron = kitties[_matronId];
 
require(matron.birthTime != 0);
 
require(_isReadyToGiveBirth(matron));
 
uint256 sireId = matron.siringWithId
 
Kitty storage sire = kitties[sireId];
 
uint16 parentGen = matron.generation;
    
if (sire.generation > matron.generation) {
        parentGen = sire.generation;
    }
 
uint256 childGenes = geneScience.mixGenes(matron.genes, sire.genes, matron.cooldownEndBlock - 1);
 
address owner = kittyIndexToOwner[_matronId];
    
uint256 kittenId = _createKitty(_matronId, matron.siringWithId, parentGen + 1, childGenes, owner);
 
delete matron.siringWithId;
 
pregnantKitties--;
 
msg.sender.send(autoBirthFee);
 
return kittenId;
 
}

Először is, a funkció ellenőrzi, hogy az anya készen áll-e a szülésre. Ha az anya készen áll a szülésre, akkor a parentGen, más néven a szülő generációja az anya generációjára vagy az apa generációjára lesz beállítva, attól függően, hogy ki a fiatalabb.

Ezután az utód génjeit a geneScience.mixGenes () függvény segítségével hozzák létre. A tenyésztési algoritmus „sooper-sekret”, és a GeneScienceInterface megvalósító szerződéssel kezeli. Az algoritmus zárt forrású és nem nyitott a nyilvánosság számára.

Miután az anya szült, három dolog történik:

  • A várandós macskák száma 1-el csökken
  • Az új gyerek cica tulajdonosa az anya cica tulajdonosa lesz
  • A függvény ezután az „createKitty ()” funkciót veszi igénybe, amelyet a KittyBase-ben kidolgoztak.

5. CryptoKitty aukciók

Itt vannak a macskák aukcióinak vagy licitálásának nyilvános módszerei. A tényleges aukciós funkcionalitást két testvér szerződésben kezelik (az egyik az értékesítés, a másik a szülés), míg az aukciók létrehozása és az ajánlattétel többnyire az alapszerződés ezen aspektusán keresztül történik.

Ebben a szerződésben a fejlesztők különféle nyilvános módszereket határoztak meg macskák aukciójára. A fő aukciós funkcionalitást két testvér szerződésre osztották:

setSaleAuctionAddress ().

setSiringAuctionAddress ()

Ezeket a funkciókat csak a vezérigazgató használhatja.

Az ok, amiért a fejlesztők két testvér szerződést kötöttek, a következő:

„Logikájuk kissé összetett és mindig fennáll a kisebb hibák veszélye. Ha megtartjuk őket saját szerződéseinkben, akkor frissíthetjük őket anélkül, hogy megzavarnánk a cicatulajdon nyomon követését a fő szerződésben.

6. CryptoKitty minting

Emlékszel, hogy mondtuk korábban, hogy a COO hatalommal rendelkezik a promo macskák és gen 0 macskák létrehozására? Ez a szerződés lehetővé teszi ezt számukra.

A létrehozható promo és Gen 0 macskák száma korlátozott. Magában a kódban már jelen volt:

  • uint256 public constant PROMO_CREATION_LIMIT = 5000;
  • uint256 public constant GEN0_CREATION_LIMIT = 45000;

Vess egy pillantást erre a szerződésre:

function createPromoKitty(uint256 _genes, address _owner) external onlyCOO {

    address kittyOwner = _owner;

if (kittyOwner == address(0)) {

         kittyOwner = cooAddress;

    }

    require(promoCreatedCount < PROMO_CREATION_LIMIT);

    promoCreatedCount++;

    _createKitty(0, 0, 0, _genes, kittyOwner);

}

function createGen0Auction(uint256 _genes) external onlyCOO {

    require(gen0CreatedCount < GEN0_CREATION_LIMIT);

    uint256 kittyId = _createKitty(0, 0, 0, _genes, address(this));

    _approve(kittyId, saleAuction);

    saleAuction.createAuction(

        kittyId,

        _computeNextGen0Price(),

        0,

        GEN0_AUCTION_DURATION,

        address(this)

    );

    gen0CreatedCount++;

}

Vizsgáljuk meg a createPromoKitty () függvényt.

Tehát a közelebbi vizsgálat során bizonyos dolgok nyilvánvalóak:

  • A COO bármilyen kívánt promo cicát létrehozhat bármilyen génnel.
  • A COO bárki számára elküldheti a promo cicát.

A createGen0Auction () függvény ellenőrzésekor a következő látható:

  • A COO teljes hatalommal rendelkezik arra vonatkozóan, hogy melyik gen 0 cicát akarja létrehozni.
  • A cica létrehozása után azonban egyenesen az aukcióra kerül.

7. CryptoKitty Core

Ez az a fő szerződés, amely az Ethereum blokkláncán működik.

Ez a szerződés az összes funkciót a korábbi szerződésektől örökli, és meghatározza a saját módszerét is:

function getKitty(uint256 _id)

    external

    view

    returns (

    bool isGestating,

    bool isReady,

    uint256 cooldownIndex,

    uint256 nextActionAt,

    uint256 siringWithId,

    uint256 birthTime,

    uint256 matronId,

    uint256 sireId,

    uint256 generation,

    uint256 genes

)

{

    Kitty storage kit = kitties[_id];

isGestating = (kit.siringWithId != 0);

isReady = (kit.cooldownEndBlock <= block.number);

cooldownIndex = uint256(kit.cooldownIndex);

nextActionAt = uint256(kit.cooldownEndBlock);

siringWithId = uint256(kit.siringWithId);

birthTime = uint256(kit.birthTime);

matronId = uint256(kit.matronId);

sireId = uint256(kit.sireId);

generation = uint256(kit.generation);

genes = kit.genes;

}

Ez a funkció alapvetően egy adott cica összes adatát adja vissza a blokkláncból. Tehát, most, hogy tudjuk, mi történik a színfalak mögött, lássuk, hogyan működik a felület a valós életben.

Hogyan vásárolhatok CryptoKittiest?

Mielőtt a vásárlást elkezdenéd, három dologra van szükséged:

  • Chrome vagy Firefox böngésző.
  • Metamask pénztárca.
  • Ether a Metamask pénztárcájában.

Ez minden, amire szükséged van az elinduláshoz.

Miután megszerezted ezeket a dolgokat, a cicák vásárlása nagyon egyszerű.

Menj a Cryptokitties piacra. Amint belépsz, ezt fogod látni:

Cryptokitties

Ezt követően egyszerűen meg kell vásárolni a cicát. Tegyük fel, hogy nem szereted a kitett cicákat, ilyenkor egyszerűen kereshetsz egy Gen 0 cicát. Ezek a cicák a „Gen 0” fül alatt vannak. Rendben, tehát most, hogy tudod, hogyan kell cryptokitty-t vásárolni, nézzük meg, hogy hogyan „készíthetsz” kiscicákat.

  • Először lépj be a piac „siring” lapjára.
  • Ezután megláthatod az összes cicát, amit nemzéshez lehet használni

Ezt követően egyszerűen ki kell választani azt a cicát, amelyet nemzéshez használnál

 A CryptoKitties gas fogyasztása

Most megvizsgáljuk a játék egyik fontos pontját, ami rengeteg vitát váltott ki, ez az elfogyasztott gas mennyiség és az Ethereum blokkláncának „torlódása”.

Ez a játék a harmadik legnagyobb gast fogyasztó okos szerződés Ethereumban. A cicák puszta népszerűsége komoly kérdéseket vet fel az Ethereum blokkláncán. A macskák iránti növekvő kereslet miatt a blokkláncon történő megerősítetlen tranzakciók száma exponenciálisan nőtt.

Emiatt az Axiom, más néven a Cryptokitties mögött álló társaság kénytelen volt megnövelni a szülési díját. Ezt mondták egyik cikkükben:

„Az izgalom és befogadás amelyet mostanában láttunk, lenyűgöző volt, nem is lehetetnénk boldogabbak! Az Ethereum hálózat azonban teljesen megtelt a játék miatt. A CryptoKitties késésének elkerüsére az egytlen mód a gas árak emelése, így az összes tranzakció gyorsan befejeződhet. Tudjuk, hogy az áremelkedés azt jelenti, hogy néhány embernek le kell lassítania tenyésztést, ami miatt hihetetlenül csalódottak vagyunk. De ki tudja? Lehet, hogy ez a lassulás azt jelenti, hogy jobban fogják szeretni azokat a macskákat, amik már megvannak.”

Noha az Ethereum határozottan szerepet játszik egy decentralizált jövőben, jelenleg egyszerűen nincs eszköze ahhoz, hogy megbirkózzon a megnövekedett mainstream igényekkel. Határozottan keményebben kell dolgozniuk a skálázhatóságukon, hogy továbbléphessenek.

A cryptokitties gazdasági ciklusa

Jaz Liu lenyűgöző cikkével találkozhatunk az interneten, amely dokumentálja a cryptokitties teljes gazdasági ciklusát. Ebben a szakaszban az ő cikkéből szerzett adatokat használjuk fel. Hogyan működik egy olyan játék, amely „ritka dolgok gyűjtésén” alapul? Nos, főleg a „ritkaság” egyszerű fogalmán alapszik.

A felhasználókat érdekel minden furcsaság gyűjtése, sőt, minél ritkább és érdekesebb egy tárgy, annál jobban szeretik ezeket gyűjteni. De akkor felmerül a kérdés, hogy ki dönt arról, hogy mely tulajdonságok ritkák és kívánatosak?

Arthur Camara, a Vancouveri CryptoKitty csapat szoftvermérnöke ezt mondta erről:

„Nem lehet azt mondani, hogy az 1 és 100 közötti cicák ritkák. Az emberek azt gondolják, hogy valamilyen okból fontosabbak más dolgoknál, talán a kinézetük miatt. A játék úgy működik, hogy a leginkább szaporodó kiscicák ezeket a tulajdonságokat népszerűbbé teszik. Tehát, ha sok zöld szemű cicát tenyésztesz, akkor kevésbé lesz ritka és kívánatos. Az emberek bizonyos mértékig ellenőrzik a ritkaságot, és maguk készítik el ezt az értéket. A felhasználók generálják a ritkaság gondolatát a génekkel és a kiscicákkal. „

Tehát, ezt szem előtt tartva, nézzük meg, hogyan fog kinézni a CryptoKitty közgazdaságtan egy tipikus üzleti ciklusban.

A játék üzleti ciklusban

1. szakasz: Növekedés

Ez a kriptokitty gazdaság első szakaszát képviseli. Egy induló cica átlagos költsége 4 dollár volt, egy héten belül pedig 8 dollárra emelkedett.

2. szakasz: Csúcs

Ez a gazdaság második szakasza, amikor a kereslet meghaladja az összes várakozást, és a DAPP mainstreamé válik. A kereslet annyira nagy volt, hogy „eltorlódott” miatta az Ethereum blokklánca.

3. szakasz: Recesszió

A növekedés elkerülhetetlen recesszióba került. A vásárolt kiscicák száma határozottan csökkent az elmúlt napokban.

4. szakasz: Depresszió

A cryptokitties eléri majd az abszolút mélypontot, mielőtt helyrejönne? Ez nem egyértelmű. Egy dolog azonban határozottan nyilvánvaló. Népszerűségük miatt ezt nehéz elképzelni.

Következtetés

Nem túlzás azt mondani, hogy a cryptokitties nagy port kavart szerte a vilgon. Amit itt láttunk a játék által, az a blokklánc első népszerű alkalmazása tisztán szabadidős formában. A közüzemi alkalmazások készítésén túl ez tipikusan az az alkalmazás, amely valóban szuper mainstreamré válhat.

Ez azonban nem az egyetlen lecke, amelyet megtanított nekünk a játék. Mostmár mindannyian tudjuk, hogy a skálázhatóságon feltétlenül dolgozni kell még. Ha az Ethereum a jövőben meg tudja oldani ezeket a kérdéseket (sharding, plasma stb. felhasználásával), akkor a DAPP-ok valóban áttörést eredményezhetnek, és a zeitgeist lényeges részévé válhatnak.

Csatlakozz Hozzánk Facebookon is: Magyar Bitcoin és Altcoin Csoport (10.000+ tag)és Crypto Bitcoin Hungary (5000+ Tag)


Mások ezeket is olvasták! 

Olvasd el a legnépszerűbb tőzsdékről szóló értékelést és véleményeket! 

Még több cikk