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

免费 Solana API:你实际能获得什么,以及何时该升级

摘要

免费 Solana API 为你提供一个支持 Solana JSON-RPC 方法的 HTTP 和 WebSocket 端点,让你无需运行验证节点即可读取账户、发送交易和订阅日志。问题在于,免费套餐是共享的、有速率限制的,通常不适合生产流量或大量归档查询。

本文解释了免费 Solana API 实际能处理什么,如何用真实的 JSON-RPC 调用进行测试,以及哪些信号表明你应该转向付费共享方案或 OnFinality 的专用 Solana 节点。

免费 Solana API 是一个支持 Solana JSON-RPC 方言的 HTTP 和 WebSocket 端点,让你无需运行验证节点即可读取账户、提交交易和订阅日志。这是让钱包、脚本或原型与 Solana 主网通信的最快方式。代价是免费端点共享、有速率限制,通常不适合生产流量、归档查询或高频 WebSocket 订阅。

本页面帮助你判断免费 Solana API 是否足以应对当前工作负载,如何用真实的 JSON-RPC 调用验证它,以及当它无法满足需求时应该关注什么。

免费 Solana API 是否足以应对你的工作负载?

在编写更多代码之前,先将端点与任务匹配。免费套餐适合学习和轻量读取,但在持续负载、大型 getProgramAccounts 扫描或大量并发 WebSocket 客户端下会迅速崩溃。

工作负载免费 API 适用性需要注意什么
钱包或 dApp 原型通常可以演示期间偶尔出现 429
针对 devnet 的 CI 测试如果隔离则没问题并行任务间共享速率限制
读取密集型后端(余额、代币账户)勉强按 IP 和按方法限流
索引器或 getProgramAccounts 扫描超时、响应被截断
交易机器人或 WebSocket 订阅套接字断开、重连风暴
面向用户的生产 dApp不推荐无 SLA、无支持渠道

如果你的工作负载位于前两行,免费 Solana API 是合理的起点。如果位于后三行,请规划通往付费共享方案或专用 Solana 节点的路径。OnFinality 两者都提供,你可以在 Solana 网络页面RPC 定价 上比较选项。

对于 Solana JSON-RPC 来说,“免费”意味着什么

Solana 节点通过 HTTP 暴露 JSON-RPC 接口,对于订阅则通过 WebSocket。免费端点通常为你提供:

  • 用于标准方法(如 getBalancegetAccountInfogetLatestBlockhashsendTransaction)的公共 HTTP URL。
  • 用于 logsSubscribeaccountSubscribeslotSubscribe 的公共 WebSocket URL。
  • 无需 API 密钥,或易于获取的低配额密钥。

它通常不提供:

  • 有保证的吞吐量或并发性。
  • 超出有限窗口的归档或历史状态。
  • 网络拥塞时的优先访问。
  • 凌晨两点出问题时的支持渠道。

免费端点是共享基础设施。当一个用户运行重型扫描时,该端点上的所有人都会受到影响。这就是免费套餐适合学习但生产环境有风险的核心原因。

用真实调用测试免费 Solana API

在将代码提交到端点之前,先运行一些检查。首先使用 curl 对 OnFinality 公共 Solana 端点进行基本健康探测:

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

健康的节点返回 {"jsonrpc":"2.0","result":"ok","id":1}。接下来,确认你可以读取账户并获取最近的区块哈希,这是大多数交易流程所需要的:

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

如果你使用 JavaScript,同样的调用可以通过 @solana/web3.js 工作:

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

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

const slot = await connection.getSlot();
const balance = await connection.getBalance(new PublicKey("11111111111111111111111111111111"));
console.log({ slot, balance });

对于订阅,使用 WebSocket URL:

const ws = new WebSocket("wss://solana.api.onfinality.io/public-ws");

ws.onopen = () => {
  ws.send(JSON.stringify({
    jsonrpc: "2.0",
    id: 1,
    method: "logsSubscribe",
    params: [{ mentions: ["11111111111111111111111111111111"] }, { commitment: "confirmed" }]
  }));
};

ws.onmessage = (event) => console.log(event.data);

针对候选端点运行这些测试,并记录响应时间、错误率,以及并行负载下是否出现 429 响应。这些数据(而非营销文案)才能告诉你免费套餐是否合适。

链设置一览

如果你要将 Solana 接入钱包或配置文件,请确保这些值与你要定位的网络一致。OnFinality Solana 主网配置使用以下内容:

设置
链名称Solana Mainnet
原生货币SOL(9 位小数)
HTTP RPChttps://solana.api.onfinality.io/public
WebSocket RPCwss://solana.api.onfinality.io/public-ws
区块浏览器https://explorer.solana.com

对于 devnet 工作,请使用 Solana Devnet 网络页面 确认正确的端点,然后再将测试指向它。混合主网和 devnet URL 是“我的交易消失了”报告最常见的原因之一。

免费 Solana API 在哪里会出问题

免费端点会以可预测的方式失败。识别故障模式可以节省数小时的调试时间。

症状可能原因下一步
HTTP 429 响应触达共享速率限制降低并发或转向付费方案
getProgramAccounts 超时共享节点上的大型扫描使用 dataSlice 过滤或转向专用节点
WebSocket 断开空闲超时或节点重启添加重连逻辑,或使用专用端点
sendTransaction 返回“blockhash not found”滞后节点提供的过期区块哈希刷新区块哈希并重试
槽高度不一致节点落后于链尖对照第二个端点检查 getSlot
缺少历史数据免费套餐无归档访问使用支持归档的提供商

如果你在同一周内看到其中两个或更多症状,免费套餐就不再是合适的工具。这是评估付费共享方案或专用 Solana 节点的信号,而不是添加更多重试逻辑。

从免费转向生产级 Solana API

当你决定升级时,将其视为迁移而非切换。一份简短的清单可以防止你用一种问题换另一种问题。

  1. 清点你的方法。 列出你的应用调用的每个 JSON-RPC 方法,包括 WebSocket 订阅。归档和追踪方法通常需要与标准读取不同的方案。
  2. 衡量峰值,而非平均值。 免费套餐通常能承受平均负载,但在峰值时失败。按峰值并发和请求速率来规划规模。
  3. 决定共享还是专用。 共享方案适合大多数 dApp 和后端。专用 Solana 节点适合索引器、交易系统以及需要可预测吞吐量和隔离的团队。有关区别,请参阅 专用节点
  4. 规划故障转移。 在客户端中配置至少两个端点,这样单个提供商的问题不会导致应用宕机。
  5. 添加监控。 跟踪错误率、p95 延迟和 WebSocket 重连次数。对变化而非绝对值设置警报。
  6. 切换前测试。 在 staging 环境中针对新端点运行完整的方法清单,然后逐步转移生产流量。

OnFinality 提供 Solana RPC API 访问和专用节点基础设施,因此你可以从共享方案开始,随着工作负载增长转向专用节点。在提交之前,请查看 RPC 定价支持的 RPC 网络 列表以确认当前覆盖范围。

在共享和专用 Solana 访问之间选择

决策通常归结为你需要对吞吐量和隔离有多少控制权。

  • 共享 RPC 方案 对于具有中等、突发流量的 dApp、钱包和后端来说具有成本效益。你获得一个托管端点,其限制高于免费套餐,而无需运行节点。
  • 专用 Solana 节点 为你的团队提供一个不与其他客户共享的节点。它们适合索引器、做市商以及有严格延迟或数据完整性要求的团队。
  • 自托管节点 提供最大控制权,但需要硬件、监控和升级工作。许多团队从自托管开始,一旦运营成本超过节省的费用,就转向托管基础设施。

如果你不确定哪种适合,RPC 提供商选择指南 更详细地介绍了评估标准。

关键要点

  • 免费 Solana API 是通过 HTTP 和 WebSocket 提供的共享 JSON-RPC 端点,适合原型、学习和轻量读取。
  • 免费套餐有速率限制,通常缺乏归档访问、有保证的吞吐量和支持。
  • 在基于任何端点构建之前,用 getHealthgetLatestBlockhash 和 WebSocket 订阅进行测试。
  • 注意 429、getProgramAccounts 超时和 WebSocket 断开,这些是升级的信号。
  • 当峰值负载、数据完整性或隔离成为需求时,转向付费共享方案或专用 Solana 节点。
  • 保持主网和 devnet 端点分离,并始终配置故障转移。

常见问题

免费 Solana API 对生产环境安全吗?

对于大多数生产应用来说,不安全。免费端点共享且有速率限制,没有吞吐量保证或支持渠道。它们最适合原型、测试和低流量内部工具。生产应用应使用付费共享方案或专用节点。

免费 Solana API 和付费 API 有什么区别?

付费方案通常增加更高的速率限制、更好的隔离、归档或历史数据访问、拥塞时的优先级以及支持渠道。JSON-RPC 方法相同;区别在于容量、可靠性和责任。

我可以使用免费 Solana API 进行 WebSocket 订阅吗?

可以,但预计会出现断开和空闲超时。构建重连逻辑,避免将任何面向用户的内容依赖于单个免费 WebSocket。对于持续订阅,请使用付费或专用端点。

OnFinality 提供免费 Solana API 吗?

OnFinality 提供公共 Solana RPC 端点供入门使用,以及用于生产工作负载的付费共享方案和专用 Solana 节点。查看 Solana 网络页面RPC 定价 了解当前选项。

为什么 getProgramAccounts 在免费端点上失败?

这是一个昂贵的调用,会扫描许多账户。共享免费节点通常会超时或拒绝它。使用 dataSlice 和过滤器来缩小查询范围,或转向具有归档访问权限的专用节点。

在使用免费 Solana API 之前如何测试它?

发送 getHealth 请求,获取最近的区块哈希,读取一个已知账户,并打开一个简短的 WebSocket 订阅。在并行负载下测量错误率和延迟,而不仅仅是单个请求。

RPC 知识库

相关 RPC 内容

网络 RPCPolkadot

Polkadot RPC:端点、方法与提供商完全指南

# Polkadot RPC:端点、方法与提供商完全指南 Polkadot 作为一条包含多个平行链的 Layer 0 中继链,其独特架构要求对 RPC 基础设施有细致理解。与单链网络不同,Polkadot 暴露多个 RPC 端点——一个用于中继链,一个用于每个平行链(如 Asset Hub),以及可...

网络 RPCEth Sepolia

What is an Ethereum RPC endpoint and how do you choose the right one?

An Ethereum RPC endpoint is the URL your dapp, wallet, or backend uses to talk to an Ethereum node via JSON-RPC. Public endpoints are free but rate-li...

区块链基础设施TON

什么是TON节点,何时应该运行一个?

TON节点是存储The Open Network区块链完整状态、验证交易并为应用程序提供数据的软件客户端。运行自己的节点可以让你直接、不受限制地访问网络,但也需要大量的运维开销。对于大多数开发者来说,使用托管RPC端点或来自OnFinality等提供商的专用节点,是一种更快、更可靠且无需维护负担的替...

网络 RPCTON

RPC TON Network: Endpoints, Provider Comparison, and Troubleshooting

Looking for an RPC TON network endpoint? This guide compares TON RPC providers, provides step-by-step setup instructions, and highlights common pitfal...

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

网络 RPCMoonbeam

Moonbeam RPC 端点有哪些?应该使用哪个提供商?

Moonbeam 主网使用链 ID 1284 (0x504),原生代币为 GLMR。公共 RPC 端点包括 https://rpc.api.moonbeam.network、https://moonbeam.drpc.org 和 https://moonbeam.api.onfinality.io/...

永远不用担心基础设施

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

开始