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

Solana RPC 节点:端点、方法与工作负载匹配

摘要

Solana RPC 节点暴露了您的应用用于读取账户、提交交易以及订阅 slot 或账户变化的 JSON-RPC 接口。本页面涵盖了端点形态、实践中最关键的方法,以及随着工作负载增长如何在共享公共 RPC 和专用节点之间做出选择。

您将获得一个可连接的端点示例、工作负载与设置对照表、常见故障的调试路径,以及在将流量迁移到某个提供商之前评估它的简短清单。

从 RPC 的角度看,Solana 不像一条 EVM 链。没有 eth_getLogs,没有逐块收据模型,也没有可以轮询待处理交易的内存池。相反,您读取账户状态、提交已签名交易,并订阅 slot 或账户更新。理解这种形态是选择正确 RPC 节点设置的最快方式。

哪种 Solana RPC 设置适合您的工作负载

在比较提供商之前,先将您的工作负载与它实际需要的端点类型匹配。大多数团队早期过度配置,后期配置不足,因此请将此表作为初步筛选。

工作负载典型调用模式通常适合的设置
钱包或投资组合 UIgetBalancegetTokenAccountsByOwner、偶尔 sendTransaction带提供商密钥的共享 RPC 端点
交易机器人或狙击手高频 sendTransactiongetLatestBlockhash、优先费用读取专用节点或低延迟私有端点
索引器或分析getProgramAccountsgetSignaturesForAddress、大批量 getTransaction支持归档且计算限制宽松的节点
dApp 前端混合读取加 WebSocket accountSubscribe共享 RPC 加 WebSocket 端点
验证者工具Slot 和 epoch 读取、投票账户查询靠近您验证者的专用节点

如果您的应用只读取余额并偶尔提交交易,共享端点通常就足够了。如果您突发提交交易、对大型程序运行 getProgramAccounts,或需要可预测的计算单元余量,专用 Solana 节点提供的容量不会与其他租户共享。

OnFinality 同时提供共享 Solana RPC API 访问和专用节点基础设施,因此您可以从共享端点开始,然后迁移到专用节点,而无需更改客户端代码。请参阅 Solana 网络页面 了解当前端点详情,以及 RPC 定价 了解计划形态。

端点形态:HTTP 和 WebSocket

Solana RPC 节点通过 HTTP 暴露 JSON-RPC 2.0 接口用于请求/响应调用,并提供一个单独的 WebSocket URL 用于订阅。两者不可互换:accountSubscribeslotSubscribelogsSubscribe 仅通过 WebSocket 工作。

公共 OnFinality Solana 端点遵循以下模式:

# HTTP JSON-RPC
https://solana.api.onfinality.io/public

# WebSocket subscriptions
wss://solana.api.onfinality.io/public-ws

一个最小的 curl 调用,用于确认端点在线并返回预期的集群:

curl https://solana.api.onfinality.io/public \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "getHealth"
  }'

健康的主网节点返回 {"jsonrpc":"2.0","result":"ok","id":1}。如果您得到集群不匹配或 -32005 类错误,很可能指向了错误的网络或触发了速率限制。

对于客户端使用,@solana/web3.js 连接对象接受两个 URL:

import { Connection, PublicKey } from "@solana/web3.js";

const connection = new Connection(
  "https://solana.api.onfinality.io/public",
  { wsEndpoint: "wss://solana.api.onfinality.io/public-ws" }
);

const balance = await connection.getBalance(
  new PublicKey("11111111111111111111111111111111")
);
console.log(balance);

保持 HTTP 和 WebSocket URL 来自同一提供商和同一集群。将主网 HTTP 端点与 devnet WebSocket 混合使用是导致令人困惑的订阅失败的常见原因。

影响节点需求的方法

并非所有 JSON-RPC 方法的成本相同。少数 Solana 方法主导节点负载,是在您承诺使用某个提供商之前值得测试的方法。

方法作用为何给节点带来压力
getProgramAccounts返回程序拥有的所有账户结果集大、计算繁重,通常需要过滤器
getSignaturesForAddress列出地址的签名对繁忙地址进行深度历史扫描
getTransaction获取完整交易在循环中不批量调用时开销大
sendTransaction提交已签名交易对延迟敏感,竞争区块包含
getLatestBlockhash返回最近的区块哈希在交易和机器人工作负载中频率高
accountSubscribe流式传输账户变化需要稳定的 WebSocket 连接

如果您的应用依赖 getProgramAccounts 或深度签名历史,请确认提供商支持这些调用并具有合理的限制,以及在需要时支持归档数据。一些共享端点限制或节流这些方法,因为单个调用者可能消耗节点资源的很大份额。

将钱包或客户端连接到 Solana

对于钱包或前端,您通常注册一次网络,然后让用户切换。典型的 Solana 网络条目如下所示:

{
  "chainName": "Solana Mainnet",
  "rpcUrls": ["https://solana.api.onfinality.io/public"],
  "nativeCurrency": { "name": "SOL", "symbol": "SOL", "decimals": 9 },
  "blockExplorerUrls": ["https://explorer.solana.com"]
}

如果您在主网之前构建或测试,请指向 devnet 端点,并将两个配置分开。Solana Devnet 页面 涵盖了测试网侧的设置。

两个实用注意事项:

  • Solana 交易过期很快。在提交时间附近获取新的区块哈希,而不是缓存一个。
  • 优先费用在负载下很重要。读取最近的优先费用,并设置反映当前网络状况的费用,而不是固定值。

调试常见的 Solana RPC 故障

大多数 Solana RPC 问题归结为少数症状。在更换提供商之前,将症状与可能的原因匹配。

症状可能原因首先检查
Blockhash not found过时或过期的区块哈希在发送前立即获取新的 getLatestBlockhash
429 或速率限制错误超出共享端点配额请求速率、批处理,以及是否需要专用节点
WebSocket 断开空闲超时或连接不稳定重连逻辑和订阅心跳
getProgramAccounts 结果为空缺少或错误的过滤器数据大小过滤器和账户鉴别器
交易上链缓慢优先费用低或 slot 拥堵最近的优先费用和重试策略
集群不匹配错误HTTP 和 WS 指向不同集群两个 URL 来自同一网络

一个简单的监控探针可以帮助您在用户之前发现端点问题:

while true; do
  curl -s https://solana.api.onfinality.io/public \
    -X POST -H "Content-Type: application/json" \
    -d '{"jsonrpc":"2.0","id":1,"method":"getSlot"}' \
    | head -c 200
  echo
done

对故障转移列表中的每个端点运行此命令并记录响应时间。如果某个端点出现偏差,您可以在它变成故障之前转移流量。

共享端点还是专用节点?

决策通常归结为三个问题:您的流量有多突发,您的方法有多重,以及您需要对节点本身有多少控制。

  • 共享 RPC 适合读密集型应用、钱包和早期产品。您获得托管端点而无需运行基础设施,并且您为访问付费而不是为机器付费。
  • 专用节点 适合交易系统、索引器和调用昂贵方法或需要一致计算余量的应用。您获得一个不与其他租户共享的节点,使性能更可预测。

一种常见模式是对一般读取使用共享 RPC,对延迟敏感路径使用专用节点,然后在它们之间故障转移。OnFinality 支持两种模式,您可以在 如何选择 RPC 提供商专用节点 选项中查看权衡。

Solana 提供商评估清单

当您比较 Solana RPC 提供商时,请针对您的真实工作负载进行测试,而不是通用基准。

  1. 方法覆盖 — 确认 getProgramAccountsgetSignaturesForAddress 和 WebSocket 订阅与您的过滤器一起工作。
  2. 计算和速率限制 — 询问限制如何应用,以及它们是否随您的计划扩展。
  3. 归档深度 — 如果您查询旧交易或签名,请验证历史数据是否可用。
  4. WebSocket 稳定性 — 测试长寿命订阅,而不仅仅是单条消息。
  5. 故障转移 — 检查您是否可以运行多个端点并在它们之间切换。
  6. 可观测性 — 寻找您可以采取行动的请求指标、错误率和状态信息。
  7. 支持路径 — 知道当交易路径中断时如何联系提供商。

您可以在 支持的 RPC 网络 页面查看可用网络,并在 RPC 定价 比较计划形态。

关键要点

  • Solana RPC 节点通过 HTTP 暴露 JSON-RPC,并提供一个单独的 WebSocket URL 用于订阅。
  • getProgramAccountsgetSignaturesForAddresssendTransaction 是最影响节点需求的方法。
  • 共享端点适合读密集型应用;专用节点适合突发、延迟敏感或计算密集型工作负载。
  • 大多数故障可追溯到过时的区块哈希、速率限制、WebSocket 断开或集群不匹配。
  • 针对您的真实调用模式测试提供商,包括 WebSocket 稳定性和归档深度。

常见问题

我需要专用 Solana 节点吗? 不一定。如果您的应用读取余额并偶尔提交交易,共享端点通常就足够了。当您需要可预测的计算余量、重型方法支持或更低的交易提交延迟时,请迁移到专用节点。

HTTP 和 WebSocket Solana 端点有什么区别? HTTP 处理请求/响应调用,如 getBalancesendTransaction。WebSocket 处理订阅,如 accountSubscribeslotSubscribe。如果您的应用使用订阅,则需要两个 URL。

为什么 getProgramAccounts 失败或返回空? 这是一个重型方法,通常需要过滤器,一些共享端点限制它。检查您的数据大小过滤器和账户鉴别器,并确认提供商支持您预期量的调用。

如何处理 Solana 交易失败? 在提交附近获取新的区块哈希,根据最近的网络状况设置优先费用,并实现重试。大多数 Blockhash not found 错误来自过时的区块哈希。

我可以对主网和 devnet 使用同一个端点吗? 不可以。主网和 devnet 是独立的集群,具有独立的端点。保持两个配置不同,并确保您的 HTTP 和 WebSocket URL 指向同一集群。

RPC 知识库

相关 RPC 内容

RPC 提供商选择Starknet

Starknet RPC:端点、提供商和最佳实践

Starknet 是基于以太坊的 ZK-rollup,使用 STARK 证明实现可扩展性。要与 Starknet 交互,您需要一个 RPC 端点。本指南涵盖公共和私有 Starknet RPC 端点、如何选择提供商以及针对开发者的常见故障排除技巧。...

RPC 提供商选择BNB Chain

什么是专用BNB节点,何时应该使用它们?

专用BNB节点是单租户的BNB Chain(BSC)节点,为您的应用程序提供对计算、内存和带宽的独占访问。与共享RPC端点不同,它们提供可预测的性能、无噪声邻居以及对配置的完全控制。本文解释了什么是专用BNB节点、它们与共享节点的比较,以及如何为生产工作负载评估提供商。...

网络 RPCBNB Chain

BNB智能链节点:它是什么以及如何可靠连接

BNB智能链节点是存储BSC状态并提供JSON-RPC请求的客户端。您可以自己运行一个节点,也可以使用托管的RPC提供商。本页解释了节点类型、如何连接以及如何选择与您的工作负载匹配的基础设施。...

RPC 提供商选择

dRPC vs Alchemy:Web3开发者应比较什么?

dRPC和Alchemy服务于不同的开发者需求。Alchemy提供全栈平台,包含增强API、webhooks和分析功能,适合以EVM为主的项目。dRPC专注于多链访问,具有去中心化路由和清晰的速率限制。本文分解关键差异,帮助您根据工作负载、链和预算做出决定。...

网络 RPCGnosis

Gnosis API 暴露了什么,以及如何连接到它?

Gnosis API 是 Gnosis Chain 节点暴露的 JSON-RPC 接口。它允许钱包、Safe 智能账户、索引器和后端服务在一条以 xDAI 结算并运行 EVM 兼容执行层的链上读取余额、提交交易、查询日志和检查状态。 本页面涵盖了您需要的链设置、如何发出第一个请求、哪些方法对常见的 ...

网络 RPCBifrost

Bifrost RPC 端点:链设置、提供商选项和开发者配置

Bifrost 是一个兼容 EVM 的 Layer 1 区块链,具有质押流动性协议。本文涵盖 Bifrost 主网和测试网 RPC 端点、链设置、如何选择 RPC 提供商以及常见的开发者配置步骤。...

永远不用担心基础设施

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

开始