I been thinking of a NFT project where it would only make sense if there was a way to limit a wallet address capable to have only one of the NFTs. Must burn or send away to have another. Is this possible?
-
With current design of Token Acccount creation, I dont think this is possible. Only way to archive this would be to writing up your own Token Account like impl with mentioned enforcement but this will not be supported anywhere beside your app.– BFaultCommented Aug 17, 2023 at 5:41
-
Keep in mind that this is easy to circumvent since someone can create as many wallets as they want to hold more NFTs.– Jon CCommented Aug 18, 2023 at 19:02
1 Answer
You should be able to do this using programmable NFTs, which allows you to impose restrictions on operations on NFTs, however it doesn't seem trivial to do what you want.
One way you could do it is to create pNFTs that are governed by a rule where transfers can only be done by a delegated program that is written by you, let's call it NFT Guard.
So if someone wants to transfer a NFT, they have to invoke NFT Guard which checks if the destination account has any NFTs from your collection and only if they don't they then proceed to make the transfer.
This is just one suggestion, there might be better approaches.
Resources: documentation on Programmable NFTs and the program that allows creation of rules on NFT operations.