ERC721 Non-Fungible Tokens and Ardor Singleton Assets
I’ve researched this topic a bit lately and when I came across this unanswered question in the ethereum stackexchange, I decided to write up my findings as this might be better than nothing, which is what I found regarding that matter. A disclaimer: I’ve not yet worked with ERC721 myself yet and have based this article on the available resources, of which a few are linked in the article where relevant.
ERC721 is a token standard for non fungible tokens (NFT) whose interface allows individual identification of every single token of a smart contract. Use case examples could be representation of physical goods such as paintings or deeds, or digital goods such as items in multi-player games. A NFT could enable a game to track an item’s history. For example a sword could become valuable because it was used by a famous player in winning a championship or completing a difficult quest. An item’s condition could be stored alongside in the games database, or a sword that defeated the dragon could become more powerful and valuable in the future.
From the proposed token interface, you can see the ‘_tokenId’ arguments standing out — these are used to address a specific individual token:
The standard allows to create any amount of tokens and track them individually, and, if required, assign individual meta data to every single token. A still high-level but more concise explanation of the required/optional functions is provided by Gerald Nash ⚡️ here.
On Ardor/Ignis, singleton assets provide similar characteristics:
* Each Asset can have a non-unique name and description
* Singleton assets can be traded on the built-in Ardor asset exchange
* It is possible to link meta data (e.g. a hash to a data cloud item) in the description field.
The clear benefit of the ERC721 token is that you can extend it with additional functionality in the smart contract.
On the other hand some typical functionality is already available on Ardor, e.g. the asset exchange or phased transactions, so it will depend on your use case.
It is difficult to compare fees as market prices vary a lot, but it can be considered that you pay a fee for every singleton asset individually, and hence it may become quite expensive to create if your application requires a large number of items.
Considering one large scale and one small scale use case illustrates that:
Use case 1: Provide swords for a MMORPG:
Our game needs millions of swords of which a few will be rare or very rare. Assumptions for this example are as follows:
- 1,000,000 weapons in total
- 70% common weapons, (2 types of simple sword, say a fast sword and a heavy one, 350,000 items each)
- 20% rare and special weapons such as Ninja and Highlander (and what have you) swords (10 different types of weapons, 20,000 items each)
- 10% super rare items with variying amount. Maybe there would only be a single Excalibur sword in the whole game.
We would create an ERC721 contract with 1,000,000 tokens. The tokens would keep hashes to IPFS containing the item data.
- 70% will be the two common swords and all tokens would link to the same two IPFS hashes (for fast/ slow sword).
- 20% of the tokens would represent the rare weapons and contain hashes to 10 different IPFS storage locations respectively.
- 10% would link to the very rare items in varying number, as discussed above.
Ardor/Ignis Singleton Assets
Creating 1,000,000 singleton assets on Ardor/Ignis would be very expensive, however design decisions could be made that could lead to lower overall cost, also if development effort is considered:
If it is acceptable for the game that the simple swords are not individually tracked, the 700,000 simple items could be represented by two non-singleton assets, each containing an Ignis data cloud hash in the ‘Description’ field. This would reduce cost drastically, and also would keep the storage requirements small, as the metadata is only stored once per asset type, and not 700,000 times.
By taking this design decision the game would loose the provenance aspect for the common items. As explained above, it wouldnt be possible to track the history of any common item.
With the current Ardor fees any asset that requires more than 100 copies is cheaper to create as a non-singleton asset. Its a design decision to level the cost / functionality to create some more of the 20% rare items as non-singleton assets.
Use case 2: Proof of ownership of drawings or other physical goods
If compared with the above example, any application that only has a small (three digit) amount of copies of an asset is probably easier to implement using Ardor just because there is no code development required.
No conclusion possible
A clear benefit of ERC721 tokens is the flexibility the smart contract platform offers. However it should be evaluated in how far this flexibility is required, as the Ardor asset function doesn’t require any code development on the blockchain itself and can hence save valuable developer resource to spend on the application itself.
Ethereum seems to have smaller non-recurring costs to create the tokens on the network, if really all tokens are required to be non-fungible.
Ardor singleton assets can be traded on the Ardor exchange in the same way as any other asset and phased transaction types are available for use as well. This might reduce development effort.
If not all tokens need to be non-fungible (the ‘common’ weapons in the use case example) fees could be reduced significantly in Ardor, too.
A conclusion can’t really be provided as it depends on the use case. I hope my high-level introduction helps you in drawing yours for your project. Thanks for reading this far and don’t hesitate to get in touch to discuss digital goods on Ardor or Ethereum,or to share your findings to mine.