Pelajari Apa Itu Cryptokitties? Panduan Paling Lengkap Ditulis

Pelajari Apa Itu Cryptokitties? Panduan Paling Lengkap Ditulis

Apa itu Cryptokitties? Crash Course. Selama setahun terakhir ini DAPP alias Aplikasi Terdesentralisasi perlahan-lahan mendapatkan banyak tenaga.

Seperti yang mungkin Anda sadari, DAPP tidak dimiliki oleh organisasi pusat mana pun dan ini mewakili perubahan paradigma yang sangat dibutuhkan di dunia yang semakin tersentralisasi.

Namun, agar DAPP mendapatkan eksposur arus utama yang layak, salah satunya harus menerobos dan menjadikannya besar. (Ya secara teknis berbicara Bitcoin adalah DAPP juga, tetapi kami tidak berbicara tentang nilai toko di sini). Tentu, ada beberapa DAPP sebelumnya yang mendapatkan beberapa paparan tetapi sesuatu harus membuatnya besar dan menangkap imajinasi publik.

Masukkan Cryptokitties.

Apa itu Cryptokitties?

Cryptokitties adalah game virtual berbasis-blok yang memungkinkan pemain untuk mengadopsi, membesarkan, dan memperdagangkan kucing virtual. Permainan ini dibuat oleh perusahaan blockchain yang berbasis di Vancouver, Axiom Zen. Namun, yang benar-benar penting untuk diingat adalah bahwa ini adalah aplikasi DAPP yang diketahui pertama kali untuk rekreasi dan rekreasi.

Penjualan Cryptokitties telah melalui atap. Orang-orang telah menghabiskan lebih dari dua belas juta dolar untuk membeli cryptokitties ini. Bahkan ada laporan orang yang telah menghasilkan lebih banyak uang dari perdagangan cyptokitties daripada berinvestasi di IRA mereka!

Mari kita lihat berapa banyak penjualan yang telah dilakukan per hari:

Beberapa artikel telah ditulis tentang “fenomena kucing” dan mereka telah menerima paparan arus utama yang signifikan juga. Bahkan, bahkan Vitalik terlibat dalam aksi itu!

Apa itu Cryptokitties?  Kursus Kecelakaan
Kredit Gambar: Vitalik Buterin Twitter

Setiap kitty memiliki kode genom 256-bit unik yang unik. Yang dibawa ke semua kucing turunannya melalui penggunaan Algoritma Genetika.

Apa itu Algoritma Genetika?

Algoritma genetika adalah teknik optimasi yang digunakan untuk memecahkan masalah optimasi nonlinier. Ini bekerja seperti cara kerja genetika biologis. Dimulai dengan generasi awal solusi kandidat yang telah diuji terhadap fungsi objektif. Algoritme kemudian menghasilkan solusi berikutnya dari solusi induk ini menggunakan operator yang terinspirasi bio seperti seleksi, crossover, dan mutasi.

Sementara gen di dalam tubuh kita terdiri dari protein dan berbagai elemen lainnya, dalam GA mereka diwakili melalui angka. Jadi mari kita lihat bagaimana evolusi bekerja menggunakan algoritma genetika. Kami hanya akan menggunakan kasus biner yaitu kasus di mana gen dapat direpresentasikan sebagai 1 dan 0.

  • Seleksi : Seleksi pada dasarnya berarti mempertahankan orang tua yang berkinerja terbaik dari satu generasi ke generasi berikutnya. Orang tua yang berkinerja baik ini adalah orang-orang yang disukai untuk reproduksi. Jadi misalnya. dua orang tua yang dipilih melalui seleksi adalah: Induk 1: 1010011000 Induk 2: 1001001010.
  • Crossover : Selanjutnya kita memiliki crossover. Apa yang terjadi di sini adalah bahwa kita memilih variabel umum dari kedua orang tua dan mempertahankan mereka dalam solusi anak. Jadi dengan menggunakan contoh kami: Parent 1: 1010011000Parent 2: 1001001010Child: 1000011010 Ini cukup banyak bekerja sama di kehidupan nyata juga. Ini adalah bagaimana seorang anak mempertahankan fitur tertentu dari ayah dan ibu.
  • Mutasi : Mutasi adalah ketika kita mengambil orang tua dan secara acak bermutasi beberapa variabel mereka untuk membuat anak. Hal ini dilakukan untuk memastikan bahwa sistem dapat mengeksplorasi kemungkinan lain untuk solusi optimal. Paten: 1010011000Child: 0101010001

Cryptokitties menggunakan Algoritma Genetika untuk membuat kucing baru. Ia menggunakan mekanisme crossover untuk “menjadi ayah” genom anak menggunakan dua induk kucing. Genom anak ini digunakan untuk menghasilkan kucing baru.

Jadi, sekarang kita telah melihat bagaimana algoritma genetika bekerja, mari kita melangkah lebih dalam dan melihat kontrak pintar mereka.

Kontrak Cerdas CryptoKitty.

Anda dapat membaca kode sumber utama di sini.

Sebelum kita mulai, teriakan besar untuk artikel James Martin Duffyuntuk penjelasannya.

Seluruh kode dipecah menjadi beberapa kontrak yang lebih kecil. Hal ini dilakukan karena jika tidak, badan kode besar akan membuat manajemen kode tidak mungkin.

Pohon warisan kontrak terlihat seperti ini:

kontrak KittyAccessControl

kontrak KittyBase adalah KittyAccessControl

kontrak KittyOwnership adalah KittyBase, ERC721

kontrak KittyBreeding adalah KittyOwnership

kontrak KittyAuction adalah KittyBreeding

kontrak KittyMinting adalah KittyAuction

kontrak KittyCore adalah KittyMinting

Seperti yang dinyatakan oleh panduan soliditas : “Ketika sebuah kontrak mewarisi dari banyak kontrak, hanya satu kontrak yang dibuat di blockchain, dan kode dari semua kontrak dasar disalin ke dalam kontrak yang dibuat.”

Jadi, dalam hal ini, KittyCore adalah kontrak yang mewarisi semua kode dari kontrak dasar. Mari kita tentukan apa yang dilakukan masing-masing kontrak ini.

Kontrol Akses Cryptokitty # 1

Anda dapat melihat kontrak KittyAccessControl di sini .

Kontrak memberikan peran khusus kepada para devs.

Kontrak ini menetapkan sistem manajemen seluruh kontrak dan tidak ada hubungannya dengan cara kerja game. Peran khusus yang diberikan oleh kontrak ini adalah:

  • CEO: CEO dapat menugaskan kembali peran lain dan mengubah alamat kontrak pintar yang bergantung. Mereka juga dapat membatalkan kontrak (lebih lanjut tentang ini sedikit).
  • CFO: Dapat menarik dana dari KittyCore dan kontrak lelang.
  • COO: Dapat merilis kucing gen0 untuk kucing lelang dan promo mint. (kami akan mengeksplorasi ini nanti di KittyAuction)

Kontrak ini juga memiliki fungsi “jeda”:

Kontrak ini juga memiliki fungsi " jeda " :



fungsi pause () hanya publikTingkat ketikaNotPaused {



dijeda = benar;



}

Ini memberikan para pengembang kesempatan untuk menghentikan seluruh kontrak jika seandainya mereka telah berurusan dengan bug atau peretasan atau jika mereka meningkatkan keseluruhan sistem.

# 2 CryptokittyBase

KittyBase adalah kontrak yang paling penting sejauh menyangkut “definisi kucing”. Di sinilah kami menetapkan aturan dasar untuk pembuatan kucing.

Jadi kucing-kucing ini sebenarnya adalah sebuah struct dengan banyak variabel.

struct Kitty 

{ 

uint256 gen; 
uint64 birthTime; 
uint64 cooldownEndBlock; 
uint32 matronId; 
uint32 sireId; 
uint32 siringWithId; 
uint16 cooldownIndex; 
generasi uint16; 

}

Mari kita lihat apa masing-masing variabel tersebut.

Apa itu Cryptokitties?  Kursus Kecelakaan

Bagian dari kontrak ini juga melacak pemilik kucing. Ini dilakukan oleh baris kode berikut:

pemetaan (uint256 => alamat) public kittyIndexToOwner;

# 3 Cryptokitty OwnerShip

Inilah cara mereka mendefinisikan KittyOwnerShip dalam kontrak mereka:

“Ini memberikan metode yang diperlukan untuk transaksi token dasar yang tidak dapat dipertukarkan, mengikuti draft spesifikasi ERC-721 ( https://github.com/ethereum/EIPs/issues/721) .”

Apa itu fungibilitas? Investopedia mendefinisikan fungibilitas sebagai berikut:

“Kesepadanan adalah barang atau aset yang dapat dipertukarkan dengan barang atau aset individu lainnya dari jenis yang sama.”

Jadi, apa yang sepadan dan apa yang tidak sepadan.

Misalkan Anda meminjam $ 20 dari seorang teman. Jika Anda mengembalikan uang kepadanya dengan tagihan $ 20 LAINNYA, maka itu baik-baik saja. Bahkan, Anda bahkan dapat mengembalikan uang kepada mereka dalam bentuk tagihan $ 10 dan tagihan $ 5. Itu masih baik-baik saja. Dolar memiliki properti yang sepadan (tidak setiap saat).

Namun, jika Anda meminjam mobil seseorang untuk akhir pekan dan kembali dan memberi mereka beberapa mobil lain sebagai imbalannya, maka orang itu mungkin akan meninju wajahnya. Bahkan, jika Anda pergi dengan Impala merah dan kembali dengan Impala merah lain maka itu pun bukan kesepakatan yang dilakukan. Mobil, dalam contoh ini, adalah aset yang tidak dapat dipertukarkan.

Kucing-kucing di CryptoKitties tidak dapat dipertukarkan karena setiap kucing tidak diciptakan sama. Anda tidak bisa hanya bertukar satu kucing dengan kucing lainnya. Token CryptoKitties mengikuti rumus ERC721 yang dapat Anda periksa di sini.

# 4 Pembiakan CryptoKitty

Ini adalah kontrak di mana kami mengatur fungsi yang diperlukan untuk dua kucing untuk membiakkan dan menghasilkan kucing baru.

Ada proses pemuliaan dan kemudian ada proses melahirkan.

Mari kita lihat bagaimana keduanya bekerja .

fungsi _breedWith (uint256 _matronId, uint256 _sireId) internal 

{
 
    Kitty storage sire = kitties [_sireId];

    Kitty storage matron = kitties [_matronId];

    sipir . siringWithId = uint32 (_sireId);

    _triggerCooldown (tuan);

    _triggerCooldown (matron);

    hapus sireAllowedToAddress [_matronId];

    hapus sireAllowedToAddress [_sireId];

    hamilKitties ++ ;

    Hamil (kittyIndexToOwner [_matronId], _matronId, _sireId, matron . CooldownEndBlock);
}

Oke, jadi apa yang terjadi pada kode ini?

Pertama, Id ibu dan ayah kucing diambil untuk matronId dan ayah dan ibu “siring withId” diubah menjadi id ayah. (Ingat: siringwithId ibu yang tidak hamil adalah 0 sedangkan siringwithId ibu hamil adalah id dari the sire.)

Seiring dengan itu, jumlah kucing hamil dalam sistem meningkat 1.

Sekarang, mari kita lihat bagaimana proses persalinan bekerja.

fungsi giveBirth (uint256 _matronId)
    luar
    whenNotPaused
    pengembalian (uint256)
{

Kitty storage matron = kitties [_matronId];

membutuhkan (matron . birthTime ! =  0 );

membutuhkan (_isReadyToGiveBirth (matron));

uint256 sireId = matron . siringWithId

Kitty storage sire = kitties [sireId];

uint16 parentGen = matron . generasi;
    
if (sire . generation > matron . generation) {
        parentGen = Sire . generasi;
    }

uint256 childGenes = geneScience . mixGenes (matron . gen, Sire . gen, matron . cooldownEndBlock -  1 );

address owner = kittyIndexToOwner [_matronId];
    
uint256 kittenId = _createKitty (_matronId, matron . siringWithId, parentGen +  1 , childGenes, pemilik);

hapus matron . siringWithId;

hamilKitties - ;

msg . pengirim . kirim (autoBirthFee);

mengembalikan kittenId;

}

Pertama, fungsi memeriksa apakah ibu siap untuk melahirkan. Jika ibu siap untuk melahirkan maka orang tua Gen alias generasi orang tua diatur ke generasi ibu atau generasi ayah, tergantung pada siapa yang lebih muda.

Setelah itu, gen anak dibuat dengan memanggil fungsi geneScience.mixGenes (). Algoritma pemuliaan adalah “sooper-sekret” dan ditangani oleh kontrak yang mengimplementasikan GeneScienceInterface. Algoritma adalah sumber tertutup dan tidak terbuka untuk umum.

Begitu ibu melahirkan, tiga hal terjadi:

  • Jumlah anak kucing hamil turun 1 (anak kucing hamil -).
  • Kepemilikan anak kucing yang baru menjadi milik ibu kucing.
  • Fungsi ini kemudian memanggil fungsi “createKitty ()” yang diuraikan di KittyBase.

# 5 Lelang CryptoKitty

Di sini kami memiliki metode publik untuk melelang atau menawar kucing atau layanan siring. Fungsionalitas lelang yang sebenarnya ditangani dalam dua kontrak saudara (satu untuk penjualan dan satu untuk siring), sementara pembuatan dan penawaran lelang sebagian besar dimediasi melalui aspek kontrak inti ini.

Dalam kontrak ini, para devs telah menetapkan berbagai metode publik untuk melelang kucing atau untuk jasa siring. Fungsi lelang utama telah dibagi menjadi dua kontrak saudara:

Fungsi-fungsi ini hanya dapat dipanggil oleh CEO.

Alasan mengapa para devs membuat dua kontrak saudara adalah karena menurut mereka:

“Logikanya agak rumit dan selalu ada risiko bug halus. Dengan menjaga mereka dalam kontrak mereka sendiri, kita dapat memutakhirkannya tanpa mengganggu kontrak utama yang melacak kepemilikan kucing. “

# 6 CryptoKitty Minting

Ingat bagaimana kami katakan sebelumnya bahwa COO memiliki kekuatan untuk membuat kucing promo dan gen 0 kucing?

Ini adalah kontrak yang memungkinkan mereka untuk melakukannya.

Ada batasan jumlah promo dan kucing Gen 0 yang bisa dibuat. Sudah ada dalam kode itu sendiri:

  • uint256 konstanta publik PROMO_CREATION_LIMIT = 5000;
  • uint256 konstanta publik GEN0_CREATION_LIMIT = 45000;

Mari kita lihat kontrak ini:

fungsi createPromoKitty (uint256 _genes, address _owner) onlyCOO eksternal {
    address kittyOwner = _owner;
    
if (kittyOwner == address ( 0 )) {
         kittyOwner = cooAddress;
    }
    membutuhkan (promoCreatedCount < PROMO_CREATION_LIMIT);

    promoCreatedCount ++ ;
    _createKitty ( 0 , 0 , 0 , _genes, kittyOwner);
}

function createGen0Auction (uint256 _genes) onlyCOO eksternal {
    membutuhkan (gen0CreatedCount < GEN0_CREATION_LIMIT);

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

    saleAuction . createAuction (
        kittyId,
        _computeNextGen0Price (),
        0 ,
        GEN0_AUCTION_DURATION,
        alamat (ini)
    );

    gen0CreatedCount ++ ;
}

Mari kita periksa fungsi createPromoKitty ().

Jadi, pada pemeriksaan lebih dekat beberapa hal sudah jelas:

  • COO dapat membuat kitty Promo apa pun yang mereka inginkan dengan gen apa pun yang mereka inginkan.
  • COO dapat mengirim kitty promo kepada siapa pun yang mereka inginkan.

Saat memeriksa fungsi createGen0Auction (), berikut ini jelas:

  • COO memiliki kekuatan penuh atas gen apa yang ingin mereka buat.
  • Namun, begitu kucing itu dibuat, ia langsung dilelang.

# 7 CryptoKitty Core

Ini adalah kontrak utama yang berjalan di Ethereum Blockchain.

Kontrak ini mewarisi semua fungsi dari kontrak sebelumnya DAN itu juga mendefinisikan metode sendiri:

fungsi getKitty (uint256 _id)
    luar
    melihat
    pengembalian (
    bool isGestating,


    bool is Ready,
    uint256 cooldownIndex,
    uint256 nextActionAt,
    uint256 siringWithId,
    uint256 birthTime,
    uint256 matronId,
    uint256 sireId,
    generasi uint256,
    gen uint256
) 

{
    Kit penyimpanan Kitty = kitties [_id];

isGestating = (kit . siringWithId ! =  0 );

isReady = (kit . cooldownEndBlock <= blok . angka);
 
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);
 
gen = kit . gen;
}

Fungsi ini pada dasarnya mengembalikan semua untuk kucing tertentu dari blockchain.

Jadi, sekarang kita tahu apa yang terjadi di balik layar, mari kita lihat bagaimana antarmuka bekerja di kehidupan nyata.

Bagaimana cara membeli CryptoKitties?

Sebelum Anda mulai dengan apa pun ada tiga hal yang Anda butuhkan:

  • Browser Chrome atau Firefox.
  • Dompet Metamask.
  • Eter di dompet Metamask Anda.

Itu benar-benar yang Anda butuhkan untuk memulai.

Setelah Anda menyelesaikan masalah ini, membeli kucing sangat mudah.

  • Pergi ke Pasar Cryptokitties .
  • Setelah Anda masuk, inilah yang akan Anda lihat:
  • Ketika Anda melihat kucing yang Anda sukai, cukup klik di atasnya.
  • Setelah itu, hanya masalah membeli kucing.

Misalkan Anda tidak suka kucing yang Anda lihat, maka Anda bisa mencari kucing 0 Gen. Kucing-kucing ini berada di bawah tab “Gen 0”.

Ok, jadi sekarang setelah Anda tahu cara membeli kucing, mari kita lihat bagaimana Anda bisa menjadi ayah kucing Anda.

  • Pertama, buka tab “siring” di pasar.
  • Setelah itu, Anda akan melihat semua kucing yang telah disiapkan untuk menjadi siring.
  • Setelah itu adalah masalah sederhana memilih kucing yang ingin Anda kenakan dengan kucing Anda.

Konsumsi Gas CryptoKitties.

Sekarang kita akan melihat salah satu poin diskusi yang mengamuk yang diangkat karena cryptokitties. Jumlah gas yang dikonsumsi dan cara menyumbat blockchain Ethereum.

Saat menulis, ini adalah kontrak pintar paling haus gas ketiga di Ethereum.

Apa itu Cryptokitties?  Kursus Kecelakaan
Kredit Gambar: Pompa Bensin ETH

Popularitas kucing-kucing itu telah menanyakan beberapa blockchain Ethereum beberapa pertanyaan serius. Karena meningkatnya permintaan untuk kucing, jumlah transaksi yang tidak dikonfirmasi pada blockchain meningkat secara eksponensial.

Karena itu, Aksioma alias perusahaan di belakang cryptokitties dipaksa untuk meningkatkan biaya melahirkan mereka. Inilah yang mereka katakan dalam artikel media mereka:

“Kegembiraan dan adopsi yang kami lihat minggu ini luar biasa dan kami tidak bisa lebih bahagia! Namun, jaringan Ethereum sepenuhnya penuh. Satu-satunya cara untuk menjaga CryptoKitties dari ketinggalan adalah dengan menaikkan harga gas sehingga semua transaksi dapat diselesaikan dengan cepat. Kami tahu bahwa kenaikan harga akan berarti bahwa beberapa dari Anda perlu memperlambat rejimen pembiakan Anda, dan kami sangat kecewa dengan hal itu. Tapi siapa yang tahu? Mungkin perlambatan ini hanya akan berarti bahwa Anda akan menyukai kucing yang sudah Anda miliki lebih banyak ”

Kami semua belajar pelajaran yang sangat berharga dari seluruh episode ini.

Sementara, Ethereum pasti akan memiliki peran untuk dimainkan di masa depan yang terdesentralisasi, saat ini, itu tidak memiliki sarana untuk mengatasi tuntutan arus utama yang meningkat. Mereka jelas perlu bekerja lebih banyak pada skalabilitas mereka untuk bergerak maju.

Siklus Ekonomi Cryptokitties

Kami menemukan artikel yang menarik ini oleh Jaz Liu di media. Ini mendokumentasikan seluruh Siklus Ekonomi Cryptokitties. Kami akan mengambil data dari artikelnya untuk bagian ini.

Bagaimana cara kerja game yang didasarkan pada “mengumpulkan hal-hal langka”? Ini bekerja pada konsep sederhana “kelangkaan”.

Para pengguna tertarik untuk mengumpulkan koleksi langka sebanyak mungkin. Tapi kemudian, ini menimbulkan pertanyaan, siapa yang sebenarnya memutuskan sifat-sifat mana yang langka dan diinginkan?

Inilah yang dikatakan Arthur Camara, seorang insinyur perangkat lunak di tim CryptoKitty di Vancouver, tentang hal itu:

“Dengar, kami belum mengatakan kucing 1–100 itu langka. Itu perspektif orang tentang kelangkaan. Orang-orang hanya berpikir bahwa mereka lebih penting karena suatu alasan, mungkin karena penampilan mereka. Cara permainannya adalah kucing yang paling banyak berkembang biak akan membuat sifat-sifat itu lebih populer. Jadi, jika Anda membiakkan banyak kucing dengan mata hijau, itu tidak akan terlalu langka. Orang-orang mengendalikan kelangkaan itu dengan suatu cara, dan menciptakan nilai itu sendiri. Pengguna menciptakan gagasan kelangkaan dengan gen dan kucing mereka. ”

Jadi, dengan mengingat hal itu, mari kita lihat bagaimana ekonomi CryptoKitty akan bermain dalam siklus bisnis yang khas.

Apa itu Cryptokitties?  Kursus Kecelakaan

Tahap # 1: Pertumbuhan

Ini merupakan tahap pertama dari ekonomi cryptokitty. Biaya rata-rata starter kitty adalah $ 4 Namun, dalam seminggu naik menjadi $ 8.

Tahap # 2: Puncak

Ini adalah tahap kedua perekonomian ketika permintaan melebihi semua harapan dan DAPP menjadi arus utama. Permintaannya sangat banyak sehingga menyumbat Etherchain Blockchain .

Tahap # 3 Resesi

Dan, setelah pertumbuhan datang ke resesi yang tak terhindarkan.

Seperti yang dapat Anda lihat dari grafik, jumlah kucing yang dibeli pasti menurun selama beberapa hari terakhir.

Tahap # 4 Depresi

Apakah kucing akan mencapai titik terendah sebelum mereka pulih?

Itu tidak jelas. Namun, satu hal yang jelas terlihat. Dengan popularitas mereka, itu adalah hal yang sulit untuk dibayangkan.

Kesimpulan

Tidak berlebihan untuk mengatakan bahwa cryptokitties telah menguasai dunia. Apa yang telah kita lihat di sini adalah aplikasi populer pertama dari blockchain dalam bentuk rekreasi murni. Lebih dari membuat aplikasi utilitas, ini adalah jenis yang sebenarnya bisa menjadi super mainstream.

Namun, itu bukan satu-satunya pelajaran yang mereka ajarkan kepada kita. Kita semua tahu sekarang bahwa skalabilitas pasti perlu dikerjakan . Jika Ethereum dapat mengatasi masalah ini di masa depan (dengan penggunaan sharding, plasma, dll.) Maka DAPP dapat benar-benar melakukan terobosan dan menjadi bagian penting dari zeitgeist.