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 使用自己的一套方法,例如 getBalancegetLatestBlockhashsendTransaction。您使用的端点决定了服务质量:公共端点是免费的,但通常有速率限制,而托管提供商提供更高的吞吐量和可靠性。

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 使用 confirmedfinalized 提交级别。对于大多数用例,使用 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 内容

网络 RPCHydraDX

什么是 HydraDX,如何通过 RPC 连接到它?

# 什么是 HydraDX,如何通过 RPC 连接到它? HydraDX(现已更名为 Hydration)是一个构建在 Polkadot 上的下一代 DeFi 协议,作为平行链运行。其旗舰产品是 Omnipool,一种创新的自动做市商(AMM),将所有资产整合到一个单一交易池中,从而实现资本高效的兑...

RPC 提供商选择Ethereum

什么是以太坊 API 服务,如何选择?

以太坊 API 服务为您的 dApp、索引器或后端提供了一种可靠的方式来读写区块链数据,而无需运行自己的节点。这些服务通过 HTTPS 和 WebSocket 暴露 JSON-RPC 端点,并通常提供诸如归档数据、跟踪方法和分析等便利功能。...

网络 RPCPolygon

Polygon区块链API:方法、SDK和最佳实践

Polygon区块链API包括用于直接节点交互的JSON-RPC端点、用于支付的REST API(如Open Money Stack)以及客户端SDK(如Matic.js和ethers.js)。选择合适的API取决于你的用例——是需要底层链访问、稳定币支付还是智能合约交互。本文涵盖了可用的API类型...

RPC 提供商选择Arbitrum

什么是Arbitrum RPC节点,如何选择合适的节点?

Arbitrum RPC节点是一个端点,让你的dApp能够读取和写入Arbitrum One、Nova或Sepolia测试网的数据。选择合适的节点提供商需要评估吞吐量限制、归档数据支持、WebSocket可用性以及故障转移模式。本文涵盖了链设置、公共与私有端点,以及一个决策清单,帮助你选择符合生产需...

网络 RPCAcala

什么是Acala Network,如何连接?

Acala Network是基于Polkadot构建的去中心化金融(DeFi)中心,提供跨链流动性、流动性质押和EVM兼容的智能合约平台。本指南涵盖Acala的架构、如何通过RPC端点连接,以及开发者在Acala上构建时的关键考量。...

RPC 提供商选择Ethereum

面向生产工作负载的领先以太坊RPC解决方案有哪些?

# 领先的以太坊RPC解决方案:开发者指南 以太坊仍然是主导的智能合约平台,每天处理超过一百万笔交易,涵盖DeFi、NFT和二层Rollup。对于生产级应用,RPC提供商的选择直接影响交易速度、可靠性和安全性。本指南根据实际工作负载的关键标准评估领先的以太坊RPC解决方案:延迟、正常运行时间、归档访...

永远不用担心基础设施

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

开始