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)可能会超时。使用分页或在链上过滤。
  • 过时数据:确保您使用正确的提交级别(processed、confirmed 或 finalized)。
  • WebSocket 断开:公共 WebSocket 端点可能会断开连接。实现重新连接逻辑。

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

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

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

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

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

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

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

关键要点

  • Solana 公共 RPC 端点是免费的,但共享,导致速率限制和可靠性问题。
  • 对于生产应用程序,请使用像 OnFinality 这样的托管提供商以获得更好的性能和支持。
  • OnFinality 提供 HTTP 和 WebSocket 端点:https://solana.api.onfinality.io/public 和 wss://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 故障排查

区块链交易中的nonce是什么?

区块链nonce是一个用于排序交易、防止重放攻击以及在某些区块生产系统中证明工作量的数字。在以太坊等基于账户的链上,每次账户发送交易时交易nonce都会递增,这使得网络能够按预期顺序处理交易。 如果应用通过RPC端点发送大量交易,nonce处理就成为生产可靠性的组成部分。OnFinality帮助团队...

网络 RPCSORA

什么是SORA网络?

SORA是一个专注于创建去中心化货币系统的区块链网络。它使用XOR代币和链上治理,让代币持有者决定如何分配资源。该网络正在演变为基于Hyperledger Iroha 3构建的SORA Nexus,旨在为CBDC和DeFi实现快速最终性和互操作性。对于开发者来说,访问可靠的RPC端点是构建在SORA...

区块链基础设施Bittensor

2025年Bittensor TAO挖矿:子网经济、节点设置和RPC要求

2025年的Bittensor挖矿不再是一个单一网络的活动。矿工和验证者需要在各个子网内竞争,每个子网都有自己的激励机制、模型类型和注册成本,因此实际问题是哪个子网能让你盈利,以及该子网需要什么样的基础设施。本文详细介绍了关键决策:选择子网、确定硬件规模、注册热键和冷键,以及如何将你的矿工进程可靠地...

网络 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...

RPC 提供商选择Solana

如何选择Solana WebSocket基础设施提供商

Solana WebSocket基础设施支持实时账户订阅、交易监控和订单簿流。选择合适的提供商取决于你的工作负载:公共端点适合原型开发,但生产应用需要具有稳定连接和低延迟的托管或专用节点。本指南比较了提供商类型,并为你提供了实用的评估框架。...

网络 RPCBNB Chain

BNB Smart Chain RPC:端点设置、链 ID 和调试

BNB Smart Chain (BSC) 提供与 EVM 兼容的 JSON-RPC 接口,因此大多数以太坊工具在将其指向 BSC 端点并设置链 ID 56 后即可使用。本页涵盖端点格式、钱包和库配置、对 BSC 应用重要的方法,以及如何调试最可能遇到的故障。 您可以先使用公共 OnFinality...

永远不用担心基础设施

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

开始