Erc-721

如何找到一個地址擁有的所有符合 ERC721 的 NFT?(Web3 JS)

  • March 6, 2022

可以使用ERC721 標準函式檢查哪個地址擁有特定的 NFT :

function ownerOf(uint256 tokenId) public view virtual override returns (address)在 ERC721.sol

但我想知道特定地址擁有的所有 NFT

我的問題:

有沒有辦法使用 Web3.JS 檢索特定乙太坊地址擁有的所有 ERC721 代幣?

為了獲取使用者的所有 NFT,您需要有一個索引數據庫來保存這些數據。然後你索引transferERC721 合約的所有事件並最終計算每個地址的餘額並將其保存到數據庫中,每個請求都可以快速訪問它。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工作。

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