What is CallistoNFT?
CallistoNFT is an alternative non-fungible token standard that can be used for deploying NFTs instead of ERC721.
CallistoNFT introduces 4 new concepts on top of NFT functionality:
- Built-in trades — these NFTs can be traded in a p2p manner without a need for a marketplace
- Monetization — owners of NFTs can configure a trading fee and get lifetime dividends from any trades that involve their NFTs
- Metadata — ERC721 NFTs represent a link to data that is stored offchain. CallistoNFTs can actually represent data (which can also be a link in some cases)
- User-generated content — owner of NFT can actually write something to their NFT
What is CommunityNFT?
CommunityNFT is a special contract that allows users to create NFTs without deploying a contract. In order to create a new ERC721 token a user must compile and deploy a ERC721 code. Upon deployment a new smart-contract will be created. Therefore each ERC721 token is a copy of the same contract with minor changes.
CallistoNFT allows customization of “NFT classes”. In this case users no longer need to deploy their own contracts — instead they could configure a class in already-existing contract. One contract can represents multiple differently configured NFTs.
CommunityNFT is based on ERC721-CallistoNFT hybrid token i.e. it is compatible with both standards with one modification: approve + transferFRom
pattern was removed as redundant.
CommunityNFT in action
CommunityNFT contract operates with “NFT classes”. Each class has its owner and class properties (aka NFT collection data which is similar for all NFTs of the same collection). NFT class can have its own fee system i.e. owners who created the collection will receive fees from built-in trades in accordance to rules that they set themselves.
Anyone can create NFTs using the CommunityNFT contract by creating a new class of NFTs. This can be done by just calling a couple of functions. Let me illustrate it with an example.
First, we need the CommunityNFT contract address. This one is deployed at Callisto Mainnet at the moment of writing: 0x622e870c98bd3eaad484191e51f4fe8cd696eb79
The contract is also deployed on Ethereum CLassic mainnet: https://www.oklink.com/en/etc/address/0xe03c622f51b79f8ae873c8de99f36d0d2fc25150
I am using wallet.callisto.network to call the functions. Open the “Contracts” tab. Insert the contract address 0x622e870c98bd3eaad484191e51f4fe8cd696eb79onto the “Contract Address” input box and copy&paste the ABI from this file. ABI is the content of the JSON structure (raw version of the ABI).
Click “Access”. Function selection dropdown menu will appear under “Read / Write Contract” section.
Select createTokenClass
function from the list.
There are two “createTokenClass” functions — one with _feeReceiver and _feePercentage parameters and the other one without them.
If you want to configure who receives fees — select the function with _feeReceiver and _feePercentage inputs.
Fill in NFT class parameters:
- _name — any string that will help you to identify your class among others. NOTE: users will never see this name anywhere, this is only a simplification for the creator of the class
- _minting_permitted — True will allow everyone to mint NFTs of this class without restrictions, False will only allow owner of the class to mint NFTs.
- _feeReceiver — address that will receive fees from built-in trades
- _feePercentage — fee multiplicator, this value will be divided by 100000 during calculations (feePercentage of 100 means 0.1% fee, feePercentage of 2500 means 2.5% fee).
Send your transaction and check if it is successful on the explorer.
My transaction example: https://explorer.callisto.network/tx/0xece33b81b31f3139706cbeaf595db4b0d965d6dc447a8e7e2d39cc96d2ca817b
Select the getClassID
function from the functions list and input the name of your NFT class. Click READ and copy the outputted value.
NOTE: If the value is 0 then something went wrong during the creation of your class or the name is incorrect
NOTE: registering classes with already-registered names will fail, only the first name registration will succeed
Select mintNFT
function from functions list. Input the ID of your class and send your transaction.
My transaction example: https://explorer.callisto.network/tx/0xcf674a5dae425f76b981775682fc31d6d3456d91f3944a53c16486f3de4863cb
Congratulations, you’ve just created your first CallistoNFT!
P. S.
Of course the workflow will be simplified with the UI. The contract is not final and it is still in debugging state. It is not recommended to use it for any commercial/business purposes at the moment.