Erc-721
如何找到一個地址擁有的所有符合 ERC721 的 NFT?(Web3 JS)
可以使用ERC721 標準函式檢查哪個地址擁有特定的 NFT :
function ownerOf(uint256 tokenId) public view virtual override returns (address)
在 ERC721.sol但我想知道特定地址擁有的所有 NFT。
我的問題:
有沒有辦法使用 Web3.JS 檢索特定乙太坊地址擁有的所有 ERC721 代幣?
為了獲取使用者的所有 NFT,您需要有一個索引數據庫來保存這些數據。然後你索引
transfer
ERC721 合約的所有事件並最終計算每個地址的餘額並將其保存到數據庫中,每個請求都可以快速訪問它。ERC721 的傳輸事件索引如下:Transfer(address,address,uint256)
這是一個相當繁瑣的過程,不幸的是,簡單的 web3.js 呼叫無法提供任何東西。這與數據在區塊鏈中的結構方式有關,它只包含交易而不是實際的索引使用者數據。
如果您正在尋找一種通過簡單呼叫獲取使用者 NFT 餘額的簡單方法,您可以使用我建構的服務moralis.io。我們建構它是因為我遇到了與您完全相同的問題。它完全免費使用。
/{WALLET_ADDRESS]/nft
- 獲取地址擁有的所有 NFT - 獲取/nft/{CONTRACT_ADDRESS}/owners
特定 NFT 合約的/nft/{CONTRACT_ADDRESS}/{TOKEN_ID}/owners
所有所有者 - 獲取特定 NFT 合約和 ID 的所有所有者或者你可以使用moralis sdk,你可以使用前端的javascript函式。
//get NFTs for current user on ETH Mainnet const userEthNFTs = await Moralis.Web3API.account.getNFTs(); //get all owners of specific NFTS const options = { address: "0xd...07", chain: "bsc" }; const nftOwners = await Moralis.Web3API.token.getNFTOwners(options);
完全排除,我在moralis工作。