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 节点,您只需将钱包、后端或脚本指向一个端点,让它处理 getAccountInfosendTransactiongetLatestBlockhash 以及 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-betadevnettestnet)和创世哈希来标识其集群,而不是通过链 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 代币账户。
  • getSlotgetBlockHeight — 低成本的存活检查。
  • accountSubscribe / logsSubscribe(WebSocket)— 基于推送的更新,而非轮询。

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

调试无法工作的 Solana RPC URL

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

症状可能原因尝试方法
Connection refused 或超时URL 错误、出口被阻止或代理问题从同一主机重新运行 curl 测试
HTTP 429共享端点速率限制退避、批量调用或迁移到专用容量
Blockhash not found过期的区块哈希在签名前立即获取新的 getLatestBlockhash
交易从未确认被丢弃或费用过低检查 getSignatureStatuses,用新的区块哈希重新提交
WebSocket 断开连接空闲超时或网络波动实现带退避的重连;重新订阅
getProgramAccounts 超时未过滤的扫描添加 dataSizememcmp 过滤器
本地正常,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-betadevnettestnet)和创世哈希来标识集群。当钱包要求链 ID 时,通常是一个不适用于 Solana 的 EVM 导向字段。

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

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

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

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

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

RPC 知识库

相关 RPC 内容

RPC 提供商选择Efinity

如何为专用节点访问选择 Solana RPC 提供商

专用 Solana RPC 节点让您可以独占访问单个节点实例,避免共享端点常见的噪声邻居和速率限制争用。本文解释了专用节点访问对 Solana 工作负载的意义,以及如何根据吞吐量、可靠性和支持来评估提供商。 我们比较了公共、共享和专用 Solana RPC 选项,然后介绍了关键标准(如请求限制、We...

RPC 提供商选择Solana

哪个 Solana RPC 提供商支持测试网和开发网?

# 哪个 Solana RPC 提供商支持测试网和开发网? 在 Solana 上开发时,你需要一个除了主网之外还支持测试网和开发网的 RPC 提供商。开发网是使用免费 SOL 测试程序和交易的主要环境,而测试网用于压力测试网络升级和验证器性能。许多提供商为所有三个集群提供端点,但支持质量——速率限制...

RPC 提供商选择Solana

是什么让 Solana RPC 变快,以及如何为你的应用选择最快的 RPC?

Solana 的性能要求低延迟的 RPC 基础设施。最适合你的用例的最快 RPC 取决于工作负载类型、地理邻近性以及你是否需要共享或专用资源。本文解释了影响 Solana RPC 速度的关键因素以及如何评估提供商。...

网络 RPCSolana

Solana RPC 端点:如何连接并配置用于生产环境

Solana RPC 端点是您的应用程序用来向 Solana 网络发送 JSON-RPC 请求的 URL。本指南涵盖主网和开发网端点,如何配置您的钱包或 dApp,以及如何在公共、共享和专用 RPC 服务之间进行选择。...

区块链基础设施

什么是节点即服务(Node-as-a-Service),何时应该使用它?

节点即服务(NaaS)让开发者无需运行自己的基础设施即可访问区块链节点。无需同步、维护和扩展节点,而是使用第三方提供的托管RPC端点。当你希望专注于构建dApp而非管理服务器时,这非常有用。然而,它引入了信任和中心化的权衡。本文解释了NaaS的工作原理、优缺点,以及如何判断它是否适合你的项目。...

网络 RPCBittensor

What is Bittensor RPC and how do you connect to it?

Bittensor RPC enables developers to interact with Bittensor's decentralized AI network via Substrate (subtensor) and EVM APIs. This reference covers m...

永远不用担心基础设施

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

开始