跳至內容
0%

使用 Alchemy 的 NFT API 執行 getNFTs 的 3 個重要理由

Alchemy team headshot

作者 Alchemy

發布於 2022年8月12日閱讀時間 2 分鐘

如果你正在打造 NFT dApp,Alchemy's NFT API 可以透過 getNFTs、getOwnersForToken 等 get 請求,協助你為使用者打造更好的體驗。讓我們來看看這些方法的作用,以及為什麼我們應該在 NFT 建置中使用它們。

什麼是 getNFTs?

getNFTs 是一個 NFT API 端點,讓開發者能取得屬於特定擁有者地址的所有 NFT 清單,包括 ERC-721 與 ERC-1155 代幣。你可以輸入擁有者地址或 ENS 名稱,API 會回傳該地址所擁有的所有 NFT 清單,以及對應的 NFT metadata。

getNFTs 的範例使用情境

getNFTs 是最多功能的 NFT API 端點之一,可用於各種 web3 產品,包括用來顯示 NFT 的錢包、NFT 市集、NFT 分析工具、NFT 稀有度排名網站、Discord 機器人,以及其他許多使用情境。

舉例來說,如果你造訪 OpenSea 帳號的個人頁面,就能看到自己擁有哪些 NFT。這是透過一個使用 getNFTs 的端點來實現的,它會回傳你的錢包地址所擁有的 NFT,以及相關的 NFT metadata。

更廣泛來說,只要你需要知道使用者擁有什麼,getNFTs 都能派上用場。舉例來說,getNFTs 請求可以為 NFT 分析工具(如稀有度排名網站)或 Discord 機器人提供動力,透過拉取資料讓你知道剛售出的是哪個 NFT、在哪個市集售出,以及其他相關的 metadata。

什麼是 getOwnersForToken?

getOwnersForToken 是一個 API,讓你能指定一個 NFT 智能合約,並回傳該代幣的所有擁有者清單。對於 ERC-721 代幣,getOwnersForToken 只會回傳單一擁有者,但對於可以有多個擁有者的 ERC-1155 代幣,getOwnersForToken 可以回傳多個錢包地址。

getOwnersForToken 的範例使用情境

getOwnersForToken 有多種使用情境,包括空投、NFT 擁有權變更時的快取更新,以及頭像驗證。

如果你正在進行 NFT 鑄造專案,並想要對特定代幣的擁有者進行空投,getOwnersForToken 可以幫你找出這份白名單。

同樣地,如果你有一張頭像圖片並想驗證擁有權,你可以使用這個 API 來檢查擁有權是否已經變更。

沒有 getOwnersforToken,這些使用情境就沒有便利的解決方案,因為開發者必須解析整條區塊鏈,才能得知單一 NFT 的擁有權隨時間如何變化。現在有了 Alchemy's NFT API,getOwnersForToken API 只需一次請求就能完成這項工作。

使用 Alchemy's NFT API 取得 NFT 的 3 個理由

以 Alchemy's NFT API 建置是取得 NFT 的最佳選擇,原因在於其涵蓋範圍、垃圾過濾機制,以及圖片快取功能。

1. NFT 涵蓋範圍

Alchemy's NFT API 擁有最廣泛的 NFT 涵蓋範圍,這是一項挑戰,因為 NFT metadata 存在於鏈上、鏈下,且格式並不一致,導致在準確記錄 metadata 時會出現大量邊界案例。

NFT metadata 存在於多種不同格式、多種不同環境中,這使得判定 NFT 的準確 metadata 成為一個棘手的問題。

Alchemy 能提供最完整的 NFT 涵蓋範圍,是因為設計了多條程式碼路徑來應對許多最常見的情況,包括但不限於處理以下格式的 metadata:

  • 鏈上或鏈下的 JSON 格式
  • 鏈上或鏈下的 SVG 格式
  • 鏈上或鏈下的 UTF-8 格式

Alchemy's NFT API 也能處理 SVG、使用像 Pinata 這類 IPFS gateway 的 NFT、指向次要鏈下位置圖片的 URI、以 base 64 編碼的圖片,以及許多其他實作方式。

我們如何取得 NFT metadata?

取得 NFT metadata 是一個複雜且有許多變化的過程,但 Alchemy's NFT API 提供了簡單的解決方案,讓你不需要花費寶貴的時間逐一思考每種使用情境。

要取得 NFT 的 metadata,我們從一個 ID 開始,這個 ID 由合約地址與代幣 ID 組成,兩者共同構成該 NFT 的唯一識別碼。

系統會檢查這個 ID 是否已存在於 Alchemy NFT 快取中。如果不在快取中,我們就需要進一步判斷這是哪種類型的 NFT,以及該合約符合哪個標準。

Alchemy 目前支援兩大主要 NFT 標準:ERC-721 與 ERC-1155 智能合約。

Alchemy Dashboard Demo
Free video demo

看看 Alchemy 儀表板實際運作

30 分鐘導覽:儀表板中的每項工具,現場示範。

Watch the demo

一個真正符合 ERC-721 標準的合約,應該要提供一個包含 NFT 標題與屬性(包括名稱、描述、圖片)的方案,並能支援一些額外的方法。

理論上,你應該能透過 support interface 呼叫來判斷某個 NFT 是否支援此標準,該合約會回應相應的答案。

由於這些合約是可程式化的,開發者可能出於故意或失誤,將合約設定為回應錯誤的答案,這代表我們需要檢視合約的其他屬性,以確保它確實支援該介面。

一旦你確認某個智能合約確實是 NFT,就可以向該合約或代幣詢問 metadata 的所在位置。對於 ERC721 合約,你要呼叫的方法是 token URI 方法,而對於 1155 合約,這個方法則單純稱為 URI 方法。

URI 會指向網路上或鏈上某個存放 NFT metadata 的位置。有些合約在被詢問這個位置時,會指向一個檔案,而有些則錯誤地直接在 token URI 中提供 metadata。

如果 URI 指向另一個位置,我們就需要追蹤該連結,通常會連到第三方網站或伺服器,而這本身就伴隨著一連串問題。這些網站可能故障、含有惡意內容,或有速率限制,但 Alchemy 能排除這些障礙,乾淨俐落地回傳資訊。

由於 ERC-721 與 ERC-1155 智能合約有著眾多不同的實作方式,維持廣泛且準確的資料涵蓋範圍一直是個持續存在的挑戰。使用 Alchemy NFT API 是確保已知 NFT 獲得最大涵蓋範圍的最佳方式。

2. NFT 垃圾過濾機制

Alchemy 為 getNFTs 提供的垃圾過濾機制,透過過濾掉垃圾 NFT(未經請求的空投,或違反 ERC-721 與 ERC-1155 標準的 NFT 智能合約),讓建置工作變得更加輕鬆。

除了 getNFTs 內建的過濾選項之外,Alchemy 新推出的 getSpamContracts 會回傳所選鏈上所有被列為垃圾的 ERC-721 與 ERC-1155 合約清單。

同樣地,isSpamForContract 會檢查特定 NFT 智能合約是否已被歸類為垃圾。你可以依合約地址進行過濾,這代表你也能查看某個特定 NFT 的擁有者,並檢查那是否是他們唯一擁有的 NFT。

Alchemy 是唯一提供 NFT 垃圾過濾機制的平台,如果被垃圾內容淹沒,要投入 NFT 相關工作將會非常困難。

3. NFT 圖片快取

Alchemy 的圖片快取機制能讓 NFT 圖片的回應更快、載入時間更短。 雖然 NFT 媒體傳統上是由 IPFS、去中心化儲存供應商或第三方伺服器提供服務,但開發者在使用這些端點時,經常會遇到載入緩慢與逾時錯誤的問題。Alchemy 透過 Cloudinary 快取 NFT 圖片,並從自家快取提供 NFT URL,解決了這個問題,讓資料擷取速度更快。

我該選擇哪個 NFT API?

由於 Alchemy 提供強大的端點,包括垃圾過濾機制、getFloorPrice 與 reingestContract,加上最佳的 NFT 涵蓋範圍(包括支援 Crypto Punks),以及最準確的資料,Alchemy NFT API 是 web3 開發者的最佳選擇。

註冊 Alchemy 帳號,看看 Alchemy's NFT API 如何協助你打造下一個 NFT 專案,或進一步了解 Alchemy 如何協助你在 web3 領域的旅程。

Background gradient

打造區塊鏈魔法

Alchemy 結合最強大的 Web3 開發者產品與工具,並提供資源、社群與卓越的支援。