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_blockNumbereth_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_getLogseth_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 10x1)。Sepolia 使用链 ID 111551110xaa36a7)。设置错误是导致“错误网络”错误的常见原因。

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

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

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

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

如何从公共 RPC 切换到 OnFinality?

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

RPC 知识库

相关 RPC 内容

测试网 RPCSolana

如何选择 Solana 开发网 RPC 端点?

# 如何选择 Solana 开发网 RPC 端点? Solana 开发网 RPC 很重要,因为 Solana 开发网应用依赖稳定的端点访问来进行读取、交易、仪表盘和后端工作流。合适的提供商应匹配你的工作负载,支持你所需的网络和测试网,使限制透明化,并在共享 RPC 不再足够时提供扩展路径。 对于准备...

网络 RPCArbitrum

什么是 Arbitrum 节点,你应该如何运行或访问它们?

Arbitrum 节点是维护 Arbitrum 链(如 Arbitrum One 和 Arbitrum Sepolia)状态的软件客户端。你可以运行自己的全节点或归档节点来独立验证链,或者使用托管的 RPC 提供商来访问,而无需操作基础设施。本指南解释了节点类型、运营权衡,以及如何决定是自托管还是使...

网络 RPCPolkadot

Polkadot 节点:开发者运行与连接网络指南

本指南涵盖开发者需要了解的关于 Polkadot 节点的所有内容:节点类型、如何运行自己的节点、如何通过 RPC 端点连接,以及如何选择自托管节点与提供商托管节点。无论您是在构建 dApp、钱包还是基础设施工具,您都将学习到可靠地与 Polkadot 网络交互的实用步骤。...

网络 RPCMonad

什么是 peaq 主网,如何连接?

peaq 主网是面向 DePIN(去中心化物理基础设施网络)经济的生产级 Layer 1 区块链,旨在支持现实世界的设备和机器工作负载。本文解释了 peaq 主网是什么、其主要功能,以及如何使用 RPC 端点、链设置和实际示例连接您的应用程序。...

网络 RPCEfinity

什么是 Starknet 节点,如何运行或连接一个?

Starknet 节点是一种软件,它与 Starknet 网络同步,验证状态转换,并为 dApp 和索引器提供 JSON-RPC 请求服务。运行全节点可以让您直接访问和控制,但需要大量的硬件、存储和维护。对于大多数生产工作负载,像 OnFinality 这样的托管 RPC 服务可以提供可靠的端点,而...

区块链基础设施

什么是专用 Web3 服务器,何时应该使用它们?

专用 Web3 服务器是用于运行区块链节点、验证器、索引器和 dApp 后端的单租户物理机。与共享云实例相比,它们提供可预测的性能和完全控制。本文解释了裸机、云虚拟机和托管节点服务之间的权衡,并帮助您决定哪种方法适合您的工作负载。...

永远不用担心基础设施

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

开始