Tokens
如何讓合約檢查 msg.sender 目前是否擁有特定令牌。(erc721)
假設我有一份鑄造自己的 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 }