Check NFT ownership at physical event


So I'm thinking on selling NFTs that will also be tickets for physical, in-person events. How would I go about checking that X person has the NFT, and that they can enter? I know they should carry the NFT on their phone wallet, but that's as far as I can gather.

This is an interesting question. What does it mean for a person to "have" the NFT? Generally this is interpreted to mean that they control the private key to the account that owns the NFT on-chain. Under this interpretation, your question becomes: how do I check that X person has Y private key? The classical answer is that you challenge them to sign a random message with the key Y. If they are able to produce a signature, you know (with nearly absolute certainty) that they control the private key to Y. It's important for the message to be random and generated by the validator, because if it isn't they may have gotten the signature in some other way.

You should take a look at what ENS did for Devcon:

(*) An important caveat is that the approach above fails if the person uses a smart contract wallet, like Argent. A smart contract wallet is not exactly controlled by a private key, so you can use a method like EIP-1271 as a replacement for signatures in that context.

1 Like