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

什么是 Solana 的 RPC?如何选择合适的端点?

摘要

Solana RPC 端点让您的 dApp 读取链上状态、提交交易并订阅实时更新。本指南解释 Solana RPC 如何工作、如何连接公共和专用端点,以及在生产环境选择基础设施时应评估哪些因素。

快速建议:如何选择 Solana RPC 端点

如果您正在构建一个小脚本或在 Devnet 上测试,公共端点就足够了。如果您正在运行生产级 dApp,共享或专用 RPC 提供商可以提供更一致的性能、更高的速率限制以及用于实时订阅的 WebSocket 支持。从像 OnFinality 的 Solana RPC 这样的托管提供商开始,可以避免运行自己的验证器或 RPC 节点的运维开销。

什么是 Solana 的 RPC?

Solana RPC(远程过程调用)是让您的应用程序与 Solana 区块链通信的接口。通过 JSON-RPC,您可以查询账户余额、获取交易详情、发送已签名的交易,并订阅账户或程序更新。Solana 的 RPC API 基于 HTTP,并支持 WebSocket 用于流式更新。

与以太坊的 JSON-RPC 不同,Solana 使用自己的一套方法,例如 getBalance、getLatestBlockhash 和 sendTransaction。您使用的端点决定了服务质量:公共端点是免费的,但通常有速率限制,而托管提供商提供更高的吞吐量和可靠性。

Solana RPC 端点选项

端点类型使用场景注意事项
公共端点开发、测试、低流量调用有速率限制,可能不适合生产环境
共享 RPC 提供商中等流量的生产 dApp更好的可靠性、更高的速率限制、支持 WebSocket
专用节点高吞吐量应用、自定义需求完全控制、最高性能、成本更高

OnFinality 提供共享和专用 Solana RPC 选项。您可以先使用公共端点进行测试,当流量增长时再升级到专用节点。

如何连接 Solana RPC

要连接 Solana RPC,您需要一个端点 URL。OnFinality 的公共 Solana 端点是 https://solana.api.onfinality.io/public。对于 WebSocket 订阅,请使用 wss://solana.api.onfinality.io/public-ws。

以下是一个使用 curl 获取最新区块哈希的基本示例:

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

在 JavaScript 中,您可以使用 @solana/web3.js 库:

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

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

async function getBalance(address) {
  const balance = await connection.getBalance(address);
  console.log(`Balance: ${balance / 1e9} SOL`);
}

对于 WebSocket 订阅,请使用 wss 端点:

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

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

connection.onAccountChange(account, (accountInfo) => {
  console.log('Account changed:', accountInfo);
});

选择 Solana RPC 提供商时应评估什么

在比较 Solana 的 RPC 提供商时,请考虑以下因素:

  • 吞吐量和速率限制:您每秒可以发送多少请求?公共端点通常将您限制为每秒几个请求,这对于生产环境来说太低了。
  • WebSocket 支持:实时订阅需要 WebSocket 端点。检查提供商是否提供稳定的 WebSocket 连接。
  • 存档数据:如果您需要历史状态,请寻找提供存档节点的提供商。
  • 地理分布:对于时间敏感的应用程序,低延迟很重要。具有全球边缘节点的提供商可以减少往返时间。
  • 正常运行时间和可靠性:寻找具有高可用性记录的提供商,但要警惕绝对保证。

OnFinality 的 RPC 定价 页面概述了这些选项,您可以在 网络页面 上查看支持的网络的完整列表。

使用 Solana RPC 时的常见陷阱

  • 速率限制:公共端点通常在您超过限制时返回 429 错误。使用指数退避实现重试逻辑。
  • 交易确认:Solana 使用 confirmed 或 finalized 提交级别。对于大多数用例,使用 confirmed,但要了解权衡。
  • WebSocket 断开:WebSocket 连接可能会断开。实现重连逻辑以维护订阅。
  • 区块哈希过期:交易必须引用最近的区块哈希。在发送每笔交易之前获取新的区块哈希。

调试 Solana RPC 调用

当 RPC 调用失败时,检查错误代码和消息。常见错误包括:

  • -32000 – 服务器错误,通常是由于参数无效。
  • -32001 – 资源耗尽,例如速率限制。
  • -32002 – 不支持的方法。

使用 getHealth 方法检查节点是否健康:

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

如果您收到 ok 响应,则节点健康。如果没有,请尝试其他端点或联系您的提供商。

何时使用专用 Solana 节点

专用节点为您提供对 RPC 服务器的独占访问。这在以下情况下很有用:

  • 您有超过共享限制的高吞吐量需求。
  • 您需要自定义配置,例如启用特定功能。
  • 您希望避免可能影响性能的嘈杂邻居。

OnFinality 为 Solana 提供 专用节点。您可以在几分钟内配置一个节点并获得专用端点。

关键要点

  • Solana RPC 是与 Solana 区块链交互的标准方式。
  • 公共端点适合开发,但生产应用需要可靠的托管基础设施。
  • 根据吞吐量、WebSocket 支持、存档数据和地理覆盖范围评估提供商。
  • OnFinality 提供共享和专用 Solana RPC 选项,并提供用于测试的公共端点。

常见问题解答

公共和专用 Solana RPC 端点有什么区别?

公共端点在许多用户之间共享,并且通常有速率限制。专用端点是专门为您的项目配置的,提供更高的性能和可靠性。

我可以免费使用 Solana RPC 吗?

是的,您可以免费使用公共端点,但由于速率限制和潜在的停机时间,它们不适合生产工作负载。

如何获取 Solana RPC 端点?

您可以使用公共端点,例如 https://solana.api.onfinality.io/public,或注册托管提供商以获得专用端点。

最好的 Solana RPC 提供商是什么?

最好的提供商取决于您的需求。比较吞吐量、WebSocket 支持和定价等因素。OnFinality 为共享和专用节点提供有竞争力的选项。

如何监控 Solana RPC 性能?

使用 Prometheus 等工具跟踪请求延迟和错误率。您也可以使用 Solana 的 getHealth 方法检查节点状态。

我可以将 WebSocket 与 Solana RPC 一起使用吗?

是的,Solana 支持 WebSocket 进行实时订阅。使用您的 RPC 提供商提供的 wss 端点。

Solana Devnet 和 Mainnet RPC 有什么区别?

Devnet 是一个测试网络,提供免费的 SOL 用于开发。Mainnet 是生产网络,拥有真实资产。使用 Solana Devnet 进行测试,使用 Mainnet 进行生产。

如何在共享和专用 Solana 节点之间选择?

如果您的应用程序流量适中,共享节点更具成本效益。如果您需要高吞吐量或自定义配置,专用节点更好。

常见的 Solana RPC 错误代码有哪些?

常见错误包括 -32000(参数无效)、-32001(资源耗尽)和 -32002(不支持的方法)。有关完整列表,请参阅 Solana 的文档。

如何开始使用 Solana RPC?

从公共端点和简单的 curl 请求开始。然后,将 @solana/web3.js 库集成到您的应用程序中。对于生产环境,请考虑像 OnFinality 这样的托管提供商。

RPC 知识库

相关 RPC 内容

网络 RPCOptimism

Optimism Nodes: Public, Managed, or Self-Hosted?

Optimism nodes are the software clients that let you read and write data on OP Mainnet, the leading Ethereum Layer 2. You can run your own node for fu...

网络 RPCSui

如何运行 Sui GraphQL 内省查询?

Sui 在其 gRPC 和 JSON-RPC 接口之外还提供了一个 GraphQL 端点,内省功能让你可以在运行时发现 schema,而无需猜测字段名称。本教程展示如何发送内省查询、读取响应,并利用 schema 构建针对 Sui 数据的有效查询。它还涵盖了何时内省是合适的工具,以及何时专用节点或托...

测试网 RPCSui

Sui 测试网 RPC 与 gRPC:端点、水龙头与开发者配置

Sui 测试网 RPC 为开发者提供了以 gRPC 为先的途径来查询检查点、对象和余额;模拟和执行交易;并使用 OnFinality 托管端点流式传输实时活动。现代工作流使用 LedgerService 获取检查点数据,使用 StateService 读取对象和余额,使用 TransactionEx...

RPC 提供商选择Efinity

你能比较一下 Solana RPC 的专用节点和共享节点访问吗?

共享 Solana RPC 将许多用户集中到公共端点后面,因此你可以快速设置且成本低廉,但会在吞吐量、速率限制和 WebSocket 插槽方面产生竞争。专用 Solana 节点为你的工作负载提供专属资源、可预测的容量,以及支持归档、追踪和订阅密集型模式的空间。本文详细分析了权衡取舍、推动你选择某种模...

网络 RPCEfinity

什么是 Gnosis 节点,如何连接 Gnosis RPC?

Gnosis 节点是验证并为 Gnosis 链提供数据的客户端,Gnosis 链是一个专注于稳定币支付的 EVM 兼容网络。大多数开发者不需要运行节点:托管的 RPC 端点提供了可靠的链访问,无需同步和维护基础设施的开销。本文解释了 Gnosis 节点的功能、如何连接 Gnosis RPC,以及如何...

测试网 RPCArbitrum

Sepolia Ethereum RPC:端点设置、水龙头和调试

Sepolia 是以太坊主要的应用开发测试网,连接它需要一个与其链 ID(11155111)匹配并支持你的工具调用的方法的 JSON-RPC 端点。本参考涵盖了确切的网络设置、如何获取测试 ETH,以及如何调试最常见的 Sepolia 连接和交易失败。 它还解释了何时公共 Sepolia 端点就足够...

永远不用担心基础设施

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

开始