摘要
Arbitrum RPC 端点允许钱包和 dApp 在 Arbitrum One、Arbitrum Nova 和 Arbitrum Sepolia 上读写数据。本指南涵盖官方公共端点、链设置、如何使用 curl 或 ethers 连接,以及如何为生产环境选择可靠的提供商。
快速参考:Arbitrum RPC 端点和链设置
如果你只需要端点和链详细信息来配置钱包或开始编码,这里是简略版本。官方公共 RPC 端点有速率限制且不支持 WebSocket,因此适合原型开发,但不适合生产流量。
| 网络 | RPC URL | 链 ID | 浏览器 |
|---|---|---|---|
| Arbitrum One | https://arb1.arbitrum.io/rpc | 42161 | Arbiscan |
| Arbitrum Nova | https://nova.arbitrum.io/rpc | 42170 | Nova Explorer |
| Arbitrum Sepolia (测试网) | https://sepolia-rollup.arbitrum.io/rpc | 421614 | Sepolia Arbiscan |
对于生产应用,你通常会使用托管 RPC 提供商,它们提供更高的速率限制、WebSocket 支持和归档数据。OnFinality 提供 Arbitrum 的 RPC 端点 以及其他网络,并提供随使用量扩展的 定价。
如何使用 curl 连接 Arbitrum
Arbitrum 兼容 EVM,因此你可以使用标准的 JSON-RPC 方法。以下是一个快速的 curl 示例,用于获取最新区块号:
curl https://arb1.arbitrum.io/rpc \
-X POST \
-H "Content-Type: application/json" \
--data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
你应该会得到类似以下的响应:
{"jsonrpc":"2.0","id":1,"result":"0x1d4c4b"}
结果是一个十六进制编码的区块号。将其转换为十进制即可得到当前区块高度。
使用 ethers.js 或 viem 与 Arbitrum 交互
大多数开发者使用 ethers.js 或 viem 等库。以下是使用 ethers v6 的示例:
import { ethers } from "ethers";
const provider = new ethers.JsonRpcProvider("https://arb1.arbitrum.io/rpc");
const blockNumber = await provider.getBlockNumber();
console.log(blockNumber);
使用 viem,你可以创建公共客户端:
import { createPublicClient, http } from "viem";
import { arbitrum } from "viem/chains";
const client = createPublicClient({
chain: arbitrum,
transport: http("https://arb1.arbitrum.io/rpc"),
});
const blockNumber = await client.getBlockNumber();
console.log(blockNumber);
将 Arbitrum 添加到 MetaMask 或其他钱包
如果你想手动将 Arbitrum One 添加到 MetaMask,请使用以下设置:
- 网络名称:Arbitrum One
- 新的 RPC URL:
https://arb1.arbitrum.io/rpc - 链 ID:
42161 - 货币符号:
ETH - 区块浏览器 URL:
https://arbiscan.io
对于 Arbitrum Nova,使用链 ID 42170 和浏览器 https://nova.arbiscan.io。对于 Arbitrum Sepolia,使用链 ID 421614 和浏览器 https://sepolia.arbiscan.io。
官方公共端点与托管提供商
官方公共 RPC 端点由 Arbitrum 团队运营,免费使用。然而,它们存在限制:
- 不支持 WebSocket:公共端点不支持
wss://连接。如果你的 dApp 需要实时更新,你需要一个提供 WebSocket 的提供商。 - 速率限制:公共端点是共享的,在高负载下可能会被限制。
- 无归档数据:它们仅提供最近的状态。如果你需要历史状态,你需要一个归档节点。
- 排序器端点:排序器端点 (
https://arb1-sequencer.arbitrum.io/rpc) 仅支持eth_sendRawTransaction和eth_sendRawTransactionConditional。它不是通用 RPC 端点。
对于生产环境,你应该使用托管 RPC 提供商,它们提供:
- 更高的速率限制和专用吞吐量
- 用于订阅的 WebSocket 支持
- 归档数据和跟踪方法
- 全球边缘缓存以实现低延迟
- 故障转移和冗余
OnFinality 提供 Arbitrum RPC 端点 作为其 支持的网络 的一部分,并为共享和专用节点提供灵活的 定价。
如何选择 Arbitrum RPC 提供商
在评估 Arbitrum 的 RPC 提供商时,请考虑以下标准:
| 标准 | 检查内容 | 重要性 |
|---|---|---|
| 速率限制 | 每秒请求数 (RPS) 和每日配额 | 决定你的应用能否处理峰值流量 |
| WebSocket 支持 | 提供商是否提供 wss:// 端点? | 实时数据和订阅所需 |
| 归档数据 | 提供商是否提供归档节点? | 历史查询和分析所需 |
| 跟踪方法 | 提供商是否支持 debug_traceTransaction? | 调试和索引所需 |
| 全球覆盖 | 是否在多个区域有端点? | 降低全球用户的延迟 |
| 正常运行时间 SLA | 可靠性预期是什么? | 确保生产应用的可靠性 |
| 定价模式 | 按需付费与订阅 | 影响成本可预测性 |
如需深入了解,请参阅我们的指南 如何选择 RPC 提供商。
常见陷阱和故障排除
1. 将排序器端点用于一般查询
排序器端点仅接受交易提交。如果你在其上调用 eth_call 或 eth_getBalance,将会出错。对于读取操作,请使用常规 RPC 端点。
2. 公共端点不支持 WebSocket
如果你尝试通过 wss://arb1.arbitrum.io/rpc 连接,将会失败。请使用支持 WebSocket 的提供商,或轮询 HTTP 端点。
3. 速率限制
如果你收到 429 Too Many Requests,说明你达到了速率限制。考虑升级到付费计划或使用专用节点。
4. 链 ID 不匹配
确保你的钱包或 dApp 使用正确的链 ID:Arbitrum One 为 42161,Nova 为 42170,Sepolia 为 421614。不匹配将导致交易被拒绝。
5. Gas 估算问题
Arbitrum 使用与以太坊不同的 gas 模型。使用适当的参数调用 eth_estimateGas,并注意 L1 数据费用已包含在 gas 价格中。
监控你的 Arbitrum RPC 健康状况
为确保你的 dApp 保持健康,请监控 RPC 端点的延迟和错误率。你可以使用一个简单的脚本定期检查最新区块号:
while true; do
curl -s -X POST https://arb1.arbitrum.io/rpc \
-H "Content-Type: application/json" \
--data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' \
| jq -r '.result' \
| xargs printf "Block: %d\n"
sleep 10
done
如果区块号随时间没有增加,你的端点可能已过时。考虑使用具有故障转移功能的提供商。
关键要点
- 官方 Arbitrum RPC 端点为
https://arb1.arbitrum.io/rpc(One)、https://nova.arbitrum.io/rpc(Nova) 和https://sepolia-rollup.arbitrum.io/rpc(Sepolia)。 - 公共端点有速率限制且不支持 WebSocket,因此不适合生产环境。
- 使用像 OnFinality 这样的托管提供商以获得更高的速率限制、WebSocket、归档数据和可靠性。
- 始终验证链 ID,并使用与你打算交互的网络对应的正确端点。
常见问题解答
什么是 Arbitrum RPC 端点?
Arbitrum RPC 端点是一个 URL,允许钱包和 dApp 通过 JSON-RPC 与 Arbitrum 区块链通信。主网端点是 https://arb1.arbitrum.io/rpc。
Arbitrum 支持 WebSocket 吗?
官方公共 RPC 不支持 WebSocket。你需要一个提供 WebSocket 端点的第三方提供商,例如 OnFinality。
如何获取 Arbitrum RPC URL?
你可以使用公共端点 https://arb1.arbitrum.io/rpc 进行测试,或注册托管提供商以获取具有更高限制的私有端点。
Arbitrum One 的链 ID 是什么?
Arbitrum One 的链 ID 是 42161。Arbitrum Nova 是 42170,Arbitrum Sepolia 是 421614。
我可以将排序器端点用于一般 RPC 调用吗?
不可以,排序器端点仅支持 eth_sendRawTransaction 和 eth_sendRawTransactionConditional。对于其他方法,请使用常规 RPC 端点。