摘要
Solana RPC 服务提供你的 dApp、索引器或交易机器人所需的 API 端点,以读取链上状态并提交交易。选择合适的服务取决于你的工作负载、流量模式,以及你是否需要专用容量或共享公共端点。本文解释了要评估的内容以及如何将服务与你的用例匹配。
快速建议:将服务与你的工作负载匹配
在比较提供商之前,先确定你的应用实际需要什么。简单的钱包或 dApp 通常可以从公共端点开始,但依赖一致性能的生产应用应评估托管 RPC 服务。问问自己:
- 我的请求量是多少? 如果你预计每秒超过几个请求,共享公共端点可能会遇到速率限制。具有更高吞吐量或专用节点的托管服务更安全。
- 我需要 WebSocket 支持吗? 实时功能(如代币价格更新或交易状态)需要 WebSocket 端点。确认提供商提供该端点。
- 我需要历史数据吗? 如果你的应用获取旧账户状态或交易历史,你可能需要归档节点或支持
getTransaction并提供历史数据的提供商。 - 我对速率限制和停机的容忍度如何? 如果你的应用面向用户,不稳定的 RPC 响应会导致糟糕的体验。专用节点让你完全控制容量。
对于许多团队来说,从托管 RPC 服务(如 OnFinality 的 Solana RPC)开始是正确的平衡。你获得可靠的端点,而无需承担运行自己节点的运营负担。随着流量增长,你可以迁移到 专用节点 以获得有保证的容量。
Solana RPC 服务实际做什么
Solana 是一个高性能区块链,专为快速、低成本的交易而设计。要与它交互,你的应用向节点发送 JSON-RPC 请求。RPC 服务运行并维护这些节点,公开你可以调用的 API 端点。
典型的 Solana RPC 服务提供:
- HTTP 端点,用于标准请求,如
getBalance、getRecentBlockhash和sendTransaction。 - WebSocket 端点,用于实时订阅,如
accountSubscribe或logsSubscribe。 - 可靠的基础设施,包括监控、故障转移和负载均衡。
- 开发者支持和文档。
如果没有服务,你需要运行自己的 Solana 验证器或 RPC 节点。这意味着管理硬件、跟上网络升级并确保正常运行时间。对于大多数团队来说,使用 RPC 服务更具成本效益且部署更快。
Solana RPC 服务与运行自己的节点
运行自己的 Solana 节点让你完全控制,但会带来巨大的成本和复杂性。以下比较可帮助你决定:
| 方面 | 托管 RPC 服务 | 自托管节点 |
|---|---|---|
| 设置时间 | 几分钟 | 数天到数周 |
| 硬件成本 | 包含在订阅中 | 高(服务器、存储、带宽) |
| 维护 | 提供商处理 | 你处理升级、监控和修复 |
| 可扩展性 | 易于升级计划 | 需要手动配置 |
| 可靠性 | 提供商 SLA(如果提供) | 取决于你自己的运营 |
| 成本可预测性 | 月度订阅 | 可变,但在规模上可能更低 |
对于大多数项目来说,除非你有专门的基础设施团队,否则运行节点的运营开销不值得。托管服务让你专注于产品。
如何评估 Solana RPC 服务提供商
在比较提供商时,不要只看标价。以下是关键标准:
- 吞吐量和速率限制:允许的最大每秒请求数(RPS)是多少?提供商是否实施可能限制你的应用的限制?
- WebSocket 支持:服务是否提供稳定的 WebSocket 端点?并发连接数是否有限制?
- 归档数据:提供商是否提供历史数据访问?如果你需要旧交易的
getTransaction,你可能需要归档节点。 - 地理分布:端点是否在多个区域可用,以减少用户的延迟?
- 正常运行时间和监控:提供商是否发布正常运行时间统计?他们是否提供主动监控?
- 支持:包含什么级别的支持?是否有紧急问题的专用渠道?
- 定价模型:是基于使用量、固定费用还是组合?它是否随你的需求扩展?
OnFinality 的 RPC 定价 是透明的,你可以从免费层开始测试性能。
公共、共享与专用 Solana RPC
Solana RPC 服务通常分为三类:
- 公共端点:免费,但有速率限制,不适合生产。它们适合测试和小型项目。
- 共享(托管)端点:多个用户共享的节点池。它们提供比公共端点更高的吞吐量,适合大多数生产应用。
- 专用节点:为你的项目保留的单个节点或集群。这让你完全控制容量,非常适合高流量或延迟敏感的应用。
例如,OnFinality 在 https://solana.api.onfinality.io/public 提供公共 Solana 端点用于测试。对于生产,你将使用来自你的 OnFinality 账户 的专用或共享端点。
设置 Solana RPC 连接
一旦你有了端点,连接就很简单。以下是使用 curl 获取当前区块高度的示例:
curl https://solana.api.onfinality.io/public \
-X POST \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"getBlockHeight"}'
对于 WebSocket 订阅,你可以使用像 @solana/web3.js 这样的库:
import { Connection, PublicKey } from '@solana/web3.js';
const connection = new Connection('wss://solana.api.onfinality.io/public-ws');
const account = new PublicKey('...');
connection.onAccountChange(account, (accountInfo) => {
console.log('Account changed:', accountInfo);
});
请记住,在生产环境中,将公共端点替换为你自己的 API 密钥或专用端点。
常见陷阱及如何避免
- 速率限制:公共端点有严格限制。如果超过它们,你可能会收到 429 错误。使用具有更高限制的托管服务。
- WebSocket 断开:WebSocket 连接可能会断开。在你的客户端中实现重新连接逻辑。
- 使用错误的端点:确保你为网络(主网与开发网)使用了正确的端点。
- 忽略版本兼容性:Solana 的 RPC API 会演变。保持你的客户端库最新。
关键要点
- Solana RPC 服务提供与 Solana 区块链交互所需的 API 端点,而无需运行自己的节点。
- 根据你的工作负载、可靠性需求和预算,在公共、共享和专用服务之间进行选择。
- 根据吞吐量、WebSocket 支持、归档数据和定价来评估提供商。
- 对于生产环境,使用像 OnFinality 这样的托管服务,以避免速率限制和运营开销。
- 始终先用公共端点测试,然后为生产环境迁移到专用或共享端点。
常见问题解答
Solana RPC 服务和节点有什么区别?
节点是运行区块链的软件。RPC 服务运行节点并公开 API 供你交互。使用服务意味着你不必自己管理节点。
我可以将免费的 Solana RPC 服务用于生产吗?
免费的公共端点通常有速率限制,并且不够可靠,不适合生产。建议使用具有服务级别协议的付费服务。
如何获得专用的 Solana RPC 端点?
你可以通过像 OnFinality 这样的提供商配置专用节点。这为你提供了具有保证容量的私有端点。
最好的 Solana RPC 服务是什么?
最好的服务取决于你的需求。根据性能、功能和定价比较提供商。OnFinality 提供可靠的 Solana RPC 服务,并具有灵活的计划。
OnFinality 是否支持 Solana devnet?
是的,OnFinality 提供用于测试的 Solana devnet 端点。有关详细信息,请参阅 Solana Devnet 页面。