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

Solana RPC 端点:如何连接、配置和调试

摘要

Solana RPC 端点是您的 dApp 或验证器用来向 Solana 网络发送 JSON-RPC 请求的 URL。本页介绍主网和开发网端点、如何在代码中配置它们,以及如何调试常见的连接问题。对于生产环境的工作负载,OnFinality 提供的托管或专用 RPC 端点可提供可靠性和可扩展性。

快速决策指南:您应该使用哪个 Solana RPC 端点?

在深入配置之前,请决定哪种端点类型适合您的用例:

  • 公共 RPC 端点(如 https://solana.api.onfinality.io/public)是免费的,适用于开发、测试和低流量应用。它们有速率限制且是共享的,因此不适合生产环境的工作负载。
  • 托管 RPC 端点来自 OnFinality 等提供商,提供更高的速率限制、WebSocket 支持以及生产级 dApp 的可靠性。对于大多数项目来说,这是一个很好的中间选择。
  • 专用 Solana 节点为您提供私有、隔离的端点,无共享且完全可控。对于高吞吐量应用、验证器或需要一致性能的场景,请选择此选项。

如果您正在构建生产应用,请跳过公共端点,直接使用托管或专用解决方案。查看 RPC 定价 和 支持的网络 以了解您的选项。

什么是 Solana RPC 端点?

Solana RPC 端点是一个接受通过 HTTP 或 WebSocket 发送的 JSON-RPC 请求的 URL。它充当您的应用程序与 Solana 区块链之间的网关。每笔交易、账户查询和程序调用都通过 RPC 端点进行。

Solana 的 RPC API 基于 JSON-RPC 2.0。您发送一个带有方法和参数的 POST 请求,端点返回结果或错误。WebSocket 端点允许您订阅账户变更、程序日志和交易确认。

Solana 主网和开发网端点

Solana 有多个集群。最常见的两个是 mainnet-beta(生产)和 devnet(开发)。以下是 OnFinality 的官方公共端点:

集群HTTP 端点WebSocket 端点
主网https://solana.api.onfinality.io/publicwss://solana.api.onfinality.io/public-ws
开发网参见 Solana 开发网参见 Solana 开发网

注意: 公共端点有速率限制且是共享的。对于生产环境,请使用 OnFinality 提供的托管或专用端点。

如何连接 Solana RPC 端点

您可以使用 curl、JavaScript 库(如 @solana/web3.js)或任何 HTTP 客户端与 Solana RPC 端点交互。以下是一个基本的 curl 示例,用于获取最新的区块哈希:

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

响应将如下所示:

{
  "jsonrpc": "2.0",
  "result": {
    "blockhash": "5xYk...",
    "lastValidBlockHeight": 123456
  },
  "id": 1
}

使用 @solana/web3.js

对于 JavaScript dApp,@solana/web3.js 库是标准。使用您的端点配置连接:

import { Connection } from '@solana/web3.js';

const connection = new Connection('https://solana.api.onfinality.io/public', 'confirmed');

// 获取最新的区块哈希
const { blockhash } = await connection.getLatestBlockhash();
console.log(blockhash);

对于 WebSocket 订阅,请使用 WebSocket URL:

import { Connection } from '@solana/web3.js';

const wsEndpoint = 'wss://solana.api.onfinality.io/public-ws';
const connection = new Connection(wsEndpoint, 'confirmed');

// 订阅账户变更
const subscriptionId = connection.onAccountChange(
  somePublicKey,
  (accountInfo) => console.log(accountInfo)
);

常见的 Solana RPC 方法

Solana 的 RPC API 包含许多方法。以下是最常用的:

  • getBalance – 获取账户的 SOL 余额。
  • getLatestBlockhash – 获取用于交易签名的当前区块哈希。
  • sendTransaction – 提交已签名的交易。
  • getTransaction – 获取交易详情。
  • getAccountInfo – 检索账户数据。
  • getProgramAccounts – 获取由程序拥有的所有账户。
  • getSlot – 获取当前时隙。
  • getBlock – 获取区块信息。
  • getSignaturesForAddress – 列出地址的交易签名。
  • onAccountChange(WebSocket)– 订阅账户更新。
  • onLogs(WebSocket)– 订阅程序日志。

有关完整列表,请参阅 Solana 文档。

调试 Solana RPC 连接问题

如果您遇到连接问题,以下是常见症状和修复方法:

症状可能原因修复方法
429 Too Many Requests超出速率限制使用托管或专用端点,或降低请求频率。
403 ForbiddenIP 被阻止或未授权检查您的 API 密钥或使用公共端点。
超时网络问题或端点过载使用退避重试,或切换到更可靠的提供商。
Invalid paramsJSON-RPC 请求格式错误验证您的请求结构。
WebSocket 断开连接不稳定实现重连逻辑。
Blockhash not found交易太旧获取新的区块哈希并重新提交。

使用 curl 快速测试

要验证您的端点是否可达,请运行:

curl https://solana.api.onfinality.io/public -X POST -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","id":1,"method":"getHealth"}'

健康的节点返回 {"result":"ok"}。

Solana RPC 的生产注意事项

当迁移到生产环境时,请考虑以下事项:

  • 速率限制: 公共端点有严格的限制。托管端点提供更高的吞吐量。
  • WebSocket 稳定性: 对于实时功能,请确保您的提供商支持 WebSocket 并处理重连。
  • 地理延迟: 选择靠近用户的端点以减少延迟。
  • 存档数据: 如果您需要历史状态,您可能需要一个存档节点。
  • 故障转移: 实现多个端点和故障转移逻辑以避免停机。

OnFinality 提供 专用 Solana 节点 和 托管 RPC 服务 来解决这些问题。

关键要点

  • Solana RPC 端点是向 Solana 网络发送 JSON-RPC 请求的 URL。
  • 使用公共端点进行开发,但在生产环境中切换到托管或专用端点。
  • 使用正确的 HTTP 或 WebSocket URL 配置您的连接。
  • 通过检查速率限制、请求格式和网络稳定性来调试常见问题。
  • 对于生产环境,根据速率限制、WebSocket 支持和可靠性评估提供商。

常见问题解答

Solana RPC 端点 URL 是什么?

公共主网端点是 https://solana.api.onfinality.io/public。对于 WebSocket,请使用 wss://solana.api.onfinality.io/public-ws。对于开发网,请参阅 Solana 开发网。

如何获取 Solana RPC 端点?

您可以免费使用公共端点,或注册 OnFinality 等托管 RPC 服务以获得具有更高限制的专用端点。

HTTP 和 WebSocket RPC 端点有什么区别?

HTTP 用于请求-响应调用,而 WebSocket 允许实时订阅。对于实时账户更新等功能,请使用 WebSocket。

我可以免费使用 Solana RPC 端点吗?

可以,公共端点是免费的,但有速率限制。对于生产环境,请考虑付费计划。

如何选择 Solana RPC 提供商?

根据速率限制、WebSocket 支持、正常运行时间和定价来评估提供商。请参阅我们的 Solana RPC 提供商对比 获取指导。

RPC 知识库

相关 RPC 内容

网络 RPCUnichain

什么是 Unichain 端点,我如何连接到它?

Unichain 是一个基于 OP Stack 构建的以太坊 Layer 2 网络,专为快速且低成本的 DeFi 交易而设计。要与它交互,你需要一个 RPC 端点——可以是用于测试的公共端点,也可以是用于生产工作负载的私有专用端点。本指南涵盖链设置、连接示例以及如何选择合适的基础设施。...

网络 RPCEfinity

什么是 Starknet 节点,如何运行或连接一个?

Starknet 节点是一种软件,它与 Starknet 网络同步,验证状态转换,并为 dApp 和索引器提供 JSON-RPC 请求服务。运行全节点可以让您直接访问和控制,但需要大量的硬件、存储和维护。对于大多数生产工作负载,像 OnFinality 这样的托管 RPC 服务可以提供可靠的端点,而...

测试网 RPCZenChain

如何连接 ZenChain 测试网:RPC 端点、水龙头和开发者设置

ZenChain 测试网是一个兼容 EVM 的比特币 Layer 1 测试环境,用于构建和测试具有比特币安全性和以太坊可编程性的 dApp。本指南涵盖 RPC 端点、链设置、水龙头访问以及开发者的逐步设置。...

RPC 提供商选择Efinity

无限Solana RPC节点:它意味着什么,何时需要?

无限Solana RPC节点移除了按请求的速率限制,让您的应用可以扩展而不会遇到请求上限。本文解释了无限访问的实际含义、如何评估提供商,以及何时专用节点是生产工作负载的正确选择。...

网络 RPCBNB Chain

BNB智能链节点:它是什么以及如何可靠连接

BNB智能链节点是存储BSC状态并提供JSON-RPC请求的客户端。您可以自己运行一个节点,也可以使用托管的RPC提供商。本页解释了节点类型、如何连接以及如何选择与您的工作负载匹配的基础设施。...

RPC 提供商选择多链

哪个RPC提供商覆盖的区块链最广?

不同的RPC提供商支持的区块链网络数量差异很大,但单纯的网络数量只是故事的一部分。OnFinality 提供对 100 多个网络的访问,包括 Ethereum、Solana、Polkadot、BNB Chain 以及许多测试网,并同时提供共享和专用节点选项。你应该关注那些为你实际需要的链提供深度支持...

永远不用担心基础设施

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

开始