摘要
Arbitrum One 是主网链(链 ID 42161)。当开发者说“Arbitrum One 测试网”时,通常指的是 Arbitrum Sepolia(链 ID 421614),它使用 Sepolia ETH 作为 gas。本页解释了链设置、如何将网络添加到钱包、如何请求测试网 ETH,以及如何调试测试网端点配置错误时出现的错误。它还涵盖了何时共享公共端点就足够,以及何时专用节点或托管 RPC API 更适合 CI 管道、索引器和暂存环境。
如果你搜索了“Arbitrum One 测试网 RPC”,首先要澄清的是命名。Arbitrum One 是主网链(链 ID 42161)。没有名为“Arbitrum One 测试网”的独立测试网。开发者几乎总是指的是 Arbitrum Sepolia(链 ID 421614),它运行在 Sepolia ETH 上,并紧密镜像 Arbitrum Nitro 执行环境,足以进行合约测试、钱包流程和 CI。
本页为你提供端点、确切的链设置、钱包配置片段、水龙头步骤,以及当测试网端点配置错误时出现的错误的调试路径。它还帮助你决定共享公共端点是否足够,或者你的工作流是否需要托管 RPC API 或专用节点。
哪个端点适合你的工作流?
在复制端点之前,将其与你实际在做的事情匹配。测试网流量模式与主网非常不同:CI 运行期间的突发、长时间空闲,以及索引器偶尔进行的大量 eth_getLogs 扫描。
| 你的工作流 | 你需要什么 | 合理的起点 |
|---|---|---|
| 在钱包或 Remix 中手动测试 | 可访问的 HTTPS 端点,无认证摩擦 | 公共共享端点 |
| 使用 Hardhat/Foundry 进行本地开发 | 稳定的端点,可预测的速率行为 | 托管 RPC API 密钥 |
| 运行合约测试的 CI 管道 | 并发余量,无共享限流 | 托管 RPC API 或专用节点 |
| 索引器或子图式日志扫描 | 宽泛的 eth_getLogs 范围,归档访问 | 具有归档数据的专用节点 |
| 模拟生产环境的暂存环境 | 与生产相同的提供商和传输 | 与主网相同的托管/专用设置 |
如果你只是验证合约部署,共享公共端点就足够了。如果你的测试套件发出数十个并行请求,或者你扫描大区块范围内的日志,从一开始就计划托管或专用设置,这样你就不会在调试速率限制而不是代码。
Arbitrum Sepolia 链设置一览
这些是你粘贴到钱包、框架配置或 .env 文件中的值。在团队中保持一致,以避免“错误网络”的混淆。
| 设置 | 值 |
|---|---|
| 网络名称 | Arbitrum Sepolia |
| 链 ID | 421614 |
| 货币符号 | ETH (Sepolia ETH) |
| 区块浏览器 | https://sepolia.arbiscan.io |
| RPC (HTTPS) | https://arbitrum-sepolia.api.onfinality.io/public |
| 传输 | HTTP(托管/专用计划提供 WebSocket) |
作为比较,Arbitrum One 主网使用链 ID 42161 和浏览器 https://arbiscan.io。混淆这两者是测试期间“交易失败”混淆的最常见来源。
将网络添加到钱包
大多数钱包接受自定义网络。在 MetaMask 中,你可以手动添加,或者通过 dapp 使用 wallet_addEthereumChain 触发提示:
await window.ethereum.request({
method: "wallet_addEthereumChain",
params: [{
chainId: "0x66eee", // 421614 in hex
chainName: "Arbitrum Sepolia",
nativeCurrency: { name: "Sepolia Ether", symbol: "ETH", decimals: 18 },
rpcUrls: ["https://arbitrum-sepolia.api.onfinality.io/public"],
blockExplorerUrls: ["https://sepolia.arbiscan.io"]
}]
});
注意 chainId 必须是十六进制编码的。十进制的 421614 是 0x66eee。如果你传递十进制字符串,一些钱包会静默拒绝请求。
使用 curl 和 viem 验证端点
在将任何内容接入应用之前,确认端点响应并报告你期望的链。
curl -s https://arbitrum-sepolia.api.onfinality.io/public \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"eth_chainId","params":[]}'
正确的响应返回 "result":"0x66eee"。如果你得到不同的链 ID,说明你指向了错误的网络。快速区块号检查确认节点已同步:
import { createPublicClient, http } from "viem";
import { arbitrumSepolia } from "viem/chains";
const client = createPublicClient({
chain: arbitrumSepolia,
transport: http("https://arbitrum-sepolia.api.onfinality.io/public")
});
const block = await client.getBlockNumber();
console.log("Arbitrum Sepolia head:", block);
如果 eth_chainId 工作但 getBlockNumber 停滞,节点可能落后或请求被限流。这种区别对下面的调试部分很重要。
从水龙头获取测试网 ETH
Arbitrum Sepolia 的 gas 以 Sepolia ETH 支付。你不能将主网 ETH 桥接到测试网,所以你需要水龙头。典型选项:
- 从 Arbitrum 开发者文档链接的 Arbitrum Sepolia 水龙头。
- Alchemy 和其他基础设施水龙头,为 Arbitrum Sepolia 分发 Sepolia ETH。
- 如果你已经持有一些,将 Sepolia ETH 从 Ethereum Sepolia 桥接到 Arbitrum Sepolia。
水龙头通常要求最低主网余额或社交登录以防止滥用,并且它们分发少量。如果水龙头说你的地址不符合条件,几乎总是反滥用规则,而不是你的 RPC 端点的问题。
调试你实际会遇到的错误
大多数“测试网 RPC”问题是配置错误,而不是节点故障。按顺序处理这些。
| 症状 | 可能原因 | 修复 |
|---|---|---|
chainId 不匹配 / 错误网络提示 | 钱包设置为 Arbitrum One (42161) 而不是 Sepolia (421614) | 使用链 ID 421614 重新添加网络 |
insufficient funds for gas | 测试钱包中没有 Sepolia ETH | 从水龙头请求 |
nonce too low 或待处理交易卡住 | 交易被丢弃后重用 nonce | 在钱包中重置账户或发送替换交易 |
负载下 429 或超时 | 共享端点限流 | 迁移到托管 RPC API 密钥或专用节点 |
eth_getLogs 返回范围错误 | 区块范围对端点来说太宽 | 缩小范围或使用支持归档的专用节点 |
| 合约调用仅在测试网上回滚 | 部署地址或状态不同 | 重新检查 Sepolia 的地址和构造函数参数 |
一个有用的习惯是记录你的应用在启动时解析的链 ID。许多“测试网错误”实际上是应用因为环境变量未被覆盖而悄悄与主网通信。
当共享端点不够时
公共端点很方便,但它们是共享的。在测试网上,对于单个开发者来说通常没问题。当以下情况出现时,它就成了问题:
- 你的 CI 运行许多并行测试作业并触及速率限制。
- 索引器扫描大范围的日志并需要归档数据。
- 你想要用于事件驱动测试的 WebSocket 订阅。
- 你需要在暂存和生产中使用相同的提供商,以便行为匹配。
此时,带有 API 密钥的托管 RPC API,或你控制的专用节点,消除了共享限流变量。OnFinality 提供两者:跨支持的网络的托管 RPC API 服务,以及当你需要隔离容量、归档数据或 WebSocket 传输时的专用节点。对于测试网工作,升级的实际原因是可重现性:你希望测试失败反映你的代码,而不是别人的流量。
测试网与主网:实际差异
了解哪些从 Arbitrum Sepolia 延续到 Arbitrum One,哪些不延续,会有所帮助。
- 执行环境: 基于 Nitro,因此 EVM 行为和大多数操作码与主网紧密匹配。
- Gas: Sepolia ETH,不是真实 ETH。Gas 价格通常较低,不太能代表主网条件。
- 状态: 完全独立。合约必须重新部署;地址会不同。
- 预言机和桥: 存在测试网版本,但可能有限流或不同的喂价。
- 排序器行为: 类似,但不要假设主网的延迟或吞吐量特征。
因为 gas 便宜且状态可丢弃,测试网是在将相同代码指向主网之前解决 nonce 处理、事件订阅和日志扫描逻辑的正确场所。
关键要点
- “Arbitrum One 测试网”几乎总是指 Arbitrum Sepolia,链 ID
421614。 - Arbitrum One 本身是主网,链 ID
42161——不要将测试代码指向它。 - 公共 HTTPS 端点是
https://arbitrum-sepolia.api.onfinality.io/public;使用前用eth_chainId验证。 - 你需要从水龙头获取 Sepolia ETH;你不能将主网 ETH 桥接到测试网。
- 大多数错误是配置问题(错误的链 ID、没有 gas、重用 nonce),而不是节点故障。
- 当 CI 并发、日志扫描或 WebSocket 需求超出共享端点时,迁移到托管 RPC API 或专用节点。
常见问题
Arbitrum One 是测试网吗?
不。Arbitrum One 是主网链(链 ID 42161)。测试网是 Arbitrum Sepolia(链 ID 421614)。
Arbitrum Sepolia RPC URL 是什么?
公共 HTTPS 端点是 https://arbitrum-sepolia.api.onfinality.io/public。对于类似生产的测试设置,使用托管或专用端点。
Arbitrum 测试网应该使用什么链 ID?
421614,十六进制为 0x66eee。
如何获取测试网 ETH? 使用 Arbitrum Sepolia 水龙头,或者如果你已经持有一些,从 Ethereum Sepolia 桥接 Sepolia ETH。主网 ETH 不能桥接到测试网。
为什么我的交易因资金不足而失败? 你的钱包没有 Sepolia ETH。从水龙头请求并重试。
我可以在测试网上使用 WebSockets 吗? WebSocket 传输在托管和专用计划上可用。查看 Arbitrum 网络页面 和 RPC 定价 了解当前选项。
测试网和主网应该使用相同的提供商吗? 这是一个好习惯。匹配提供商和传输可以减少暂存环境因与代码无关的原因而与生产行为不同的机会。