Lär dig vad är Cryptokitties? Den mest omfattande guiden skriven

Vad är Cryptokitties? Crash Course. Under det senaste året eller så har DAPPs aka Decentralized Applications långsamt fått mycket ånga.

Som du säkert är medveten om ägs inte en DAPP av någon central organisation och det representerar ett välbehövligt paradigmskifte i en alltmer centraliserad värld.

Men för att DAPP skulle få den ordinarie mainstream-exponering de förtjänar, var en av dem tvungen att bryta igenom och göra den stor. (Ja, tekniskt sett är bitcoin också en DAPP, men vi pratar inte om värde-värde här). Visst, det har funnits flera DAPPs tidigare som fick viss exponering men något var tvungen att göra det stort och fånga allmänhetens fantasi.

Ange Cryptokitties.

Vad är Cryptokitties? Snabbkurs

Bildkredit: Cryptokitties

Vad är Cryptokitties?

Cryptokitties är ett blockchain-baserat virtuellt spel som gör det möjligt för spelare att adoptera, uppfostra och handla virtuella katter. Spelet gjordes av Vancouver-baserade blockchainföretaget Axiom Zen. Vad som verkligen är viktigt att komma ihåg är dock att detta är den första kända applikationen av DAPP för fritid och rekreation.

Försäljningen av Cryptokitties har gått igenom taket. Människor har spenderat mer än tolv miljoner dollar på att köpa dessa kryptokitties. Det finns även rapporter om människor som har gjorde mer pengar för handel med cyptokitties än att investera i deras IRA!

Låt oss titta på hur många försäljningar som har gjorts per dag:

Vad är Cryptokitties? Snabbkurs

Bildkredit: KittyExplorer

Flera artiklar har skrivits om “kattfenomenen” och de har också fått betydande main-exponering. Faktum är att till och med Vitalik har kommit in på lagen!

Vad är Cryptokitties? Snabbkurs

Bildkredit: Vitalik Buterin Twitter

Varje kattunge har sin egen unika 256-bitars unika genomkod. Som bärs ner till alla sina nedåtgående kattungar via genetisk algoritm.

Vad är genetisk algoritm?

Den genetiska algoritmen är en optimeringsteknik som används för att lösa icke-linjära optimeringsproblem. Det fungerar ganska mycket som biologisk genetik fungerar. Det börjar med en första generation av kandidatlösningar som har testats mot objektivfunktionen. Algoritmen genererar sedan efterföljande lösningar från dessa överordnade lösningar med hjälp av bioinspirerade operatörer som urval, crossover och mutation.

Medan generna i vår kropp består av proteiner och olika andra element, representeras de i GA via siffror. Så låt oss titta på hur evolution fungerar med genetisk algoritm. Vi använder endast binära fall, dvs. fall där generna kan representeras som 1 och 0.

  • Urval: Urval innebär i princip att behålla de bäst presterande föräldrarna från generation till generation. Dessa välpresterande föräldrar är de som föredras för reproduktion. Så t.ex. de två föräldrarna som valts ut är: Förälder 1: 1010011000 Förälder 2: 1001001010.

  • Crossover: Nästa har vi en crossover. Vad som händer här är att vi väljer de två föräldrarnas vanliga variabler och behåller dem i barnlösningen. Så med vårt exempel: Förälder 1: 1010011000Förälder 2: 1001001010Barn: 1000011010Detta fungerar i stort sett detsamma också i verkliga livet. Så här behåller ett barn vissa egenskaper hos fadern och mamman.

  • Mutation: Mutation är när vi tar en förälder och slumpmässigt muterar några av deras variabler för att skapa ett barn. Detta görs för att säkerställa att systemet kan utforska andra möjligheter för optimala lösningar. Förälder: 1010011000 Barn: 0101010001

Cryptokitties använder den genetiska algoritmen för att skapa en ny kattunge. Den använder crossover-mekanismen för att “fostra” ett genom genom att använda två föräldrakatter. Detta barns genom används för att generera en ny kattunge.

Så nu när vi har tittat på hur den genetiska algoritmen fungerar, låt oss gå ännu djupare och titta på deras smarta kontrakt.

Träna för att bli en Blockchain-utvecklare

Börja din gratis testversion idag!

CryptoKitty Smart Contract.

Du kan läsa huvudkällkoden här.

Innan vi börjar, en enorm rop till James Martin Duffys artikel för förklaringen.

Hela koden är uppdelad i flera mindre kontrakt. Detta görs för att annars skulle det humongösa kodorganet göra kodhantering omöjlig.

Arvsträdet i kontrakten ser ut så här:

kontrakt KittyAccessControl

kontrakt KittyBase är KittyAccessControl

kontrakt KittyOwnership är KittyBase, ERC721

kontrakt KittyBreeding är KittyOwnership

kontrakt KittyAuction är KittyBreeding

kontrakt KittyMinting är KittyAuction

kontrakt KittyCore är KittyMinting

Som den soliditetsguide säger: “När ett kontrakt ärver från flera kontrakt skapas bara ett enda kontrakt i blockchain, och koden från alla baskontrakt kopieras till det skapade kontraktet.”

Så i det här fallet är KittyCore kontraktet som ärver alla koder från baskontrakten. Låt oss definiera vad vart och ett av dessa kontrakt gör.

# 1 Cryptokitty åtkomstkontroll

Du kan kolla in KittyAccessControl-kontrakt här.

Kontraktet tilldelar utvecklarna särskilda roller.

Detta kontrakt anger ledningssystemet för hela kontraktet och har inget att göra med hur spelet fungerar. De särskilda roller som tilldelats av detta kontrakt är:

  • VD: VD kan tilldela andra roller och ändra adresserna till de beroende smarta kontrakten. De kan också pausa upp avtalet (mer om detta lite).
  • CFO: Kan ta ut medel från KittyCore och auktionskontrakten.
  • COO: Kan släppa gen0 kattungar för auktion och promo katter. (vi kommer att utforska detta senare i KittyAuction)

Detta kontrakt har också en “paus” -funktion:

Detta kontrakt har också en “paus” -funktion:

funktion paus () endast offentligtCLevel whenNotPaused {

pausad = sant;

}

Detta ger devs en möjlighet att pausa hela kontraktet om de har att göra med en bugg eller ett hack eller om de uppgraderar hela systemet.

# 2 CryptokittyBase

KittyBase är det viktigaste kontraktet när det gäller “kattdefinition”. Det är här vi sätter grundregler för kattunge.

Så dessa kattungar är faktiskt en struktur med många variabler.

struct Kitty

{

uint256-gener;

uint64 birthTime;

uint64 cooldownEndBlock;

uint32 matronId;

uint32 sireId;

uint32 siringWithId;

uint16 cooldownIndex;

uint16 generation;

}

Låt oss se vad var och en av dessa variabler är.

Vad är Cryptokitties? Snabbkurs

Denna del av kontraktet håller också koll på kattens ägare. Detta görs med följande kodrad:

mapping (uint256 => adress) public kittyIndexToOwner;

# 3 Cryptokitty Ägarskap

Så här definierar de KittyOwnerShip i sitt kontrakt:

”Detta ger de metoder som krävs för grundläggande icke-fungibla token-transaktioner, enligt utkastet till ERC-721 (https://github.com/ethereum/EIPs/issues/721).”

Vad är fungibilitet? Investopedia definierar fungibilitet enligt följande:

“Fungibilitet är en vara eller tillgångs utbytbarhet med andra enskilda varor eller tillgångar av samma typ.”

Så, vad är fungibelt och vad som inte är fungibelt.

Antag att du lånade $ 20 från en vän. Om du returnerar pengarna till honom med EN ANNAN $ 20-räkning, är det helt bra. Faktum är att du till och med kan returnera pengarna till dem i form av 1 $ 10-räkning och 2 $ 5-räkningar. Det är fortfarande bra. Dollarn har fungibla egenskaper (dock inte hela tiden).

Men om du skulle låna någons bil till helgen och komma tillbaka och ge dem någon annan bil i gengäld, kommer den personen troligen att slå i ansiktet. I själva verket, om du gick iväg med en röd Impala och kom tillbaka med en annan röd Impala, är inte ens det gjort. Bilar, i detta exempel, är en icke fungibel tillgång.

Kattungarna i CryptoKitties är icke-svampbara eftersom varje katt inte skapas lika. Du kan inte bara byta ut en katt med en annan. CryptoKitties-tokens följer ERC721-formeln som du kan kolla här.

# 4 CryptoKitty avel

Detta är kontraktet där vi ställer in de funktioner som krävs för att två kattungar ska föda upp och producera en ny kattunge.

Det finns en avelprocess och sedan en födelseprocess.

Låt oss se hur båda fungerar.

funktion _breedWith (uint256 _matronId, uint256 _sireId) intern

{

Kitty lagrings far = kattungar [_sireId];

Kitty lagringsmatrons = kattungar [_matronId];

matron.siringWithId = uint32 (_sireId);

_triggerCooldown (herre);

_triggerCooldown (matron);

ta bort sireAllowedToAddress [_matronId];

ta bort sireAllowedToAddress [_sireId];

gravidKattungar ++;

Gravid (kittyIndexToOwner [_matronId], _matronId, _sireId, matron.cooldownEndBlock);

}

Ok, så vad händer i denna kod?

För det första tas ID: n för både moder- och faderkattungarna för matronId och herre och moderns “syskon medId” ändras till faderns id. (Kom ihåg: en icke-gravid mammas siringwithId är 0 medan den för den gravida mamman, the siringwithId är iden till faren.)

Dessutom ökar antalet gravida kattungar i systemet 1.

Låt oss nu se hur förlossningsprocessen fungerar.

function giveBirth (uint256 _matronId)

extern

whenNotPaused

returnerar (uint256)

{

Kitty lagringsmatrons = kattungar [_matronId];

kräver (matron.birthTime! = 0);

kräver (_isReadyToGiveBirth (matron));

uint256 sireId = matron.siringWithId

Kitty lagring far = kattungar [sireId];

uint16 parentGen = matron.generation;

if (far. generation > matron.generation) {

parentGen = far. generation;

}

uint256 childGenes = geneScience.mixGenes (matron.genes, sire.genes, matron.cooldownEndBlock – 1);

adressägare = kittyIndexToOwner [_matronId];

uint256 kittenId = _createKitty (_matronId, matron.siringWithId, parentGen + 1, childGenes, ägare);

ta bort matron.siringWithId;

gravida kattungar–;

msg.sender.send (autoBirthFee);

return kittenId;

}

För det första kontrollerar funktionen om mamman är redo att föda. Om mamman är redo att föda, är parentGen aka generationen av föräldern inställd på moderns generation eller fars generation, beroende på vem som är yngre.

Därefter skapas barnets gener genom att kalla funktionen genScience.mixGenes (). Avelsalgoritmen är ”sooper-sekret” och hanteras av ett kontrakt som implementerar GeneScienceInterface. Algoritmen är sluten källa och inte öppen för allmänheten.

När mamman har fött tre saker händer:

  • Antalet gravida kattungar minskar med 1 (gravida kattungar -).
  • Ägandet av den nya barnkatten går till ägaren till mammakatten.
  • Funktionen kallar sedan funktionen “createKitty ()” som utvecklades i KittyBase.

# 5 CryptoKitty-auktioner

Här har vi de offentliga metoderna för auktionering eller budgivning på katter eller tillhörande tjänster. Den faktiska auktionsfunktionaliteten hanteras i två syskonkontrakt (ett för försäljning och ett för anhörig), medan auktionsskapande och budgivning förmedlas mestadels genom denna aspekt av kärnavtalet.

I detta avtal har utvecklarna ställt in olika offentliga metoder för auktionering på katter eller för anställningstjänster. Huvudauktionsfunktionaliteten har delats upp i två syskonkontrakt:

Dessa funktioner kan endast anropas av VD.

Anledningen till att utvecklarna skapade två syskonavtal är att enligt dem:

”Deras logik är något komplex och det finns alltid en risk för subtila buggar. Genom att hålla dem kvar i sina egna kontrakt kan vi uppgradera dem utan att störa huvudkontraktet som spårar kattägar. “

# 6 CryptoKitty Minting

Kom ihåg hur vi sa tidigare att COO har makten att skapa promokatter och gen 0-katter?

Detta är kontraktet som gör det möjligt för dem att göra det.

Det finns en gräns för antalet promo- och Gen 0-katter som kan skapas. Det har redan funnits i själva koden:

  • uint256 allmän konstant PROMO_CREATION_LIMIT = 5000;
  • uint256 allmän konstant GEN0_CREATION_LIMIT = 45000;

Låt oss ta en titt på detta kontrakt:

funktion createPromoKitty (uint256 _genes, adress _ägare) endast externt COO {

adress kittyOwner = _ägare;

if (kittyOwner == adress (0)) {

kittyOwner = cooAddress;

}

kräver (promoCreatedCount < PROMO_CREATION_LIMIT);

promoCreatedCount ++;

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

}

funktion createGen0Auction (uint256 _genes) endast extern COCO {

kräver (gen0CreatedCount < GEN0_CREATION_LIMIT);

uint256 kittyId = _createKitty (0, 0, 0, _genes, adress (detta));

_approve (kittyId, saleAuction);

saleAuction.createAuction (

kittyId,

_computeNextGen0Price (),

0,

GEN0_AUCTION_DURATION,

adress (detta)

);

gen0CreatedCount ++;

}

Låt oss undersöka funktionen createPromoKitty ().

Så vid närmare granskning är vissa saker uppenbara:

  • COO kan skapa vilken promokatt de vill ha med vilka gener de vill ha.
  • COO kan skicka promokatten till alla de vill.

När du kontrollerar funktionen createGen0Auction () är följande uppenbart:

  • COO har full makt över vilken gen 0 kattunge de vill skapa.
  • Men när katten har skapats går den direkt till auktion.

# 7 CryptoKitty Core

Detta är huvudkontraktet som löper på Ethereum Blockchain.

Detta kontrakt ärver alla funktioner från tidigare kontrakt OCH det definierar också en egen metod:

funktion getKitty (uint256 _id)

extern

se

returnerar (

bool isGestating,

bool isReady,

uint256 nedkylningIndex,

uint256 nästaActionAt,

uint256 siringWithId,

uint256 birthTime,

uint256 matronId,

uint256 sireId,

uint256 generation,

uint256 gener

)

{

Kitty lagring kit = kattungar [_id];

isGestating = (kit.siringWithId! = 0);

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

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);

gener = kit.gener;

}

Denna funktion returnerar i princip allt för en specifik katt från blockchain.

Så nu när vi vet vad som händer bakom kulisserna, låt oss se hur gränssnittet fungerar i verkligheten.

Hur man köper CryptoKitties?

Innan du börjar med något finns det tre saker du behöver:

  • Chrome eller Firefox Browser.
  • Metamask-plånboken.
  • Ether i din Metamask-plånbok.

Det är verkligen allt du behöver för att komma igång.

När du väl har ordnat dessa saker är det väldigt enkelt att köpa kattungarna.

  • Gå till Cryptokitties Marknad.
  • När du är inne är det här du ser:

    Vad är Cryptokitties? SnabbkursBildkredit: Cryptokitties När du ser en kattunge som du gillar, klicka helt enkelt på den.

  • Efter det är det enkelt att köpa katten.

Antag att du inte gillar någon av kattungarna du ser, så kan du helt enkelt söka efter en Gen 0-kattunge. Dessa kattungar finns under fliken “Gen 0”.

Okej, så nu när du vet hur du köper kattungar, låt oss titta på hur du kan ana dina kattungar.

  • För det första, gå till Fliken “siring” av marknadsplatsen.
  • Efter det kommer du att se alla kattungar som har ställts upp för att passa.Vad är Cryptokitties? SnabbkursBildkredit: Cryptokitties
  • Efter det är det enkelt att välja kattunge som du vill materia med din kattunge.

Gasförbrukning av CryptoKitties.

Nu ska vi titta på en av de rasande diskussionspunkterna som har tagits upp på grund av kryptokitties. Mängden gas som den har förbrukat och hur det har täppt till Ethereum blockchain.

I skrivande stund är det det tredje mest gas-hungriga smarta kontraktet i Ethereum.

Vad är Cryptokitties? Snabbkurs

Bildkredit: ETH bensinstation

Kattungarnas stora popularitet har ställt Ethereum blockchain några allvarliga frågor. På grund av den ökande efterfrågan på kattungarna ökade antalet obekräftade transaktioner på blockchain exponentiellt.

Vad är Cryptokitties? Snabbkurs

Bildkredit: Kvarts

På grund av detta tvingades Axiom, aka företaget bakom cryptokitties, att öka sina födelseavgifter. Så sa de i sin mediumartikel:

”Den spänning och adoption vi har sett den här veckan har varit överväldigande och vi kunde inte vara lyckligare! Ethereum-nätverket är dock helt fullt. Det enda sättet att hålla CryptoKitties i eftersläp är att höja bensinpriserna så att alla transaktioner kan slutföras snabbt. Vi vet att ökade priser kommer att innebära att vissa av er kommer att behöva sakta ner avelsregimen, och vi är otroligt besvikna över det. Men vem vet? Kanske kommer denna avmattning bara att innebära att du kommer att älska kattungarna du redan har så mycket mer ”

Vi lärde oss alla en mycket värdefull läxa från hela avsnittet.

Även om Ethereum definitivt kommer att spela en roll i en decentraliserad framtid, just nu, har det helt enkelt inte medel för att klara av ökade vanliga krav. De måste definitivt arbeta mer med sin skalbarhet för att gå vidare.

Cryptokitties ekonomiska kretslopp

Vi stötte på den här fascinerande artikeln av Jaz Liu på medium. Den dokumenterar hela den ekonomiska cykeln av kryptokittier. Vi kommer att ta data från hennes artiklar för just detta avsnitt.

Hur fungerar något spel som bygger på “samla sällsynta saker”? Det fungerar på det enkla begreppet ”knapphet”.

Användarna är intresserade av att samla in så sällsynta samlarobjekt som möjligt. Men då väcker det frågan, vem som faktiskt bestämmer vilka egenskaper som är sällsynta och önskvärda?

Det här har Arthur Camara, en programvaruutvecklare på CryptoKitty-teamet i Vancouver, sagt om det:

”Vi har inte sagt att kattungar 1–100 är sällsynta. Det är människors perspektiv på knapphet. Folk tycker bara att de är viktigare av någon anledning, kanske är det hur de ser ut. Sättet på spelet är att kattungarna som odlar mest kommer att göra dessa egenskaper mer populära. Så om du föder upp många kattungar med gröna ögon blir det mindre knappt. Människor kontrollerar den bristen i en sätt, och skapa det värdet själva. Det är användarna som skapar den idén om knapphet med generna och med sina kattungar. ”

Så med tanke på det, låt oss se hur CryptoKitty-ekonomin kommer att spela ut i en typisk konjunkturcykel.

Vad är Cryptokitties? Snabbkurs

Bildkredit: Medium

Steg 1: Tillväxt

Detta representerar det första steget i cryptokitty-ekonomin. Den genomsnittliga kostnaden för en startkatt var $ 4 men inom en vecka steg den till $ 8.

Steg 2: topp

Detta är det andra steget i ekonomin när efterfrågan överstiger alla förväntningar och DAPP blir mainstream. Efterfrågan var så mycket att den täppte till Ethereum Blockchain.

Steg # 3 lågkonjunktur

Vad är Cryptokitties? Snabbkurs

Bildkredit: Kitty Explorer

Och efter att tillväxten kommer till den oundvikliga lågkonjunkturen.

Som du kan se i diagrammet har antalet köpta kattungar definitivt minskat under de senaste dagarna.

Steg # 4 Depression

Kommer kattungarna slå en absolut botten innan de återhämtar sig?

Det är inte klart. Men en sak är definitivt uppenbar. Med deras popularitet är det svårt att tänka sig.

Slutsats

Det är inte en överdrift att säga att kryptokitties har tagit världen med storm. Vad vi har sett här är den första populära applikationen av blockchain i en ren rekreationsform. Mer än att göra verktygsapplikationer, det här är den typ som faktiskt kan bli super mainstream.

Men det är inte den enda lektion som de har lärt oss. Vi vet alla nu att skalbarhet definitivt måste arbetas med. Om Ethereum kan ta itu med dessa problem i framtiden (med användning av skärning, plasma etc.), kan DAPPs verkligen genombrott och bli en väsentlig del av tidsgeisten.

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me