Què són Cryptokitties? Crash Course: durant els darrers anys, aproximadament, les aplicacions descentralitzades DAPP han guanyat força.

Com és probable que sigueu conscients, cap DAPP no és propietat de cap organització central i representa un canvi de paradigma molt necessari en un món cada vegada més centralitzat..

Tanmateix, perquè els DAPP obtinguessin l’exposició principal adequada que mereixen, un d’ells va haver de trencar-lo i fer-lo gran. (Sí, tècnicament, el bitcoin també és un DAPP, però no estem parlant de botiga de valor aquí). Per descomptat, hi ha hagut diversos DAPP abans que tenien certa exposició, però alguna cosa havia de fer-la gran i captar la imaginació del públic.

Introduïu Cryptokitties.

Què són Cryptokitties? Curs intensiu

Crèdit de la imatge: Cryptokitties

Què són Cryptokitties?

Cryptokitties és un joc virtual basat en blockchain que permet als jugadors adoptar, criar i canviar gats virtuals. El joc va ser realitzat per la companyia de cadenes de blocs basada a Vancouver, Axiom Zen. No obstant això, el que és realment important recordar és que aquesta és la primera aplicació coneguda de DAPP per a oci i esbarjo.

Les vendes de Cryptokitties han estat a través del terrat. La gent s’ha gastat més de dotze milions de dòlars comprant aquestes xifres. Fins i tot hi ha informes de persones que sí va guanyar més diners negociant cyptokitties que invertir en el seu IRA!

Vegem quantes vendes s’han realitzat al dia:

Què són Cryptokitties? Curs intensiu

Crèdit de la imatge: KittyExplorer

S’han escrit diversos articles sobre els “fenòmens dels gatets” i també han rebut una important exposició general. De fet, fins i tot Vitalik ha participat en l’acte!

Què són Cryptokitties? Curs intensiu

Crèdit de la imatge: Vitalik Buterin Twitter

Cada gatet té el seu propi codi de genoma únic de 256 bits. Que es porta a tots els seus gatets descendents mitjançant l’ús de l’algorisme genètic.

Què és l’algorisme genètic?

L’algorisme genètic és una tècnica d’optimització que s’utilitza per resoldre problemes d’optimització no lineal. Funciona pràcticament com funciona la genètica biològica. Comença amb una generació inicial de solucions candidates que s’han provat en funció de la funció objectiva. A continuació, l’algorisme genera solucions posteriors a partir d’aquestes solucions pares mitjançant operadors inspirats en bio com la selecció, el creuament i la mutació.

Tot i que els gens del nostre cos consten de proteïnes i diversos altres elements, a GA es representen mitjançant números. Vegem, doncs, com funciona l’evolució mitjançant l’algorisme genètic. Només utilitzarem casos binaris, és a dir, casos en què els gens es poden representar com a 1 i 0.

  • Selecció: La selecció significa bàsicament retenir els pares amb millor rendiment d’una generació a l’altra. Aquests pares amb un bon rendiment són els preferits per a la reproducció. Així, per exemple. els dos pares triats mitjançant la selecció són: pare 1: 1010011000 pare 2: 1001001010.

  • Crossover: A continuació tenim un encreuament. El que passa aquí és que escollim les variables comunes dels dos pares i les conservem en la solució infantil. Així doncs, utilitzant el nostre exemple: pare 1: 1010011000 pare 2: 1001001010 nen: 1000011010 Això funciona pràcticament igual a la vida real. Així és com un nen conserva certes característiques del pare i de la mare.

  • Mutació: La mutació és quan prenem un pare o pare i mutem a l’atzar algunes de les seves variables per crear un fill. Això es fa per assegurar-se que el sistema pugui explorar altres possibilitats per obtenir solucions òptimes. Parent: 1010011000 Nen: 0101010001

Cryptokitties utilitza l’algorisme genètic per crear un gatet nou. Utilitza el mecanisme de creuament per “engendrar” un genoma infantil mitjançant dos gatets pares. Aquest genoma infantil s’utilitza per generar un gatet nou.

Per tant, ara que hem analitzat el funcionament de l’algoritme genètic, aprofundim encara més i fem una ullada al seu contracte intel·ligent.

Entrena per convertir-te en desenvolupador de Blockchain

Comenceu la prova gratuïta avui mateix!

El contracte intel·ligent CryptoKitty.

Podeu llegir el codi font principal aquí.

Abans de començar, un gran crit a L’article de James Martin Duffy per l’explicació.

Tot el codi es divideix en diversos contractes menors. Això es fa perquè, en cas contrari, el cos de codi enorme faria impossible la gestió del codi.

L’arbre d’herència dels contractes té aquest aspecte:

contracte KittyAccessControl

contract KittyBase és KittyAccessControl

El contracte KittyOwnership és KittyBase, ERC721

contracte KittyBreeding és KittyOwnership

contracte KittyAuction és KittyBreeding

contract KittyMinting és KittyAuction

contracte KittyCore és KittyMinting

Com el guia de solidesa afirma: “Quan un contracte hereta de diversos contractes, només es crea un únic contracte a la cadena de blocs i el codi de tots els contractes base es copia al contracte creat”.

Per tant, en aquest cas, KittyCore és el contracte que hereta tots els codis dels contractes base. Definim què fan cadascun d’aquests contractes.

# 1 Control d’accés Cryptokitty

Podeu consultar el fitxer Contracte de KittyAccessControl aquí.

El contracte assigna rols especials als desenvolupadors.

Aquest contracte estableix el sistema de gestió de tot el contracte i no té res a veure amb el funcionament del joc. Les funcions especials assignades per aquest contracte són:

  • CEO: el CEO pot reassignar altres rols i canviar les adreces dels contractes intel·ligents dependents. També poden anul·lar el contracte (més sobre això en una mica).
  • Director financer: pot retirar fons de KittyCore i dels contractes de subhasta.
  • COO: pot llançar gatets gen0 per a subhastes i promoure gats. (ho explorarem més endavant a KittyAuction)

Aquest contracte també té una funció de “pausa”:

Aquest contracte també té una funció de “pausa”:

function pause () public onlyCLevel whenNotPaused {

paused = true;

}

Això dóna als desenvolupadors l’oportunitat de posar en pausa tot el contracte si tenen problemes amb un error o un hack o si actualitzen tot el sistema.

# 2 CryptokittyBase

KittyBase és el contracte més important pel que fa a la “definició de gatet”. Aquí és on establim les regles bàsiques per a la creació de gatets.

Per tant, aquests gatets són en realitat una estructura amb moltes variables.

struct Kitty

{

uint256 gens;

uint64 birthTime;

uint64 cooldownEndBlock;

uint32 matronId;

uint32 sireId;

uint32 siringWithId;

uint16 cooldownIndex;

generació uint16;

}

Vegem quines són cadascuna d’aquestes variables.

Què són Cryptokitties? Curs intensiu

Aquesta part del contracte també fa un seguiment del propietari del gatet. Això es fa mitjançant la següent línia de codi:

mapatge (uint256 => address) public kittyIndexToOwner;

Propietat Cryptokitty # 3

Així defineixen KittyOwnerShip en el seu contracte:

“Això proporciona els mètodes necessaris per a les transaccions bàsiques de token no fungibles, seguint l’esborrany d’especificacions ERC-721 (https://github.com/ethereum/EIPs/issues/721).”

Què és la fungibilitat? Investopedia defineix la fungibilitat de la següent manera:

“La fungibilitat és un intercanviable d’un bé o actiu amb altres béns individuals o actius del mateix tipus”.

Per tant, què és fungible i què no fungible.

Suposem que vau demanar prestat 20 dòlars a un amic. Si li torneu els diners amb UNA ALTRA factura de 20 dòlars, estarà perfectament bé. De fet, fins i tot podeu retornar-los els diners en forma d’1 compte de 10 $ i 2 de 5 $. Encara està bé. El dòlar té propietats fungibles (però no tot el temps).

Tanmateix, si hagués de demanar prestat un cotxe a algú durant el cap de setmana i tornar i donar-li algun altre cotxe a canvi, és probable que aquesta persona li pugui donar un cop a la cara. De fet, si us n’heu anat amb un Impala vermell i heu tornat amb un altre Impala vermell, fins i tot això no és un fet. Els automòbils, en aquest exemple, són un bé no fungible.

Els gatets de CryptoKitties no són fungibles perquè cada gatet no es crea per igual. No es pot intercanviar simplement un gatet amb un altre. Les fitxes CryptoKitties segueixen la fórmula ERC721 que podeu fer consulta aquí.

Criança CryptoKitty # 4

Aquest és el contracte en què establim les funcions necessàries perquè dos gatets es reprodueixin i produeixin un gatet nou.

Hi ha un procés de cria i després hi ha un procés de part.

Vegem com funcionen tots dos.

funció _breedWith (uint256 _matronId, uint256 _sireId) intern

{

Kitty storage sire = gatets [_sireId];

Kitty storage matron = gatets [_matronId];

matron.siringWithId = uint32 (_sireId);

_triggerCooldown (senyor);

_triggerCooldown (matrona);

elimina sireAllowedToAddress [_matronId];

esborra sireAllowedToAddress [_sireId];

pregnantKitties ++;

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

}

D’acord, doncs, què passa en aquest fragment de codi?

En primer lloc, les identificacions dels gatets de la mare i del pare es prenen per a matronId i sireId i el “siring withId” de la mare es canvia a la identificació del pare. (Recordeu: la siringwithId d’una mare no embarassada és 0 mentre que la de la mare embarassada, la siringwithId és l’identificador del pare.)

Juntament amb això, augmenta el nombre de gatets embarassats del sistema 1.

Ara, vegem com funciona el procés de part.

funció giveBirth (uint256 _matronId)

extern

whenNotPaused

retorna (uint256)

{

Kitty storage matron = gatets [_matronId];

require (matron.birthTime! = 0);

require (_isReadyToGiveBirth (matron));

uint256 sireId = matron.siringWithId

Kitty storage sire = gatets [sireId];

uint16 parentGen = matron.generation;

if (sire.generation > matron.generation) {

parentGen = sire.generation;

}

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

propietari de l’adreça = kittyIndexToOwner [_matronId];

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

elimina matron.siringWithId;

Gatetes embarassades–;

msg.sender.send (autoBirthFee);

tornar kittenId;

}

En primer lloc, la funció comprova si la mare està preparada per donar a llum. Si la mare està preparada per donar a llum, parentGen, també coneguda com la generació dels pares, es defineix en la generació de la mare o la generació del pare, segons qui sigui més jove..

Després, els gens del nen es creen cridant la funció geneScience.mixGenes (). L’algorisme de reproducció és “sooper-sekret” i es gestiona mitjançant un contracte que implementa GeneScienceInterface. L’algorisme és de codi tancat i no està obert al públic.

Un cop la mare dóna a llum, passen tres coses:

  • El nombre de gatets embarassats baixa 1 (pregnantKitties -).
  • La propietat del nou gatet infantil va al propietari del gatet mare.
  • La funció crida llavors la funció “createKitty ()” que es va elaborar a KittyBase.

Subhastes CryptoKitty # 5

Aquí tenim els mètodes públics de subhasta o licitació de gats o serveis de siring. La funcionalitat de subhasta real es gestiona en dos contractes entre germans (un per a vendes i un per a atenció), mentre que la creació i la licitació de la subhasta es basen principalment en aquesta faceta del contracte bàsic..

En aquest contracte, els desenvolupadors han establert diversos mètodes públics per a la subhasta de gats o per a serveis de siring. La principal funcionalitat de subhasta s’ha dividit en dos contractes entre germans:

Aquestes funcions només les pot convocar el CEO.

La raó per la qual els desenvolupadors van establir contractes de dos germans és que segons ells:

“La seva lògica és una mica complexa i sempre hi ha el risc d’errors subtils. Mantenint-los en els seus propis contractes, podem actualitzar-los sense interrompre el contracte principal que fa un seguiment de la propietat dels gatets ”.

# 6 CryptoKitty Minting

Recordeu com dèiem anteriorment que el COO té el poder de crear gats promocionals i gats gen 0?

Aquest és el contracte que els permet fer-ho.

Hi ha un límit en el nombre de gats promocionals i de la generació 0 que es poden crear. Ja ha estat present al codi:

  • uint256 constant pública PROMO_CREATION_LIMIT = 5000;
  • uint256 constant pública GEN0_CREATION_LIMIT = 45000;

Vegem aquest contracte:

funció createPromoKitty (uint256 _genes, address _owner) només externCOO {

address kittyOwner = _propietari;

if (kittyOwner == adreça (0)) {

kittyOwner = cooAddress;

}

require (promoCreatedCount < PROMO_CREATION_LIMIT);

promoCreatedCount ++;

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

}

funció createGen0Auction (uint256 _genes) només externaCOO {

require (gen0CreatedCount < GEN0_CREATION_LIMIT);

uint256 kittyId = _createKitty (0, 0, 0, _genes, adreça (aquesta));

_aprovar (kittyId, saleAuction);

saleAuction.createAuction (

kittyId,

_computeNextGen0Price (),

0,

GEN0_AUCTION_DURATION,

adreça (aquesta)

);

gen0CreatedCount ++;

}

Examinem la funció createPromoKitty ().

Per tant, en una inspecció més detallada, algunes coses són evidents:

  • El COO pot crear el gatet Promo que vulgui amb els gens que vulgui.
  • El COO pot enviar el gatet promocional a qualsevol persona que vulgui.

En comprovar la funció createGen0Auction (), és evident el següent:

  • El COO té tot el poder sobre quins gatets de gen 0 volen crear.
  • No obstant això, un cop creat el gatet, passa directament a la subhasta.

# 7 CryptoKitty Core

Aquest és el contracte principal que s’executa a Ethereum Blockchain.

Aquest contracte hereta totes les funcions dels contractes anteriors I també defineix un mètode propi:

funció getKitty (uint256 _id)

extern

vista

torna (

bool isGestating,

bool està llest,

uint256 CooldownIndex,

uint256 nextActionAt,

uint256 siringWithId,

uint256 birthTime,

uint256 matronId,

uint256 sireId,

generació uint256,

uint256 gens

)

{

Kitty storage kit = gatets [_id];

isGestating = (kit.siringWithId! = 0);

isReady = (kit.cooldownEndBlock <= nombre.bloc);

cooldownIndex = uint256 (kit.cooldownIndex);

nextActionAt = uint256 (kit.cooldownEndBlock);

siringWithId = uint256 (kit.siringWithId);

temps de naixement = uint256 (kit.birthTime);

matronId = uint256 (kit.matronId);

sireId = uint256 (kit.sireId);

generació = uint256 (kit.generation);

gens = kit.genes;

}

Aquesta funció, bàsicament, retorna tot un gatet específic de la cadena de blocs.

Per tant, ara que ja sabem què passa entre bastidors, vegem com funciona la interfície a la vida real.

Com comprar CryptoKitties?

Abans de començar amb res, hi ha tres coses que necessiteu:

  • Navegador Chrome o Firefox.
  • La cartera Metamask.
  • Èter a la cartera de Metamask.

Això és realment tot el que necessiteu per començar.

Un cop solucionades aquestes coses, comprar els gatets és molt senzill.

  • Aneu a Cryptokitties Mercat.
  • Un cop hi sigueu, això és el que veureu:

    Què són Cryptokitties? Curs intensiuCrèdit de la imatge: Cryptokitties Quan vegeu un gatet que us agradi, feu clic-hi.

  • Després d’això, és senzill comprar el gatet.

Suposem que no us agrada cap gatet que veieu, simplement podeu cercar un gatet de la generació 0. Aquests gatets es troben a la pestanya “Gen 0”.

D’acord, ara que ja sabeu com comprar gatets, vegem com podeu engendrar els vostres gatets.

  • En primer lloc, aneu al Pestanya “siring” del mercat.
  • Després d’això, veureu tots els gatets que s’han posat per a la siring.Què són Cryptokitties? Curs intensiuCrèdit de la imatge: Cryptokitties
  • Després d’això, és senzill triar el gatet que vulgueu mater amb el vostre gatet.

Consum de gas de CryptoKitties.

Ara veurem un dels furiosos punts de discussió que s’ha plantejat a causa de les cryptokitties. La quantitat de gas que ha consumit i la forma en què ha obstruït la cadena de blocs Ethereum.

Al moment d’escriure, és el tercer contracte intel·ligent amb més gas a Ethereum.

Què són Cryptokitties? Curs intensiu

Crèdit de la imatge: Gasolinera ETH

La gran popularitat dels gatets ha fet preguntes serioses a la cadena de blocs d’Ethereum. A causa de la creixent demanda de gatets, el nombre de transaccions no confirmades a la cadena de blocs va augmentar exponencialment.

Què són Cryptokitties? Curs intensiu

Crèdit de la imatge: Quars

A causa d’això, Axiom, també coneguda com la companyia que hi ha darrere de cryptokitties, es va veure obligada a augmentar les seves taxes de part. Això és el que van dir en el seu article mitjà:

“La il·lusió i l’adopció que hem vist aquesta setmana han estat aclaparadores i no podríem estar més contents! Tot i això, la xarxa Ethereum està completament plena. L’única manera d’evitar que CryptoKitties es quedi endarrerit és augmentar els preus del gas perquè totes les transaccions es completin ràpidament. Sabem que l’augment dels preus significarà que alguns de vosaltres hauran de frenar el vostre règim de cria i estem increïblement decebuts. Però qui ho sap? Potser aquesta desacceleració només significarà que us encantaran els gatets que ja teniu molt més “

Tots hem après una lliçó molt valuosa de tot aquest episodi.

Tot i que Ethereum definitivament tindrà un paper a jugar en un futur descentralitzat, ara mateix, simplement no té els mitjans per fer front a l’augment de les demandes principals. Definitivament, han de treballar més en la seva escalabilitat per avançar.

El cicle econòmic de les criptokitties

Ens vam trobar amb aquest fascinant article de Jaz Liu en mitjà. Documenta tot el cicle econòmic de criptokitties. Prendrem dades dels seus articles per a aquesta secció en particular.

Com funciona qualsevol joc basat en “col·leccionar coses rares”? Funciona amb el concepte simple de “escassetat”.

Els usuaris estan interessats en col·leccionar els objectes de col·lecció més rars possible. Però aleshores es planteja la pregunta de qui decideix quins trets són rars i desitjables?

Això és el que Arthur Camara, enginyer de programari de l’equip CryptoKitty a Vancouver, va dir sobre això:

“Mira, no hem dit que els gatets de l’1 al 100 siguin rars. Aquesta és la perspectiva de l’escassetat de la gent. La gent només creu que és més important per algun motiu, potser és com es veuen. La manera com funciona el joc és que els gatets que més reprodueixen faran que aquests trets siguin més populars. Per tant, si crieu molts gatets amb ulls verds, això serà menys escàs. La gent controla aquesta escassetat en un manera, i creen aquest valor ells mateixos. Són els usuaris els que creen aquesta idea d’escassetat amb els gens i amb els seus gatets “.

Per tant, tenint això en compte, vegem com es desenvoluparà l’economia de CryptoKitty en un cicle empresarial típic.

Què són Cryptokitties? Curs intensiu

Crèdit de la imatge: mitjà

Fase 1: creixement

Això representa la primera etapa de l’economia cryptokitty. El cost mitjà d’un gatet d’entrada era de 4 dòlars, però al cap d’una setmana pujava a 8 dòlars.

Etapa 2: pic

Aquesta és la segona etapa de l’economia quan la demanda supera totes les expectatives i el DAPP es converteix en corrent principal. La demanda va ser tan gran que va obstruir l’Ethereum Blockchain.

Etapa # 3 de recessió

Què són Cryptokitties? Curs intensiu

Crèdit de la imatge: Kitty Explorer

I, després del creixement, arriba a la inevitable recessió.

Com podeu veure al gràfic, el nombre de gatets comprats ha caigut definitivament en els darrers dies.

Etapa # 4 Depressió

Els gatets assoliran el fons absolut abans de recuperar-se?

Això no està clar. Tanmateix, una cosa és evident. Amb la seva popularitat, és una cosa difícil d’imaginar.

Conclusió

No és una exageració dir que les criptokitties han pres el món per la tempesta. El que hem vist aquí és la primera aplicació popular de la cadena de blocs en forma purament recreativa. Més que fer aplicacions d’utilitat, aquest és el tipus que pot arribar a ser súper mainstream.

Tanmateix, aquesta no és l’única lliçó que ens han donat. Ara tots sabem que definitivament cal treballar l’escalabilitat. Si Ethereum pot abordar aquests problemes en el futur (amb l’ús de sharding, plasma, etc.), els DAPP poden realment avançar-se i convertir-se en una part essencial del zeitgeist.

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