Create the Dynamic NFT contract design proposal document.
alilloig opened this issue · 2 comments
alilloig commented
Issue To Be Solved
We need to create a pattern for NFTs which Metadata can change, either caused by the owner of the resource or by a third party such as the game the NFT belongs.
Suggest A Solution
- Define the NFT Metadata Partitions that will enforce the access control on traits that could change (user, admin, u&a, u|a).
- The solution should include a resource interface that defines the way of altering the Metadata.
- For an admin to mutate an NFT it will be need to be transferred to an escrow resource, likely a subtype of an NFTCollection. Another subtype of NFTCollection could be required for holding the resources that latter would be put on escrow.
- The escrow creates a series of questions that needs to be answered:
- What would be the happy path for the escrow resource to return the NFT to the owner? Probably holding a receiver capability to its MutableCollection.
- How to ensure that the NFT will always return to the owner? The MutatorCollection should establish a time from when the user can execute a transaction and recover the NFT even if the escrow resource doesn't return it.
- Either if the NFT is nicely recovered or if the dead man switch needs to be used, the deposited NFT will return using the capability provided when it was put in escrow.
Context
This needs to be done prior to the creation of the game contract proposal
alilloig commented
The design document could be find here https://www.notion.so/dapperlabs/Dynamic-NFT-Design-Document-5faddb46a3c243ed8b3684a75bd12cfe (WIP)
alilloig commented
I was thinking about closing this one since we are rather moving fast and experimenting and the document I started was out of scope. Makes sense? @franklywatson @joshuahannan