摘要
公共 Sepolia RPC 端点是一个共享的、无需注册的 HTTPS URL,允许你在以太坊 Sepolia 测试网上读取状态和广播交易。这是将钱包、脚本或 CI 任务指向 Sepolia 的最快方式,但共享容量和共享速率限制使其不适合任何需要可预测吞吐量的场景。本文为你提供链设置、一个可用的 OnFinality 公共端点,并清晰说明何时应切换到托管或专用端点。
Sepolia 是以太坊长期运行的权益证明测试网,而“公共 RPC 端点”是大多数开发者在想要连接它而无需注册任何东西时搜索的短语。这是一个合理的起点:公共端点是一个共享的 HTTPS URL,使用 JSON-RPC 协议,足以将网络添加到钱包、运行快速脚本或解除 CI 任务的阻塞。
问题在于,公共端点被所有找到它的人共享。它们适合探索和轻量测试,但一旦你需要一致的吞吐量、归档数据或 trace 调用,它们就会成为瓶颈。本页面为你提供确切的 Sepolia 链设置、一个可用的公共端点,以及一个简短的框架,帮助你决定何时迁移到托管或专用基础设施。
链设置一览
在将任何内容粘贴到钱包或配置文件之前,请确保这些值正确。大多数“Sepolia RPC 不工作”的报告都归结为链 ID 不匹配或 URL 指向了不同的测试网。
| 设置 | 以太坊 Sepolia 值 |
|---|---|
| 网络名称 | Ethereum Sepolia |
| 链 ID | 11155111 |
| 货币符号 | ETH (Sepolia Ether) |
| 小数位 | 18 |
| 区块浏览器 | https://sepolia.etherscan.io |
| 公共 RPC (OnFinality) | https://eth-sepolia.api.onfinality.io/public |
如果你在 L2 测试网上工作,值会有所不同。Base Sepolia 使用链 ID 84532,Arbitrum Sepolia 使用链 ID 421614。混淆这些是导致交易失败的常见原因,看起来像 RPC 问题,但实际上是网络错误。
公共端点是否足以满足你的工作负载?
在投入时间进行配置之前,请将此作为快速分类。问题不在于公共端点是否有效,而在于它是否适合你即将用它做的事情。
| 你的情况 | 公共端点通常足够 | 迁移到托管或专用 |
|---|---|---|
| 将 Sepolia 添加到钱包 | 是 | 不需要 |
| 一次性脚本和手动测试 | 是 | 不需要 |
| 每次推送都部署合约的 CI 任务 | 有时 | 是,如果任务并行运行 |
| 有真实测试者的前端 dApp | 有风险 | 是,为了稳定的吞吐量 |
| 跨多个区块索引日志 | 否 | 是,需要归档访问 |
| 使用 trace_* 调用进行调试 | 否 | 是,需要启用 trace 的节点 |
| 负载或压力测试 | 否 | 是,需要专用容量 |
一个有用的规则:如果多个进程同时依赖同一个端点,或者一个失败的请求会破坏用户可见的流程,那么你已经超出了公共层级。OnFinality 运行共享和专用的 Sepolia 基础设施,你可以在 Sepolia 网络页面 和 RPC 定价 上比较选项。
使用 curl 和 JSON-RPC 连接
最快的健全性检查是原始 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:
{"jsonrpc":"2.0","id":1,"result":"0xaa36a7"}
0xaa36a7 十进制为 11155111,即以太坊 Sepolia。如果你得到不同的值,说明你指向了错误的网络。如果你得到超时或 429,说明端点可达但被限速,这是考虑托管计划的信号。
另外两个调用值得保留在你的工具包中。eth_blockNumber 告诉你节点是否已同步并跟随链头。使用已知地址的 eth_getBalance 确认状态读取端到端正常工作。
钱包和库配置
在 MetaMask 等浏览器钱包中,手动添加网络并输入上表中的链设置。RPC URL 字段填入公共端点,链 ID 必须是十进制值 11155111。要求十六进制链 ID 的钱包需要 0xaa36a7。
在 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)
使用 ethers v6:
import { JsonRpcProvider } from 'ethers'
const provider = new JsonRpcProvider(
'https://eth-sepolia.api.onfinality.io/public',
{ chainId: 11155111, name: 'sepolia' }
)
console.log(await provider.getBlockNumber())
显式传递链 ID 值得多写一行。它使网络错误大声失败,而不是静默地将交易发送到错误的链。
从水龙头获取测试 ETH
Sepolia ETH 没有市场价值,但你仍然需要它来支付 gas。水龙头与 RPC 端点分开,大多数水龙头通过登录、主网余额检查或工作量证明挑战来限制访问以防止滥用。
一些实用说明:
- 水龙头滴水量很小,并且按地址限速。不要期望通过一次请求为大型测试套件提供资金。
- 如果水龙头拒绝你的地址,通常是因为该地址已经持有超过水龙头阈值的余额。
- 水龙头的可用性会随时间变化。如果一个不可用,尝试另一个,而不是假设你的 RPC 端点坏了。
- 保留一个小额储备地址用于 gas,这样你就不必在测试中途重新请求资金。
常见故障模式及如何解读
大多数 Sepolia RPC 问题属于少数几类。错误文本通常会告诉你属于哪一类。
| 症状 | 可能原因 | 如何处理 |
|---|---|---|
429 Too Many Requests | 共享端点速率限制 | 降低请求速率、批量调用或迁移到托管计划 |
chainId 不匹配 | 网络错误或链 ID 错误 | 重新检查 11155111 和 RPC URL |
nonce too low | 交易失败后 nonce 过时 | 使用 pending 通过 eth_getTransactionCount 重新同步 nonce |
insufficient funds | 测试钱包为空 | 从水龙头请求测试 ETH |
method not found | 该节点未启用该方法 | 检查该方法是否需要 trace 或归档节点 |
| 负载下请求超时 | 共享容量饱和 | 添加备用端点或迁移到专用容量 |
如果你在调试特定交易,eth_getTransactionReceipt 返回 null 通常意味着交易仍在待处理或从未广播,而不是端点坏了。在假设基础设施问题之前,检查内存池状态。
公共端点不再足够的地方
公共端点是共享资源,共享资源有共享的故障模式。在测试网工作中反复出现三种模式:
并行 CI。 在每个拉取请求上运行的合约部署任务可能在同一秒内触发数十笔交易。在共享端点上,其中一些请求会被限流,任务会以难以在本地复现的方式间歇性失败。
日志密集型索引。 在大区块范围上调用 eth_getLogs 开销很大。公共端点通常会限制范围或直接拒绝查询。如果你的测试设置模仿生产索引器,你需要归档访问和更高的范围限制。
Trace 和调试调用。 debug_traceTransaction 和 trace_* 方法在大多数公共端点上未启用,因为它们计算量大。如果你的测试依赖它们,你需要一个为此配置的节点。
当你遇到其中任何一种情况时,解决办法不是更好的公共 URL。而是具有定义容量的托管端点,或你控制的专用节点。OnFinality 提供两者,如何选择 RPC 提供商 文章更详细地介绍了评估标准。
从公共端点迁移到托管或专用
迁移本身通常是配置更改,而不是重写。工作在于选择正确的层级并设置备用。
- 清点你的方法。 列出你的应用调用的每个 JSON-RPC 方法。标记
eth_getLogs、debug_*和trace_*调用,因为这些决定了你需要的节点类型。 - 测量峰值,而不是平均值。 测试网流量是突发性的。按你预期的最高分钟来规划规模,而不是日均值。
- 决定共享还是专用。 共享托管端点适合大多数 dApp。当你需要隔离容量、自定义配置或负载下可预测的性能时,专用节点才有意义。参见 专用节点 了解涉及的内容。
- 添加备用。 即使使用托管端点,也配置第二个 URL,这样单个提供商问题不会导致测试环境瘫痪。
- 保留公共端点用于冒烟测试。 没有理由删除它。用它进行快速检查,将托管端点用于任何重要的事情。
如果你也在 L2 上测试,同样的模式适用于 Base Sepolia,它使用链 ID 84532 和不同的公共 URL。将测试网配置放在一个地方,链 ID 和端点并排,可以防止大多数跨网络错误。
关键要点
- 以太坊 Sepolia 使用链 ID 11155111,符号 ETH,浏览器 sepolia.etherscan.io。
- 公共 Sepolia RPC 端点适合钱包、一次性脚本和手动测试。
- 公共端点是共享且限速的,因此并行 CI、日志索引和 trace 调用会遇到限制。
- 始终在客户端中显式传递链 ID,以便网络错误大声失败。
- 水龙头与 RPC 端点分开,并且按地址限速。
- 当你超出公共层级时,迁移到托管或专用端点,并保持配置备用。
- 在承诺计划之前,浏览 支持的 RPC 网络 并比较 RPC 定价。
常见问题
Sepolia 的公共 RPC 端点是什么?
OnFinality 在 https://eth-sepolia.api.onfinality.io/public 发布了一个公共端点。它通过 HTTPS 使用标准 JSON-RPC,无需 API 密钥。它是共享的,因此将其视为适合开发和轻量测试,而不是生产规模的流量。
Sepolia 的链 ID 是什么?
以太坊 Sepolia 使用链 ID 11155111,十六进制为 0xaa36a7。Base Sepolia 使用 84532,Arbitrum Sepolia 使用 421614。始终确认链 ID 与你打算使用的网络匹配。
公共端点支持 WebSocket 订阅吗?
传输支持因网络和端点而异。如果你的应用依赖 eth_subscribe 获取新块头或日志,请查看网络页面了解可用的传输方式,或使用托管或专用端点,其中 WebSocket 支持是计划的一部分。
为什么在公共 Sepolia 端点上收到 429 错误?
429 意味着你超过了共享速率限制。降低请求速率,尽可能批量调用,如果限制持续阻碍你,考虑托管计划。这是容量信号,不是代码中的错误。
我可以将公共 Sepolia 端点用于 CI 管道吗?
对于低容量、顺序任务,它可以工作。对于每次推送都部署合约的并行任务,共享速率限制会导致间歇性失败。具有定义容量的托管端点是更可靠的选择。
Sepolia 测试需要归档节点吗?
仅当你查询历史状态或宽日志范围时需要。大多数测试工作流不需要归档访问,但索引器风格的测试和回填脚本需要。在假设标准节点足够之前,检查方法要求。