摘要
PublicNode Sepolia 是一个免费的、共享的 RPC 端点,用于以太坊 Sepolia 测试网。它适用于快速脚本、钱包设置和低流量测试,但共享公共端点并非为 CI 流水线、负载测试或任何需要稳定吞吐量的场景而设计。本文解释了该端点的定义、如何连接,以及何时迁移到托管或专用的 Sepolia RPC。
PublicNode Sepolia 是一个免费的、共享的 JSON-RPC 端点,用于以太坊 Sepolia 测试网。开发人员通常在设置钱包、编写 Hardhat 或 Foundry 脚本,或寻找一个无需注册即可粘贴到配置文件中的 Sepolia RPC URL 时发现它。它确实能胜任这些场景。但在你决定长期使用之前,值得回答的问题是:共享公共端点是否适合你的测试工作流。
本页介绍了该端点的定义、如何连接、所需的链设置,以及共享公共端点何时开始消耗你更多时间而非节省时间。如果你已经确定需要托管或专用的 Sepolia 端点,可以直接跳到 OnFinality 上的 Sepolia RPC 或在 RPC 定价 上比较方案。
PublicNode Sepolia 是否适合你的工作负载?
在公共端点之上构建任何东西之前,请使用此快速分类。
| 你的情况 | 公共端点通常没问题 | 迁移到托管或专用端点 |
|---|---|---|
| 钱包设置和手动测试 | 是 | 不需要 |
| 一次性脚本和快速合约调用 | 是 | 不需要 |
| 每次提交都运行的 CI 流水线 | 有风险 | 推荐 |
| 负载或压力测试 | 否 | 必需 |
| 索引或回填历史日志 | 否 | 必需 |
| 演示和黑客松原型 | 是 | 可选 |
| 任何面向用户的内容,即使在测试网上 | 有风险 | 推荐 |
模式很简单:当人类等待单个响应时,共享公共端点没问题。当机器按照你无法控制的计划发送大量请求时,它们就会变得不舒服。
PublicNode Sepolia 究竟是什么
PublicNode 是一组免费的、面向社区的 RPC 端点,适用于一系列 EVM 链,包括以太坊主网和 Sepolia。Sepolia 端点通过 HTTP 使用标准以太坊 JSON-RPC,因此任何支持 HTTP RPC URL 的客户端都可以与之通信:ethers、viem、web3.js、Hardhat、Foundry、MetaMask 等。
有几个属性对规划很重要:
- 它是共享的。你是众多访问同一基础设施的调用者之一。
- 它是未认证的。没有 API 密钥,这对于快速测试很方便,但对于任何需要归属或速率管理的场景则很尴尬。
- 它是尽力而为的。没有支持合同、没有 SLA,也没有升级问题的渠道。
- 它面向 HTTP。如果你的工作流依赖 WebSocket 订阅或大量
eth_getLogs查询,请在依赖它之前验证支持情况。
这些都不会使它变坏。它只是针对特定工作的特定工具。
Sepolia 链设置一览
如果你正在配置钱包或框架,这些是你需要的以太坊 Sepolia 值。无论你指向哪个 Sepolia RPC 提供商,它们都是相同的。
| 设置 | 值 |
|---|---|
| 网络名称 | Ethereum Sepolia |
| 链 ID | 11155111 |
| 货币符号 | ETH |
| 小数位数 | 18 |
| 区块浏览器 | https://sepolia.etherscan.io |
| RPC URL | 你选择的 Sepolia 端点 |
链 ID 是人们最常出错的字段。Sepolia 是 11155111,不是 1(以太坊主网),也不是 5(已弃用的 Goerli 测试网)。如果钱包或脚本行为异常,请先检查链 ID。
使用 curl、ethers 和钱包连接
从最简单的检查开始。原始 JSON-RPC 调用会告诉你端点是否可达以及它服务于哪条链。
curl -s https://eth-sepolia.api.onfinality.io/public \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"eth_chainId","params":[]}'
响应应该是一个十六进制链 ID。对于 Sepolia,它是 0xaa36a7,十进制为 11155111。如果你得到不同的值,说明你指向了错误的网络。
在 JavaScript 中使用 viem,同样的检查如下所示:
import { createPublicClient, http } from "viem";
import { sepolia } from "viem/chains";
const client = createPublicClient({
chain: sepolia,
transport: http("https://eth-sepolia.api.onfinality.io/public"),
});
const blockNumber = await client.getBlockNumber();
console.log("Sepolia head:", blockNumber);
对于钱包,使用上面的链设置添加自定义网络,并将你的 Sepolia RPC URL 粘贴到 RPC 字段中。MetaMask 和大多数 EVM 钱包接受相同的五个字段。
如果你想要一个无需管理自己的节点即可指向的 Sepolia 端点,OnFinality 在 https://eth-sepolia.api.onfinality.io/public 公开了一个公共 Sepolia RPC。对于开发和测试来说,这是一个合理的默认值。对于更重的负载,请参阅 OnFinality 上的 Sepolia RPC。
共享公共端点开始带来问题的地方
公共端点很少会大声失败。它们以看起来像你自己代码中的错误的方式降级。以下症状是开发人员最常误判的。
| 症状 | 可能原因 | 该怎么办 |
|---|---|---|
| 请求间歇性超时 | 负载下共享容量不足 | 添加重试,然后迁移到托管端点 |
429 或“请求过多” | 共享端点上的速率限制 | 降低并发或切换提供商 |
eth_getLogs 返回错误或不完整数据 | 查询范围或结果大小限制 | 缩小区块范围,或使用为日志查询构建的端点 |
| WebSocket 订阅断开 | 无或有限的 WS 支持 | 使用 HTTP 轮询,或使用支持 WS 的提供商 |
| Nonce 和 gas 估算看起来过时 | 节点落后于链头 | 对照区块浏览器检查 eth_blockNumber |
| 本地正常,CI 中失败 | CI 发送的请求比浏览器会话多 | 在 CI 中使用带密钥的端点 |
CI 案例是最让团队惊讶的。一个在单个开发人员笔记本电脑上运行良好的测试套件,一旦在每个拉取请求上运行,每分钟可能产生数百次调用。这正是共享公共端点无法应对的工作负载。
你依赖的 Sepolia 端点应该关注什么
如果 Sepolia 是你发布流程的一部分,而不是一次性实验,请使用与主网相同的标准评估端点。
- 传输支持。 HTTP 是基线。如果你订阅事件,WebSocket 很重要。检查提供商是否同时支持两者。
- 归档和历史数据。 如果你重放过去的状态或回填日志,你需要归档访问权限,而不仅仅是最新区块。
- 速率和并发限制。 在设计之前了解每秒请求数和突发限制。
- 密钥管理。 带密钥的端点允许你分离环境、轮换凭证并查看每个项目的使用情况。
- 可观测性。 请求指标和错误细分将“感觉慢”变成具体数字。
- 故障转移。 单个端点就是单点故障。了解它不可用时会发生什么。
- 支持路径。 在测试网上这不太重要,但当发布受阻时仍然重要。
OnFinality 在一系列网络上提供托管 RPC API 访问和专用节点基础设施,包括 Sepolia。你可以在 支持的 RPC 网络 上查看完整列表,并在 RPC 定价 上比较层级。如果你需要隔离容量而非共享访问,专用节点 是相关选项。
从公共端点迁移而不破坏你的设置
离开公共端点通常是配置更改,而不是重写。将其视为一个小型、可逆的迁移。
- 集中 RPC URL。 用单个环境变量(如
SEPOLIA_RPC_URL)替换硬编码的 URL。这是让其他一切变得简单的步骤。 - 添加回退。 配置一个主端点和一个辅助端点,这样单个提供商中断不会停止你的流水线。
- 验证链 ID。 切换后,确认
eth_chainId仍然返回0xaa36a7。 - 重新运行测试套件。 比较切换前后的通过率和时间。
- 观察错误率几天。 速率限制和超时错误应该下降;如果没有,问题可能出在你的客户端代码中。
// config.js
const RPC_URLS = [
process.env.SEPOLIA_RPC_URL,
process.env.SEPOLIA_RPC_URL_FALLBACK,
].filter(Boolean);
export function getSepoliaTransport() {
return http(RPC_URLS[0], {
retryCount: 2,
onFetchResponse: async (response) => {
if (!response.ok && RPC_URLS[1]) {
console.warn("Primary Sepolia RPC failed, consider fallback");
}
},
});
}
将端点保留在配置中而不是代码中,是价值最高的单一更改。它允许你交换提供商、添加回退,并为每个环境运行不同的端点,而无需触及应用程序逻辑。
Sepolia RPC 问题调试清单
当出现问题时,按顺序处理这些。大多数 Sepolia 问题都是这六个之一。
- 错误的链 ID。 确认
0xaa36a7。主网端点会愉快地回答你的调用并返回主网数据。 - 没有测试 ETH。 因 gas 失败的事务通常意味着余额为空。使用 Sepolia 水龙头充值。
- 过时的 nonce。 如果你发送了一个从未确认的事务,nonce 仍然被消耗。在重新发送之前检查待处理事务。
- 日志查询范围太宽。 在大区块范围上执行
eth_getLogs是共享端点上最常见的错误来源。缩小范围。 - 速率限制。
429响应意味着你发送的请求超过了端点允许的数量。添加退避并降低并发。 - 端点延迟。 将
eth_blockNumber与区块浏览器进行比较。如果端点落后,请切换或等待。
保留一个快速探测脚本是值得的:
#!/usr/bin/env bash
RPC="${SEPOLIA_RPC_URL:-https://eth-sepolia.api.onfinality.io/public}"
echo "chainId: $(curl -s $RPC -H 'Content-Type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"eth_chainId","params":[]}')"
echo "blockNumber: $(curl -s $RPC -H 'Content-Type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}')"
对你正在考虑的每个端点运行它。只需几秒钟,就能告诉你端点是否存活并位于正确的链上。
关键要点
- PublicNode Sepolia 是一个免费的、共享的 JSON-RPC 端点,用于以太坊 Sepolia 测试网,适合手动测试和轻量脚本。
- Sepolia 链 ID 是
11155111(0xaa36a7);弄错这是最常见的配置错误。 - 共享公共端点在 CI、负载测试和宽日志查询下会降级,而不是干净地失败。
- 将 RPC URL 保留在配置中,而不是代码中,以便添加回退和交换提供商。
- 对于需要稳定吞吐量、归档数据、WebSocket 支持或可观测性的工作负载,请使用托管或专用的 Sepolia 端点,例如 OnFinality 上的 Sepolia RPC。
常见问题
PublicNode Sepolia 免费吗? 是的,它是一个免费的公共端点。免费访问通常伴随着共享容量和尽力而为的可用性,而不是支持承诺。
Sepolia 链 ID 是什么?
11155111,十六进制为 0xaa36a7。在钱包和框架配置中使用它。
我可以在 CI 中使用 PublicNode Sepolia 吗? 可以,但 CI 产生的请求远多于交互式使用。如果你的流水线在每次提交时运行,带密钥的托管端点通常更可靠。
PublicNode Sepolia 支持 WebSocket 吗? 支持情况各不相同,并且可能变化。如果你的应用程序依赖订阅,请在构建之前验证 WebSocket 可用性,或使用记录 WS 支持的提供商。
如何获取 Sepolia ETH? 使用 Sepolia 水龙头。水龙头有自己的资格规则和速率限制,因此在请求之前检查当前要求。
何时应该切换到托管的 Sepolia RPC? 当 Sepolia 成为可重复工作流的一部分时:CI、自动化测试、索引,或任何有多个开发人员依赖它的场景。此时,速率限制、可观测性和故障转移开始比免费访问更重要。
后续步骤
如果你还在实验,公共 Sepolia 端点是一个不错的起点。如果 Sepolia 现在是你团队发布方式的一部分,请查看 OnFinality 上的 Sepolia RPC,检查 RPC 定价,如果你还需要主网或其他测试网,请浏览 支持的 RPC 网络。有关评估提供商的更广泛框架,请阅读 如何选择 RPC 提供商。