Erc-721

如何找到 NFTS 及其元數據?

  • July 22, 2021

我是乙太坊的新手,我正在做一個我很好奇的副項目

  1. 如何發現乙太坊區塊鏈上的每一個 NFT?
  2. 辨識出 NFT 後,如何獲取元數據?

首先,您不能以一般方式執行此操作。

在我在 NFT.nyc 的演講中,我在乙太坊主網上部署了一個智能合約,該合約使用 ERC-721 協議創建了 2^255 個 NFT。(感謝 NFT.nyc 和 Chain 76 贊助的工作。連結位於 http://nft.life。)

如果您計劃創建一個包含(合約地址、代幣 ID、所有者)的通用數據庫,那麼您將需要比宇宙更多的原子來儲存在您的數據庫中。


如果你想避免像這樣的“垃圾郵件”項目以及“假”項目,甚至是“舊版本”項目(例如,查看 Su Squares 如何將項目多次重新部署到新的合約地址)……那麼你排除了很多。我認識的每個致力於解決該問題的人都決定從允許列表開始,並且只檢查這些令牌。


但是,假設你真的想要一個通用的解決方案,並且你願意將一些不切實際的 NFT 列入黑名單。而且您只關心 ERC-721(對其他標準重複類似的方法)。您可以通過以下兩種方法之一來做到這一點:

  1. 創建網路上所有合約的列表(即CODESIZE> 0)並使用ERC-165查詢它們的ERC-721 介面 ID
  2. 從 ERC-721 最終確定(2018 年 6 月 22 日)開始播放區塊鏈上的每個區塊並監聽Transfer(address, address, uint256)事件。然後使用上面的#1 過濾該列表。

0xcert 創建了一個工具,可以完全按照您的描述進行操作,不幸的是,它確實需要多個強大的伺服器才能執行。它位於https://github.com/0xcert/ethereum-scanner並且不公開。他們可能願意將該工具許可或出售。(我建議 0xcert 作為我的客戶之一。)

其他商業選項,如 OpenSea、Etherscan、Azure 區塊鏈(宣布 EOL)和 Mathematica 都提供了很好的 API。他們每個人都包含限制並且沒有開源。


對於元數據,您只需查詢每個令牌以獲取tokenURI並記錄該資訊。規範化這些數據並使其有用將是一項全職工作。這也是為什麼像 OpenSea 這樣的商業提供商只會選擇相對較少的代幣合約來支持的原因。

正如威廉所說,沒有簡單的方法可以做到這一點。您必須建立自己的數據庫並通過區塊鏈掃描 ERC721 和 ERC1155 合約中的鑄幣事件。

我們自己偶然發現了這個問題,並且我們建構了一個您可以根據需要使用的解決方案。它並不能完全幫助您,它可以讓您獲得特定地址擁有的所有 NFT。因此,您可以輕鬆地從目前元遮罩使用者那裡獲取所有 NFT(和元數據)。

你可以在moralis.io上查看它,你可以使用JS SDK 來獲取特定使用者的所有NFT。它可以免費使用。

const userEthNFTs = await Moralis.Web3.getNFTs();

或者你可以使用 REST API

GET /nft/wallet/{address}

然後你可以使用獲取元數據

/nft/contract/{contract_address}/metadata

巨大的免責聲明:我在moralis工作:)

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