Taking CryptoKitties as example, I'm sure it's possible to achieve the same concept of Crypto Collectable creating new kitties as Smart Contracts instead of using Tokens. Which would be the consequences of doing so? I'm looking for a technical anwser :)

UPDATE from the future: when I asked this question my journey on Ethereum/Solidity was just starting. The question as asked is wrong. As obvious as it might sound ERC-721 is a standard for writing contracts, not a token itself (so "ERC-721 token" is just wrong). What you can do is store "tokens" (or NFTs) in this kind of contracts.

What I really wanted to ask was:

Why should I store a non fungible token (eg: a CryptoKittie) inside a contract that follows the ERC-721 standard instead of creating and deploying a contract of my own for each token (just a simple contract that describes the token and its functionality).

Nowadays the answer seems obvious: compatibility and cost efficiency.

  • 1
    This question cannot be answered. Please explain actually what problem you are trying to solve and what your first technology choice was to solve the problem. Only then can consequences and "technical answers" be reasonably discussed. Commented Jun 15, 2019 at 4:53

2 Answers 2


as Smart Contracts instead of using Tokens

As Laurie points out, this is not really a choice. It's all smart contracts.

ERC721 is a standard interface. The advantage is interoperability with other contracts and wallets that understand the contract you wrote about the assets your contract's ledger represents.

Hope it helps.

  • Just to make clear: I'm talking about the token itself, not the Contract "wrapper" describing how the token behaves. Maybe I'm using the wrongs words and need to do a little research first.
    – viarnes
    Commented Jun 14, 2019 at 19:45
  • 3
    "token" is itself, a somewhat misleading word. The contract is a ledger of who owns what with strict access control that governs who can change what. The inner workings of the ledger are yours to do with as you please. If you want some interoperability, then exposing a surface area that supports all the ERC721 functions is the requirement to be compatible with other software that supports the standard. The is no prohibition on adding more, but you can't leave anything out or depart from the expected behavior. Commented Jun 14, 2019 at 20:00
  • How is a "registry inside the Token Ledger" called? Taken CK as example, what is a Kitty?
    – viarnes
    Commented Jun 14, 2019 at 22:57

Well, tokens are smart contracts.

All tokens are based on a smart contract - there can be no tokens without a smart contract. For example an ERC20 token is simply a standard which defines how a smart contract stores a ledger of token owners. So the contract itself basically contains information about which address owns how many of its tokens and some functionality to transfer the tokens around.

Furthermore, when you want to "send" tokens from address A to address B you can't send them like you send Ether. A transactions can't include tokens explicitly. Instead, when you are sending tokens, you are actually interacting with the token's smart contract and telling it to change its internal ledger to assign your tokens to another address. So tokens are not explicitly sent, they are always only reassigned inside the token contract.

  • Would you please explain using the ERC721 as example? I get the point of using the Token Contract as ledger when using a fungible token. But when the Token needs to store metadata and maybe be nontransferable, I miss the point.
    – viarnes
    Commented Jun 14, 2019 at 19:40
  • 1
    Metadata is irrelevant to the concerns ERC721 addresses. It concentrates on ownership and transfer. If non-transferable, then token representation may not be a fit. This is a little too general. Example? Maybe arena seating is non-fungible because of unique row/seat/section/events. Maybe transferable, maybe not. Is ERC721 the only possible structure? No, but it does address some of the concerns. Commented Jun 14, 2019 at 19:47

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.