Since October 2020, I have been obsessed with the idea of using NFTs representing a state in the real world. So I did a quick POC (proof-of-concept) called the Molecule Protocol.
It's a middleware protocol that allows a simple mixture of ERC-721 smart contracts representing a set of whitelisting requirements to be satisfied before any transaction occurs.
As more and more people are into NFTs, I wonder if NFT is the best representation of a real-world state. It works, but not what NFT intended for two reasons: (1) transferability and (2) revocability.
Transferability: For KYC, it may make sense for users to transfer to their other wallets, so they can reuse the NFT for whitelisting other wallets. But a better solution would be minting a new NFT token to another wallet to preserve privacy.
Revocability: KYC, credit score, or IP check can be revoked due to status changes. While we can use admin privilege to burn NFT tokens, it feels weird to do it without the user's consent.
It makes more sense to use an oracle instead in this case. Oracles can be connected to a real-time data source to allow real-time Geoblock and status updates. In addition, it does not involve ownership of any tokens, and it does not require any mint or burn events that will incur gas fees.
The only drawback is that the data will not be visible on-chain with oracles.
Another argument is that an NFT token should be minted and belong to the user only, so anybody who wants to check the users' personal information has to pay the user to obtain it.
Luckily, it is not an "either-or" "pick only one" case. Molecule Protocol can use both Oracles and NFTs to represent statuses.