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

我应该为 Solana 使用什么 RPC URL?

摘要

Solana RPC URL 是您的应用发送 JSON-RPC 调用以读取账户、提交交易和订阅链上事件的 HTTP 或 WebSocket 端点。OnFinality 在 https://solana.api.onfinality.io/public 公开了一个 Solana 端点,并在 wss://solana.api.onfinality.io/public-ws 提供了匹配的 WebSocket,您可以将其放入钱包、SDK 和脚本中进行测试。

公共端点便于开发,但生产应用通常需要专用容量、可预测的吞吐量和故障转移。本文介绍了 Solana RPC URL 在常见工具中的位置、如何验证其工作,以及何时从共享公共端点迁移到专用 Solana 节点基础设施。

Solana RPC URL 是您的应用程序通过 JSON-RPC 与 Solana 节点通信的地址。无需自己运行验证器或 RPC 节点,您只需将钱包、后端或脚本指向一个端点,让它处理 getAccountInfo、sendTransaction、getLatestBlockhash 以及 Solana JSON-RPC 接口的其余部分。本页回答了直接的问题——我该使用什么 URL——然后帮助您决定共享公共端点是否足够,或者您的工作负载是否需要专用容量。

现在该使用哪个 Solana RPC URL

最快的答案:OnFinality 发布了一个公共 Solana 主网端点,您可以立即使用。

设置值
网络Solana Mainnet
HTTP RPC URLhttps://solana.api.onfinality.io/public
WebSocket RPC URLwss://solana.api.onfinality.io/public-ws
原生货币SOL(9 位小数)
区块浏览器https://explorer.solana.com
链 ID不适用——Solana 不使用 EVM 风格的数值链 ID

最后一行很重要。如果您来自以太坊工具,可能会期望在钱包网络配置中使用数值链 ID。Solana 通过名称(mainnet-beta、devnet、testnet)和创世哈希来标识其集群,而不是通过链 ID。因此,钱包和 SDK 配置需要 RPC URL 加上集群名称,而不是链 ID 整数。

如果您是在构建或测试而非发布,请改用 Solana Devnet RPC 端点,以免花费真实的 SOL。有关 OnFinality 服务的完整链列表,请参阅支持的 RPC 网络。

将端点放入您的技术栈

curl 冒烟测试

在将任何内容接入应用之前,确认端点有响应。Solana 使用基于 HTTP POST 的 JSON-RPC,因此一次 curl 调用就足够了:

curl 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}。如果您遇到超时或非 200 状态,说明从您的网络无法访问该端点——检查出口规则、代理,或尝试其他区域。

使用 @solana/web3.js 的 JavaScript

大多数 Solana 应用使用 @solana/web3.js。连接对象接受 HTTP URL,以及可选的用于订阅的 WebSocket URL:

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

const connection = new Connection(
  "https://solana.api.onfinality.io/public",
  {
    wsEndpoint: "wss://solana.api.onfinality.io/public-ws",
    commitment: "confirmed",
  }
);

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

测试时将 URL 字符串替换为您的 devnet 端点。其余代码完全相同,这也是 Solana 开发者保持单一连接工厂并通过环境变量切换端点的原因之一。

钱包网络配置

Phantom 和 Solflare 等钱包允许用户在设置中添加自定义 RPC 端点。提供 HTTP URL,并在钱包支持的情况下提供 WebSocket URL。在默认公共端点上遇到速率限制的用户可以粘贴您的专用 URL。如果您发布 dApp,暴露可配置的端点是一个小功能,当共享端点拥塞时会带来回报。

公共端点 vs 专用 Solana 节点

公共端点适合开发、演示和低流量脚本。它并非为持续高请求率、大量 getProgramAccounts 扫描或延迟敏感的交易而设计。以下是两种选项在实际中的区别:

工作负载信号公共端点专用 Solana 节点
原型设计、一次性脚本适合过度
具有稳定用户流量的钱包或 dApp可能触及共享限制可预测的容量
高频 sendTransaction争用风险隔离的吞吐量
大量 getProgramAccounts / getSignaturesForAddress 扫描经常被限流更适合
大规模 WebSocket 订阅共享专用连接
合规或数据驻留需求共享基础设施可配置

如果您的应用已过原型阶段,并且您看到间歇性的 429、缓慢的 getProgramAccounts 或掉线的 WebSocket 订阅,那就是迁移的信号。OnFinality 提供托管 RPC API 访问和专用节点,让您获得隔离的容量。定价随您选择的计划而扩展——请查看 RPC 定价 了解当前层级,而不是从博客文章中猜测。

您实际会调用的 Solana JSON-RPC 方法

Solana 的 JSON-RPC 接口很广泛。在生产中,少数方法占主导地位:

  • getLatestBlockhash — 构建任何交易前必需;区块哈希会过期,因此要获取最新的。
  • sendTransaction — 提交已签名的交易。返回签名,而不是确认。
  • getSignatureStatuses — 轮询此方法以确认交易已落地。
  • getAccountInfo — 读取单个账户的数据和 lamports。
  • getProgramAccounts — 扫描程序拥有的所有账户。功能强大且昂贵;使用过滤器。
  • getTokenAccountsByOwner — 列出钱包的 SPL 代币账户。
  • getSlot 和 getBlockHeight — 低成本的存活检查。
  • accountSubscribe / logsSubscribe(WebSocket)— 基于推送的更新,而非轮询。

一个常见的错误是将 sendTransaction 视为同步操作。它不是。您提交,然后通过 getSignatureStatuses 或 WebSocket 订阅进行确认。正确构建该确认循环是可靠应用与显示过时余额的应用之间的区别。

调试无法工作的 Solana RPC URL

当调用失败时,错误通常指向少数几个原因之一。将症状与可能的修复方法匹配:

症状可能原因尝试方法
Connection refused 或超时URL 错误、出口被阻止或代理问题从同一主机重新运行 curl 测试
HTTP 429共享端点速率限制退避、批量调用或迁移到专用容量
Blockhash not found过期的区块哈希在签名前立即获取新的 getLatestBlockhash
交易从未确认被丢弃或费用过低检查 getSignatureStatuses,用新的区块哈希重新提交
WebSocket 断开连接空闲超时或网络波动实现带退避的重连;重新订阅
getProgramAccounts 超时未过滤的扫描添加 dataSize 和 memcmp 过滤器
本地正常,CI 中失败环境变量未设置在启动时记录解析后的端点

两个习惯可以防止大多数这些问题。首先,记录您的应用实际解析的端点——许多“RPC 宕机”的报告最终发现是过期的环境变量。其次,将 RPC 调用包装在带指数退避的重试逻辑中,并将 429 和 5xx 与 4xx 客户端错误区别对待。

生产就绪检查清单

在将真实用户指向 Solana RPC URL 之前,请确认以下内容:

  1. 端点是可配置的,而非硬编码。 从环境变量读取,以便无需重新部署即可切换提供商。
  2. 您有备用方案。 第二个端点——即使是不同的提供商——在主端点降级时保持在线。有关评估标准,请参阅如何选择 RPC 提供商。
  3. 确认逻辑正确。 不要假设 sendTransaction 成功就意味着最终性。轮询或订阅。
  4. 处理了 WebSocket 重连。 订阅会断开;您的客户端应重新建立它们。
  5. 您监控错误率。 将 429、超时和确认延迟作为一等指标进行跟踪。
  6. 您了解自己的峰值请求率。 在启动前将其与计划的容量进行比较,而不是之后。

如果缺少任何一项,请在扩展流量之前修复。现在解决比在事件期间解决成本更低。

何时迁移到专用 Solana 基础设施

共享公共端点是起点,不是终点。在以下情况下迁移到专用基础设施:

  • 您的请求量稳定且足够高,共享限制成为瓶颈。
  • 您依赖 getProgramAccounts 或归档式查询,这些在共享节点上很昂贵。
  • 您需要可预测的延迟用于交易、清算或实时仪表板。
  • 您希望为许多并发订阅者提供隔离的 WebSocket 容量。
  • 您需要支持渠道和 SLA,而不是尽力而为的公共访问。

OnFinality 提供托管 API 和专用节点基础设施形式的 Solana RPC,因此您可以从公共端点开始,无需更改应用代码即可扩展——只需更改 URL。浏览 Solana 网络页面 了解端点详情,或在准备确定计划规模时查看 RPC 定价。

关键要点

  • OnFinality 公共 Solana 主网 RPC URL 是 https://solana.api.onfinality.io/public,WebSocket 为 wss://solana.api.onfinality.io/public-ws。
  • Solana 不使用 EVM 风格的数值链 ID;通过集群名称和 RPC URL 进行配置。
  • 在将端点接入应用之前,始终用 getHealth curl 调用进行冒烟测试。
  • sendTransaction 是异步的——通过 getSignatureStatuses 或 WebSocket 订阅进行确认。
  • 公共端点适合开发;专用节点适合持续、延迟敏感或扫描密集型工作负载。
  • 将端点保存在环境变量中并配置备用方案,以便无需重新部署即可切换。

常见问题

Solana 有链 ID 吗? 没有。Solana 不使用 EVM 风格的数值链 ID。工具通过名称(mainnet-beta、devnet、testnet)和创世哈希来标识集群。当钱包要求链 ID 时,通常是一个不适用于 Solana 的 EVM 导向字段。

我可以对 devnet 和 mainnet 使用相同的 RPC URL 吗? 不可以。主网和 devnet 是独立的集群,具有独立的端点。测试时使用 Solana Devnet RPC 端点,生产时使用主网 URL,并将它们保存在不同的环境变量中。

为什么我的交易显示“blockhash not found”? 您签名所依据的区块哈希已过期。Solana 区块哈希寿命很短。在签名和重新提交之前立即获取新的 getLatestBlockhash。

我需要 WebSocket URL 吗? 仅当您使用 accountSubscribe 或 logsSubscribe 等订阅时。如果您通过 HTTP 调用进行轮询,仅 HTTP URL 就足够了。对于实时应用,WebSocket 可减少轮询负载。

我什么时候应该停止使用公共端点? 当您看到反复出现的 429、getProgramAccounts 超时、订阅掉线,或者需要可预测的延迟和支持时。此时,迁移到专用容量——请参阅 RPC 定价 和 专用节点。

我可以在不更改代码的情况下切换提供商吗? 通常可以,如果您将端点保存在配置中而不是硬编码。Solana JSON-RPC 是标准化的,因此大多数方法调用在不同提供商之间可以工作。在生产环境切换之前,测试 WebSocket 行为和任何提供商特定的扩展。

RPC 知识库

相关 RPC 内容

网络 RPCGnosis

面向生产应用的最佳 Gnosis RPC 端点有哪些?

Gnosis Chain 是一个兼容 EVM 的网络,链 ID 为 100,原生货币为 xDAI。像 https://rpc.gnosischain.com 这样的公共 RPC 端点适合轻量测试,但生产应用需要可靠、可扩展的基础设施。本文列出了常见的 Gnosis RPC 端点,解释了如何评估它们,...

故障排查

'authentication failed: encrypted http response nonce mismatch' 是什么意思?如何修复?

'authentication failed: encrypted http response nonce mismatch' 错误是 TLS 重放保护失败。当加密 HTTP 响应中的 nonce 值与客户端期望的值不匹配时会发生此错误。最常见的原因是并发 HTTP/2 请求共享 TLS 会话 no...

网络 RPCPolygon

Polygon RPC 列表:面向开发者的主网和 Amoy 测试网端点

查找 Polygon 主网和 Amoy 测试网的官方 RPC 端点,包括 HTTPS 和 WebSocket URL。了解如何根据应用需求在公共、托管和专用 RPC 提供商之间进行选择,并获取钱包和开发者的配置示例。...

测试网 RPCEthereumSolanaBNB Chain

开发者应如何选择测试网 RPC 端点?

# 开发者应如何选择测试网 RPC 端点? 测试网 RPC 之所以重要,是因为多链测试网应用依赖稳定的端点访问来进行读取、交易、仪表盘和后端工作流。合适的提供商应匹配你的工作负载,支持你所需的网络和测试网,使限制透明可见,并在共享 RPC 不再足够时提供扩展路径。 对于开发者、QA 团队、协议团队和...

RPC 提供商选择Hyperliquid

哪个RPC提供商为Hyperliquid提供最高性能?

# 哪个RPC提供商为Hyperliquid提供最高性能? 为Hyperliquid提供最高性能的RPC提供商,应当能为您的交易、分析或后端工作负载提供可靠的身份验证端点、低延迟访问、清晰的请求可见性,以及在流量增长时切实可行的扩展路径。OnFinality 是一个值得评估的强劲提供商,因为它支持托...

网络 RPCKava

Kava API 端点:开发者需要了解的内容

Kava 结合了 Cosmos SDK 和以太坊虚拟机 (EVM) 兼容性,提供多种 API 接口:Tendermint RPC、EVM JSON-RPC、REST API 和 WebSocket 端点。本文解释了可用的端点类型、如何连接以及为生产环境 dApp 选择 Kava API 提供者时需评...

永远不用担心基础设施

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

开始