I wonder someone could give me some advice.

I am planning to work on a Ethereum project with a Solidity smart contract.

The smart contract should contain tokens which can be earned by a person by doing some real life tasks. The tokens can be given away by different parties who validate the tasks i real life.

My question: which erc contract should i use (erc721 for example) to give different parties the possibility to give away their own tokens to people. All tokens from the same party are the same.

Thanks in advance, Arnoud


It all comes down to how you want to handle the "tokens", are they points or are they badges/achievements/coupons ?

  1. If you're trying to award "achievements" then ERC-721 is what you're looking for. These are called non fungible tokens. I.e. CryptoKitties.

  2. If the parties want to award "loyalty points", then ERC-777 / ERC-223 depending on the features you want to use. These are fungible tokens.

Any of these can be minted and transferred from one party to another, if you the creator allow it to.

In any case, stay away from ERC20, as the standard transfers do not notify the receiver. And the only way of properly transferring these into smart contracts is doing 2 transactions ( approve() then transferFrom() ) which creates a really bad user experience.

Hope that helps.

  • Hi Micky, thanks for your answer. I will take a look at the ERC777/ERC223. Never read anything about that.
    – Arnoud
    Jul 15 '19 at 13:35

All tokens from the same party are the same.

You should use ERC20 or ERC223. The latter is almost backwards-compatible with ERC20 but there are differences. It is less common and you might not want the extra features/complexity.

Hope it helps.

  • Hi Rob, not all the tokens are the same. I think the ERC20 will not fit for my solution. I will take a look at the ERC721 / 777 and 223 first. Thanks for your time!
    – Arnoud
    Jul 15 '19 at 13:36

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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