摘要
可以。OnFinality 提供支持 HTTP 和 WebSocket 的 Solana RPC 端点,并为需要更可预测容量的团队提供专用节点选项。Solana 上的增强 API 访问通常不仅仅意味着基本的 JSON-RPC 端点:它包括 WebSocket 订阅、支持归档的历史查询,以及在不与整个互联网共享公共端点的情况下扩展请求量的能力。
正确的选择取决于你的工作负载。钱包或仪表盘与交易机器人、索引器或依赖账户订阅的程序有不同的需求。本文解释了如何将 Solana RPC 功能与你的用例匹配,在承诺之前需要测试什么,以及 OnFinality 适合在哪里。
当开发者要求提供具有增强 API 的 Solana RPC 提供商时,他们通常指的是三件事之一:他们需要保持连接的 WebSocket 订阅,他们需要在不访问共享公共端点的情况下查询历史或账户数据,或者他们正在运行一个超出免费公共 RPC 能力的工作负载(交易机器人、索引器、钱包)。简短的回答是,OnFinality 通过 HTTP 和 WebSocket 提供 Solana RPC,并在你需要更多容量控制时提供专用节点选项。更长的回答是关于将功能与你的实际工作负载匹配,这就是本文涵盖的内容。
哪种 Solana RPC 设置适合你的工作负载?
在比较提供商之前,确定你的应用程序实际做什么。Solana 的 JSON-RPC 接口很广泛,而“增强”的含义取决于你是在读取账户、流式传输事件还是重放历史。
| 工作负载 | 你可能需要什么 | 为什么共享公共端点可能不够 |
|---|---|---|
| 钱包或 dApp 前端 | HTTP RPC、可靠的 getLatestBlockhash、sendTransaction | 公共端点可能在拥塞期间限流或丢弃突发请求 |
| 交易机器人或做市商 | 低延迟 HTTP + WebSocket 订阅 | 共享端点会增加可变延迟和连接限制 |
| 索引器或分析 | 支持归档的历史、getSignaturesForAddress、getBlock | 公共节点通常会修剪历史或限制繁重查询 |
| 带账户订阅的程序 | WebSocket accountSubscribe、logsSubscribe | 空闲的 WebSocket 连接在免费层上经常被关闭 |
| NFT 或代币工具 | getTokenAccountsByOwner、DAS 风格的元数据查询 | 大型结果集和分页会给共享基础设施带来压力 |
如果你在第一行,托管的共享 RPC 计划通常就足够了。如果你在第二到第五行,请规划专用或私有端点,这样你的流量就不会与无关用户竞争。
Solana 上的“增强 API”意味着什么
Solana 没有像某些 EVM 链那样有 trace 或 debug 命名空间的单一官方“增强 API”标签。相反,增强访问通常指的是以下能力的组合。在承诺之前,与你的提供商确认每一项。
- WebSocket 订阅。 诸如
accountSubscribe、logsSubscribe、slotSubscribe和signatureSubscribe等方法推送更新,而不是要求轮询。这对于实时 UI 和机器人至关重要。 - 归档和历史访问。 能够为较旧的 slot 调用
getBlock、getTransaction和getSignaturesForAddress。许多公共端点只提供最近的数据。 - 更高的请求吞吐量。 能够每秒发送更多请求而不被限流,这对索引器和回填很重要。
- 专用容量。 私有端点或专用节点,这样你的性能不会受到其他租户的影响。
- 一致的连接处理。 能够在长时间空闲期间存活的 WebSocket 连接,许多免费层不保证这一点。
如果提供商无法清楚地描述他们如何处理这五个方面,请谨慎对待“增强”的说法。
Solana 链设置一览
当你通过 OnFinality 连接到 Solana 时,请使用以下设置。这些与 Solana Mainnet 的链配置匹配。
| 设置 | 值 |
|---|---|
| 网络 | Solana Mainnet |
| 原生货币 | SOL(9 位小数) |
| HTTP RPC | https://solana.api.onfinality.io/public |
| WebSocket RPC | wss://solana.api.onfinality.io/public-ws |
| 区块浏览器 | https://explorer.solana.com |
对于开发和测试,请使用 Solana Devnet,而不是将测试流量指向主网。Devnet 有自己的水龙头和空投流程,并且可以保持你的主网使用干净。
在承诺之前测试 Solana 端点
评估任何 Solana RPC 提供商的最快方法是对每个候选者运行相同的小型调用集,并比较行为,而不是营销文案。从基本健康检查开始:
curl -s 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}。如果没有,请停止。
接下来,测试对你的工作负载重要的调用。对于钱包,检查 getLatestBlockhash 和 getFeeForMessage。对于索引器,尝试在具有长历史的地址上调用 getSignaturesForAddress,看看提供商是否返回较旧的签名或截断。对于机器人,打开 WebSocket 并订阅日志:
const ws = new WebSocket("wss://solana.api.onfinality.io/public-ws");
ws.onopen = () => {
ws.send(JSON.stringify({
jsonrpc: "2.0",
id: 1,
method: "logsSubscribe",
params: [{ mentions: ["<YOUR_PROGRAM_ID>"] }, { commitment: "confirmed" }]
}));
};
ws.onmessage = (event) => {
const msg = JSON.parse(event.data);
console.log("log notification", msg.params?.result);
};
让连接保持打开几分钟。如果它在空闲时断开,那么该提供商在没有额外重连逻辑的情况下将无法用于基于订阅的功能。
在重要功能上比较 Solana RPC 提供商
使用功能矩阵而不是单一的“最佳”标签。下表显示了如何考虑主要选项,OnFinality 列在首位。
| 提供商 | WebSocket 支持 | 归档 / 历史 | 专用节点选项 | 备注 |
|---|---|---|---|---|
| OnFinality | 是(HTTP + WS) | 通过 RPC 计划和专用节点可用 | 是 | 托管 RPC API 加专用节点基础设施 |
| 公共集群端点 | 有限 | 经常被修剪 | 否 | 适合原型,不适合生产流量 |
| 通用 RPC 聚合器 | 因计划而异 | 因计划而异 | 有时 | 检查 WebSocket 空闲行为和历史深度 |
| 自托管验证者 RPC | 是 | 取决于你的保留策略 | 不适用 | 高运营开销 |
当你评估时,向每个提供商问三个问题:WebSocket 连接在空闲时保持打开多长时间,历史可以追溯到多远,以及当你超过计划的请求速率时会发生什么。答案将真正的生产选项与演示端点区分开来。
何时专用 Solana 节点是更好的选择
共享 RPC 计划对于大多数读密集型应用程序具有成本效益。但某些工作负载值得使用专用节点:
- 你运行一个交易系统,其中延迟变化比平均延迟更重要。
- 你回填大范围的 Solana 历史,并且不希望在任务中途被限流。
- 你需要在网络拥塞期间(公共端点变慢时)具有可预测的容量。
- 你希望与其他租户隔离,这样嘈杂的邻居就不会影响你的吞吐量。
专用节点并不一定对每个请求都更快,但它消除了共享基础设施带来的可变性。如果你的应用程序的可靠性取决于一致的 RPC 行为,那么这种隔离通常是值得的。
实用的迁移和推出清单
从公共端点迁移到托管或专用 Solana RPC 提供商主要是为了避免意外。在切换生产流量之前,请完成此列表。
- 清点你的 RPC 调用。 列出你的应用使用的每个方法,包括 WebSocket 订阅。这告诉你哪些功能不能妥协。
- 运行并行测试。 将暂存环境指向新端点,并将响应、延迟和错误率与当前设置进行比较。
- 检查空闲和负载下的 WebSocket 行为。 订阅、等待并确认连接存活。然后订阅一个繁忙的程序并观察是否有消息丢失。
- 验证历史深度。 查询一个旧的签名或区块,并确认提供商返回它。
- 添加故障转移。 在客户端中配置辅助端点,这样单个提供商的问题就不会导致你的应用宕机。
- 切换后监控。 跟踪错误率、p95 延迟和 WebSocket 重连至少一周。
有关适用于跨链的更广泛框架,请参阅如何选择 RPC 提供商。
Solana RPC 的常见陷阱
当团队迁移到新的 Solana 端点时,有几个问题反复出现:
- 假设所有端点都提供完整历史。 许多并不提供。在依赖它之前进行测试。
- 忽略 commitment 级别。
processed、confirmed和finalized的行为不同。选择你的应用程序可以容忍的级别。 - 轮询而不是订阅。 如果你需要实时更新,WebSocket 订阅通常比紧密的轮询循环更便宜、更快速。
- 没有重连逻辑。 即使好的提供商偶尔也会断开连接。你的客户端应该自动重连并重新订阅。
- 将测试流量发送到主网。 使用 Solana Devnet 进行开发,这样你就不会消耗主网容量或混淆你的指标。
关键要点
- Solana 上的“增强 API”通常意味着 WebSocket 订阅、归档/历史访问、更高的吞吐量和专用容量。
- 将提供商与你的工作负载匹配:钱包需要可靠性,机器人需要低延迟订阅,索引器需要历史深度。
- OnFinality 通过 HTTP 和 WebSocket 提供 Solana RPC,并为需要隔离的团队提供专用节点选项。
- 在承诺提供商之前,始终测试 WebSocket 空闲行为和历史深度。
- 从第一天起就规划故障转移,并使用 Devnet 进行开发流量。
- 查看 RPC 定价 和 支持的 RPC 网络 以了解适合你计划的内容。
常见问题
OnFinality 支持 Solana WebSocket 订阅吗?
是的。Solana 可通过 HTTP 和 WebSocket 使用,包括 logsSubscribe 和 accountSubscribe 等订阅方法。
我可以通过 RPC 获取历史 Solana 数据吗? 历史深度取决于计划和节点配置。如果你需要深度历史进行索引,请与提供商讨论归档要求或考虑专用节点。
我应该使用共享还是专用 Solana 端点? 如果你的流量是读密集型且可预测的,请从共享托管计划开始。如果你需要一致的延迟、高吞吐量或与其他租户隔离,请迁移到专用节点。
如何快速测试 Solana RPC 提供商?
运行 getHealth,然后测试你的应用使用的特定方法,包括保持打开几分钟的 WebSocket 订阅。
在哪里可以找到 Solana Devnet 设置? 请参阅 Solana Devnet 页面以获取端点和水龙头详细信息。