{"id":120,"date":"2017-12-15T09:25:49","date_gmt":"2017-12-15T09:25:49","guid":{"rendered":"https:\/\/abhashstempblog.wordpress.com\/2017\/12\/15\/cryptokitties-the-tech-behind-the-craze\/"},"modified":"2023-01-09T13:28:41","modified_gmt":"2023-01-09T07:58:41","slug":"cryptokitties-the-tech-behind-the-craze","status":"publish","type":"post","link":"https:\/\/blog.springworks.in\/cryptokitties-the-tech-behind-the-craze\/","title":{"rendered":"CryptoKitties: The Tech Behind The Craze"},"content":{"rendered":"<figure class=\"wp-caption\">\n<figcaption class=\"wp-caption-text\"><\/figcaption><\/figure>\n<p>Kitties have officially taken over the blockchain.<\/p>\n<p>Several articles have been written about the \u201ckitty phenomena\u201d and they have received significant mainstream exposure as well. In fact, even Vitalik Buterin has gotten in on the act!<\/p>\n<figure class=\"wp-caption\">\n<p><img decoding=\"async\" src=\"https:\/\/cdn-images-1.medium.com\/max\/800\/1*rA6jvyYzsl5CDy2-c-N96A.png\" data-width=\"498\" data-height=\"217\"><\/p>\n<figcaption class=\"wp-caption-text\">Image Credit: <a href=\"https:\/\/twitter.com\/VitalikButerin\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>Vitalik Buterin&nbsp;Twitter<\/strong><\/a><\/figcaption>\n<\/figure>\n<p>So, just to <a href=\"https:\/\/medium.com\/@aidobreen\/how-does-cryptokitties-co-work-e5071c0abf73\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>give you a very brief idea<\/strong><\/a>, cryptokitties is one of the first games that has been created on the blockchain. The idea is to breed, collect and hold digital kitties. The game was made by Vancouver based blockchain company <a href=\"https:\/\/www.axiomzen.co\/\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>Axiom Zen<\/strong><\/a>.<\/p>\n<p>Like I have said before, there have been <a href=\"https:\/\/coinsutra.com\/cryptokitties-cryptocollectibles\/\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>many articles<\/strong><\/a> written on the topic and that you can checkout.<\/p>\n<p>In this article, we are going to look under the hood. We are going to see the nuts and bolts that powers this whole system. Also I want to aPAWlogise in advance for all the cat puns (it has begun already hasn\u2019t it?).<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_77 counter-hierarchy ez-toc-counter ez-toc-light-blue ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"#\" data-href=\"https:\/\/blog.springworks.in\/cryptokitties-the-tech-behind-the-craze\/#What_Is_Genetic_Algorithm\" >What Is Genetic Algorithm?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"#\" data-href=\"https:\/\/blog.springworks.in\/cryptokitties-the-tech-behind-the-craze\/#Kitties_Have_Codes_You_Gotta_Be_Kitten_Me\" >Kitties Have Codes? You Gotta Be Kitten&nbsp;Me!<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"#\" data-href=\"https:\/\/blog.springworks.in\/cryptokitties-the-tech-behind-the-craze\/#KittyAccessControl_The_Contract_Overlords\" >KittyAccessControl: The Contract Overlords<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"#\" data-href=\"https:\/\/blog.springworks.in\/cryptokitties-the-tech-behind-the-craze\/#KittyBase_What_Makes_A_Kitty\" >KittyBase: What Makes A&nbsp;Kitty?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"#\" data-href=\"https:\/\/blog.springworks.in\/cryptokitties-the-tech-behind-the-craze\/#KittyOwnerShip_Exchanging_The_Kitties\" >KittyOwnerShip: Exchanging The&nbsp;Kitties<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"#\" data-href=\"https:\/\/blog.springworks.in\/cryptokitties-the-tech-behind-the-craze\/#KittyBreeding_Freaky_Kitties\" >KittyBreeding: Freaky&nbsp;Kitties<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"#\" data-href=\"https:\/\/blog.springworks.in\/cryptokitties-the-tech-behind-the-craze\/#KittyAuctions_Going_Once%E2%80%A6Going_Twice\" >KittyAuctions: Going Once\u2026.Going Twice<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"#\" data-href=\"https:\/\/blog.springworks.in\/cryptokitties-the-tech-behind-the-craze\/#KittyMinting_Making_The_Special_Kitties\" >KittyMinting: Making The Special&nbsp;Kitties<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"#\" data-href=\"https:\/\/blog.springworks.in\/cryptokitties-the-tech-behind-the-craze\/#KittyCore_Bringing_It_All_Together\" >KittyCore: Bringing It All&nbsp;Together<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"#\" data-href=\"https:\/\/blog.springworks.in\/cryptokitties-the-tech-behind-the-craze\/#Looking_Forward\" >Looking Forward.<\/a><\/li><\/ul><\/nav><\/div>\n<h3><span class=\"ez-toc-section\" id=\"What_Is_Genetic_Algorithm\"><\/span><strong>What Is Genetic Algorithm?<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><a href=\"https:\/\/www.youtube.com\/watch?v=1i8muvzZkPw\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>Genetic algorithm<\/strong><\/a> is an optimisation technique used to solve non-linear optimisation problems. It works pretty much the way biological genetics works. It starts with an initial generation of candidate solutions that have been tests against the objective function. The algorithm then generates subsequent solutions from these parent solutions using bio-inspired operators like: selection, crossover, and mutation.<\/p>\n<p>While the genes inside our body consists of proteins and various other elements, in GA they are represented via numbers. So let\u2019s take a look at how evolution works using genetic algorithm. We will only be using binary cases i.e. cases where the genes can be represented as 1\u2019s and 0\u2019s.<\/p>\n<ul>\n<li><strong>Selection: <\/strong>Selection basically means retaining the best performing parents from one generation to the next. These well-performing parents are the ones that are preferred for reproduction. So eg. the two parents chosen via selection are:\n<p><\/p>\n<p>&nbsp;Parent 1: 1010011000<\/p>\n<p>&nbsp;Parent 2: 1001001010.<\/p>\n<\/li>\n<li><strong>Crossover: <\/strong>Next we have crossover. What happens here is that we choose the common variables of the two parents and retain those in the child solution. So using our example:\n<p><\/p>\n<p>&nbsp;Parent 1: 1010011000<\/p>\n<p>&nbsp;Parent 2: 1001001010<\/p>\n<p>&nbsp;Child: 1000011010<\/p>\n<p>&nbsp;This pretty much works the same in real life as well. This is how a child retains certain features of the father and the mother.<\/p>\n<\/li>\n<li><strong>Mutation: <\/strong>Mutation is when we take a parent and randomly mutate some of their variable to crate a child. This is done to make sure that the system can explore other possibilities for optimal solutions.\n<p><\/p>\n<p>&nbsp;Parent: 1010011000<\/p>\n<p>&nbsp;Child: 0101010001<\/p>\n<\/li>\n<\/ul>\n<p>Cryptokitties uses the Genetic Algorithm to create a new kitty. It uses the crossover mechanism to \u201csire\u201d a child genome using two parent kitties. This child genome is used to generate a new kitty.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Kitties_Have_Codes_You_Gotta_Be_Kitten_Me\"><\/span><strong>Kitties Have Codes? You Gotta Be Kitten&nbsp;Me!<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>You can read the main source code <a href=\"https:\/\/etherscan.io\/address\/0x06012c8cf97bead5deae237070f9587f8e7a266d#code\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>here.<\/strong><\/a><\/p>\n<p>Before we begin, a huge shoutout to <a href=\"https:\/\/medium.com\/loom-network\/how-to-code-your-own-cryptokitties-style-game-on-ethereum-7c8ac86a4eb3\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>James Martin Duffy\u2019s article<\/strong><\/a> for the explanation.<\/p>\n<p>Since the code for a dAPP like cryptokitty is humongous, proper code management was required. Because of this, the code was broken into various smaller contracts. The inheritance tree for the contracts goes like this:<\/p>\n<pre>contract KittyAccessControl<\/pre>\n<pre>contract KittyBase is KittyAccessControl<\/pre>\n<pre>contract KittyOwnership is KittyBase, ERC721<\/pre>\n<pre>contract KittyBreeding is KittyOwnership<\/pre>\n<pre>contract KittyAuction is KittyBreeding<\/pre>\n<pre>contract KittyMinting is KittyAuction<\/pre>\n<pre>contract KittyCore is KittyMinting<\/pre>\n<p>As the<a href=\"http:\/\/solidity.readthedocs.io\/en\/develop\/contracts.html#inheritance\" target=\"_blank\" rel=\"noopener noreferrer\"><strong> solidity guide<\/strong><\/a> states:<\/p>\n<blockquote>\n<p>\u201cWhen a contract inherits from multiple contracts, only a single contract is created on the blockchain, and the code from all the base contracts is copied into the created contract.\u201d<\/p>\n<\/blockquote>\n<p>So, in this case, KittyCore is the contract that is inheriting all the codes from the base contracts. Let\u2019s define what <a href=\"https:\/\/medium.com\/@aidobreen\/how-does-cryptokitties-co-work-e5071c0abf73\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>each one of these contracts<\/strong><\/a> do.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"KittyAccessControl_The_Contract_Overlords\"><\/span><strong>KittyAccessControl: The Contract Overlords<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>You can checkout the <a href=\"https:\/\/github.com\/axiomzen\/cryptokitties-bounty\/blob\/master\/contracts\/KittyAccessControl.sol\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>KittyAccessControl contract here<\/strong><\/a>.<\/p>\n<p>The main function of this contract is to manage special access privileges. This contract sets the management system of the entire contract and has nothing to do with the way the game works. The special roles assigned by this contract are:<\/p>\n<ul>\n<li><strong>CEO<\/strong>: The CEO can reassign other roles and change the addresses of the dependent smart contracts. They can also unpause the contract (more on this in a bit).<\/li>\n<li><strong>CFO<\/strong>: Can withdraw funds from KittyCore and the auction contracts.<\/li>\n<li><strong>COO<\/strong>: Can release gen0 kitties for auction and mint promo cats. (we will explore this later in KittyAuction)<\/li>\n<\/ul>\n<p>This contract also has a \u201cpause\u201d function which looks like this:<\/p>\n<pre>function pause() public onlyCLevel whenNotPaused <br>{<\/pre>\n<pre>paused = true;<\/pre>\n<pre>}<\/pre>\n<p>This pause function was added because the developers needed an option to pause things in case they wanted to work on the backend to upgrade the system.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"KittyBase_What_Makes_A_Kitty\"><\/span><strong>KittyBase: What Makes A&nbsp;Kitty?<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>KittyBase is the most important contract as far as \u201ckitty definition\u201d is concerned. This is where we set ground rules for kitty creation. So how are kitties created? Turns out that sunshine, rainbows and floof is not the answer.<\/p>\n<pre>struct Kitty<\/pre>\n<pre>{<\/pre>\n<pre>uint256 genes;<\/pre>\n<pre>uint64 birthTime;<\/pre>\n<pre>uint64 cooldownEndBlock;<\/pre>\n<pre>uint32 matronId;<\/pre>\n<pre>uint32 sireId;<\/pre>\n<pre>uint32 siringWithId;<\/pre>\n<pre>uint16 cooldownIndex;<\/pre>\n<pre>uint16 generation;<\/pre>\n<pre>}<\/pre>\n<p>So apparently a kitty is a struct with variables.<\/p>\n<figure class=\"wp-caption\">\n<p><img decoding=\"async\" src=\"https:\/\/cdn-images-1.medium.com\/max\/800\/1*R4uGDcEp1_FUCtupu2GKjg.jpeg\" data-width=\"500\" data-height=\"433\"><\/p>\n<figcaption class=\"wp-caption-text\">Image Credit: <a href=\"https:\/\/i.pinimg.com\/564x\/fd\/2d\/4a\/fd2d4a3c3112859edefed56d88eae16b--funny-cute-kittens-funny-cat-pictures.jpg\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>Pinterest<\/strong><\/a><\/figcaption>\n<\/figure>\n<p>So let\u2019s see what each of those variables are.<\/p>\n<p><strong>genes<\/strong>: The genetic code of the kitty.<\/p>\n<p><strong>birthTime<\/strong>: The exact timestamp of the kitty\u2019s birth.<\/p>\n<p><strong>cooldownEndBlock<\/strong>: The minimum time that a kitty has to wait before it can breed again.<\/p>\n<p><strong>matronId<\/strong>: The ID of the cat\u2019s mother.<\/p>\n<p><strong>sireId<\/strong>: The ID of the cat\u2019s father.<\/p>\n<p><strong>siringWithId<\/strong>: If the cat isn\u2019t pregnant then this is set to 0. However, if pregnant then this is set to the Id of the father<\/p>\n<p><strong>cooldownIndex<\/strong>: How much longer the cat has to wait before it can breed again.<\/p>\n<p><strong>generation<\/strong>: The generation of the cat. The first kitties produced were generation 0.<\/p>\n<p>This part of the contract also keeps track of the kitty\u2019s owner. This is done by the following line of code:<\/p>\n<pre>mapping (uint256 =&gt; address) public kittyIndexToOwner;<\/pre>\n<h3><span class=\"ez-toc-section\" id=\"KittyOwnerShip_Exchanging_The_Kitties\"><\/span><strong>KittyOwnerShip: Exchanging The&nbsp;Kitties<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>This is how they define KittyOwnerShip in their contract:<\/p>\n<blockquote>\n<p>\u201cThis provides the methods required for basic non-fungible token transactions, following the draft ERC-721 spec (<a href=\"https:\/\/github.com\/ethereum\/EIPs\/issues\/721%29\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/github.com\/ethereum\/EIPs\/issues\/721)<\/a>.\u201d<\/p>\n<\/blockquote>\n<p>What does \u201cfungible\u201d mean?<\/p>\n<p>A product is said to be fungible when it can be replaced and substituted by something of equal value. So, a Mars bar is a fungible product. You can easily replace one Mars bar by another mars bar.<\/p>\n<p>However, if you take your neighbor\u2019s car for a drive and come back with another car, even if it\u2019s the same model, you will probably end up with a black eye\u2026or two. The reason for this is simple, a car isn\u2019t a fungible product.<\/p>\n<p>Dollar eg. is a fungible product. 5 Dollars is 5 Dollars no matter how you spin it. Similarly, 5 Eth is 5 Eth, they are both fungible.<\/p>\n<p>However, the kitties in CryptoKitties are non-fungible because each kitty is not created equally. You can\u2019t simply exchange one kitty with another. The CryptoKitties tokens follows the ERC721 formula which you can <a href=\"https:\/\/gist.githubusercontent.com\/jamesmartinduffy\/01f8bd94e2475f9e27cdcacd113d2d00\/raw\/6727af164e2f4751ee6638566fcc240537b73eea\/CryptoKitties02.js\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>check here.<\/strong><\/a><\/p>\n<h3><span class=\"ez-toc-section\" id=\"KittyBreeding_Freaky_Kitties\"><\/span><strong>KittyBreeding: Freaky&nbsp;Kitties<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<figure class=\"wp-caption\">\n<p><img decoding=\"async\" src=\"https:\/\/cdn-images-1.medium.com\/max\/800\/1*HkvyVxwQpymXDEw50gYl6A.jpeg\" data-width=\"408\" data-height=\"600\"><\/p>\n<figcaption class=\"wp-caption-text\">Image Credit<strong>: <\/strong><a href=\"https:\/\/i.pinimg.com\/736x\/82\/07\/14\/8207142d555b483cecb9661497b51eb1--too-cute-adorable-animals.jpg\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>Pinterest<\/strong><\/a><\/figcaption>\n<\/figure>\n<p>This is the contract where we set the functions required for two kitties to breed and produce a new kitty. Let\u2019s take a look at how the function works:<\/p>\n<pre>function _breedWith(uint256 _matronId, uint256 _sireId) internal<\/pre>\n<pre>{<\/pre>\n<pre>Kitty storage sire = kitties[_sireId];<\/pre>\n<pre>Kitty storage matron = kitties[_matronId];<\/pre>\n<pre>matron.siringWithId = uint32(_sireId);<\/pre>\n<pre>_triggerCooldown(sire);<\/pre>\n<pre>_triggerCooldown(matron);<\/pre>\n<pre>delete sireAllowedToAddress[_matronId];<\/pre>\n<pre>delete sireAllowedToAddress[_sireId];<\/pre>\n<pre>pregnantKitties++;<\/pre>\n<pre>Pregnant(kittyIndexToOwner[_matronId], _matronId, _sireId, matron.cooldownEndBlock);<\/pre>\n<pre>}<\/pre>\n<p>Ok, so what is happening in this piece of code?<\/p>\n<p>Firstly, the Ids of the both the mother and father kitties are taken for the matronId and sireId and the mother\u2019s \u201csiring withId\u201d is changed to the father\u2019s id. (Remember: a non-pregnant mother\u2019s siringwithId is 0 while that of the pregnant mother, the siringwithId is the Id of the sire.)<\/p>\n<p>Along with that the number pregnant kitties in the system is increased 1.<\/p>\n<p>This was the mating process, let\u2019s see how the birthing process works.<\/p>\n<pre>function giveBirth(uint256 _matronId)<\/pre>\n<pre>external<\/pre>\n<pre>whenNotPaused<\/pre>\n<pre>returns(uint256)<\/pre>\n<pre>{<\/pre>\n<pre>Kitty storage matron = kitties[_matronId];<\/pre>\n<pre>require(matron.birthTime != 0);<\/pre>\n<pre>require(_isReadyToGiveBirth(matron));<\/pre>\n<pre>uint256 sireId = matron.siringWithId<\/pre>\n<pre>Kitty storage sire = kitties[sireId];<\/pre>\n<pre>uint16 parentGen = matron.generation;<\/pre>\n<pre>if (sire.generation &gt; matron.generation) <\/pre>\n<pre>{<\/pre>\n<pre>parentGen = sire.generation;<\/pre>\n<pre>}<\/pre>\n<pre>uint256 childGenes = geneScience.mixGenes(matron.genes, sire.genes, matron.cooldownEndBlock - 1);<\/pre>\n<pre>address owner = kittyIndexToOwner[_matronId];<\/pre>\n<pre>uint256 kittenId = _createKitty(_matronId, matron.siringWithId, parentGen + 1, childGenes, owner);<\/pre>\n<pre>delete matron.siringWithId;<\/pre>\n<pre>pregnantKitties--;<\/pre>\n<pre>msg.sender.send(autoBirthFee);<\/pre>\n<pre>return kittenId;<\/pre>\n<pre>}<\/pre>\n<p>Firstly, the function checks whether the mother is ready to give birth. If the the mother is ready to give birth then the parentGen aka the generation of the parent is set to mother\u2019s generation or the father\u2019s generation, depending on who is younger.<\/p>\n<p>After that the child\u2019s genes are created by calling the geneScience.mixGenes() function. The breeding algorithm is \u201csooper-sekret\u201d and is handled by a contract that implements GeneScienceInterface. The algorithm is close-source and not open to the public.<\/p>\n<p>Once the mother gives birth three things happen:<\/p>\n<ul>\n<li>The number of pregnant kitties goes down by 1 (pregnantKitties- -).<\/li>\n<li>The ownership of the new child kitty goes to the owner of the mother kitty.<\/li>\n<li>The function then calls the \u201ccreateKitty()\u201d function that was elaborated in KittyBase.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"KittyAuctions_Going_Once%E2%80%A6Going_Twice\"><\/span><strong>KittyAuctions: Going Once\u2026.Going Twice<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<figure class=\"wp-caption\">\n<p><img decoding=\"async\" src=\"https:\/\/cdn-images-1.medium.com\/max\/800\/1*xA7IIwk-qxSPBUCMKnuYiA.jpeg\" data-width=\"610\" data-height=\"582\"><\/p>\n<figcaption class=\"wp-caption-text\">Image Credit:<a href=\"https:\/\/memeguy.com\/photos\/images\/outbid-on-ebay-or-wow-auction-house--7161.jpg\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>&nbsp;Memeguy<\/strong><\/a><\/figcaption>\n<\/figure>\n<p>Here we have the public methods for auctioning or bidding on cats or siring services. The actual auction functionality is handled in two sibling contracts (one for sales and one for siring), while auction creation and bidding is mostly mediated through this facet of the core contract.<\/p>\n<p>In this contract, the devs have set various public methods for auctioning on cats or for siring services. The main auction functionality has been split into two sibling contracts:<\/p>\n<ul>\n<li><a href=\"https:\/\/etherscan.io\/address\/0xb1690c08e213a35ed9bab7b318de14420fb57d8c#code\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>setSaleAuctionAddress()<\/strong><\/a>.<\/li>\n<li><a href=\"https:\/\/etherscan.io\/address\/0xc7af99fe5513eb6710e6d5f44f9989da40f27f26#code\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>setSiringAuctionAddress()<\/strong><\/a><\/li>\n<\/ul>\n<p>These functions can only be called by the CEO.<\/p>\n<p>The reason why the devs set up two sibiling contracts is because according to them:<\/p>\n<blockquote>\n<p>\u201cTheir logic is somewhat complex and there\u2019s always a risk of subtle bugs. By keeping them in their own contracts, we can upgrade them without disrupting the main contract that tracks kitty ownership.\u201d<\/p>\n<\/blockquote>\n<p>Btw.. a siring auction is when you put your kitty up for auction so that other users can pay you ether for your kitty to breed with theirs.<\/p>\n<p>\u2026.<\/p>\n<p>We live in strange times.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"KittyMinting_Making_The_Special_Kitties\"><\/span><strong>KittyMinting: Making The Special&nbsp;Kitties<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Remember how we said earlier that the COO has the power to create promo cats and gen 0 cats?<\/p>\n<p>This is the contract which enables them to do so.<\/p>\n<p>There is a limit to the number of promo (5000) and Gen 0 cats (45000) that can be created. It has already been preset in the code itself:<\/p>\n<pre>uint256 public constant PROMO_CREATION_LIMIT = 5000;<\/pre>\n<pre>uint256 public constant GEN0_CREATION_LIMIT = 45000;<\/pre>\n<p>Let\u2019s take a look into this contract:<\/p>\n<pre>function createPromoKitty(uint256 _genes, address _owner) external onlyCOO {<\/pre>\n<pre>address kittyOwner = _owner;<\/pre>\n<pre>if (kittyOwner == address(0)) {<\/pre>\n<pre>kittyOwner = cooAddress;<\/pre>\n<pre>}<\/pre>\n<pre>require(promoCreatedCount &lt; PROMO_CREATION_LIMIT);<\/pre>\n<pre>promoCreatedCount++;<\/pre>\n<pre>_createKitty(0, 0, 0, _genes, kittyOwner);<\/pre>\n<pre>}<\/pre>\n<pre>function createGen0Auction(uint256 _genes) external onlyCOO {<\/pre>\n<pre>require(gen0CreatedCount &lt; GEN0_CREATION_LIMIT);<\/pre>\n<pre>uint256 kittyId = _createKitty(0, 0, 0, _genes, address(this));<\/pre>\n<pre>_approve(kittyId, saleAuction);<\/pre>\n<pre>saleAuction.createAuction(<\/pre>\n<pre>kittyId,<\/pre>\n<pre>_computeNextGen0Price(),<\/pre>\n<pre>0,<\/pre>\n<pre>GEN0_AUCTION_DURATION,<\/pre>\n<pre>address(this)<\/pre>\n<pre>);<\/pre>\n<pre>gen0CreatedCount++;<\/pre>\n<pre>}<\/pre>\n<p>Let\u2019s examine the createPromoKitty() function.<\/p>\n<p>So, on closer inspection certain things are obvious:<\/p>\n<ul>\n<li>The COO can create whatever Promo kitty they want with whatever genes they want.<\/li>\n<li>The COO can send the promo kitty to anyone that they want.<\/li>\n<\/ul>\n<p>On checking the createGen0Auction() function, the following is apparent:<\/p>\n<ul>\n<li>The COO has full power over what gen 0 kitty they want to create.<\/li>\n<li>However, once the kitty is created, it goes straight to auction.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"KittyCore_Bringing_It_All_Together\"><\/span><strong>KittyCore: Bringing It All&nbsp;Together<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>This is the main contract that runs on the Ethereum Blockchain.<\/p>\n<p>This contract inherits all the functions from the previous contracts AND it also defines a method of its own:<\/p>\n<pre>function getKitty(uint256 _id)<\/pre>\n<pre>external<\/pre>\n<pre>view<\/pre>\n<pre>returns (<\/pre>\n<pre>bool isGestating,<\/pre>\n<pre>bool isReady,<\/pre>\n<pre>uint256 cooldownIndex,<\/pre>\n<pre>uint256 nextActionAt,<\/pre>\n<pre>uint256 siringWithId,<\/pre>\n<pre>uint256 birthTime,<\/pre>\n<pre>uint256 matronId,<\/pre>\n<pre>uint256 sireId,<\/pre>\n<pre>uint256 generation,<\/pre>\n<pre>uint256 genes<\/pre>\n<pre>)<\/pre>\n<pre>{<\/pre>\n<pre>Kitty storage kit = kitties[_id];<\/pre>\n<pre>isGestating = (kit.siringWithId != 0);<\/pre>\n<pre>isReady = (kit.cooldownEndBlock &lt;= block.number);<\/pre>\n<pre>cooldownIndex = uint256(kit.cooldownIndex);<\/pre>\n<pre>nextActionAt = uint256(kit.cooldownEndBlock);<\/pre>\n<pre>siringWithId = uint256(kit.siringWithId);<\/pre>\n<pre>birthTime = uint256(kit.birthTime);<\/pre>\n<pre>matronId = uint256(kit.matronId);<\/pre>\n<pre>sireId = uint256(kit.sireId);<\/pre>\n<pre>generation = uint256(kit.generation);<\/pre>\n<pre>genes = kit.genes;<\/pre>\n<pre>}<\/pre>\n<p>This function basically returns all the for a specific kitty from the blockchain.<\/p>\n<p>So, there you go. A brief look at the tech behind the kitty madness.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Looking_Forward\"><\/span><strong>Looking Forward.<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>It is not an exaggeration to say that cryptokitties have taken the world by storm. According to ETH Gas Station, Cryptokitties <a href=\"https:\/\/cointelegraph.com\/news\/cryptokitties-becomes-largest-ethereum-based-decentralized-application\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>were responsible for 13.94%<\/strong><\/a> of the Ethereum\u2019s transaction volume over the last 1,500 blocks.<\/p>\n<p>People have <a href=\"https:\/\/cointelegraph.com\/news\/cryptokitties-sales-hit-12-million-could-be-ethereums-killer-app-after-all\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>spent more than twelve million dollars<\/strong><\/a> buying these cryptokitties. There are even reports of people who have <a href=\"https:\/\/www.theverge.com\/2017\/12\/13\/16754266\/cryptokitties-ethereum-ether-game-cats\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>made more money trading cyptokitties<\/strong><\/a> than investing in their IRA!<\/p>\n<p>All these kitty transactions have <a href=\"https:\/\/www.coindesk.com\/loveable-digital-kittens-clogging-ethereums-blockchain\/\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>definitely clogged up<\/strong><\/a> the Ethereum blockchain but the lesson that they have taught everyone for the future is an essential one.<\/p>\n<p>As more and more people embrace Ethereum, it is essential for the developers to make sure that heavy duty dAPPs like cryptokitties don\u2019t wreck up the system going forward.<\/p>\n<p>In the meantime, if you want to buy a cryptokitty then you can do so by <a href=\"https:\/\/www.cryptokitties.co\/\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>going to their website<\/strong><\/a>.<\/p>\n<p>In fact, you can buy this <a href=\"https:\/\/www.cryptokitties.co\/kitty\/2\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>Gen 0 kitty<\/strong><\/a> for\u2026\u2026344.61 Ether.<\/p>\n<figure class=\"wp-caption\">\n<p><img decoding=\"async\" src=\"https:\/\/cdn-images-1.medium.com\/max\/800\/1*iczEnF5N5wCxUdvSw8e1uw.jpeg\" data-width=\"511\" data-height=\"411\"><\/p>\n<figcaption class=\"wp-caption-text\">Image Credit: <a href=\"https:\/\/www.facebook.com\/puppersdoggos\/photos\/a.1011082769010940.1073741827.1011080919011125\/1491083574344188\/?type=3&amp;theater\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>Pupper&nbsp;Doggo<\/strong><\/a><\/figcaption>\n<\/figure>\n<hr>\n<p>Join our <a href=\"http:\/\/t.me\/springrole\" target=\"_blank\" rel=\"noopener noreferrer\">#telegram<\/a>, #<a href=\"http:\/\/twitter.com\/springroleinc\" target=\"_blank\" rel=\"noopener noreferrer\">twitter<\/a>, and #<a href=\"http:\/\/facebook.com\/springrole\" target=\"_blank\" rel=\"noopener noreferrer\">facebook<\/a> communities.<\/p>\n<p><iframe title=\"SIGNUP HERE and get early access to create a profile on our beta\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" width=\"100%\" height=\"386\" scrolling=\"no\" frameborder=\"0\" src=\"https:\/\/upscri.be\/afa861?as_embed=true#?secret=v8KSC9NaXY\" data-secret=\"v8KSC9NaXY\"><\/iframe><\/p>\n<p>Draft White paper: <a href=\"https:\/\/docsend.com\/view\/k5nghff\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>here<\/strong><\/a><\/p>\n\n\n<p class=\"has-medium-font-size\"><strong><a href=\"https:\/\/blog.springworks.in\/category\/blockchain-technology\/\">Read all our articles related to Blockchain Technology<\/a><\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Kitties have officially taken over the blockchain. Several articles have been written about the \u201ckitty phenomena\u201d and they have received significant mainstream exposure as well. In fact, even Vitalik Buterin has gotten in on the act! Image Credit: Vitalik Buterin&nbsp;Twitter So, just to give you a very brief idea, cryptokitties is one of the first<\/p>\n","protected":false},"author":3,"featured_media":1122,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1439],"tags":[18,52],"class_list":["post-120","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blockchain-technology","tag-blockchain","tag-ethereum","disable-dropcap","disable-2-columns"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.5 (Yoast SEO v27.5) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>CryptoKitties: The Tech Behind The Craze - Springworks Blog<\/title>\n<meta name=\"description\" content=\"CryptoKitties are the most accessible &amp; delight-driven ways to experience blockchain technology. How CryptoKitties are different from Bitcoins and real cats\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.springworks.in\/cryptokitties-the-tech-behind-the-craze\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"CryptoKitties: The Tech Behind The Craze\" \/>\n<meta property=\"og:description\" content=\"Kitties have officially taken over the blockchain. Several articles have been written about the \u201ckitty phenomena\u201d and they have received significant\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.springworks.in\/cryptokitties-the-tech-behind-the-craze\/\" \/>\n<meta property=\"og:site_name\" content=\"Springworks Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-12-15T09:25:49+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-01-09T07:58:41+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.springworks.in\/wp-content\/uploads\/2017\/12\/1_yG-3TfUYLyrll8tpR2CtZQ.png\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"654\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Springworks Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@https:\/\/twitter.com\/springroleinc\/\" \/>\n<meta name=\"twitter:site\" content=\"@springroleinc\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Springworks Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blog.springworks.in\\\/cryptokitties-the-tech-behind-the-craze\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blog.springworks.in\\\/cryptokitties-the-tech-behind-the-craze\\\/\"},\"author\":{\"name\":\"Springworks Team\",\"@id\":\"https:\\\/\\\/www.blog.springworks.in\\\/#\\\/schema\\\/person\\\/6d88881fb107cd90192ec2da81bff5aa\"},\"headline\":\"CryptoKitties: The Tech Behind The Craze\",\"datePublished\":\"2017-12-15T09:25:49+00:00\",\"dateModified\":\"2023-01-09T07:58:41+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blog.springworks.in\\\/cryptokitties-the-tech-behind-the-craze\\\/\"},\"wordCount\":1904,\"publisher\":{\"@id\":\"https:\\\/\\\/www.blog.springworks.in\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/blog.springworks.in\\\/cryptokitties-the-tech-behind-the-craze\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blog.springworks.in\\\/wp-content\\\/uploads\\\/2017\\\/12\\\/1_yG-3TfUYLyrll8tpR2CtZQ.png\",\"keywords\":[\"Blockchain\",\"Ethereum\"],\"articleSection\":[\"Blockchain Technology\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blog.springworks.in\\\/cryptokitties-the-tech-behind-the-craze\\\/\",\"url\":\"https:\\\/\\\/blog.springworks.in\\\/cryptokitties-the-tech-behind-the-craze\\\/\",\"name\":\"CryptoKitties: The Tech Behind The Craze - Springworks Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.blog.springworks.in\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blog.springworks.in\\\/cryptokitties-the-tech-behind-the-craze\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blog.springworks.in\\\/cryptokitties-the-tech-behind-the-craze\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blog.springworks.in\\\/wp-content\\\/uploads\\\/2017\\\/12\\\/1_yG-3TfUYLyrll8tpR2CtZQ.png\",\"datePublished\":\"2017-12-15T09:25:49+00:00\",\"dateModified\":\"2023-01-09T07:58:41+00:00\",\"description\":\"CryptoKitties are the most accessible & delight-driven ways to experience blockchain technology. How CryptoKitties are different from Bitcoins and real cats\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/blog.springworks.in\\\/cryptokitties-the-tech-behind-the-craze\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blog.springworks.in\\\/cryptokitties-the-tech-behind-the-craze\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/blog.springworks.in\\\/cryptokitties-the-tech-behind-the-craze\\\/#primaryimage\",\"url\":\"https:\\\/\\\/blog.springworks.in\\\/wp-content\\\/uploads\\\/2017\\\/12\\\/1_yG-3TfUYLyrll8tpR2CtZQ.png\",\"contentUrl\":\"https:\\\/\\\/blog.springworks.in\\\/wp-content\\\/uploads\\\/2017\\\/12\\\/1_yG-3TfUYLyrll8tpR2CtZQ.png\",\"width\":800,\"height\":654,\"caption\":\"CryptoKitties\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/blog.springworks.in\\\/cryptokitties-the-tech-behind-the-craze\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.blog.springworks.in\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"CryptoKitties: The Tech Behind The Craze\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.blog.springworks.in\\\/#website\",\"url\":\"https:\\\/\\\/www.blog.springworks.in\\\/\",\"name\":\"Springworks Blog\",\"description\":\"Everything about the Future of Hiring and Recruiting\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.blog.springworks.in\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.blog.springworks.in\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.blog.springworks.in\\\/#organization\",\"name\":\"Springworks\",\"url\":\"https:\\\/\\\/www.blog.springworks.in\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.blog.springworks.in\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"\\\/wp-content\\\/uploads\\\/2021\\\/09\\\/Springworks-Blog-1.png\",\"contentUrl\":\"\\\/wp-content\\\/uploads\\\/2021\\\/09\\\/Springworks-Blog-1.png\",\"width\":548,\"height\":79,\"caption\":\"Springworks\"},\"image\":{\"@id\":\"https:\\\/\\\/www.blog.springworks.in\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/x.com\\\/springroleinc\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.blog.springworks.in\\\/#\\\/schema\\\/person\\\/6d88881fb107cd90192ec2da81bff5aa\",\"name\":\"Springworks Team\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/blog.springworks.in\\\/wp-content\\\/litespeed\\\/avatar\\\/377f22b6c39a82d794600259c507e8a8.jpg?ver=1777544559\",\"url\":\"https:\\\/\\\/blog.springworks.in\\\/wp-content\\\/litespeed\\\/avatar\\\/377f22b6c39a82d794600259c507e8a8.jpg?ver=1777544559\",\"contentUrl\":\"https:\\\/\\\/blog.springworks.in\\\/wp-content\\\/litespeed\\\/avatar\\\/377f22b6c39a82d794600259c507e8a8.jpg?ver=1777544559\",\"caption\":\"Springworks Team\"},\"description\":\"Building products and tools to simplify the life of an org's HR function in terms of recruiting, onboarding &amp; retention!\",\"sameAs\":[\"https:\\\/\\\/www.springworks.in\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/springrole\\\/\",\"https:\\\/\\\/x.com\\\/https:\\\/\\\/twitter.com\\\/springroleinc\\\/\"]}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"CryptoKitties: The Tech Behind The Craze - Springworks Blog","description":"CryptoKitties are the most accessible & delight-driven ways to experience blockchain technology. How CryptoKitties are different from Bitcoins and real cats","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.springworks.in\/cryptokitties-the-tech-behind-the-craze\/","og_locale":"en_US","og_type":"article","og_title":"CryptoKitties: The Tech Behind The Craze","og_description":"Kitties have officially taken over the blockchain. Several articles have been written about the \u201ckitty phenomena\u201d and they have received significant","og_url":"https:\/\/blog.springworks.in\/cryptokitties-the-tech-behind-the-craze\/","og_site_name":"Springworks Blog","article_published_time":"2017-12-15T09:25:49+00:00","article_modified_time":"2023-01-09T07:58:41+00:00","og_image":[{"width":800,"height":654,"url":"https:\/\/blog.springworks.in\/wp-content\/uploads\/2017\/12\/1_yG-3TfUYLyrll8tpR2CtZQ.png","type":"image\/png"}],"author":"Springworks Team","twitter_card":"summary_large_image","twitter_creator":"@https:\/\/twitter.com\/springroleinc\/","twitter_site":"@springroleinc","twitter_misc":{"Written by":"Springworks Team","Est. reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.springworks.in\/cryptokitties-the-tech-behind-the-craze\/#article","isPartOf":{"@id":"https:\/\/blog.springworks.in\/cryptokitties-the-tech-behind-the-craze\/"},"author":{"name":"Springworks Team","@id":"https:\/\/www.blog.springworks.in\/#\/schema\/person\/6d88881fb107cd90192ec2da81bff5aa"},"headline":"CryptoKitties: The Tech Behind The Craze","datePublished":"2017-12-15T09:25:49+00:00","dateModified":"2023-01-09T07:58:41+00:00","mainEntityOfPage":{"@id":"https:\/\/blog.springworks.in\/cryptokitties-the-tech-behind-the-craze\/"},"wordCount":1904,"publisher":{"@id":"https:\/\/www.blog.springworks.in\/#organization"},"image":{"@id":"https:\/\/blog.springworks.in\/cryptokitties-the-tech-behind-the-craze\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.springworks.in\/wp-content\/uploads\/2017\/12\/1_yG-3TfUYLyrll8tpR2CtZQ.png","keywords":["Blockchain","Ethereum"],"articleSection":["Blockchain Technology"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/blog.springworks.in\/cryptokitties-the-tech-behind-the-craze\/","url":"https:\/\/blog.springworks.in\/cryptokitties-the-tech-behind-the-craze\/","name":"CryptoKitties: The Tech Behind The Craze - Springworks Blog","isPartOf":{"@id":"https:\/\/www.blog.springworks.in\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.springworks.in\/cryptokitties-the-tech-behind-the-craze\/#primaryimage"},"image":{"@id":"https:\/\/blog.springworks.in\/cryptokitties-the-tech-behind-the-craze\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.springworks.in\/wp-content\/uploads\/2017\/12\/1_yG-3TfUYLyrll8tpR2CtZQ.png","datePublished":"2017-12-15T09:25:49+00:00","dateModified":"2023-01-09T07:58:41+00:00","description":"CryptoKitties are the most accessible & delight-driven ways to experience blockchain technology. How CryptoKitties are different from Bitcoins and real cats","breadcrumb":{"@id":"https:\/\/blog.springworks.in\/cryptokitties-the-tech-behind-the-craze\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.springworks.in\/cryptokitties-the-tech-behind-the-craze\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.springworks.in\/cryptokitties-the-tech-behind-the-craze\/#primaryimage","url":"https:\/\/blog.springworks.in\/wp-content\/uploads\/2017\/12\/1_yG-3TfUYLyrll8tpR2CtZQ.png","contentUrl":"https:\/\/blog.springworks.in\/wp-content\/uploads\/2017\/12\/1_yG-3TfUYLyrll8tpR2CtZQ.png","width":800,"height":654,"caption":"CryptoKitties"},{"@type":"BreadcrumbList","@id":"https:\/\/blog.springworks.in\/cryptokitties-the-tech-behind-the-craze\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.blog.springworks.in\/"},{"@type":"ListItem","position":2,"name":"CryptoKitties: The Tech Behind The Craze"}]},{"@type":"WebSite","@id":"https:\/\/www.blog.springworks.in\/#website","url":"https:\/\/www.blog.springworks.in\/","name":"Springworks Blog","description":"Everything about the Future of Hiring and Recruiting","publisher":{"@id":"https:\/\/www.blog.springworks.in\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.blog.springworks.in\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.blog.springworks.in\/#organization","name":"Springworks","url":"https:\/\/www.blog.springworks.in\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.blog.springworks.in\/#\/schema\/logo\/image\/","url":"\/wp-content\/uploads\/2021\/09\/Springworks-Blog-1.png","contentUrl":"\/wp-content\/uploads\/2021\/09\/Springworks-Blog-1.png","width":548,"height":79,"caption":"Springworks"},"image":{"@id":"https:\/\/www.blog.springworks.in\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/springroleinc"]},{"@type":"Person","@id":"https:\/\/www.blog.springworks.in\/#\/schema\/person\/6d88881fb107cd90192ec2da81bff5aa","name":"Springworks Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.springworks.in\/wp-content\/litespeed\/avatar\/377f22b6c39a82d794600259c507e8a8.jpg?ver=1777544559","url":"https:\/\/blog.springworks.in\/wp-content\/litespeed\/avatar\/377f22b6c39a82d794600259c507e8a8.jpg?ver=1777544559","contentUrl":"https:\/\/blog.springworks.in\/wp-content\/litespeed\/avatar\/377f22b6c39a82d794600259c507e8a8.jpg?ver=1777544559","caption":"Springworks Team"},"description":"Building products and tools to simplify the life of an org's HR function in terms of recruiting, onboarding &amp; retention!","sameAs":["https:\/\/www.springworks.in\/","https:\/\/www.linkedin.com\/company\/springrole\/","https:\/\/x.com\/https:\/\/twitter.com\/springroleinc\/"]}]}},"_links":{"self":[{"href":"https:\/\/blog.springworks.in\/wp-json\/wp\/v2\/posts\/120","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.springworks.in\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.springworks.in\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.springworks.in\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.springworks.in\/wp-json\/wp\/v2\/comments?post=120"}],"version-history":[{"count":6,"href":"https:\/\/blog.springworks.in\/wp-json\/wp\/v2\/posts\/120\/revisions"}],"predecessor-version":[{"id":510516,"href":"https:\/\/blog.springworks.in\/wp-json\/wp\/v2\/posts\/120\/revisions\/510516"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.springworks.in\/wp-json\/wp\/v2\/media\/1122"}],"wp:attachment":[{"href":"https:\/\/blog.springworks.in\/wp-json\/wp\/v2\/media?parent=120"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.springworks.in\/wp-json\/wp\/v2\/categories?post=120"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.springworks.in\/wp-json\/wp\/v2\/tags?post=120"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}