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 内容

RPC 故障排查

什么是加密中的 nonce?

# 什么是加密中的 nonce? Nonce(“一次性使用的数字”)是在加密通信中仅使用一次的独特任意数字。在像以太坊这样的区块链网络中,nonce 是一个顺序计数器,确保来自给定地址的交易按顺序处理,并防止重放攻击。每笔交易的 nonce 必须比同一账户的上一笔交易高 1;否则,网络会拒绝该交易。...

Ethereum RPCEthereum

对于Web3应用,最佳的以太坊RPC API是什么?

最佳的以太坊RPC API为Web3应用提供可靠的主网和测试网访问、可预测的延迟、明确的请求限制、必要时支持归档或追踪,以及面向生产流量的专用基础设施升级路径。 以太坊应用通常需要的不仅仅是免费的公共端点。钱包、DeFi工具、NFT产品、分析平台和索引器在上线前应比较RPC提供商的正常运行时间、方法...

网络 RPCBase

Base RPC 端点:链设置、提供商和调试

获取 Base 主网 RPC 端点、链 ID 和网络设置,用于钱包和 dApp。了解如何在公共、免费和生产级 RPC 提供商之间选择,以及如何调试常见连接问题。...

网络 RPCAvalanche

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

SORA 是一个基于 Substrate 的区块链网络,旨在成为一个去中心化的自治经济体,使用 XOR 代币和代币绑定曲线。本文解释了 SORA 是什么、如何通过 RPC 连接到它,以及如何评估用于生产环境的基础设施。...

网络 RPCPichiu

什么是Pichiu网络以及如何通过RPC连接?

# 什么是Pichiu网络以及如何通过RPC连接? Pichiu网络是一个专注于去中心化预言机服务的区块链项目,使智能合约能够安全地与链下数据交互。它基于Substrate构建,为数据馈送和跨链通信提供了强大的基础设施。对于在Pichiu上构建的开发者来说,可靠的RPC端点对于查询链上数据和提交交易...

RPC 提供商选择Celo

如何检查 Celo 的可用性,这对你的 dApp 意味着什么?

Celo 的可用性涵盖网络健康状况和你的 dApp 所依赖的 RPC 端点。本文解释了如何监控 Celo 主网状态、评估 RPC 提供商的可靠性,并在你的基础设施中构建弹性。...

永远不用担心基础设施

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

开始