I am making an ERC-721 smart contract and want a feature where an NFT with special perks can only be claimed when it has been transferred to a different wallet. Scenario: Person A mints an NFT with special perks but cannot claimed bc it has not been transferred/sold to a different wallet. Person A sells the NFT to person B. Now person B can claim the perks since there has been a transfer on the blockchain. How would I implement this in solidity. I am thinking of a counter that keeps track of times the claimable NFT has been transferred. So if counter > 1 : NFT is claimable. Any ideas??
I guess the easy way would be when user A mints the NFT it gets minted to the contract itself and when someone buys it then the ownership gets transferred to that person.
This wouldn't allow anyone to transfer the NFTs which have been minted but not sold, because the contract has the ownership.
Using counters doesn't seem an optimized idea as you would need individual counters for each NFT.
My approach can also be security vulnerable but we can think more on this.