摘要
Solana 公共 RPC 节点是免费的、由社区运营的端点,允许你在不运行自己的验证器的情况下读写 Solana 上的数据。它们非常适合原型开发、轻量级 dApp 和快速测试,但存在速率限制和可靠性风险。本指南解释了它们的工作原理、局限性以及何时迁移到托管或专用 RPC 提供商。
Solana 公共 RPC 节点是在 Solana 上开始构建的最快方式。它们是免费的,无需注册,并允许你向网络发送 JSON-RPC 请求,而无需运行自己的验证器。但它们也是共享的、有限速的,并且不适用于生产工作负载。本指南解释了它们的工作原理、局限性以及何时应迁移到托管或专用 RPC 提供商。
快速决策指南:公共 vs 托管 vs 专用 RPC
在深入细节之前,这里有一个快速方法来确定哪种类型的 RPC 端点适合你的用例:
| 工作负载 | 公共 RPC | 托管 RPC | 专用 RPC |
|---|---|---|---|
| 原型开发和黑客松 | ✅ | ✅ | ✅ |
| 低流量的轻量级 dApp | ✅ | ✅ | ✅ |
| 有真实用户的生产 dApp | ❌ | ✅ | ✅ |
| 高吞吐量的交易或索引 | ❌ | ❌ | ✅ |
大量的 getProgramAccounts 或 getSignaturesForAddress 调用 | ❌ | ✅ | ✅ |
| 大规模 WebSocket 订阅 | ❌ | ✅ | ✅ |
如果你只是在试验或构建演示,公共 RPC 节点就足够了。 如果你要启动生产应用,应使用像 OnFinality 这样的托管 RPC 提供商,以获得可靠的吞吐量和支持。如果你有持续的高负载或需要可预测的性能,专用节点是正确的选择。
什么是 Solana 公共 RPC 节点?
Solana 公共 RPC 节点是向互联网上的任何人公开 Solana JSON-RPC API 的服务器。它允许你查询区块链数据(如账户余额、交易状态和区块数据)并提交交易。公共节点由 Solana 基金会、社区成员或基础设施提供商运营,并且免费使用。
当你向公共 RPC 端点发送请求时,你正在与许多其他开发人员共享该节点。这就是公共节点有速率限制并且在高峰使用期间可能变慢或不可用的原因。
如何使用 Solana 公共 RPC 节点
你可以使用任何 HTTP 客户端与公共 RPC 节点交互。以下是一个简单的 curl 示例,用于获取当前 slot:
curl https://solana.api.onfinality.io/public \
-X POST \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"getSlot"}'
你也可以使用官方的 Solana Web3.js 库:
import { Connection } from '@solana/web3.js';
const connection = new Connection('https://solana.api.onfinality.io/public');
const slot = await connection.getSlot();
console.log('Current slot:', slot);
对于实时更新,你可以使用 WebSocket 订阅:
import { Connection } from '@solana/web3.js';
const connection = new Connection('wss://solana.api.onfinality.io/public-ws');
const subscriptionId = connection.onSlotChange((slotInfo) => {
console.log('Slot changed:', slotInfo);
});
公共 RPC 节点的局限性
公共 RPC 节点很方便,但有几个局限性可能会在生产环境中破坏你的应用程序:
- 速率限制:公共节点通常限制每秒或每天的请求数。如果超过限制,你会收到
429 Too Many Requests错误。 - 无 SLA:不保证正常运行时间或性能。节点可能在没有通知的情况下宕机或变慢。
- 共享资源:由于许多开发人员使用同一个节点,一个应用程序的流量激增可能会影响其他所有人。
- 历史数据有限:公共节点通常不提供完整的归档数据。如果你需要历史状态或日志,可能需要归档节点。
- 无支持:如果出现问题,你无法联系任何人。你只能靠自己。
这些局限性是大多数生产 dApp 使用托管 RPC 提供商或专用节点的原因。
何时升级到托管 RPC 提供商
如果你的 dApp 已准备好面向真实用户,你应该迁移到托管 RPC 提供商。像 OnFinality 这样的托管提供商提供:
- 更高的速率限制:你获得更多的每秒请求数,并且可以随着流量增长而扩展。
- 可靠性:托管提供商在负载均衡器后面运行多个节点,因此如果一个节点发生故障,你的流量会被路由到另一个节点。
- 支持:如果遇到问题,你可以联系提供商。
- 附加功能:一些提供商提供归档数据、WebSocket 支持和分析。
OnFinality 为 Solana 提供托管 RPC 服务,包括 HTTP 和 WebSocket 端点。你可以在我们的支持的网络页面上查看完整的支持网络列表。
何时使用专用 Solana RPC 节点
专用节点为你提供不与他人共享的私有 RPC 端点。这适用于:
- 高吞吐量应用:如果你运行交易机器人、索引器或数据密集型应用,专用节点可提供一致的性能。
- 合规或数据隐私:如果需要控制谁可以访问你的节点,专用节点是正确的选择。
- 自定义配置:你可以根据特定需求调整节点,例如启用归档模式或调整交易处理设置。
OnFinality 为 Solana 提供专用节点。你可以在我们的专用节点页面上了解更多信息。
如何评估 Solana RPC 提供商
在选择 Solana RPC 提供商时,请考虑以下标准:
| 标准 | 检查内容 | 重要性 |
|---|---|---|
| 速率限制 | 每秒请求数、每日配额 | 决定你的应用能否处理峰值流量 |
| 正常运行时间 | 历史正常运行时间、SLA | 确保你的应用在用户需要时可用 |
| 延迟 | 不同区域的响应时间 | 影响用户体验,尤其是实时应用 |
| WebSocket 支持 | 提供商是否提供 WebSocket 端点? | 实时订阅所需 |
| 归档数据 | 提供商是否提供归档节点? | 历史查询所需 |
| 支持 | 是否有支持团队? | 帮助你快速解决问题 |
| 定价 | 每次请求或每月的成本 | 符合你的预算 |
你可以使用这些标准比较提供商。OnFinality 对许多团队来说是一个不错的选择,因为它在性能、可靠性和定价之间取得了平衡。你可以查看我们的 RPC 定价 了解详情。
常见陷阱及如何避免
以下是开发人员在使用 Solana RPC 节点时常犯的一些错误:
- 在生产环境中使用公共节点:这是最常见的错误。公共节点对于生产应用来说不够可靠。始终使用托管或专用节点。
- 不处理速率限制:如果你使用公共节点,应优雅地处理
429错误。实现带有指数退避的重试逻辑。 - 忽略 WebSocket 重连:WebSocket 连接可能会断开。确保你的应用自动重连。
- 未根据用例使用正确的端点:如果需要实时数据,请使用 WebSocket。如果需要历史数据,请使用归档节点。
关键要点
- Solana 公共 RPC 节点免费且易于使用,但它们有速率限制且没有可靠性保证。
- 公共节点适用于原型开发和轻量级 dApp,但生产应用应使用托管 RPC 提供商。
- 专用节点是高吞吐量或数据密集型应用的最佳选择。
- 评估提供商时,请考虑速率限制、正常运行时间、延迟、WebSocket 支持、归档数据、支持和定价。
- OnFinality 提供托管和专用 Solana RPC 节点,支持 HTTP 和 WebSocket 端点。
常见问题解答
什么是 Solana 公共 RPC 节点? Solana 公共 RPC 节点是免费的、社区运营的端点,公开 Solana JSON-RPC API。它允许你查询区块链数据并提交交易,而无需运行自己的节点。
Solana 公共 RPC 节点可靠吗? 公共 RPC 节点对于生产使用并不可靠。它们有速率限制、没有 SLA,并且可能在高峰使用期间变慢或不可用。对于生产应用,请使用托管或专用 RPC 提供商。
如何获取 Solana RPC 端点?
你可以使用公共端点(如 https://solana.api.onfinality.io/public)进行测试。对于生产环境,请注册托管 RPC 服务或部署专用节点。
公共 RPC 节点和私有 RPC 节点有什么区别? 公共 RPC 节点由许多用户共享,并且有速率限制。私有 RPC 节点(专用)是专属于你的,提供更好的性能和可靠性。
OnFinality 支持 Solana 吗? 是的,OnFinality 支持 Solana 主网和 devnet。你可以在我们的 Solana 网络页面 上找到更多信息。