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

Solana RPC 提供商应提供哪些高级分析 API?

摘要

Solana 上的高级分析需要能够处理高吞吐量数据提取、历史查询和实时流而不会降低应用程序性能的 RPC 基础设施。本文概述了评估 Solana RPC 提供商时需要考察的关键 API 能力,从 getSignaturesForAddress 和 getTransaction 到 WebSocket 订阅和专用节点选项,帮助您选择支持分析工作负载的基础设施。

决策指南:将分析工作负载与 Solana RPC 能力匹配

在比较提供商之前,请将您的分析用例映射到实际需要的 RPC 方法和基础设施。一个跟踪近期交易的简单仪表板可以在共享公共端点上运行,但一个回填历史活动或实时监控内存池的数据管道将需要专用容量和归档访问。

尽早提出这些问题:

  • 您需要哪些数据? 近期签名、完整交易详情,还是随时间变化的账户状态?
  • 需要多少历史数据? 几小时、几天,还是自创世以来的完整账本?
  • 访问模式是什么? 仪表板的突发查询、持续轮询,还是长期 WebSocket 订阅?
  • 对速率限制的容忍度如何? 分析工具通常发出许多并行请求;共享端点可能会限制它们。

如果您的工作负载主要是历史性或高容量的,专用节点 可提供可预测的吞吐量,并允许您运行自己的索引。如果您需要快速启动原型,具有慷慨限制的共享 RPC 可能就足够了。OnFinality 提供共享和专用 Solana RPC 选项,以及用于测试的公共端点和用于扩展的生产级基础设施。

支持分析的 Solana RPC 方法

Solana 的 JSON-RPC API 公开了特别适用于分析的方法。以下是您可能依赖的方法:

  • getSignaturesForAddress – 返回给定地址的交易签名列表,支持分页。对于跟踪钱包或程序的活动至关重要。
  • getTransaction – 获取完整交易详情,包括费用、指令和日志。与 getSignaturesForAddress 结合使用以重建交易历史。
  • getBlock – 检索包含所有交易、收据和奖励的区块。适用于链级分析。
  • getBlocks – 列出范围内的区块编号,支持批量处理。
  • getAccountInfo – 返回账户状态,包括数据和 lamports。对于跟踪代币余额或程序状态至关重要。
  • getProgramAccounts – 获取由程序拥有的所有账户。对于索引程序特定数据非常强大,但可能对节点造成较大负载。
  • getTokenAccountsByOwner – 列出钱包的代币账户,适用于投资组合分析。
  • getSlot 和 getBlockHeight – 用于监控链进度和检测停滞。

对于实时分析,WebSocket 订阅(如 accountSubscribe、logsSubscribe 和 programSubscribe)提供基于推送的更新,减少轮询开销。

评估提供商 API 能力

在比较 Solana RPC 提供商的分析能力时,请关注以下能力:

能力检查内容重要性
方法覆盖完整的 JSON-RPC 方法支持,包括 getSignaturesForAddress、getTransaction、getBlock缺少方法会破坏您的数据管道
历史数据深度归档节点可用性、保留期回测和趋势分析需要旧区块
WebSocket 支持稳定的订阅和低延迟实时仪表板和警报依赖于此
速率限制每秒请求数、并发连接数高容量分析可能触及共享限制
专用节点选项能够配置单租户节点将您的工作负载与嘈杂邻居隔离
数据一致性节点追上最新 slot 的速度过时数据导致分析不准确

OnFinality 的 Solana RPC 服务支持 HTTP 和 WebSocket 传输,提供用于评估的公共端点和用于生产的专用节点。查看 Solana 网络页面 获取当前详细信息。

公共与专用:分析工作负载需要什么

公共端点便于测试和低容量使用。它们由许多用户共享,因此在高峰时段可能会受到速率限制或变慢。对于持续运行或需要大量数据拉取的分析,专用节点提供:

  • 可预测的性能 – 无资源竞争。
  • 更高的速率限制 – 您可以每秒发出更多请求。
  • 自定义配置 – 您可以启用 --enable-rpc-transaction-history 等标志以保留历史交易。
  • 直接访问 – 没有中间人限制或过滤您的请求。

如果您正在构建严肃的分析平台,请从一开始就规划专用基础设施。OnFinality 的 专用节点服务 允许您使用所需设置部署 Solana 节点。

示例:使用 curl 拉取交易历史

以下是一个使用 curl 获取地址最近签名,然后获取最新交易详情的简单示例。将 YOUR_ADDRESS 替换为真实的 Solana 地址。

# 获取地址的最近签名
curl https://solana.api.onfinality.io/public \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "getSignaturesForAddress",
    "params": ["YOUR_ADDRESS", {"limit": 5}]
  }'

# 获取最新交易的详情(使用前一个响应中的签名)
curl https://solana.api.onfinality.io/public \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 2,
    "method": "getTransaction",
    "params": ["SIGNATURE", {"encoding": "jsonParsed"}]
  }'

对于生产环境,请使用专用端点以避免速率限制。OnFinality 提供公共和专用端点;请参阅 Solana 网络页面 了解详情。

用于实时分析的 WebSocket 订阅

实时分析通常需要流式数据。Solana 的 WebSocket API 允许您订阅账户更改、日志和程序更新。以下是使用 ws 库的 Node.js 示例:

const WebSocket = require('ws');

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

ws.on('open', () => {
  // 订阅特定程序的日志(例如,DEX 程序)
  ws.send(JSON.stringify({
    jsonrpc: '2.0',
    id: 1,
    method: 'logsSubscribe',
    params: [
      { mentions: ['PROGRAM_ID'] },
      { commitment: 'finalized' }
    ]
  }));
});

ws.on('message', (data) => {
  const msg = JSON.parse(data);
  if (msg.method === 'logsNotification') {
    console.log('新日志:', msg.params.result.value.signature);
    // 处理日志数据以进行分析
  }
});

ws.on('error', (err) => {
  console.error('WebSocket 错误:', err);
});

WebSocket 连接是长连接,需要稳定的基础设施。专用节点可以处理许多并发订阅,而不会影响其他用户。

Solana 分析 RPC 使用中的常见陷阱

即使使用良好的提供商,您也可能遇到问题。以下是常见陷阱及避免方法:

  • 共享端点上的速率限制 – 如果您收到 429 错误,请考虑升级到专用节点或批处理请求。
  • 不完整的交易历史 – 某些节点除非配置了 --enable-rpc-transaction-history,否则不会保留历史交易。确保您的提供商支持此功能。
  • 大型响应 – getProgramAccounts 可能返回巨大的负载。使用过滤器和分页来限制数据。
  • 过时数据 – 如果您从落后的节点读取数据,您的分析将不准确。监控 slot 高度并适当使用承诺级别。
  • WebSocket 断开 – 实现重连逻辑并处理错过的通知。

关键要点

  • 高级 Solana 分析依赖于 RPC 方法,如 getSignaturesForAddress、getTransaction 和 getBlock,以及用于实时数据的 WebSocket 订阅。
  • 评估提供商的方法覆盖、历史深度、WebSocket 稳定性、速率限制和专用节点可用性。
  • 公共端点适合测试,但生产分析应使用专用基础设施以避免速率限制并确保一致性。
  • OnFinality 提供共享和专用 Solana RPC 选项,以及用于评估的公共端点和用于扩展的生产级节点。

常见问题解答

用于分析的最佳 Solana RPC 提供商是什么?

最佳提供商取决于您的工作负载。对于高容量或历史分析,建议使用具有归档访问权限的专用节点。OnFinality 提供共享和专用 Solana RPC 服务;请参阅 Solana 网络页面 了解详情。

我可以将公共 Solana RPC 端点用于生产分析吗?

公共端点是共享的,可能有速率限制,因此不适合高吞吐量的生产分析。专用节点提供可预测的性能和更高的限制。

如何从 Solana 获取历史交易数据?

使用 getSignaturesForAddress 列出签名,然后使用 getTransaction 获取详情。确保您的节点启用了交易历史。OnFinality 的专用节点可以为此配置。

哪些 WebSocket 订阅对 Solana 分析有用?

logsSubscribe、accountSubscribe 和 programSubscribe 通常用于实时监控和分析。

OnFinality 是否支持 Solana WebSocket 连接?

是的,OnFinality 为 Solana 提供 WebSocket 端点,如上面的示例所示。查看 Solana 网络页面 获取最新 URL。

有关选择正确 RPC 提供商的更多信息,请参阅我们的 选择 RPC 提供商指南 和 RPC 定价。

RPC 知识库

相关 RPC 内容

RPC 提供商选择Optimism

如何找到最可靠的Optimism RPC提供商

正在寻找最可靠的Optimism RPC提供商?可靠性不仅仅是标称的正常运行时间百分比。本指南涵盖关键指标,如延迟分布、同步健康度、归档和追踪API支持以及故障切换能力。使用决策清单客观比较提供商,避免导致生产中断的常见陷阱。...

网络 RPCArbitrum

什么是 Arbitrum 节点,如何运行或访问一个?

Arbitrum 节点是一种客户端,用于同步 Arbitrum One 的 rollup 状态,并为 dApp、索引器和交易机器人提供 JSON-RPC 请求服务。您可以运行自己的节点、使用公共端点,或依赖像 OnFinality 这样的托管 RPC 提供商来处理生产工作负载。本指南介绍了节点类型、...

网络 RPCBNB Chain

什么是BNB节点,什么时候应该运行一个?

BNB节点是存储BNB智能链状态并处理交易的客户端。运行一个节点可以让您直接访问链,但需要大量的硬件和维护。对于大多数应用程序,像OnFinality这样的托管RPC服务提供了一种更实用的方式来与BNB链交互,而无需承担运营开销。...

网络 RPCMantle

Mantle 端点:链设置、RPC URL 和调试

了解如何使用正确的链 ID、RPC 端点和浏览器设置连接到 Mantle 主网。本页涵盖公共和专用 RPC 选项、常见的 JSON-RPC 方法以及生产 dApp 的故障排除步骤。...

网络 RPCSolana

你能推荐一些可以无缝集成 Solana 质押的 API 吗?

Solana 质押集成不是单个 API 调用。你需要结合 RPC 访问来读取质押账户和提交交易、质押程序接口(原生质押或流动性质押协议)以及钱包或签名器层。RPC 端点是基础,因为每个质押、委托、停用和提取操作都是 Solana 交易,必须通过 RPC 节点构建、模拟和确认。 本文梳理了你实际需要的...

网络 RPCBNB Chain

什么是币安智能链的RPC URL?

BNB智能链的官方公共RPC URL是 https://bnb.api.onfinality.io/public。该端点允许您查询BNB智能链主网,而无需运行自己的节点。对于生产环境,您应评估提供更高速率限制、归档数据和WebSocket支持的管理型和专用RPC选项。...

永远不用担心基础设施

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

开始