I understand the NFT (at least solidity part)..

There's something that's bugging me though.

Let's say someone made a super great cat(cat1), published it to ipfs, then called the ERC721 contract and added the new token pointing to URI(IPFS)

Now, another person did the same, made the cat too(the same one), and minted the new token.

I am the buyer. How do I know that the cat1 created by first person is the real one ? The only way I can think of is that that person announces(somewhere social network or whatever) that that's his tokenId, and because I trust his announcement, I also believe that his tokenId is the real one that will have the value.

The same thing can be thought of about music. True/Real person sings a song, mints the token on it. Then I sing the song too and mint the token. Imagine, that even though they are different on ipfs, our voices are the same. How does one know which one is the real tokenId ? I guess the singer announces that this is his tokenId and that's how we start to believe ?

Question 1: Is that the correct understanding ?

Question 2: This kind of seems like the same question. Let's say I bought one NFT that represents some painting painted by the original author. So I got tokenId = tokenURI = my address in solidity. Now, someone painted the same thing, and someone else(person1) bought it to. So they also have tokenId => tokenURI => myaddress.

How can third party figure out that I hold the original one and person1 holds NOT original ? we both have tokenId => tokenURI => person1Address (tokenId, tokenURI) are different for each of us, but still, third party can't detect which one is original. How can they ?

1 Answer 1


by first person is the real one ?

You could use (KYC) so everyone who wants to create a token id, needs to verify themself. you could address this issue by using the KYC service, oraclize, and smart contract. The smart contracts don't proof everything by itself, it needs data.

Every token id in (the ERC721 standard) smart contract is unique (NFT) id. Every ERC721 smart contract has a unique address. So there is a globally unique pair of a smart contract address and a tokenId in the platform e.g Ethereum. In this case, if it is a public chain, any party can detect smart contract address -> token Id -> user address -> etc

Let's assume someoneX forks smart contract, this contract will have a different contract address and different project.

I hope that helps

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.