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

Solana RPC 服务器:如何连接、配置和扩展

摘要

Solana RPC 服务器是您的应用用来读取账户、提交交易和订阅链上事件的 HTTP 和 WebSocket 接口。本页解释了 Solana RPC 服务器的实际功能、如何将您的工具指向它,以及随着工作负载增长,如何在公共端点、托管 RPC API 或专用节点之间做出选择。

您将找到可用的 curl 和 JavaScript 示例、钱包和框架配置所需的链设置、常见故障模式(如速率限制和 slot 延迟),以及当流量超出共享端点时,迁移到专用 Solana 基础设施的实用检查清单。

Solana RPC 服务器是您的应用程序在需要读取区块链状态或提交交易时与之通信的服务。您无需自己运行验证器或 RPC 节点,而是将客户端指向一个支持 Solana JSON-RPC 方言的 HTTP 端点(通常还有一个 WebSocket 端点)。从钱包余额检查到代币交换,一切都始于向该服务器发送请求。

本页面向已经知道自己需要 Solana RPC 服务器并希望正确连接它的开发者,然后决定共享端点是否足够,或者专用节点是否更合适。如果您仍在高层面上比较提供商,请从如何选择 RPC 提供商开始,然后回到这里进行 Solana 特定的配置。

在公共、托管和专用 Solana RPC 之间选择

最快的决策方法是将您的工作负载与端点类型匹配。大多数团队从公共或共享端点开始,然后在遇到特定限制时升级,而不是模糊地感觉速度慢。

您的情况通常适合的端点类型需要注意什么
原型设计、脚本、低请求量公共端点共享容量、严格的速率限制、无 SLA
具有稳定读取流量的生产 dApp托管 RPC API(共享、带密钥)每方法限制、WebSocket 连接上限
索引器、机器人、大量使用 getProgramAccounts专用节点账户扫描的内存和磁盘、归档需求
交易或延迟敏感的提交靠近您基础设施的专用节点Slot 延迟、交易落地率、故障转移
需要历史状态或完整账本支持归档的专用节点存储增长、快照恢复时间

OnFinality 通过托管的 RPC API 服务专用节点提供 Solana RPC,当您需要隔离容量时。托管端点是大多数应用的合适起点;专用节点适用于已超出共享吞吐量或需要可预测资源的团队。

一个快速的经验法则:如果您的错误主要是 429 响应,您需要带密钥的托管计划或专用节点。如果您的错误是像 getProgramAccounts 这样的重调用超时,您需要更多内存和专用节点,而不是更大的共享计划。

Solana RPC 服务器设置一览

当您配置钱包、框架或后端服务时,您需要网络参数,而不仅仅是 URL。对于 Solana 主网,这些是要使用的值。

设置
链名称Solana Mainnet
原生货币SOL(9 位小数)
HTTP RPC URLhttps://solana.api.onfinality.io/public
WebSocket RPC URLwss://solana.api.onfinality.io/public-ws
区块浏览器https://explorer.solana.com
支持的传输HTTP 和 WebSocket

对于开发和测试,请使用 devnet 端点而不是主网,这样您就不会花费真实的 SOL。OnFinality 暴露了一个单独的 Solana Devnet 端点,您可以从标准的 Solana 水龙头请求 devnet SOL 来资助测试交易。将 devnet 和主网配置保存在单独的环境变量中,这样测试密钥就不会意外指向主网。

一个常见的模式是将端点存储在环境变量中并在启动时读取:

SOLANA_RPC_URL=https://solana.api.onfinality.io/public
SOLANA_WS_URL=wss://solana.api.onfinality.io/public-ws

使用 curl 和 JavaScript 连接

确认 Solana RPC 服务器正在响应的最简单方法是通过 HTTP 进行 JSON-RPC 调用。Solana 使用与其他链相同的 JSON-RPC 2.0 信封,但具有 Solana 特定的方法。

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

健康的响应会返回一个包含 blockhashlastValidBlockHeightresult 对象。如果您得到的是错误对象,则端点可达但请求被拒绝,这通常指向格式错误的方法或参数,而不是网络问题。

在 JavaScript 中,@solana/web3.js 库封装了这些调用。将连接指向您的端点并传递承诺级别:

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

const connection = new Connection(
  process.env.SOLANA_RPC_URL,
  { commitment: "confirmed", wsEndpoint: process.env.SOLANA_WS_URL }
);

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

承诺级别在 Solana 上很重要。processed 最快但可能回滚,confirmed 是大多数应用的常见默认值,finalized 对于结算逻辑最安全。选择与操作风险匹配的级别,而不是可用的最快级别。

WebSocket 订阅及何时使用它们

Solana RPC 服务器还暴露 WebSocket 传输以进行基于推送的更新。无需在循环中轮询 getSlotgetAccountInfo,您可以订阅并在状态更改时接收通知。

const subId = connection.onAccountChange(
  new PublicKey("11111111111111111111111111111111"),
  (accountInfo, context) => {
    console.log("slot", context.slot, "lamports", accountInfo.lamports);
  },
  "confirmed"
);

WebSocket 订阅很高效,但它们保持连接打开,共享端点通常会限制并发订阅。如果您在许多用户之间运行许多订阅,请跟踪您的连接数并计划重连。订阅可能在网络拥塞期间断开,因此始终处理断开事件并重新订阅,而不是假设流是永久的。

对于高频使用,专用节点为您提供稳定的订阅预算,并避免与其他租户竞争通知传递。

常见故障模式及如何解读

大多数 Solana RPC 问题归结为少数症状。将症状与原因匹配可以节省大量猜测。

症状可能原因初步修复
HTTP 429 响应共享端点上的速率限制添加带密钥的计划或迁移到专用
getProgramAccounts 请求超时大账户扫描、内存压力使用过滤器,或迁移到专用节点
发送时 Blockhash not foundBlockhash 在落地前过期获取新的 blockhash 并重试
交易落地缓慢拥塞或费用太低添加优先费用,重新提交
WebSocket 断开空闲超时或连接上限实现重连和重新订阅
Slot 数据陈旧节点落后于尖端检查 slot 延迟,考虑更换节点

其中两个值得更多细节。首先,没有过滤器的 getProgramAccounts 是 Solana 上最重的调用之一。它可以扫描大量账户数据,在共享端点上,它通常是第一个被限流的调用。在责怪端点之前,添加数据大小和 memcmp 过滤器以缩小结果集。

其次,交易落地不仅仅与 RPC 服务器有关。Solana 使用的 blockhash 在短窗口后过期,因此使用旧 blockhash 构建的交易即使在完全健康的端点上也会失败。获取新的 blockhash,设置合理的优先费用,并使用退避重试。

生产就绪检查清单

在将真实流量发送到 Solana RPC 服务器之前,请完成以下项目。它们是演示与能在繁忙一天中存活的东西之间的区别。

  • 分离环境。 将 devnet 和主网端点和密钥保存在不同的配置中。
  • 有意设置承诺级别。 大多数读取使用 confirmed,结算使用 finalized
  • 处理速率限制。 检测 429 响应并退避,而不是立即重试。
  • 计划故障转移。 配置辅助端点,以便单次中断不会导致应用宕机。
  • 监控 slot 延迟。 跟踪您的节点落后集群尖端多远。
  • 关注 WebSocket 健康。 记录断开连接和重新订阅成功。
  • 为重调用做预算。 了解您的应用最常使用哪些方法并相应调整规模。

如果其中几项在共享端点上已经令人痛苦,那就是评估专用节点的信号。您可以在 RPC 定价页面比较计划,如果您还在其他链上运营,可以查看支持的 RPC 网络的完整列表。

运行自己的 Solana RPC 服务器 vs 租用

您可以自己运行 Solana RPC 节点。权衡是运营性的,而不仅仅是财务性的。Solana RPC 节点需要大量 RAM、快速 NVMe 存储,以及对快照、升级和监控的持续关注。账本不断增长,因此存储规划是反复出现的任务,而不是一次性设置。

租用托管端点或专用节点将运营负担转移给提供商。您仍然选择区域、容量和传输,但您不需要在凌晨 2 点修补节点或恢复快照。对于大多数产品团队来说,这是工程时间的更好利用。对于有严格数据本地化或合规要求的团队,自托管可能仍然是正确的选择,混合方法(自托管主节点、托管故障转移)很常见。

OnFinality 属于托管阵营:您获得 Solana RPC 端点,并在需要时获得专用节点,而无需自己运行基础设施。Solana 网络页面列出了当前的端点详细信息和传输。

从公共端点迁移而不破坏东西

从公共 Solana RPC 服务器迁移到托管或专用服务器应该是配置更改,而不是重写。如果您准备好,步骤很简单。

  1. 将新端点与旧端点一起添加。 暂时不要删除公共 URL。
  2. 将一小部分流量路由到新端点,并比较错误率和延迟。
  3. 单独更新 WebSocket 配置,因为 HTTP 和 WS 端点是不同的。
  4. 验证承诺级别在新端点上行为相同。
  5. 切换默认值一旦错误率稳定,保留旧端点作为故障转移。
  6. 移除公共端点仅在完整流量周期且无回归后。

因为 Solana RPC 是基于 HTTP 的 JSON-RPC,迁移通常是在环境变量中交换 URL 并重新部署。风险在于细节:忘记 WebSocket URL,或同时更改承诺级别和端点,这使得很难判断行为变化的原因。

关键要点

  • Solana RPC 服务器是您的应用用来读取状态和提交交易的 HTTP 和 WebSocket 接口。
  • 主网使用链名称 Solana Mainnet、9 位小数的 SOL,以及位于 explorer.solana.com 的浏览器。
  • 从共享或公共端点开始,然后在遇到速率限制或重调用超时时迁移到托管或专用节点。
  • 承诺级别(processedconfirmedfinalized)应与每个操作的风险匹配。
  • WebSocket 订阅很高效,但需要重连和重新订阅处理。
  • getProgramAccounts 和过期的 blockhash 是两个最常见的混淆来源。
  • 迁移通常是配置更改,但请一起更新 HTTP 和 WebSocket 端点。

常见问题

什么是 Solana RPC 服务器?

它是一个通过 HTTP 和 WebSocket 暴露 Solana JSON-RPC API 的服务,让您的应用程序无需自己运行节点即可读取账户、提交交易和订阅事件。

主网的 Solana RPC URL 是什么?

OnFinality 在 https://solana.api.onfinality.io/public 暴露 Solana 主网 HTTP,在 wss://solana.api.onfinality.io/public-ws 暴露 WebSocket。始终在 Solana 网络页面上确认当前端点。

为什么我的 Solana RPC 端点返回 429 错误?

429 表示您触发了速率限制,这在共享或公共端点上很常见。带密钥的托管计划或专用节点消除了共享上限。

对于 Solana,我应该使用 HTTP 还是 WebSocket?

使用 HTTP 进行请求-响应调用,使用 WebSocket 进行推送更新,例如账户或 slot 更改。大多数生产应用两者都使用。

我可以在生产中使用公共 Solana RPC 端点吗?

可以,但公共端点是共享的,通常有速率限制。对于稳定的生产流量,托管或专用端点提供更可预测的行为和清晰的升级路径。

如何在不花费 SOL 的情况下测试?

使用 devnet 端点并从水龙头请求 devnet SOL。将 devnet 配置与主网分开,以免密钥交叉。

RPC 知识库

相关 RPC 内容

测试网 RPCBitcoin

什么是比特币测试网 RPC,如何使用它?

比特币测试网 RPC 端点允许开发者连接到比特币测试网络,在不冒真实资金风险的情况下进行开发和测试。本文解释了什么是比特币测试网 RPC,如何选择端点,以及如何发起你的第一个 JSON-RPC 调用。...

RPC 提供商选择Optimism

如何为 Optimism 设置自定义 RPC?

为 Optimism 设置自定义 RPC 意味着将你的钱包或 dApp 配置为使用特定的端点,而不是默认的公共端点。本指南涵盖了你需要的链设置、如何将 Optimism 添加到 MetaMask,以及如何为生产环境选择可靠的 RPC 提供商。...

RPC 提供商选择

如何为NFT项目选择RPC提供商?

NFT应用——铸造平台、市场及游戏工具——依赖快速、可靠的RPC端点来提交交易和获取元数据。选择不当的提供商可能导致铸造失败、加载缓慢及用户体验差。本指南涵盖评估用于NFT工作负载的RPC提供商的关键标准,包括延迟、速率限制、归档数据支持和故障转移能力。我们还以Solana网络为例,演示实际设置步骤...

网络 RPCEfinity

Optimism RPC 节点:端点、链设置和调试

使用正确的 RPC 端点、链设置和调试工作流程连接到 OP Mainnet 和 Optimism Sepolia。本参考涵盖公共和托管选项、常见故障模式以及如何选择适合您工作负载的基础设施。...

网络 RPCSORA

什么是SORA区块链以及如何连接它?

# 什么是SORA区块链以及如何连接它? SORA是一个旨在创建去中心化货币体系和经济基础设施的区块链平台。它基于Hyperledger Iroha v3构建,采用单一逻辑账本、确定性最终性和基于通道的扩展,以支持支付、DeFi、CBDC和企业应用。该网络通过民主机制进行治理,旨在为全球市场提供统一...

网络 RPCGnosis

Gnosis RPC:端点、提供商与最佳实践

# Gnosis RPC:端点、提供商与最佳实践 Gnosis Chain(原 xDai)是一个兼容 EVM 的 L1 区块链,以其稳定的 gas 代币(xDAI)和低交易成本而闻名。为了与 Gnosis Chain 交互,开发者和应用程序需要一个可靠的 RPC(远程过程调用)端点。本指南涵盖了您需...

永远不用担心基础设施

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

开始