Implementing NFTs on the Dynamo blockchain
Introduction
NFT’s (non fungible tokens) have recently gained popularity as an alternative asset class, particularly among the art world. What seems to be currently lacking is a coherent NFT technology platform which allows for on-chain storage of artwork files and a consolidated, simple interface for market participants to meet and exchange NFTs in a truly decentralized way. Most solutions involve storing files off-chain and most markets are centralized commercial entities. Finally, I was unable to find any blockchain technology which allows for NFTs to natively participate in smart contract functionality on chain.
This article proposes to solve these issues by incorporating native support for NFT files on chain and making the Dynamo virtual machine NFT aware through extended opcodes. I will publish a subsequent article on the technical implementation of this once further discussion on the details has occurred.
Mechanics
This section focuses on artwork use cases which are generally either image files, short movie clips or audio files for music. This assumes the maximum file size will be less than the maximum block size in Dynamo — 10mb.
Creating an asset class — this is the action of creating a master asset and assigning its properties — name and number of tokens. An example asset could be “Diamond Sparkle Dog” with 10 tokens. Each Diamond Sparkle Dog in the series could be a unique image by the author put up for auction (for example). NFTs will not need to have associated files, such as if a company wanted to track licenses on chain. They could issue 1,000,000 NFTs with sequential or random license numbers to be distributed to users upon purchase.
Creating an individual asset — this is the action of minting a specific asset within the asset class — Diamond Sparkle Dog #6, for example. The asset can include metadata, such as the specific name, a URL, arbitrary text and a file. The asset will also be assigned an owner, which will initially be the creator. The owner will be recorded at the time of mining the block that creates the asset and will be saved as the bech32 public key address of the user. As noted above, the total size of all NFT data will be limited by the Dynamo block size of 10mb.
Transferring an asset — this is the action of sending a specific NFT from one user to another. The ownership metadata is changed at the time of mining the block that includes the asset transfer command.
Integration with virtual machine — this will allow for powerful peer to peer, anonymous interaction with NFTs on chain. As described below this will create very unique new business possibilities enabling individuals to profit from their own creations directly with no intermediary.
The above functions should all be implemented in a wallet. The wallet should allow for creation of the asset class, creation of individual assets and addition of metadata, asset files and asset transfer.
Tokenomics
Each of the above actions will incur on on-chain gas fee which will be shared by the miners and stakers. Because the addition of NFTs could dramatically increase the size of the blockchain, it may be necessary to create an additional incentive for full nodes to store the NFT database. This could be done as an additional, separate, staking reward based on time online, amount of database stored, etc. The theoretical limit of the database size increase is 53GB per day, although if this technology becomes widely adopted, it’s likely that the price (in $USD) to mint many large assets would be prohibitive and blockchain abuse will be mitigated by market forces.
Note that there is no specific “fee” for creating an asset class, creating an individual asset or transferring ownership. The cost for these activities is the native chain gas fee which is measured in DYN per kb and is set by market forces.
Business Use Cases
The true power of blockchain technology is the facilitation of peer to peer, anonymous, trustless transactions. By combining on chain assets, NFT on chain tracking and a native NFT aware virtual machine, this vision can be realized in practice.
Use Case #1 — Online auction. The creator of Diamond Sparkle Dog can create a smart contract which accepts bids for a certain duration and then automatically transfers a specific asset to the winner at the end of the auction. Bidders send bids to the contract which are stored for the duration of the auction. The winning bid is automatically transferred to the creator and the remaining losing bids are sent back to the bidders (less gas fees). This allows for a completely anonymous, trustless and intermediary free art auction that solely benefits the creator.
Use Case #2 — Online raffle. The Diamond Sparkle Dog raffle contract could sell a large number of small value raffle tickets and then randomly select a winner at the end of the raffle. The winner would receive the NFT ownership and the raffle proceeds would be sent to the creator. This is again totally anonymous and trustless.
Use Case #3 — Software license tracking. A software company could create NFT licenses and issue them to users which could be unlocked using the user’s private key. This would require integration with a blockchain and a light wallet to receive the keys, however it would be a convenient, trustless and anonymous way to secure software licenses. Licenses could be autonomously purchased from a contract and automatically generated and sent to purchasers. They could also be transferred among users or resold autonomously through other smart contracts.
Use Case #4 — Coupons. A promotional company could create a coupon smart contract which sends free coupons to token holders, via website request, airdrop, etc. The redemption of the coupon could be integrated into the wallet to verify the owner and then burned to ensure non-reuse.
Use Case #5 — Tickets. Similar to coupons, a venue operator can issue tickets for sale via a smart contract which users are then able to redeem using their private keys, or resell on a secondary market. This eliminates any possibility of fraud or ticket re-use and provides for anonymous, trustless sales.
Summary
I have presented a framework for integrating NFT support on chain natively and developing an NFT aware virtual machine that will facilitate the creation of NFT based smart contracts which will open many new possibilities for NFT usage not currently possible today.
I will shortly publish a technical implementation document detailing how this will be accomplished on the Dynamo blockchain.
See https://www.dynamocoin.org/ for more details.