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

Solana 公共 RPC 端点:您应该使用哪一个?

摘要

Solana 公共 RPC 端点允许您查询网络,而无需运行自己的验证器。本文比较了默认公共端点与 OnFinality 等托管选项,解释了速率限制和可靠性权衡,并展示了如何通过 HTTP 和 WebSocket 连接以用于生产应用程序。

Solana 是最快的区块链之一,但其性能取决于您使用的 RPC 端点。如果您正在构建 dApp、交易机器人或索引器,您选择的公共端点会影响延迟、可靠性以及您可以发送的请求数量。

本文解释了什么是 Solana 公共 RPC 端点,比较了默认端点与托管选项,并帮助您决定哪个适合您的工作负载。

快速建议:何时使用哪个端点

如果您正在原型设计或运行低流量脚本,默认公共端点(api.mainnet-beta.solana.com)就足够了。它是免费的,无需设置。

但如果您的应用程序已投入生产、处理用户流量或需要一致的性能,您应该使用像 OnFinality 这样的托管 RPC 提供商。公共端点是共享的,并且通常受到速率限制,这可能导致在高使用率期间出现节流或停机。

以下是一个简单的决策指南:

  • 学习或测试:使用默认公共端点。
  • 构建生产 dApp:使用具有服务级别协议和更高吞吐量的托管端点。
  • 需要 WebSocket 订阅:确保提供商支持 wss:// 并提供可靠的发布/订阅。
  • 高请求量:考虑使用专用节点以避免共享速率限制。

对于生产环境,我们建议从 OnFinality 的 Solana 端点开始,该端点专为可靠性和可扩展性而设计。

什么是 Solana 公共 RPC 端点?

公共 RPC 端点是一个 URL,允许您向 Solana 网络发送 JSON-RPC 请求。它充当您的应用程序与区块链之间的网关,允许您读取账户数据、提交交易以及订阅事件。

Solana 的官方公共端点是 https://api.mainnet-beta.solana.com。它由 Solana 基金会运营,并且免费使用。但是,它由许多开发人员共享,因此具有速率限制,并且在拥塞期间可能会变慢。

存在其他公共端点,但它们通常具有类似的限制。例如,一些社区运行的端点可能提供更高的限制,但没有保证。

托管 RPC 提供商(例如 OnFinality)提供的公共端点更加可靠和可扩展。它们通常提供更高的速率限制、多个区域和更好的正常运行时间。

Solana 公共 RPC 端点比较

下表将默认公共端点与托管选项进行了比较。请注意,确切的限制和性能会有所不同,因此请将其视为一般指南。

端点类型速率限制可靠性最适合
https://api.mainnet-beta.solana.com官方公共低(共享)可变原型设计、低流量
OnFinality 公共端点托管公共更高,可配置生产应用程序、中等流量
OnFinality 专用节点专用自定义,无共享限制非常高高吞吐量、生产应用程序

OnFinality 的公共端点是 https://solana.api.onfinality.io/public(HTTP)和 wss://solana.api.onfinality.io/public-ws(WebSocket)。这些端点由全球基础设施支持,可平衡负载并提供故障转移。

如何连接到 Solana 公共 RPC 端点

连接到 Solana RPC 端点很简单。您可以使用 curl 进行快速测试,或使用像 @solana/web3.js 这样的 JavaScript 库来构建应用程序。

使用 curl

要检查当前 slot(最新区块高度),请发送 JSON-RPC 请求:

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

您应该会收到类似以下的响应:

{"jsonrpc":"2.0","result":123456789,"id":1}

使用 @solana/web3.js

安装库并设置连接:

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

// 使用公共端点
const endpoint = 'https://solana.api.onfinality.io/public';
const connection = new Connection(endpoint, 'confirmed');

async function getSlot() {
  const slot = await connection.getSlot();
  console.log('当前 slot:', slot);
}

getSlot();

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

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

速率限制和可靠性:预期情况

公共 RPC 端点是共享资源。Solana 基金会的端点具有速率限制,每个 IP 每秒可能低至 40 个请求,但这些限制没有官方文档记录,并且可能会发生变化。在网络拥塞期间,您可能会遇到节流或超时。

像 OnFinality 这样的托管提供商提供更慷慨的限制和更好的可靠性。它们使用负载平衡和多个节点来分配流量,从而降低单点故障的风险。

如果您的应用程序需要一致的性能,请考虑使用专用节点。使用专用节点,您可以独占访问基础设施,从而消除共享速率限制并提供可预测的性能。

WebSocket 支持和实时数据

Solana dApp 通常需要实时更新,例如账户更改或新交易。WebSocket 订阅允许您无需轮询即可接收这些更新。

OnFinality 的公共端点支持 WebSocket,地址为 wss://solana.api.onfinality.io/public-ws。您可以订阅账户更改、程序日志和 slot 更新。

使用 @solana/web3.js 的订阅示例:

const subscriptionId = connection.onAccountChange(
  publicKey,
  (accountInfo) => {
    console.log('账户已更改:', accountInfo);
  },
  'confirmed'
);

使用公共端点时,请注意 WebSocket 连接可能受到限制或不稳定。托管提供商通常提供更强大的 WebSocket 基础设施。

公共端点的常见陷阱

即使使用良好的端点,您也可能会遇到问题。以下是一些常见陷阱以及如何避免它们:

  • 速率限制:公共端点会限制请求。使用缓存和批处理来减少调用次数。
  • 超时:长时间运行的查询(如 getProgramAccounts)可能会超时。使用分页或在链上过滤。
  • 过时数据:确保您使用正确的提交级别(processedconfirmedfinalized)。
  • WebSocket 断开:公共 WebSocket 端点可能会断开连接。实现重新连接逻辑。

如果您经常遇到问题,可能是时候切换到托管提供商了。

何时从公共 RPC 迁移到托管 RPC

如果您的应用程序正在增长,您最终将超出公共端点的能力。迹象包括:

  • 频繁的 429 错误(超出速率限制)
  • 高峰时段的高延迟
  • 停机或连接重置
  • 需要归档数据或高级方法

像 OnFinality 这样的托管提供商提供:

  • 更高的速率限制和可配置的计划
  • 全球基础设施,低延迟
  • 专用节点,实现最大性能
  • 支持,用于生产问题

查看 RPC 定价 以了解适合您需求的计划。

关键要点

  • Solana 公共 RPC 端点是免费的,但共享,导致速率限制和可靠性问题。
  • 对于生产应用程序,请使用像 OnFinality 这样的托管提供商以获得更好的性能和支持。
  • OnFinality 提供 HTTP 和 WebSocket 端点:https://solana.api.onfinality.io/publicwss://solana.api.onfinality.io/public-ws
  • WebSocket 订阅对于实时 dApp 至关重要;确保您的提供商支持它们。
  • 监控您的使用情况,如果您需要一致的吞吐量,请切换到专用节点。

常见问题解答

默认的 Solana 公共 RPC 端点是什么?

默认公共端点是 https://api.mainnet-beta.solana.com,由 Solana 基金会运营。它是免费的,但有速率限制。

Solana 公共 RPC 端点对生产环境可靠吗?

由于速率限制和潜在的停机,通常不建议将公共端点用于生产环境。托管提供商提供更高的可靠性。

如何获取 Solana 公共 RPC 端点?

您可以使用默认端点,或注册像 OnFinality 这样的托管提供商以获取专用的公共端点。

HTTP 和 WebSocket RPC 有什么区别?

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

我可以免费使用 OnFinality 的 Solana 公共端点吗?

OnFinality 为公共端点提供免费层。查看 RPC 定价 了解详情。

如何在公共和专用 RPC 之间选择?

如果您需要高吞吐量和一致的性能,请选择专用节点。对于中等流量,托管公共端点可能就足够了。

有关更多信息,请访问 Solana 网络页面 并探索 支持的 RPC 网络

RPC 知识库

相关 RPC 内容

RPC 提供商选择

Which RPC providers offer enhanced APIs specifically tailored for NFT data?

Several RPC providers now offer enhanced APIs that simplify NFT data access—including metadata, ownership, transfers, and spam filtering—without requi...

RPC 提供商选择

什么是面向 dapp 的私有 RPC 端点,何时应该使用它们?

私有 RPC 端点是带有 API 密钥的唯一 URL,为你的 dapp 提供一条进入节点提供商基础设施的专属认证通道。与所有用户共享的公共端点不同,私有端点提供专用的速率限制、更好的可靠性和可观测性。本指南解释了公共端点、私有端点和专用端点之间的区别,并帮助你决定你的 dapp 需要哪一种。...

区块链基础设施Solana

Solana 索引器:你需要什么样的基础设施?

构建 Solana 索引器需要在基于 Geyser 插件的 DIY 管道和抽象化流与存储的托管服务之间做出选择。本文比较了自托管与基于提供商的方法,包括 RPC 轮询、Yellowstone gRPC、Webhook 和数据仓库集成。在选择技术栈之前,评估数据新鲜度、吞吐量和运营开销。...

网络 RPCSonic

关于 Sonic RPC 端点,我需要了解什么?

# 关于 Sonic RPC 端点,我需要了解什么? Sonic RPC 端点之所以重要,是因为 Web3 应用程序依赖稳定的端点访问来进行读取、交易、仪表盘和后端工作流。正确的设置应匹配你的工作负载,支持你所需的网络和测试网,使限制可见,并在共享 RPC 不再足够时为你提供扩展路径。 对于 Son...

网络 RPCSORA

关于SORA网络RPC端点,我需要了解什么?

SORA是一个基于Substrate的区块链货币系统,为数字货币提供去中心化框架。在SORA上构建的开发者需要可靠的RPC端点来读取链上数据、提交交易以及与Polkaswap DEX交互。本指南涵盖主网和Taira测试网的链设置、公共和专用RPC选项、水龙头详情以及常见调试技巧。...

网络 RPCHyperliquidHyperEVM

选择 HyperEVM RPC 提供商时应注意什么?

# 选择 HyperEVM RPC 提供商时应注意什么? HyperEVM RPC 提供商之所以重要,是因为 Web3 应用依赖稳定的端点访问来进行读取、交易、仪表盘和后端工作流。正确的设置应匹配你的工作负载,支持你所需的网络和测试网,使限制可见,并在共享 RPC 不再足够时提供扩展路径。 对于 H...

永远不用担心基础设施

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

开始