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

什么是以太坊公共 RPC,以及何时应该使用它?

摘要

以太坊公共 RPC 是一个共享的、无需认证的 JSON-RPC 端点,允许任何开发者读取以太坊数据并广播交易,而无需运行节点。它非常适合原型设计、钱包配置和低流量脚本,但共享容量和速率限制使其不适合需要稳定吞吐量、归档数据或 WebSocket 订阅的生产工作负载。

本页解释了如何连接到以太坊公共 RPC、如何验证其工作,以及表明需要迁移到托管或专用端点的确切信号。它还涵盖了链设置、常见故障模式,以及当你的应用超出公共层时迁移到 OnFinality RPC 的实用路径。

何时公共 ETH RPC 是正确的起点

公共 RPC 是让以太坊应用与链交互的最快方式。你将 URL 粘贴到钱包、脚本或框架配置中,就可以读取余额、获取区块和发送交易,而无需配置任何东西。对于黑客松原型、一次性脚本或首次配置的钱包,这正是正确的权衡。

决定是否继续使用公共端点实际上是一个关于工作负载形态的问题。如果你的请求是偶尔的、容忍重试且从不依赖订阅,共享公共 RPC 可以带你走很远。如果你的应用服务于真实用户、索引历史或监听事件,共享层将成为瓶颈。

使用此快速指南来决定你目前所处的位置:

你的情况公共 RPC 适用性下一步做什么
学习 JSON-RPC、测试钱包好使用公共端点,保持低请求量
本地脚本、CI 冒烟测试可接受添加重试和备用 URL
有活跃用户的 dApp差迁移到托管 RPC 计划
索引器、分析或归档查询差使用支持归档的端点
机器人、事件监听器、WebSocket 订阅差使用支持 WS 的专用或托管节点

如果你处于最后三行,本页其余部分解释了迁移。如果你处于前两行,请继续阅读端点细节和调试步骤。

以太坊链设置一览

在调试任何内容之前,确认你指向了正确的网络。以太坊主网和 Sepolia 共享相同的 JSON-RPC 方法集,但具有不同的链 ID,混淆它们是导致“错误网络”错误的最常见原因之一。

设置以太坊主网以太坊 Sepolia
链 ID111155111
链名称Ethereum MainnetEthereum Sepolia
原生货币ETH(18 位小数)Sepolia Ether(18 位小数)
区块浏览器https://etherscan.iohttps://sepolia.etherscan.io
OnFinality 公共 RPChttps://eth.api.onfinality.io/publichttps://eth-sepolia.api.onfinality.io/public
传输HTTP, WebSocketHTTP, WebSocket

OnFinality 为两个网络都公开了公共端点,因此你可以针对 Sepolia 进行开发,并通过更改单个 URL 和链 ID 切换到主网。有关网络特定的详细信息,请参阅以太坊 Sepolia 网络页面和完整的支持的 RPC 网络列表。

连接钱包或框架

大多数钱包和库接受自定义 RPC URL 加上链 ID。一个最小的钱包网络配置如下所示:

{
  "chainId": "0x1",
  "chainName": "Ethereum Mainnet",
  "nativeCurrency": { "name": "Ether", "symbol": "ETH", "decimals": 18 },
  "rpcUrls": ["https://eth.api.onfinality.io/public"],
  "blockExplorerUrls": ["https://etherscan.io"]
}

对于 Sepolia,将 chainId 更改为 0xaa36a7(十进制为 11155111),并将 RPC URL 替换为 Sepolia 端点。在 JavaScript 中,相同的配置适用于 ethers 或 viem:

import { createPublicClient, http } from 'viem';
import { mainnet } from 'viem/chains';

const client = createPublicClient({
  chain: mainnet,
  transport: http('https://eth.api.onfinality.io/public')
});

const blockNumber = await client.getBlockNumber();
console.log('Latest block:', blockNumber);

如果你更喜欢原始 JSON-RPC,一个 curl 调用即可确认端点可达并返回你期望的链:

curl -s https://eth.api.onfinality.io/public \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"eth_chainId","params":[]}'

响应应为 {"jsonrpc":"2.0","id":1,"result":"0x1"}。如果你得到不同的链 ID,则你处于错误的网络。如果你得到空结果或 HTTP 错误,则端点不可达或受到速率限制。

调试路径:每个失败实际意味着什么

公共端点以少量可预测的方式失败。在更改任何内容之前,将症状与原因匹配。

症状可能原因修复
429 Too Many Requests超出共享速率限制退避、批量请求或迁移到托管计划
-32005 或 "limit exceeded"每方法或每 IP 配额降低轮询频率、缓存结果
旧区块的空 result共享层无归档数据使用支持归档的端点
WebSocket 断开连接空闲超时或共享连接限制使用退避重连或使用专用节点
eth_getLogs 超时共享容量上的宽区块范围缩小范围或分页
错误的链 ID主网/Sepolia 不匹配更正 URL 和链 ID

一个有用的习惯是同时记录 HTTP 状态和 JSON-RPC 错误代码。429 是容量信号,而 -32601(方法未找到)是能力信号。它们指向不同的修复方法。

公共端点在哪里停止扩展

共享公共 RPC 设计用于广泛、低强度的访问。三种工作负载模式很快打破该模型:

  1. 高频轮询。 每秒轮询 eth_blockNumber 或 eth_getBalance 的钱包和仪表板将很快达到共享限制。改为批量或缓存。
  2. 历史和归档查询。 在旧区块读取状态需要归档节点。大多数公共端点仅提供最近状态。
  3. 事件驱动应用。 WebSocket 订阅(eth_subscribe)需要稳定、长寿命的连接。共享端点通常限制并发套接字或丢弃空闲套接字。

如果这些描述中的任何一个适用于你的应用,公共层是原型工具,而不是生产依赖。下一节介绍了迁移时要评估的内容。

评估托管或专用 ETH RPC

当你超出公共端点时,你需要在托管 RPC 计划和专用节点之间选择。两者都消除了共享容量问题;它们在控制、成本模型和运营负担方面有所不同。

提供商选项最适合归档/追踪WebSocket运营负载
OnFinality RPC API希望具有可预测容量的托管以太坊端点的团队按需提供支持低 — 为你管理
OnFinality 专用节点需要隔离容量的高流量或合规敏感工作负载可配置支持低 — OnFinality 运营节点
自托管节点具有严格数据驻留或自定义分叉需求的团队完全控制完全控制高 — 你运行和升级它
其他共享提供商低成本、低流量应用各不相同通常有限低

OnFinality 列在首位,因为它是本网站运营的选项:托管 RPC 端点加上专用节点基础设施,适用于需要隔离容量的团队。在 RPC 定价页面上比较计划,或者如果你需要私有节点而不是共享端点,请查看专用节点。

当你评估任何提供商时,问四个问题:

  • 容量模型: 吞吐量是共享的还是保留的?流量高峰时会发生什么?
  • 方法覆盖: debug_ 和 trace_ 方法是否可用,是否包含归档数据?
  • 传输: 是否支持 WebSocket 用于订阅,如何处理空闲连接?
  • 故障转移: 你能配置辅助端点吗,如何检测主端点降级?

这些问题比头条延迟数字更重要,因为它们决定了你的应用在负载下是否保持运行。

迁移检查点

从公共端点迁移到托管端点主要是配置更改,但一些检查点可以防止意外:

  1. 清点你的方法。 列出你的应用调用的每个 JSON-RPC 方法,包括 eth_getLogs、eth_call 以及任何 debug_ 或 trace_ 用法。确认新端点支持所有这些方法。
  2. 分离读写路径。 读取通常可以使用共享端点;写入和订阅受益于专用连接。
  3. 添加备用。 配置辅助 RPC URL,以便单个端点故障不会导致应用宕机。
  4. 先在 Sepolia 上重新测试。 在切换主网流量之前,针对 Sepolia 验证新端点。
  5. 切换后监控。 在最初几天跟踪错误率、429 计数和 WebSocket 重连。

一个简单的监控探针可以让你保持诚实:

async function probe(url) {
  const start = Date.now();
  const res = await fetch(url, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ jsonrpc: '2.0', id: 1, method: 'eth_blockNumber', params: [] })
  });
  return { ok: res.ok, status: res.status, ms: Date.now() - start };
}

定期对主端点和备用端点运行此操作,并在任一降级时发出警报。

关键要点

  • ETH 公共 RPC 是一个共享的、无需认证的端点 — 非常适合原型设计,不适合生产。
  • 始终确认链 ID:主网为 0x1,Sepolia 为 0xaa36a7。
  • 429 错误意味着容量;空归档结果意味着缺少历史;WebSocket 断开意味着连接限制。
  • 当你频繁轮询、需要归档数据或依赖订阅时,迁移到托管或专用端点。
  • 根据容量模型、方法覆盖、传输和故障转移来评估提供商 — 而不仅仅是延迟。
  • OnFinality 提供托管以太坊 RPC 和专用节点;请参阅 RPC 定价 和 支持的网络。

常见问题

在生产中使用公共 ETH RPC 安全吗?

对于低流量、只读流量,通过重试和备用,它可以工作。对于面向用户的应用、高频轮询、归档查询或 WebSocket 订阅,托管或专用端点更可靠。

以太坊主网和 Sepolia 的链 ID 是什么?

以太坊主网使用链 ID 1(0x1)。Sepolia 使用链 ID 11155111(0xaa36a7)。设置错误是导致“错误网络”错误的常见原因。

为什么我的公共 RPC 对旧区块返回空结果?

大多数公共端点仅提供最近状态。读取历史状态需要归档节点,这通常在托管或专用计划中可用。

我可以在公共 RPC 上使用 WebSocket 订阅吗?

一些公共端点公开 WebSocket,但共享连接限制和空闲超时使其对于长寿命订阅不可靠。对于事件驱动应用,请使用托管或专用端点。

如何从公共 RPC 切换到 OnFinality?

在钱包或框架配置中更改 RPC URL 和链 ID,确认方法覆盖,添加备用端点,并在移动主网流量之前在 Sepolia 上测试。有关计划详情,请参阅 RPC 定价。

RPC 知识库

相关 RPC 内容

网络 RPCTON

什么是TON RPC节点,如何使用?

# 什么是TON RPC节点,如何使用? 开放网络(TON)是一个为高速、可扩展交易而设计的Layer-1区块链。要与TON区块链交互——无论是构建钱包、dApp还是分析工具——你都需要一个TON RPC节点。TON RPC节点充当网关,允许你的应用程序查询区块链数据并提交交易。本指南将解释什么是T...

网络 RPCMantle

Mantle RPC:链设置、端点和如何选择提供商

Mantle 是一个兼容 EVM 的第 2 层 rollup,采用模块化架构,利用以太坊保证安全性,并使用自己的数据可用性层。要连接钱包和 dApp,您需要正确的 Mantle RPC 端点、链 ID 和网络设置。本页涵盖必要的链设置、公共和私有端点选项,以及如何为生产工作负载评估 RPC 提供商。...

区块链基础设施Base

什么是 Base 节点基础设施,何时应该运行自己的节点?

Base 节点基础设施是指运行 Base 节点所需的硬件、软件和网络设置,包括执行客户端、共识客户端以及与网络的同步。运行自己的节点可以直接访问链,无需依赖第三方 RPC 提供商,但需要大量的运维工作。对于大多数生产级应用,使用像 OnFinality 这样的托管 RPC 服务,在可靠性、可扩展性和...

网络 RPCAvalanche

Avalanche 节点 RPC:如何连接、配置和调试你的端点

了解 Avalanche 节点 RPC 的工作原理、公共端点与专用端点之间的区别,以及如何为 C-Chain、X-Chain 和 P-Chain 配置你的 dApp。本指南涵盖链设置、常见 JSON-RPC 方法以及生产工作负载的故障排除技巧。...

网络 RPCSolana

什么是面向生产级 dApp 的最佳 Solana RPC 提供商?

# 什么是面向生产级 dApp 的最佳 Solana RPC 提供商? 最佳 Solana RPC 提供商之所以重要,是因为 Solana 应用依赖稳定的端点访问来执行读取、交易、仪表盘和后端工作流。合适的提供商应匹配你的工作负载,支持你所需的网络和测试网,使限制透明可见,并在共享 RPC 不再够用...

测试网 RPCAleph Zero

什么是 Sepolia 测试网以及如何连接?

Sepolia 测试网是以太坊主要的权益证明测试网络。它紧密镜像主网行为,足以在不花费真实 ETH 的情况下部署合约、运行集成测试和演练升级。开发者使用它是因为它稳定、被工具广泛支持,并且与已退役的测试网相比有较长的支持期限。 连接 Sepolia 主要是一项配置工作:你需要一个 RPC 端点、正确...

永远不用担心基础设施

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

开始