---
title: "關於 Alchemy 的 Optimism NFT API，你需要知道的一切"
description: "幾分鐘內開始打造強大的 Optimism NFT 工具"
---

# 關於 Alchemy 的 Optimism NFT API，你需要知道的一切

NFT 收藏正在 [Optimism](https://www.alchemy.com/optimism) 上快速成長，越來越多開發者在該網路上建構新的 NFT [應用程式](https://www.alchemy.com/dapps/top/defi-dapps)。這些開發者需要 NFT API 來查詢網路並取得 NFT metadata，以滿足使用者的資料請求。若缺乏合適的 NFT API，索引與查詢 NFT metadata 對個別開發者來說會是一項耗時且耗費資源的工作。

了解如何使用 Alchemy 的 Optimism NFT API 開始建構 NFT 工具、市場、應用程式等。

## **Optimism 的 NFT 生態系**

Optimism 是一個 L2（layer 2）Ethereum 擴容方案，運作於[樂觀 rollup 基礎架構](https://www.alchemy.com/overviews/optimistic-rollups)之上。樂觀 rollup 透過將交易移到鏈下處理來減輕 Ethereum 的負擔，藉此提供更高的交易吞吐量並降低 gas 費用。樂觀 rollup 會將多筆交易打包成單一交易，再送回 Ethereum 進行驗證，藉此提升網路的可擴展性。

Optimism 內建的可擴展性使其成為開發 NFT 專案的理想方案。使用者能透過 Optimism 高速且低費用的交易，獲得更佳的[NFT 遊戲](https://www.alchemy.com/dapps/best/web3-games)體驗或收藏品交易體驗。

根據 **Optimism [NFTScan](https://www.alchemy.com/dapps/nftscan-api)** 網站的資料，Optimism 上有超過 100 萬個 NFT 資產，分佈於 23.8 萬個 NFT 錢包中，開發者需要合適的工具組來建構 NFT 協議並與大量 NFT 互動。Alchemy 的 Optimism NFT API 正是開發者在 Optimism 生態系中建構 NFT 專案所需的主要工具。

## **什麼是 Optimism NFT API？**

Optimism NFT API 協助開發者即時從 L2 網路擷取資訊。開發者可以透過 Optimism NFT API 讀取區塊/交易資料、執行智能合約、查詢鏈上資訊，並將資料儲存於鏈上。

Alchemy 為開發者提供[多鏈 NFT API](https://www.alchemy.com/nft-api)，使用 JSON-RPC 標準 API 與 Optimism 的去中心化節點基礎架構互動。Alchemy 的 Optimism NFT API 讓開發者能夠取得更高的請求吞吐量、提升並行請求數，並使用免費的資料歸檔、日誌和個別使用量指標。此外，該解決方案支援所有遵循 ERC-721 和 ERC-1155 標準的 NFT，以及部分早於 Ethereum NFT 合約標準化之前的 NFT。

開發者還能透過多種程式碼路徑存取廣泛的 NFT 及其 metadata。Alchemy 的 Optimism NFT API 能處理鏈上或鏈下的 NFT，格式包含 JSON、SVG、UTF-8，以及像 Pinata 這類 IPFS 閘道，還有經 Base64 編碼的圖片。

開發者可將 Alchemy 的 NFT API 用於以下用途：

- 向使用者顯示 NFT
- 開發 [NFT 市場](https://www.alchemy.com/dapps/best/nft-marketplaces)
- 設計 NFT 分析協議
- 建構 NFT 遊戲應用程式
- 驗證 NFT 所有權

## **Optimism NFT API 如何運作？**

Alchemy 的 Optimism NFT API 透過以下機制實現高效能：圖片快取、垃圾內容過濾、圖片縮放，以及清楚的錯誤說明。

### **圖片快取**

開發者通常需要與 IPFS 等去中心化儲存供應商及第三方伺服器互動，以存取 NFT 媒體檔案。然而，這往往伴隨著較長的載入時間與逾時錯誤。

Alchemy 透過快取 Cloudinary 上的 NFT 圖片，提供低延遲、快速載入及快速回應的解決方案。因此，Alchemy 能從自身快取中提供 NFT URL 給開發者，藉此縮短回應時間。

### **垃圾內容過濾**

[不想要的垃圾 NFT](https://www.alchemy.com/overviews/spam-nfts)可能導致詐騙，並影響 NFT 市場、畫廊或分析平台的使用體驗。開發者通常必須讀取並解析各個智能合約，才能取得 NFT metadata 以過濾垃圾 NFT。為了簡化這項工作，Alchemy 提供以下 API 端點作為 NFT 垃圾內容過濾器：

- **isSpamForContract** - 檢查智能合約是否為垃圾 NFT。開發者也可以篩選合約地址，以確認垃圾 NFT 的持有者。
- **getSpamContracts** - 回傳特定網路上垃圾 ERC-721 與 ERC-1155 智能合約的清單。

開發者可以利用 Alchemy 的垃圾內容過濾器來銷毀垃圾 NFT，或標記發送垃圾 NFT 的錢包地址。截至 2022 年 8 月，Alchemy NFT API 已標記了 5,000 個智能合約為垃圾 NFT。

**Alchemy 使用以下標準來判定垃圾 NFT：**

1. 違反 ERC-721 與 ERC-1155 代幣標準
1. 在代幣轉移過程中違反代幣標準
1. 將代幣鑄造至如 vitalik.eth 這類蜜罐地址
1. 提供關於代幣總供應量的虛假資料

### **圖片縮放**

NFT 需要不同的圖片尺寸，以適應縮圖、智慧型手機、桌面電腦及平板裝置的視窗大小。開發者可以透過在 URL 中加入任意高度與寬度像素組合來調整比例，藉此調整由 Alchemy 託管的 NFT 圖片尺寸。如此一來，Alchemy 讓 NFT 開發者更容易進行圖片縮放。

### **NFT 錯誤**

雖然 Alchemy 的 NFT API 能回傳大部分的 NFT metadata，但在以下情況下無法完成請求：

- **Token does not exist** - Alchemy 使用 token ID 呼叫 tokenURI/uri 方法，但智能合約無法識別該 ID。這表示該代幣尚未鑄造，或根本不存在。
- **Malformed token URI** - tokenURI/uri 回傳「格式錯誤」或無效的網站，因此無法存取該網站以回傳 metadata。
- **Failed to get token URI** - 當 token ID 未回傳任何 metadata 時顯示的通用錯誤訊息，即使該代幣確實存在。
- **Token URI returns a non-200 response code** - 若網站當機或對 Alchemy 伺服器進行速率限制，導致 URI 回傳「502 Bad Gateway」訊息時，會顯示此錯誤。
- **Throttled token URI** - 此錯誤會回傳「429 Too Many Requests」訊息，表示 Alchemy 請求 metadata 過於頻繁，因而遭到速率限制。
- **Contract does not have any code** - 當某個代幣地址在區塊鏈網路上沒有對應的智能合約程式碼時，會顯示此錯誤。
- **Contract returned a broken token URI, do not retry** - 當 tokenURI 沒有回應時會顯示此錯誤訊息，可能是因為該網站 URL 不存在，或缺少 DNS 設定。

## **Optimism NFT API 支援的方法**

Alchemy 的 Optimism NFT API 透過以下幾類 [NFT API 端點](https://www.alchemy.com/docs/reference/nft-api-endpoints)，協助開發者建構 Optimism NFT 應用程式：

### **Optimism NFT 所有權與 token gating**

- **getNFTs** - 取得某個錢包所持有的 Optimism NFT
- **getOwnersForToken** - 取得某個代幣在 Optimism 上的持有者
- **getOwnersForCollection** - 取得某個收藏系列在 Optimism 上的 NFT 持有者
- isHolderOfCollection - 檢查某個 Optimism 錢包是否持有某個 NFT
- **getNFTsForCollection** - 取得某個 Optimism NFT 收藏系列的 NFT

### **Optimism NFT metadata**

- **getNFTMetadata -** 取得 Optimism NFT 的 metadata
- **getContractMetadata** - 取得 Optimism NFT 智能合約的 metadata

## **Optimism NFT API 範例**

Alchemy 的 [getNFTs 是一個多用途的 NFT API 端點](https://www.alchemy.com/overviews/getnfts)，讓開發者能在多種 NFT 協議中使用它。若要了解 getNFTs API 端點的運作方式，可參考以下範例。

### **1. Optimism token gating**

當開發者建構 NFT 市場時，通常會設計一個使用者個人頁面來展示使用者擁有的 NFT。開發者可以使用 Optimism NFT token gating 工具 [isHolderOfCollection](https://www.alchemy.com/docs/data/nft-api/api-reference/nft-api-v-2-methods-older-version/is-holder-of-collection)，判斷某個錢包地址是否持有特定收藏系列中的特定代幣，並藉此擷取該地址的 NFT。

### **2. Optimism NFT 分析工具**

如稀有度排名網站或聚合器等 NFT 分析工具，需要 NFT metadata 才能建立清單並取得交易資料。開發者可以使用 Optimism NFT metadata API [getNFTMetadata](https://www.alchemy.com/docs/data/nft-api/api-reference/nft-api-v-2-methods-older-version/get-nft-metadata)，來擷取 NFT 分析工具所需的鏈上 metadata。

### **3. Optimism NFT 空投名單**

某個 NFT 專案聘請開發者，向特定 NFT 的持有者空投新的 NFT。若沒有 API，開發者就必須解析整條區塊鏈才能追蹤 NFT 資產的所有權。然而，透過 Alchemy 的 Optimism NFT 收藏系列 API [getOwnersForToken](https://www.alchemy.com/docs/data/nft-api/api-reference/nft-api-v-2-methods-older-version/get-owners-for-token)，開發者能夠即時識別持有者並建立空投名單。開發者也可以使用此 API 來驗證資產所有權，例如當使用者想將特定 NFT 設為個人頭像時。

## **如何開始使用 Optimism NFT API 進行開發**

與其自行架設 Optimism 節點，[在 Alchemy 上建立私有 Optimism 節點](https://www.alchemy.com/overviews/optimism-node)更為簡便，接著只需三個簡單步驟即可開始使用 Alchemy 的 Optimism NFT API 進行開發：

1. **選擇套件管理工具** - 使用 **npm** 或 **yarn** 等套件管理工具
1. **設定 repo** - 開啟終端機，從命令列建立新的 repository 以放置快速入門腳本
1. **選擇函式庫** - 安裝 [Alchemy SDK](https://www.alchemy.com/docs/alchemy-quickstart-guide) 以與 Optimism NFT API 互動

雖然開發者也可以使用 Fetch 和 Axios，但[開始使用 Optimism NFT API 最快的方式](https://www.alchemy.com/optimism?a=ef68f81fd0)是透過 Alchemy 的 SDK，因為它提供更完善的功能，包括 WebSocket 支援、重試機制，以及其他多項優勢。

## **使用 Alchemy 打造最佳的 Optimism NFT API**

根據彭博社的資料，在 2021 年的牛市期間，NFT 市場規模一度超過 400 億美元。儘管 NFT 產業目前正經歷嚴峻的熊市階段，NFT 技術仍蘊含巨大的未來成長潛力。

因此，建構者將需要合適的 NFT 開發工具，才能在具備高擴展性的 Optimism 網路上打造 NFT 應用程式。[在 Alchemy 上建立免費帳戶](https://www.alchemy.com/optimism?a=ef68f81fd0)，開始使用 Alchemy 免費的 NFT API 建構 NFT 應用程式。
