Co jsou Cryptokitties? Crash Course: Za poslední rok nebo tak DAPPs aka Decentralized Applications pomalu získaly hodně páry.

Jak pravděpodobně víte, DAPP není ve vlastnictví žádné centrální organizace a představuje stále více potřebný posun paradigmatu ve stále více centralizovaném světě.

Aby se však DAPP dostalo správné mainstreamové expozice, kterou si zaslouží, musel jeden z nich prorazit a zvětšit ji. (Ano, technicky vzato, bitcoin je také DAPP, ale nemluvíme zde o uchovávání hodnoty). Jistě, existovalo několik DAPP, před kterými byla nějaká expozice, ale něco se muselo zvětšit a zaujmout představivost veřejnosti.

Zadejte Cryptokitties.

Co jsou Cryptokitties? Rychlokurs

Image Credit: Cryptokitties

Co jsou Cryptokitties?

Cryptokitties je virtuální hra založená na blockchainu, která hráčům umožňuje adoptovat, vychovávat a obchodovat s virtuálními kočkami. Hru vyrobila blockchainová společnost Axiom Zen se sídlem ve Vancouveru. Je však důležité si uvědomit, že se jedná o první známou aplikaci DAPP pro volný čas a rekreaci.

Prodej Cryptokitties byl přes střechu. Lidé utratili více než dvanáct milionů dolarů za nákup těchto kryptoměn. Existují dokonce zprávy o lidech, kteří to mají vydělali více peněz na obchodování s cyptokitties než investovat do jejich IRA!

Podívejme se, kolik prodejů bylo provedeno denně:

Co jsou Cryptokitties? Rychlokurs

Image Credit: KittyExplorer

O „fenoménech kočiček“ bylo napsáno několik článků a také jim byla věnována významná mainstreamová expozice. Ve skutečnosti se dokonce k věci dostal i Vitalik!

Co jsou Cryptokitties? Rychlokurs

Uznání obrázku: Vitalik Buterin Twitter

Každá kočička má svůj vlastní jedinečný 256bitový jedinečný genomový kód. Což se přenáší na všechny jeho potomky pomocí Genetického algoritmu.

Co je to genetický algoritmus?

Genetický algoritmus je optimalizační technika používaná k řešení nelineárních optimalizačních problémů. Funguje do značné míry tak, jak funguje biologická genetika. Začíná to počáteční generací kandidátních řešení, která byla testována proti objektivní funkci. Algoritmus poté generuje následná řešení z těchto nadřazených řešení pomocí bioinspirovaných operátorů, jako je výběr, křížení a mutace.

Zatímco geny uvnitř našeho těla se skládají z proteinů a různých dalších prvků, v GA jsou reprezentovány pomocí čísel. Pojďme se tedy podívat na to, jak evoluce funguje pomocí genetického algoritmu. Budeme používat pouze binární případy, tj. Případy, kdy lze geny reprezentovat jako 1 a 0.

  • Výběr: Výběr v zásadě znamená udržení nejvýkonnějších rodičů z jedné generace na druhou. Tito dobře výkonní rodiče jsou ti, kteří jsou preferováni pro reprodukci. Takže např. dva rodiče vybraní výběrem jsou: Rodič 1: 1010011000 Rodič 2: 1001001010.

  • Crossover: Dále máme crossover. Co se stane, je to, že vybereme běžné proměnné obou rodičů a ponecháme je v řešení dítěte. Takže s využitím našeho příkladu: Nadřazený 1: 1010011000 Rodičovský 2: 1001001010 Dítě: 1000011010 To do značné míry funguje stejně i v reálném životě. Takto si dítě zachovává určité rysy otce a matky.

  • Mutace: Mutace je, když vezmeme rodiče a náhodně mutujeme některé z jejich proměnných, abychom vytvořili dítě. To je zajištěno, aby systém mohl prozkoumat další možnosti pro optimální řešení. Rodič: 1010011000 Dítě: 0101010001

Cryptokitties používá Genetický algoritmus k vytvoření nového koťátka. Využívá mechanismus křížení k „zplodení“ dětského genomu pomocí dvou rodičovských koťátek. Tento dětský genom se používá ke generování nového koťátka.

Takže teď, když jsme se podívali na to, jak funguje genetický algoritmus, pojďme ještě hlouběji a podívejme se na jejich chytrou smlouvu.

Trénujte, abyste se stali vývojářem blockchainu

Začněte svou bezplatnou zkušební verzi ještě dnes!

Inteligentní smlouva CryptoKitty.

Můžete si přečíst hlavní zdrojový kód tady.

Než začneme, obrovský výkřik Článek Jamese Martina Duffyho pro vysvětlení.

Celý kód je rozdělen na několik menších smluv. To se děje proto, že jinak by tělo humongous kódu znemožnilo správu kódu.

Strom dědičnosti smluv vypadá takto:

uzavřít smlouvu s KittyAccessControl

smlouva KittyBase je KittyAccessControl

smlouva KittyOwnership je KittyBase, ERC721

smlouva KittyBreeding je KittyOwnership

smlouva KittyAuction je KittyBreeding

smlouva KittyMinting je KittyAuction

smlouva KittyCore je KittyMinting

Jako průvodce pevností uvádí: „Když smlouva zdědí z více smluv, na blockchainu se vytvoří pouze jedna smlouva a do vytvořené smlouvy se zkopíruje kód ze všech základních smluv.“

V tomto případě je tedy KittyCore smlouvou, která dědí všechny kódy ze základních smluv. Pojďme definovat, co každá z těchto smluv dělá.

# 1 Cryptokitty Řízení přístupu

Můžete se podívat na Smlouva o KittyAccessControl zde.

Smlouva přiděluje vývojářům speciální role.

Tato smlouva nastavuje systém správy celé smlouvy a nemá nic společného s tím, jak hra funguje. Zvláštní role přidělené touto smlouvou jsou:

  • Generální ředitel: Generální ředitel může znovu přiřadit další role a změnit adresy závislých inteligentních smluv. Mohou také zrušit smlouvu (více o tom trochu).
  • Finanční ředitel: Může vybírat prostředky z KittyCore a aukčních smluv.
  • COO: Může vydávat kočky gen0 pro aukce a mátovat promo kočky. (toto prozkoumáme později v KittyAuction)

Tato smlouva má také funkci „pozastavit“:

Tato smlouva má také funkci „pozastavit“:

function pause () public onlyCLevel whenNotPaused {

paused = true;

}

To dává vývojářům příležitost pozastavit celou smlouvu, pokud se budou zabývat chybou nebo hackerem nebo upgradují celý systém..

# 2 CryptokittyBase

KittyBase je nejdůležitější smlouvou, pokud jde o „definici kočičky“. To je místo, kde jsme stanovili základní pravidla pro vytváření koťátek.

Takže tato kočička jsou vlastně struktura se spoustou proměnných.

Stručná Kitty

{

geny uint256;

uint64 birthTime;

uint64 cooldownEndBlock;

uint32 matronId;

uint32 sireId;

uint32 siringWithId;

uint16 cooldownIndex;

generace uint16;

}

Podívejme se, co každá z těchto proměnných je.

Co jsou Cryptokitties? Rychlokurs

Tato část smlouvy také sleduje majitele kočičky. To se provádí pomocí následujícího řádku kódu:

mapování (uint256 => adresa) public kittyIndexToOwner;

# 3 Kryptokitty vlastnická loď

Takto definují KittyOwnerShip ve své smlouvě:

„Toto poskytuje metody vyžadované pro základní transakce s nezastupitelnými tokeny podle návrhu specifikace ERC-721 (https://github.com/ethereum/EIPs/issues/721).“

Co je zastupitelnost? Investopedia definuje zastupitelnost následovně:

“Fungibility je zaměnitelnost zboží nebo aktiva s jiným jednotlivým zbožím nebo aktivy stejného typu.”

Co je tedy zastupitelné a co nepostradatelné.

Předpokládejme, že jste si půjčili 20 $ od přítele. Pokud mu vrátíte peníze DALŠÍ 20 $ bankovkou, pak je to v pořádku. Ve skutečnosti jim můžete dokonce vrátit peníze v podobě 1 $ 10 bankovky a 2 $ 5 bankovek. Stále je to v pořádku. Dolar má zastupitelné vlastnosti (i když ne vždy).

Pokud byste si však měli někomu na víkend půjčit auto a vrátit se a dát mu na oplátku nějaké jiné auto, pak tato osoba pravděpodobně udeří do tváře. Ve skutečnosti, pokud jste odešli s červenou Impalou a vrátili se s jinou červenou Impala, pak ani to není hotová věc. Automobily jsou v tomto příkladu nepostradatelným aktivem.

Koťátka v CryptoKitties nejsou zaměnitelná, protože každá koťátka není vytvořena stejně. Nemůžete jednoduše vyměnit jedno koťátko za druhé. Tokeny CryptoKitties se řídí vzorcem ERC721, který můžete zkontrolujte zde.

# 4 Chov kryptoměn

Jedná se o smlouvu, ve které jsme nastavili funkce potřebné pro dvě koťata k chovu a výrobě nového koťátka.

Existuje proces rozmnožování a potom proces porodu.

Podívejme se, jak oba fungují.

funkce _breedWith (uint256 _matronId, uint256 _sireId) interní

{

Kitry storage sire = kitties [_sireId];

Matrona úložiště kočiček = kočičky [_matronId];

matron.siringWithId = uint32 (_sireId);

_triggerCooldown (otec);

_triggerCooldown (matrona);

odstranit sireAllowedToAddress [_matronId];

odstranit sireAllowedToAddress [_sireId];

pregnantKitties ++;

Těhotná (kittyIndexToOwner [_matronId], _matronId, _sireId, matron.cooldownEndBlock);

}

Dobře, tak co se děje v této části kódu?

Nejprve se ID matek a otců koťat berou pro matronId a sireId a matčiny „otroctví withId“ se změní na otcovo id. (Pamatujte: siringwithId netehotné matky je 0, zatímco u těhotné matky je siringwithId ID otce.)

Spolu s tím se zvyšuje počet těhotných koťátek v systému 1.

Nyní se podívejme, jak funguje porodní proces.

funkce giveBirth (uint256 _matronId)

externí

když není pozastaveno

vrací (uint256)

{

Matrona úložiště kočiček = kočičky [_matronId];

require (matron.birthTime! = 0);

require (_isReadyToGiveBirth (matrona));

uint256 sireId = matron.siringWithId

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

adresa vlastníka = kittyIndexToOwner [_matronId];

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

odstranit matron.siringWithId;

pregnantKitties–;

msg.sender.send (autoBirthFee);

vrátit kittenId;

}

Funkce nejprve zkontroluje, zda je matka připravena porodit. Pokud je matka připravena porodit, pak je parentGen aka generace rodiče nastavena na generaci matky nebo otce, podle toho, kdo je mladší.

Poté se dětské geny vytvoří voláním funkce genScience.mixGenes (). Algoritmus rozmnožování je „sooper-sekret“ a je zpracováván smlouvou, která implementuje GeneScienceInterface. Algoritmus je uzavřený a není přístupný veřejnosti.

Jakmile matka porodí, stávají se tři věci:

  • Počet březích koťat klesá o 1 (pregnantKitties -).
  • Vlastnictví nové dětské kočičky přechází na majitele mateřské kočičky.
  • Funkce pak volá funkci „createKitty ()“, která byla vyvinuta v KittyBase.

# 5 Aukce CryptoKitty

Zde máme veřejné metody dražby nebo dražení koček nebo služby při zplození. Skutečná aukční funkce je zpracována ve dvou sourozeneckých kontraktech (jedna pro prodej a druhá pro siring), zatímco vytváření a aukce aukcí jsou většinou zprostředkovány prostřednictvím tohoto aspektu základní smlouvy.

V této smlouvě vývojáři nastavili různé veřejné metody dražby na kočkách nebo pro služby při zplození. Hlavní aukční funkce byla rozdělena do dvou sourozeneckých smluv:

Tyto funkce může volat pouze generální ředitel.

Důvod, proč devs uzavřel dvě sourozenecké smlouvy, je ten, že podle nich:

“Jejich logika je poněkud složitá a vždy existuje riziko jemných chyb.” Když je budeme udržovat v jejich vlastních kontraktech, můžeme je upgradovat, aniž bychom narušili hlavní kontrakt, který sleduje vlastnictví koťat. “

# 6 Těžba CryptoKitty

Vzpomeňte si, jak jsme již dříve řekli, že COO má pravomoc vytvářet promo kočky a kočky gen 0?

Toto je smlouva, která jim to umožňuje.

Počet promo koček a koček Gen 0, které lze vytvořit, je omezen. Již byl přítomen v samotném kódu:

  • veřejná konstanta uint256 PROMO_CREATION_LIMIT = 5000;
  • veřejná konstanta uint256 GEN0_CREATION_LIMIT = 45000;

Podívejme se na tuto smlouvu:

funkce createPromoKitty (uint256 _genes, adresa _owner) pouze externí COO {

adresa kittyOwner = _vlastník;

if (kittyOwner == adresa (0)) {

kittyOwner = cooAddress;

}

vyžadují (promoCreatedCount < PROMO_CREATION_LIMIT);

promoCreatedCount ++;

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

}

funkce createGen0Auction (uint256 _genes) pouze externí COO {

vyžadují (gen0CreatedCount < GEN0_CREATION_LIMIT);

uint256 kittyId = _createKitty (0, 0, 0, _genes, adresa (toto));

_approve (kittyId, saleAuction);

saleAuction.createAuction (

kittyId,

_computeNextGen0Price (),

0,

GEN0_AUCTION_DURATION,

adresa (tato)

);

gen0CreatedCount ++;

}

Podívejme se na funkci createPromoKitty ().

Při bližším pohledu jsou tedy zřejmé určité věci:

  • COO může vytvořit libovolné Promo koťátko, které chtějí, s jakýmikoli geny, které chtějí.
  • COO může promo koťátko poslat komukoli, koho chce.

Při kontrole funkce createGen0Auction () je zřejmé následující:

  • COO má plnou moc nad tím, jaké koťátko gen 0 chtějí vytvořit.
  • Jakmile je však koťátko vytvořeno, jde přímo do aukce.

# 7 CryptoKitty Core

Toto je hlavní smlouva, která běží na Ethereum Blockchain.

Tato smlouva dědí všechny funkce z předchozích smluv A také definuje vlastní metodu:

funkce getKitty (uint256 _id)

externí

Pohled

vrací (

bool isGestating,

bool je připraven,

uint256 cooldownIndex,

uint256 nextActionAt,

uint256 siringWithId,

uint256 birthTime,

uint256 matronId,

uint256 sireId,

generace uint256,

geny uint256

)

{

Kitty storage kit = kitties [_id];

isGestating = (kit.siringWithId! = 0);

isReady = (kit.cooldownEndBlock <= číslo bloku);

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

geny = kit.genes;

}

Tato funkce v podstatě vrací vše pro konkrétní kočičku z blockchainu.

Takže teď, když víme, co se děje v zákulisí, se podívejme, jak rozhraní funguje v reálném životě.

Jak nakupovat CryptoKitties?

Než začnete s čímkoli, potřebujete tři věci:

  • Prohlížeč Chrome nebo Firefox.
  • Peněženka Metamask.
  • Ether ve vaší peněžence Metamask.

To je opravdu vše, co potřebujete, abyste mohli začít.

Jakmile budete mít tyto věci vyřešeny, nákup kočiček je velmi přímočarý.

  • Přejít na Cryptokitties Tržiště.
  • Jakmile se dostanete dovnitř, uvidíte toto:

    Co jsou Cryptokitties? RychlokursImage Credit: Cryptokitties Když uvidíte kočičku, která se vám líbí, jednoduše na ni klikněte.

  • Poté už je jednoduchá věc koupit si kočičku.

Předpokládejme, že se vám nelíbí žádná z kočiček, které vidíte, a pak můžete jednoduše vyhledat kočičku Gen 0. Tyto kočičky jsou na kartě „Gen 0“.

Dobře, takže teď, když víte, jak koupit koťata, podívejme se, jak můžete své koťátka zplodit.

  • Nejprve přejděte do Záložka „otroctví“ tržiště.
  • Poté uvidíte všechna koťátka, která byla připravena k otěhotnění.Co jsou Cryptokitties? RychlokursImage Credit: Cryptokitties
  • Poté už stačí jen jednoduše vybrat koťátko, které chcete s koťátkem porodit.

Spotřeba plynu CryptoKitties.

Nyní se podíváme na jeden ze zuřivých bodů diskuse, který byl vznesen kvůli kryptokititám. Množství plynu, které spotřeboval, a způsob, jakým ucpal blockchain Ethereum.

V době psaní tohoto článku jde o třetí nejchytřejší inteligentní kontrakt v Ethereu.

Co jsou Cryptokitties? Rychlokurs

Uznání obrázku: ETH Gas Station

Pouhá popularita kočiček položila blockchainu Ethereum několik vážných otázek. Kvůli rostoucí poptávce po kočičkách exponenciálně vzrostl počet nepotvrzených transakcí na blockchainu.

Co jsou Cryptokitties? Rychlokurs

Uznání obrázku: Quartz

Z tohoto důvodu byla společnost Axiom aka společnost, která stojí za kryptokitty, nucena zvýšit své porodní poplatky. Toto řekli ve svém středním článku:

“Vzrušení a přijetí, které jsme tento týden viděli, bylo ohromující a nemohli jsme být šťastnější!” Síť Ethereum je však zcela plná. Jediným způsobem, jak zabránit zaostávání CryptoKitties, je zvýšit ceny plynu, aby se všechny transakce mohly rychle dokončit. Víme, že zvýšené ceny budou znamenat, že někteří z vás budou muset zpomalit svůj chovný režim, a jsme tím neuvěřitelně zklamáni. Ale kdo ví? Možná toto zpomalení bude jen znamenat, že se vám budou líbit kočičky, které už máte mnohem víc “

Všichni jsme se z celé této epizody poučili.

I když bude v éře decentralizované budoucnosti určitě hrát roli Ethereum, právě teď prostě nemá prostředky, aby zvládla zvýšené požadavky hlavního proudu. Aby mohli pokročit vpřed, určitě musí více pracovat na své škálovatelnosti.

Ekonomický cyklus kryptokitit

Na tento fascinující článek Jaz Liu jsme narazili na médiu. Dokumentuje celý ekonomický cyklus kryptokitit. Chystáme se vzít údaje z jejích článků pro tuto konkrétní sekci.

Jak funguje nějaká hra založená na „sbírání vzácných věcí“? Funguje na jednoduchém konceptu „nedostatku“.

Uživatelé mají zájem sbírat co nejvíce vzácných sběratelských předmětů. Ale pak z toho vyvstává otázka, kdo vlastně rozhoduje, které vlastnosti jsou vzácné a žádoucí?

To k tomu řekl Arthur Camara, softwarový inženýr týmu CryptoKitty ve Vancouveru:

“Podívejte, neřekli jsme, že koťátka 1–100 jsou vzácná.” To je lidská perspektiva nedostatku. Lidé si prostě myslí, že jsou z nějakého důvodu důležitější, možná je to tak, jak vypadají. Tato hra funguje tak, že kočky, které se chovají nejvíce, způsobí, že tyto vlastnosti budou populárnější. Takže pokud chováte hodně koťátek se zelenýma očima, bude to méně vzácné. Lidé ovládají tento nedostatek v a cesta, a sami si tuto hodnotu vytvářejí. Jsou to uživatelé, kteří vytvářejí tuto představu o nedostatku s geny a svými koťaty. “

Když to tedy vezmeme v úvahu, podívejme se, jak se ekonomika CryptoKitty odehraje v typickém obchodním cyklu.

Co jsou Cryptokitties? Rychlokurs

Image Credit: Střední

Fáze # 1: Růst

To představuje první fázi ekonomiky cryptokitty. Průměrné náklady na startovací koťátko činily 4 $, během týdne však stouply na 8 $.

Fáze # 2: Vrchol

Toto je druhá fáze ekonomiky, kdy poptávka předčí všechna očekávání a DAPP se stane mainstreamem. Poptávka byla natolik velká, že ucpala Ethereum Blockchain.

Fáze č. 3 Recese

Co jsou Cryptokitties? Rychlokurs

Uznání obrázku: Kitty Explorer

A poté, co růst přijde do nevyhnutelné recese.

Jak je patrné z grafu, počet zakoupených koťátek za posledních několik dní rozhodně poklesl.

Fáze 4 deprese

Zasáhnou koťátka absolutní dno, než se zotaví?

To není jasné. Jedno je však rozhodně zřejmé. S jejich popularitou je těžké si představit.

Závěr

Není přehnané říci, že kryptokitty vzaly svět útokem. To, co jsme zde viděli, je první populární aplikace blockchainu v čistě rekreační podobě. Více než vytváření užitkových aplikací je to ten druh, který se může stát super mainstreamem.

To však není jediná lekce, kterou nás naučili. Všichni nyní víme, že na škálovatelnosti je určitě třeba pracovat. Pokud Ethereum dokáže v budoucnu tyto problémy řešit (pomocí využití shardingu, plazmy atd.), Pak mohou DAPP skutečně prolomit a stát se podstatnou součástí zeitgeistu.

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