摘要
Solana RPC 提供商之间的差异,更多体现在基础 JSON-RPC 端点之上叠加的高级能力,而非端点本身:归档历史、WebSocket 订阅、优先费用与交易落地支持、专用节点容量以及可观测性。本文列出了你会遇到的提供商类别,并解释了哪些高级功能对交易机器人、索引器、钱包和分析管道至关重要。它还展示了如何在选定提供商之前自行验证这些功能。
Solana 的 JSON-RPC 接口是标准化的,因此几乎每个提供商都能响应 getLatestBlockhash 或 getAccountInfo。真正的区别在于该端点周围的东西:历史数据深度、订阅传输、交易落地辅助、专用容量,以及你在凌晨两点调试失败交易时所需的工具。本文列出了提供这些高级功能的提供商类别,并为你提供了一种自行测试每项声明的方法。
对于 Solana RPC 提供商而言,“高级”意味着什么
在比较名称之前,先就定义达成一致。具体到 Solana,高级提供商功能通常分为以下几类:
- 历史深度。 完整的归档状态,以便你可以查询旧的 slot、签名和账户状态,而不会碰到修剪墙。
- 订阅传输。 支持
accountSubscribe、logsSubscribe、slotSubscribe和signatureSubscribe的 WebSocket,而不仅仅是 HTTP 轮询。 - 交易落地支持。 优先费用估算、带跳过预检选项的
sendTransaction,有时还有 Jito bundle 端点。 - 专用容量。 为你的工作负载保留的节点或集群,而不是共享的限速池。
- 可观测性。 请求级别的指标、日志,以及查看调用失败原因的能力。
- 扩展 API。 在原始 RPC 之上叠加的代币、NFT 或 DAS 风格的索引端点。
一个提供商可能在基础端点方面非常出色,但仍然不提供上述任何功能。这就是本列表要区分的。
提供高级功能的提供商类别
1. 具有归档和 WebSocket 层级的托管 RPC 平台
这是最常见的类别。这里的提供商运行 Solana 节点并暴露 HTTP 加 WebSocket 端点,通常还有一个你可以按项目启用的归档层级。OnFinality 属于这一类:它通过 HTTP 和 WebSocket 提供 Solana RPC API,当共享吞吐量不再足够时,你可以升级到专用节点。在此类别中要寻找的高级功能是归档访问、WebSocket 订阅,以及从共享到专用基础设施的文档化路径。
2. 专用节点和节点即服务提供商
一些团队完全跳过共享端点,租用 Solana 节点或集群。当你需要可预测的吞吐量、自定义插件或只有你的服务可以访问的私有端点时,这是正确的类别。这里的高级功能是容量保证、你选择的节点版本,以及直接访问日志和指标。OnFinality 的专用节点产品就是为此模式设计的。
3. 索引 API 提供商
另一类提供商销售的是索引数据而非原始 RPC:代币余额、NFT 元数据、可查询形式的交易历史。这些对于分析和钱包 UI 很有用,但它们不能直接替代 Solana RPC 端点。将它们视为补充,而非替代品。
4. 公共和社区端点
公共端点适合快速测试或黑客松原型。它们不是寻找高级功能的地方,也不是为生产流量构建的。用它们来确认你的客户端代码可以工作,然后继续前进。
按工作负载快速推荐
| 你的工作负载 | 你实际需要的功能 | 起步的提供商类别 |
|---|---|---|
| 钱包或 dApp 前端 | 可靠的 HTTP RPC + 用于账户变更的 WebSocket | 托管 RPC 平台 |
| 交易机器人 | 低延迟发送、优先费用数据、专用容量 | 专用节点或具有专用层级的托管平台 |
| 索引器或分析管道 | 归档历史、getSignaturesForAddress、旧 slot 上的 getBlock | 具有归档层级的托管平台 |
| NFT 或代币仪表板 | 索引代币/NFT API 加上基础 RPC | 索引 API 提供商 + 托管 RPC |
| 运行自己基础设施的协议团队 | 完全节点控制、自定义插件 | 节点即服务 / 专用节点 |
如果不确定,从可以扩展到专用容量的托管平台开始,这样你以后就不必迁移提供商。
在选定之前如何验证高级功能
营销页面不是证明。对任何候选端点运行以下检查。
检查 1:WebSocket 是否真的有效?
// 使用 ws 包的 Node.js 示例
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: "slotSubscribe",
params: [],
})
);
});
ws.on("message", (data) => {
console.log("slot notification:", data.toString());
});
如果你收到 slot 通知,则订阅传输是活跃的。如果连接打开但没有通知到达,提供商可能正在代理 WebSocket 而没有真正的订阅支持。
检查 2:历史是否真的归档了?
查询很久以前的签名或区块。修剪过的节点会对旧 slot 返回错误或 null。
curl https://solana.api.onfinality.io/public \
-X POST \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "getBlock",
"params": [<OLD_SLOT>, {"encoding": "json", "maxSupportedTransactionVersion": 0}]
}'
将 <OLD_SLOT> 替换为你已知的旧 slot。如果它返回区块数据,则归档深度是真实的。
检查 3:你能看到自己的流量吗?
要求提供仪表板或指标端点。提供高级功能的提供商通常会暴露每个方法的请求计数、错误率和延迟。如果没有可见性,你将在盲目调试。
检查 4:达到速率限制时会发生什么?
发送突发请求并观察响应。返回干净的 429 响应并带有头信息的提供商比静默丢弃调用的提供商更容易合作。
值得付费的高级功能
并非每个高级功能都物有所值。以下是一份通常值得和通常不值得的简短列表。
| 功能 | 值得的时候 | 通常不值得的时候 |
|---|---|---|
| 归档历史 | 你运行索引器、分析或合规查询 | 你只读取当前账户状态 |
| WebSocket 订阅 | 你需要实时账户或 slot 更新 | 你无论如何都按慢速计划轮询 |
| 专用容量 | 流量突发或对延迟敏感 | 你处于预发布阶段且流量低 |
| 优先费用 API | 你发送交易并关心落地 | 你只读取数据 |
| 索引代币/NFT API | 你构建钱包或市场 UI | 你只需要原始链数据 |
Solana 的端点和链设置
配置客户端时,保持网络设置与你使用的端点一致。对于 Solana 主网,原生货币是 SOL,小数位为 9,标准区块浏览器是 explorer.solana.com。OnFinality 暴露了一个公共 HTTP 端点 https://solana.api.onfinality.io/public 和一个 WebSocket 端点 wss://solana.api.onfinality.io/public-ws 用于评估。对于生产环境,请使用来自你的 Solana RPC API 仪表板的项目范围端点,以便流量被归属且速率限制可预测。
如果你正在针对 devnet 进行测试,请使用 Solana Devnet 网络页面获取匹配的配置,而不是在同一个客户端中混合主网和 devnet URL。
选择 Solana RPC 提供商时的常见陷阱
- 假设 HTTP 端点支持 WebSocket。 它们是独立的传输。两者都要测试。
- 将索引 API 与 RPC 混淆。 代币 API 不是 Solana 节点。你仍然需要一个 RPC 端点来进行链上读取和发送。
- 直到需要时才忽略归档深度。 在项目中途迁移到归档提供商比一开始就使用一个更具破坏性。
- 忽视故障转移。 任何单个端点都可能有不顺的一天。配置一个辅助提供商或专用节点作为备份。
- 不测量。 没有请求级别的指标,你无法判断是提供商慢还是你的客户端慢。
关键要点
- Solana RPC 是标准化的;高级功能是区分提供商的关键。
- 最重要的功能是归档历史、WebSocket 订阅、交易落地支持、专用容量和可观测性。
- 要考虑的提供商类别:托管 RPC 平台、专用节点提供商、索引 API 提供商和公共端点(仅用于测试)。
- 在选定之前,通过 WebSocket 订阅测试、旧 slot 的
getBlock调用和突发测试来验证声明。 - OnFinality 通过 HTTP 和 WebSocket 提供 Solana RPC API,并在共享容量不足时提供通往专用节点的路径。
- 始终为生产环境配置故障转移端点。
常见问题
所有 Solana RPC 提供商都支持 WebSocket 吗?
不。许多只暴露 HTTP。如果你需要 accountSubscribe 或 slotSubscribe,请明确确认 WebSocket 支持并进行测试。
什么是归档 Solana RPC 节点? 它是一个保留历史账本数据的节点,以便你可以查询旧的 slot、区块和签名。非归档节点会修剪这些数据,历史查询将失败。
我可以在生产环境中使用公共 Solana RPC 端点吗? 公共端点最适合测试和原型。对于生产环境,请使用来自托管提供商或专用节点的项目范围端点。
如何公平地比较 Solana RPC 提供商? 对每个候选者测试相同的方法,在你自己的流量模式下测量延迟和错误率,并检查你实际使用哪些高级功能。有关结构化方法,请参阅如何选择 RPC 提供商。
OnFinality 提供专用 Solana 节点吗? 是的。OnFinality 提供 Solana RPC API 和专用节点选项。有关当前详情,请参阅 RPC 定价 和 支持的 RPC 网络。
下一步
选择一个工作负载,列出它需要的高级功能,并针对该列表测试两到三个提供商。如果你想要一个起点,请查看 Solana RPC API 页面,检查 RPC 定价,并在选定之前比较支持的 RPC 网络。