NFTs are growing in popularity again, there are lots of conversations on how to create composability of NFTs across various apps and use cases.
People want to use the same NFT in multiple games or leverage a ticket for a concert to get some time based offering in a game.
The problem is that if you are a developer of a game - you are going to be issuing your NFTs. It’s both due to control and business model. Games have different worlds with different mechanics.
If you are organizing an event, you will have your own tickets as well. You are not going to use tickets from some other concert or a game items as tickets, even if you are interested in cross-promotion capabilities.
I believe this is the main reason we haven’t seen composability of NFTs at play just yet.
So instead of asking other people to reuse your NFTs in their applications, how about we allow to combine NFTs from different origins?
I call this “NFT Alchemy”: take a Paras card for it’s design and story, mix it with an epic sword from a game and add some POAP from a gaming conference and voila - you have a unique item that combines effects and may be even more expensive than original items.
When items get combined, they now behave as one item.
They change owner together, they show up in the NFT viewers as one item and still can be used in their original capacity.
How to implement this?
We will call one of the NFTs a “root”. All the other items now need to have “root” as an “owner”.
E.g. changing ownership of the NFT from direct ownership by account to potentially be owner by another NFT (for example by using nftContract/nftTokenId
notation).
This way get_token_owner
either returns directly the account owner or returns another token. Frontend code would need to resolve it back to original owner (because view calls are not composable currently on NEAR).
It’s important to agree to never attach items to items that are non-roots themself. This would make sure resolution and indexing will be easy.
If you want to sell the combined item - you can now list the “root” item for sale and transfer of it’s ownership will transfer ownership of the whole combination.
Indexers should create a reverse index, such that for a given item, one can find all the other “attached” items. This way explorers, wallets and marketplaces can just query for “root” item if there are any other items attached and display it.
One of the critical things here, is to decouple creators of items from combining.
This creates a new role - “alchemists”, people who would buy NFTs to combine them and sell them back in a combined effect.
Now it’s not required anymore that a [blockchain] game and event that uses blockchain tickets agree on something ahead of time - individuals can create some tickets for a concert with special effects inside a game by themself. Artists can add effects to their NFT art without needing to explicitly partner with game developers.
Even better, game devs can actually buy art and combine it with effects inside their games. Effects are still NFTs (like if you own this token you can run faster) but don’t need to have their own art anymore. Or devs can ‘airdrop’ effects to owners of some existing NFTs by setting ownership to some other “root”.
What do you think about modifying NFT standard to add ability one NFT to own another?