Tokens

如何讓合約檢查 msg.sender 目前是否擁有特定令牌。(erc721)

  • March 21, 2021

假設我有一份鑄造自己的 NFT 的契約:(我在想 ERC-721,但不一定)。

我想創建另一個智能合約,在做任何事情之前,驗證與之互動的地址 ( msg.sender) 目前擁有由該特定合約鑄造的 NFT。更好的是,如果它可以讀取一個屬性,比如 NFT id。

這甚至可能嗎?我對其進行了一些研究,但顯然該地址實際上並沒有儲存餘額/代幣,只有 eth。但考慮到這些 NFT 畫廊的運作方式,我猜這一定是一種方式。如果可能,我該怎麼做?

如果合約是 ERC721,那麼您可以查詢使用者擁有多少代幣balanceOf

uint count = token.balanceOf(user);
if (count > 0) {
   // User owns at least 1 index
}

如果令牌實現了可選ERC721Enumerable介面,您可以使用它tokenOfOwnerByIndex來檢索使用者擁有的令牌的 tokenId。

try token.tokenOfOwnerByIndex(user, 0) returns (uint tokenId) {
   // First token owned by user
} catch (bytes memory) {
   // No tokens owned by user
}

有關其他詳細資訊,請參閱EIP 721EIP 1155

引用自:https://ethereum.stackexchange.com/questions/95000