Logo
新用户订阅 RPC,首月享 6.5 折优惠查看优惠
RPC Assistant

哪些 Solana RPC 提供商包含用于 NFT 数据的增强 API?

摘要

标准 Solana JSON-RPC 节点暴露 getAccountInfo 和 getProgramAccounts 等核心方法,但它们不返回解码后的 NFT 元数据、集合分组或压缩 NFT(cNFT)状态。包含增强 API 的提供商在原始节点之上添加了索引化、NFT 感知的端点,因此您无需编写自己的 DAS 索引器即可查询资产、集合和代币元数据。OnFinality 提供 Solana RPC 和专用节点基础设施,支持 HTTP 和 WebSocket 传输,您可以将其与索引层配对以进行 NFT 特定读取。

快速推荐

如果您的应用需要解码后的 NFT 元数据、集合成员资格或压缩 NFT(cNFT)状态,普通的 Solana JSON-RPC 节点无法提供。您需要一个在节点之上叠加索引化、NFT 感知 API 的提供商。实际上,这意味着以下两种设置之一:

  • 具有内置增强 NFT API 的提供商(通常是数字资产标准,即 DAS 端点),可在一次调用中返回资产、集合和元数据。
  • 原始 Solana RPC 提供商加上您自己的索引器,您运行节点和一个单独的索引服务,该服务读取链上状态并提供 NFT 查询。

OnFinality 通过 HTTP 和 WebSocket 提供 Solana RPC 和专用节点基础设施,这是两种设置都依赖的节点层。如果您希望在不运行索引器的情况下进行 NFT 感知读取,请在承诺之前确认提供商的增强 API 表面。如果您希望完全控制 NFT 数据的塑造方式,请通过 OnFinality 等提供商运行节点并添加自己的索引层。

为什么标准 Solana RPC 无法满足 NFT 数据需求

Solana 的基础 JSON-RPC 是面向账户的,而不是面向资产的。节点可以告诉您账户中存储的原始字节,但它不知道某个特定账户是 NFT、属于哪个集合,或者其链下元数据是什么。这种解码工作是索引器的职责。

这很重要,因为大多数 NFT 读取不是单账户查找。它们是诸如“此钱包拥有的所有 NFT”、“此集合中的每个项目”或“此压缩 NFT 树的当前状态”之类的查询。从原始 RPC 回答这些问题意味着扫描许多账户并自行解析元数据,这在大规模下既慢又昂贵。

增强 NFT API 的存在就是为了弥补这一差距。它们维护资产索引并暴露返回结构化结果的方法,因此您的客户端不必从原始账户重建 NFT 状态。

“用于 NFT 数据的增强 API”实际意味着什么

这个短语涵盖了几种不同的东西,提供商们使用得很宽松。当您评估提供商时,请区分这些层:

层返回内容典型方法形式
原始节点 RPC账户字节、余额、槽位getAccountInfo、getProgramAccounts
代币/元数据 RPCSPL 代币和 Metaplex 元数据账户getTokenAccountsByOwner、元数据账户读取
增强资产 API(DAS 风格)解码后的资产、集合、所有权、cNFTgetAssetsByOwner、getAsset、getAssetsByGroup
自定义索引器您定义的任何模式您自己的 HTTP/GraphQL 端点

DAS 风格的层是大多数开发者所说的“增强 NFT API”。它是一个索引服务,而不是节点方法,因此它可以位于同一提供商或单独的提供商。

NFT 工作负载的提供商评估矩阵

使用此表在实际影响 NFT 读取的维度上比较提供商。根据您的应用提供多少 NFT 数据,为每一行赋予自己的权重。

评估领域需要确认的内容为什么对 NFT 数据重要
增强/DAS API是否提供索引化资产 API,以及哪些方法决定您是否可以在没有自己的索引器的情况下查询资产
cNFT 支持压缩 NFT 是否被索引标准 RPC 无法高效枚举 cNFT
原始节点访问HTTP 和 WebSocket 可用性写入、订阅和回退读取所需
传输HTTP、WebSocket 以及任何 gRPC 风格选项订阅和实时铸造需要 WebSocket
专用容量是否可以获得专用节点将繁重的 getProgramAccounts 扫描与共享流量隔离
数据新鲜度索引更新频率过时的索引在转移后返回错误的所有权
故障转移当一个端点降级时如何切换NFT 市场无法承受静默读取失败

OnFinality 位于原始节点和专用容量行:它通过 HTTP 和 WebSocket 提供 Solana RPC,并为需要隔离容量的工作负载提供专用节点。对于增强资产层,请确认您计划使用的索引服务以及它如何连接到您的节点。

连接到 Solana RPC

无论您选择哪种增强层,它最终都从 Solana 节点读取。OnFinality 为 Solana 主网暴露了一个公共 HTTP 端点和一个匹配的 WebSocket 端点:

# HTTP JSON-RPC
curl https://solana.api.onfinality.io/public \
  -X POST -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"getHealth"}'
// WebSocket subscription for account changes (e.g. a mint or metadata account)
import WebSocket from "ws";

const ws = new WebSocket("wss://solana.api.onfinality.io/public-ws");

ws.on("open", () => {
  ws.send(JSON.stringify({
    jsonrpc: "2.0",
    id: 1,
    method: "accountSubscribe",
    params: [
      "<METADATA_ACCOUNT_PUBKEY>",
      { encoding: "jsonParsed", commitment: "confirmed" }
    ]
  }));
});

ws.on("message", (data) => {
  console.log("account update:", data.toString());
});

对于生产环境,请将您的应用指向专用或托管端点,而不是公共端点。有关当前端点详细信息,请参阅 Solana RPC;有关容量选项,请参阅 RPC 定价。

在没有增强 API 的情况下读取 NFT 数据

如果您决定运行自己的索引器,节点仍然承担繁重的工作。一种常见模式是获取钱包的代币账户,然后解析每个铸币的元数据账户:

// 1. Get token accounts owned by a wallet
const owner = "<WALLET_PUBKEY>";
const res = await fetch("https://solana.api.onfinality.io/public", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    jsonrpc: "2.0",
    id: 1,
    method: "getTokenAccountsByOwner",
    params: [owner, { programId: "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" }, { encoding: "jsonParsed" }]
  })
});
const { result } = await res.json();
console.log(result.value.length, "token accounts");

从那里,您为每个铸币派生 Metaplex 元数据 PDA 并读取它,或者将铸币列表交给您的索引器。这比调用 getAssetsByOwner 更费力,但它使您独立于任何单一提供商的增强 API。

何时使用增强 API 与自己的索引器

没有普遍正确的答案。权衡是控制与运营负载。

  • 选择提供商的增强 NFT API 当您希望快速上市、您的查询适合提供商的方法集,并且您愿意依赖他们的索引新鲜度和模式时。
  • 在托管节点上运行自己的索引器 当您需要自定义 NFT 字段、跨程序连接或您的产品拥有的模式,并且您可以吸收索引和回填工作时。
  • 两者都用 当您希望增强 API 用于常见读取,自己的索引用于产品特定查询,并以节点作为共享的真相来源时。

混合设置在市场中很常见:增强 API 用于发现和搜索,自己的索引用于排名、定价和分析。

生产就绪检查清单

在将 NFT 流量路由到任何提供商之前,请确认以下事项:

  1. 端点隔离。 繁重的 getProgramAccounts 或元数据扫描不应与延迟敏感的读取共享容量。考虑使用专用节点。
  2. 传输覆盖。 您同时拥有 HTTP 和 WebSocket 端点,并且您的客户端处理重连。
  3. 索引新鲜度预期。 您知道在转移或铸造后,所有权变更在增强 API 中出现的速度。
  4. 故障转移路径。 您可以在不重新部署的情况下切换到第二个端点或提供商。
  5. 承诺级别。 您了解 processed、confirmed 和 finalized 如何影响您看到的 NFT 状态。
  6. 速率和突发行为。 您知道您的提供商在铸造或空投期间如何处理流量高峰。
  7. 可观测性。 您记录请求延迟、错误率和索引延迟,以便及早发现降级。

Solana 上 NFT 数据的常见故障模式

  • 过时的所有权。 增强索引尚未跟上最近的转移,因此应用显示错误的所有者。通过为所有权关键操作读取最终状态来缓解。
  • cNFT 枚举缺口。 压缩 NFT 并非总是被每个提供商索引。如果您的应用使用它们,请明确确认 cNFT 支持。
  • 元数据获取失败。 链下元数据 URI 可能缓慢或不可用;积极缓存并处理超时。
  • getProgramAccounts 过载。 对共享端点的广泛扫描可能缓慢或被限流。严格限定过滤器范围或迁移到专用节点。
  • 模式漂移。 增强 API 响应形状可能在版本之间变化。将您的客户端固定到已知版本并测试升级。

关键要点

  • 标准 Solana RPC 不返回解码后的 NFT 数据;增强 API 是叠加在节点之上的索引服务。
  • “增强 API”通常意味着 DAS 风格的资产 API,具有 getAssetsByOwner 和 getAssetsByGroup 等方法。
  • 您可以从提供商的增强 API 获取 NFT 数据,也可以针对原始节点运行自己的索引器。
  • OnFinality 通过 HTTP 和 WebSocket 提供 Solana RPC 以及专用节点,这是两种方法都需要的节点层。
  • 在增强 API 覆盖、cNFT 支持、传输、专用容量、索引新鲜度和故障转移方面评估提供商。
  • 在承诺之前确认索引新鲜度和 cNFT 支持,并保持故障转移端点就绪。

常见问题解答

OnFinality 是否包含增强 NFT API? OnFinality 通过 HTTP 和 WebSocket 提供 Solana RPC 和专用节点基础设施。对于 NFT 特定的增强读取,请确认您计划使用的索引层以及它如何连接到您的节点。有关端点详细信息,请参阅 Solana RPC。

我可以从标准 Solana RPC 节点获取 NFT 元数据吗? 您可以读取原始代币和元数据账户,但必须自行解码和索引它们。标准节点不返回结构化的资产或集合数据。

什么是 DAS API? 数字资产标准(DAS)是用于查询索引化 Solana 资产(包括 NFT 和压缩 NFT)的常见接口,具有 getAsset 和 getAssetsByOwner 等方法。

NFT 工作负载需要专用节点吗? 不总是,但繁重的元数据扫描或 getProgramAccounts 查询受益于隔离容量,以免影响其他流量。请参阅 专用节点。

如何在不破坏应用的情况下切换提供商? 保持端点配置外部化,支持多个端点,并测试故障转移。简短的 提供商选择清单 可帮助您在迁移前比较选项。

在哪里可以看到 OnFinality 支持哪些网络? 浏览 支持的 RPC 网络 并查看 RPC 定价 以了解容量和计划详情。

RPC 知识库

相关 RPC 内容

网络 RPCEfinity

什么是 Gnosis 节点,如何连接 Gnosis RPC?

Gnosis 节点是验证并为 Gnosis 链提供数据的客户端,Gnosis 链是一个专注于稳定币支付的 EVM 兼容网络。大多数开发者不需要运行节点:托管的 RPC 端点提供了可靠的链访问,无需同步和维护基础设施的开销。本文解释了 Gnosis 节点的功能、如何连接 Gnosis RPC,以及如何...

网络 RPCTON

TON API: How to Choose and Use Endpoints for Mainnet and Testnet

TON API services provide HTTP and WebSocket access to the TON blockchain. Developers can choose between public endpoints, hosted APIs like TON Center ...

网络 RPCBase

以太坊上的Base L2:如何连接以及何时使用

Base是一个以太坊Layer 2网络,它在自己的链上执行交易,并将结果结算到以太坊。开发者通过兼容EVM的JSON-RPC端点与其交互,这意味着大多数以太坊工具只需更改链ID和RPC URL即可使用。本文解释了Base是什么、它与以太坊的关系,以及如何可靠地连接。 您将找到链设置、一个可用的连接示...

测试网 RPCTON

什么是 TON 测试网 RPC?如何使用它?

TON 测试网 RPC 端点允许你与 TON 测试网交互,这是一个用于构建和测试 dApp、钱包和智能合约的沙盒环境,无需承担真实 TON 的风险。本文解释了可用的端点、如何认证,以及如何为你的开发工作流选择可靠的提供商。...

网络 RPCBittensor

Bittensor 主网、Lite 和测试网的 RPC URL 是什么?

Bittensor 为不同的网络层级提供多个 RPC 端点:Finney(主网)位于 `wss://entrypoint-finney.opentensor.ai:443`,Lite(EVM 兼容)位于 `https://lite.chain.opentensor.ai`,测试网位于 `https:...

网络 RPCAptos

关于 Aptos RPC 端点,我需要了解什么?

# 关于 Aptos RPC 端点,我需要了解什么? Aptos RPC 端点很重要,因为 Web3 应用程序依赖稳定的端点访问来进行读取、交易、仪表盘和后端工作流。正确的设置应匹配你的工作负载,支持你所需的网络和测试网,使限制可见,并在共享 RPC 不再足够时为你提供扩展路径。 对于 Aptos ...

永远不用担心基础设施

OnFinality 消除了 DevOps 的繁重工作,让您能够更聪明、更快地构建。

开始