13

Partial answer: A large chunk of the contract can be seen here: https://etherscan.io/address/0x06012c8cf97bead5deae237070f9587f8e7a266d#code The breeding algorithm is "sooper-sekret" and is handled by a contract that implements GeneScienceInterface. As not-an-Ethereum-developer, I don't know where that contract lives. But @comodoro does! it's at ...


7

The most official documentation for this token is the request by itself on GitHub. The author of Non-fungible Token Standard is Dieter Shirley. He was first to implement it on 20 Sep 2017. I am also looking to see if I have basic code, how to deploy it on a testnet. There are too many good answers on this particular question and there are also multiple ...


6

http://web3js.readthedocs.io/en/1.0/web3-eth-contract.html#getpastevents The kitty auction contract emits an "AuctionSuccessful" event on each successful sale. You can get past events using web3.js with code that looks something like: var cksale = web3.eth.contract(saleAbi).at("0xb1690C08E213a35Ed9bAb7B318DE14420FB57d8C") cksale.getPastEvents('...


5

CryptoKitties is composed of 4 public facing contracts. In November 2017, as part of their launch, the AxiomZen team put out the CryptoKitty Bounty Program with all the primary smart contracts on github here: https://github.com/axiomzen/cryptokitties-bounty As part of the bounty program they released the details of 3 of 4 of their primary smart contracts: ...


3

Those are just comments. There just for people reading the code to know what that section of code is about. Solidity does have keywords constant and storage.


3

The images are not stored on the blockchain but the gene string is. The images produced are done via a server. A good example of this is how https://robohash.org/ works. A random string creates a new image. The gene string is only random to an extent. Each piece of the string represents a crypto kitties characteristics...and during the birthing process, ...


3

Your second hypothesis is correct. The “genes” are generated on-chain and ownership etc. is also tracked there. Interpreting the raw blockchain data and turning it into a game with a UI is done in a centralized manner with a standard webserver and all that Jazz.


3

Yes, one could say that. CryptoKitties actually tested Ethereum's capabilities in terms of scalability and transaction speed. At one stage, more than 10% of total Ethereum transactions belonged to people playing CryptoKitties which resulted in Ethereum network congestion. Eventually number of pending transactions increased significantly some of which took ...


2

Correct. The cut can be zero, but must be specified. The _nftAddress must point to a contract that implements ERC-721 (at least the draft that was in place at the time we published CK). See above. The deployment order is: Deploy the core contract. Deploy the auction contract passing the core contract address as _nftAddress. Call the setSaleAuctionAddress on ...


2

Ethereum is still very young, and has major scalability improvements coming down the pipeline. There are also some operations that shouldn't be done on-chain as they are too resource intensive. CryptoKitties did this with their gene science code from what I was able to read on medium about decompiled genescience bytecode, which would've partially alleviated ...


2

It's cheaper to use storage, because it just creates a pointer. If you were to use memory, the function would essentially have to create a copy of the Auction, which would then be discarded at the end of the function. They did it because there is no manipulation of auction, if they wanted to modify it somehow, but not changed the stored value, then it would ...


2

Because is not creating a new object but is a storage pointer. _getAuctionByTokenId most probably would read something in the contract storage. Assume this example contract MyContract { struct myStruct { address id; } mapping(address => myStruct) myMapping; function doSomeStuff(address _tokenId) public view returns(address) { ...


2

I don't see the point to duplicate data here and there and write layers to sync it (having, potentially, sync issues as well). The whole purpose of blockchain and DApps is to decentralise (D-app, decentralised application). I wouldn't centralise it again. Even because, any call in the blockchain that won't change the status doesn't consume any gas (like ...


1

If you take a look at the withdrawBalance() function inside the cryptoKitties contract you'll notice that the developers are able to withdraw "their cut" from the contract. This means every time the developers take their cut the amount will be subtracted from the contract Balance. Revenue is the total amount of ether that has passed the contract (which ...


1

I got the solution using Web3. Full code: var abi_ = [ {"inputs":[{"indexed":true,"name":"from","type":"address"}, {"indexed":true,"name":"to","type":"address"}, {"indexed":true,"name":"...


1

Why people waste money on lottery tickets? Why a person decides to climb a Mt. Everest when there is 2% chance to die? I think those questions are out of scope of this forum, so I suggest take some courses in human psychology. However I can answer my Cryptokitties are the most popular NFT It was the first NFT token, as Bitcoin was the first cryptocurrency. ...


1

Cryptokitties was deployed on 2017-11-28, which is a few months before the ERC721 spec got its first commit and only two months after the ERC721 spec even got drafted. Because of this, Cryokitties had to implement ERC721 prior to the spec being complete, which is why they may not include certain, expected functionality. With that said, Cryptokitties helped ...


1

Looks like it's deprecated (no longer in use): function tokenMetadata(uint256 _tokenId, string _preferredTransport) external view returns (string infoUrl) { require(erc721Metadata != address(0)); bytes32[4] memory buffer; uint256 count; (buffer, count) = erc721Metadata.getMetadata(_tokenId, _preferredTransport); return _toString(buffer, ...


1

@igor-barinov, From my understanding, you can connect Metamask to your ledger (via MM). Then send the cat to another address on the cryptokitties site.


1

You should fetch all the AuctionCreated events (it's in ClockAuctionBase.sol which SaleClockAuction indirectly inherits from) which are created when auctions are created.


1

You can't create an UI with those tools. Metamask offers only the interface between blockchain and JavaScript but you need other tools to actually create an UI around the concept. So the flow goes something like this: UI -> JavaScript -> Metamask (web3js) -> some node -> blockchain There are many guides for this, one comprehensive one is: https://medium....


1

KittyInterface kittyContract = KittyInterface(ckAddress); ckAddress is not being passed as a parameter to anything. This is a cast (like uint256(5) or address(0)). The line is saying "ckAddress is an address of a contract implementing the KittyInterface interface. I would like to reference that contract using the variable kittyContract."


1

The JavaScript library Web3.js has been developed specifically for Ethereum dapps. I don't think there's any competing JS frameworks for Ethereum at this time. Web3.js can be used in conjunction with a variety of JavaScript frameworks including the ones that you've mentioned, but Web3.js is the crucial JS library for connecting to Ethereum.


1

You always need some way to access the blockchain (or, more precisely, a node which connects to the blockchain). With current technology those are mostly centralized frontends (web3). But the point isn't to make everything decentralized - the point is to make the core (contract code) decentralized and then everyone can connect to the same code through ...


1

Your price per gas unit is set super high -- 41 Gwei, and the limit is 7,600,027 gas units. 41 * 7,600,027 = 311,601,107 Gwei, or 0.311601107 ETH (which estimates to about $300 USD right now). You need to lower the price per gas unit and the gas limit. The error message basically says that the transaction will fail because you don't have enough money in the ...


1

In most cases, we don't need to sign to send transactions between the site(contract) and me. But what the sign does is that site makes sure the user is real and he has ether(metamask in this case) account. To sign, we usually need email, username. We can register the user to the site with just email and username and whenever we need to transfer ether from ...


1

I believe this is only used as a form of login system. By signing a message, CryptoKitties can determine what address you are using, and therefore what account to show on their website.


1

Ethereum has one of the most talented Dev Teams in the crypto space who will always work on improving this chain. Also Ethereum is about to implement Proof of Stake which will change a lot as well.


Only top voted, non community-wiki answers of a minimum length are eligible