摘要
Arbitrum One 和 Arbitrum Sepolia 的公共 RPC 端点让开发者无需运行节点即可连接钱包和 dApp。本文涵盖官方端点、链设置,以及如何评估公共与托管 RPC 提供商以用于生产工作负载。
快速推荐:你应该使用哪个 Arbitrum RPC?
如果你正在构建原型或钱包,官方 Arbitrum 公共 RPC(https://arb1.arbitrum.io/rpc)是一个不错的起点。然而,对于生产 dApp,你应该评估提供更高速率限制、WebSocket 支持和专用基础设施的托管 RPC 提供商。OnFinality 在 https://arbitrum.api.onfinality.io/public 提供公共 Arbitrum 端点,并为需要一致性能的团队提供专用节点选项。查看 Arbitrum 网络页面 了解当前详情,以及 RPC 定价 页面进行计划比较。
Arbitrum 公共 RPC 端点一览
Arbitrum 运行多个链,每个链都有自己的公共 RPC 端点。下表总结了官方端点和链 ID。
| 网络 | RPC URL | 链 ID | 浏览器 |
|---|---|---|---|
| Arbitrum One | https://arb1.arbitrum.io/rpc | 42161 | Arbiscan |
| Arbitrum Nova | https://nova.arbitrum.io/rpc | 42170 | Blockscout |
| Arbitrum Sepolia | https://sepolia-rollup.arbitrum.io/rpc | 421614 | Sepolia Arbiscan |
注意:官方 Arbitrum 公共 RPC 不支持 WebSocket 连接。如需 WebSocket 支持,你需要第三方提供商。
钱包配置的链设置
当将 Arbitrum 添加到钱包或配置 dApp 时,你需要正确的链参数。以下是 Arbitrum One 和 Arbitrum Sepolia 的设置。
Arbitrum One
- 网络名称: Arbitrum One
- RPC URL:
https://arbitrum.api.onfinality.io/public(或官方https://arb1.arbitrum.io/rpc) - 链 ID: 42161
- 货币符号: ETH
- 区块浏览器:
https://arbiscan.io
Arbitrum Sepolia(测试网)
- 网络名称: Arbitrum Sepolia
- RPC URL:
https://arbitrum-sepolia.api.onfinality.io/public(或官方https://sepolia-rollup.arbitrum.io/rpc) - 链 ID: 421614
- 货币符号: ETH
- 区块浏览器:
https://sepolia.arbiscan.io
如何将 Arbitrum 添加到 MetaMask
要手动将 Arbitrum One 添加到 MetaMask:
- 打开 MetaMask,点击顶部的网络选择器。
- 点击 添加网络。
- 输入以下详细信息:
- 网络名称: Arbitrum One
- 新的 RPC URL:
https://arbitrum.api.onfinality.io/public - 链 ID:
42161 - 货币符号:
ETH - 区块浏览器 URL:
https://arbiscan.io
- 点击 保存。
你也可以使用 ChainList 一键添加 Arbitrum。
向 Arbitrum 发起 JSON-RPC 调用
一旦你有了端点,就可以使用标准的以太坊 JSON-RPC 方法与 Arbitrum 交互。以下是一个 curl 示例,用于获取最新区块号:
curl -X POST https://arbitrum.api.onfinality.io/public \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
预期响应:
{"jsonrpc":"2.0","id":1,"result":"0x1d8a5f2"}
使用 ethers.js 连接 Arbitrum RPC
对于 JavaScript 开发者,以下是如何使用 ethers.js 连接到 Arbitrum:
const { ethers } = require("ethers");
const provider = new ethers.JsonRpcProvider("https://arbitrum.api.onfinality.io/public");
async function getBlockNumber() {
const blockNumber = await provider.getBlockNumber();
console.log("当前区块号:", blockNumber);
}
getBlockNumber();
公共 RPC 与托管 RPC:需要考虑什么
公共 RPC 端点免费且方便,但存在可能影响生产应用的局限性。以下是比较,帮助你做出决定。
| 因素 | 公共 RPC | 托管 RPC(例如 OnFinality) |
|---|---|---|
| 速率限制 | 通常较低,共享 | 更高,可配置 |
| 可靠性 | 尽力而为 | 有 SLA 支持(请核实当前条款) |
| WebSocket 支持 | 官方端点不支持 | 通常可用 |
| 归档数据 | 通常没有 | 通常可用 |
| 专用基础设施 | 无 | 有,提供专用节点 |
| 支持 | 社区 | 专业支持 |
如需更深入地了解提供商选择,请参阅我们的 选择 RPC 提供商指南。
常见陷阱和故障排除
速率限制
公共端点经常限制请求。如果你看到 429 或 403 错误,请考虑升级到托管提供商或实现重试逻辑。
不支持 WebSocket
如果你需要实时更新,官方 Arbitrum 公共 RPC 不支持 WebSocket。请使用提供 wss:// 端点的提供商,例如 OnFinality 的专用节点。
链 ID 不匹配
确保你的钱包或 dApp 使用正确的链 ID(Arbitrum One 为 42161,Sepolia 为 421614)。不匹配会导致交易失败。
交易卡住
如果交易卡住,请检查 nonce 和 gas 价格。使用 eth_getTransactionByHash 检查交易状态。
监控和故障转移模式
对于生产应用,实现监控和故障转移到多个 RPC 端点。以下是一个简单的健康检查脚本:
curl -s -X POST https://arbitrum.api.onfinality.io/public \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' | jq .result
如果响应为空,则切换到备用端点。使用负载均衡器或支持多个提供商的库(如 ethers)。
关键要点
- Arbitrum One 和 Sepolia 有官方公共 RPC 端点,但不支持 WebSocket。
- 对于生产环境,评估像 OnFinality 这样的托管提供商以获得更高的可靠性和功能。
- 始终使用正确的链 ID 和网络设置以避免错误。
- 实现监控和故障转移以确保高可用性。
常见问题解答
Arbitrum One 的公共 RPC URL 是什么?
官方公共 RPC URL 是 https://arb1.arbitrum.io/rpc。OnFinality 还在 https://arbitrum.api.onfinality.io/public 提供公共端点。
Arbitrum 公共 RPC 支持 WebSocket 吗?
不支持,官方 Arbitrum 公共 RPC 端点不支持 WebSocket。你需要第三方提供商进行 WebSocket 连接。
Arbitrum One 的链 ID 是多少?
链 ID 是 42161。
如何获取 Arbitrum Sepolia 测试网 RPC?
官方测试网 RPC 是 https://sepolia-rollup.arbitrum.io/rpc。OnFinality 提供 https://arbitrum-sepolia.api.onfinality.io/public。
在生产环境中使用公共 RPC 安全吗?
由于速率限制和可靠性问题,不建议在生产环境中使用公共 RPC。考虑使用像 OnFinality 这样的托管提供商用于生产工作负载。
在哪里可以找到更多 Arbitrum RPC 提供商?
查看 支持的网络 页面获取网络和提供商列表,或访问 Arbitrum 文档 获取他们的官方列表。