---
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 元数据，以满足用户的数据请求。如果没有合适的 NFT API，对单个开发者来说，索引和查询 NFT 元数据会成为一项耗费大量时间和资源的工作。

了解如何使用 Alchemy 的 Optimism NFT API 开始构建 NFT 工具、市场、应用等。

## **Optimism 的 NFT 生态系统**

Optimism 是一个 L2（第 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 及其元数据。Alchemy 的 Optimism NFT API 可以处理 JSON、SVG、UTF-8 格式的链上或链下 NFT，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 元数据以过滤垃圾 NFT。为了简化这一过程，Alchemy 提供了以下作为 NFT 垃圾过滤器的 API 端点：

- **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 元数据，但在以下情况下无法满足请求：

- **Token does not exist** - Alchemy 使用 token ID 调用 tokenURI/uri 方法，但智能合约无法识别该 ID。这意味着该代币尚未铸造，或者根本不存在。
- **Malformed token URI** - tokenURI/uri 返回“格式错误”或无效的网址，因此无法访问该网址以返回元数据。
- **Failed to get token URI** - 当 token ID 未返回任何元数据（即使该代币确实存在）时出现的通用错误信息。
- **Token URI returns a non-200 response code** - 当网址返回“502 Bad Gateway”信息时会出现此错误，通常是因为网站宕机或对 Alchemy 服务器进行了限流。
- **Throttled token URI** - 此错误返回“429 Too Many Requests”信息，表明 Alchemy 请求元数据过于频繁，因而被限流。
- **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 所有权与代币门控**

- **getNFTs** - 获取某钱包持有的 Optimism NFT
- **getOwnersForToken** - 获取某个 token 在 Optimism 上的持有者
- **getOwnersForCollection** - 获取某个 NFT 集合在 Optimism 上的持有者
- isHolderOfCollection - 检查某个 Optimism 钱包是否持有某 NFT
- **getNFTsForCollection** - 获取某个 Optimism NFT 集合中的 NFT

### **Optimism NFT 元数据**

- **getNFTMetadata -** 获取 Optimism NFT 元数据
- **getContractMetadata** - 获取 Optimism NFT 智能合约元数据

## **Optimism NFT API 示例**

Alchemy 的 [getNFTs 是一个多功能的 NFT API 端点](https://www.alchemy.com/overviews/getnfts)，让开发者能够在多种 NFT 协议中使用它。要理解 getNFTs API 端点的运作方式，请参考以下示例。

### **1. Optimism 代币门控**

开发者在构建 NFT 市场时，会设计一个用户资料页面，用于展示用户拥有的 NFT。开发者可以使用 Optimism NFT 代币门控工具 [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 元数据来生成列表并获取交易数据。开发者可以使用 Optimism NFT 元数据 API [getNFTMetadata](https://www.alchemy.com/docs/data/nft-api/api-reference/nft-api-v-2-methods-older-version/get-nft-metadata)，来检索 NFT 分析工具中所使用的链上元数据。

### **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)，开发者可以立即识别出持有者并生成空投名单。当用户想将某个特定 NFT 设置为个人头像时，开发者也可以使用此 API 来验证资产所有权。

## **如何开始使用 Optimism NFT API 进行构建**

与其自己运行 Optimism 节点，不如[在 Alchemy 上创建一个私有 Optimism 节点](https://www.alchemy.com/overviews/optimism-node)更为简单，然后按照以下三个简单步骤，即可开始使用 Alchemy 的 Optimism NFT API 进行构建：

1. **选择包管理器** - 使用 **npm** 或 **yarn** 之类的包管理器
1. **设置代码仓库** - 打开终端，通过命令行为快速入门脚本创建新的代码仓库
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 应用。
