Barrier to Mass Adoption :
The current tranche of NFTs are related to digital art, being promoted by influencers and celebrities
Restricted Scope and Applications :
NFTs are capable of much more than simple certificates of ownership
Q) What do we mean by dynamic?
A) Any verifiable or schedulable event can have a fundamental effect on the NFT, changing its state, properties or value
Ability to create dynamic NFTs opens up avenues to unleash their full potential
As of now, we are able to create Dynamic NFTs which change:
We are able to achieve this via both alpha (UI ready) and beta (UI WIP) implementations
Build a unified set of APIs and SDKs to enable a seamless NFT creation & integration for all stakeholders ranging from individuals like artists to non-individual groups like gaming companies & businesses across various domains of:
This fact alone came in with a lot of challenges starting from learning how any blockchain works, to how solana works, to why solana is fast, better and ideal for our use case. We were already familiar with NFTs and the idea of creating dynamic NFTs because we wanted to integrate them in one of our other VR/AR RPG game projects. Getting through these challenges involved us reading a lot of blogs, skimming through websites, and watching youtube videos.
Both of us moved into business orientated roles after graduating from IIT and it has been more than a couple of years since we last did any software development. To top it off, we were not familiar with any of the lauguages which we have used in this project. So learning them and parallely building the project was a real challenge. Rust has a pretty good online documentation and a really helpful community. For React/JS, we initially got help from some of our work buddies and took the rest ourselves.
Rust side of code and how things work on Solana is well documented. We extensively referred to the Solana docs and the Metaplex developer guide to understand these functions. However, JS/React side of metaplex code has no documentation whatsoever. One specfic hurdle we faced was following. We wrote a new instruction in the rust code and wanted to test it from the JS client. Each time we tried to send the instruction to the on chain program, we got a program error with an unclear description. We were pretty sure that we have coded things correctly and should not get an error. After a lot of debugging, we understood that the intruction sent from the JS client are being matched with the incorrect instruction in the on chain program. Each instruction in the client side has a number associated with it which corresponds to the order in which the instructions are written in processor file.
Technologies used
Discussion