摘要
Arbitrum API 是一个 JSON-RPC 接口,可让您的应用在 Arbitrum One(链 ID 42161)和 Arbitrum Sepolia(链 ID 421614)上读取状态并提交交易。您只需将 HTTP 或 WebSocket 客户端指向 Arbitrum RPC 端点,并调用标准以太坊兼容方法(如 eth_call、eth_getLogs 和 eth_sendRawTransaction)即可连接。本概览涵盖您需要的链设置、如何发出第一个请求、哪些方法对生产环境至关重要,以及如何在公共、共享和专用节点基础设施之间进行选择。
您应该首先连接哪个 Arbitrum 端点?
如果您正在 Arbitrum 上构建应用,第一个决策不是调用哪个方法,而是针对哪个端点调用它。Arbitrum 有两个您会接触的网络:Arbitrum One(主网,链 ID 42161)和 Arbitrum Sepolia(测试网,链 ID 421614)。两者都提供以太坊兼容的 JSON-RPC API,因此相同的客户端库、钱包配置和合约工具在任一网络上均可使用。
在编写任何代码之前,请使用此快速路由表:
| 您的情况 | 使用的网络 | 链 ID | 典型端点类型 |
|---|---|---|---|
| 原型开发、单元测试、CI | Arbitrum Sepolia | 421614 | 公共或共享 RPC |
| 使用真实合约部署的预发布环境 | Arbitrum Sepolia | 421614 | 共享或专用 RPC |
| 生产 dApp 或后端 | Arbitrum One | 42161 | 共享或专用 RPC |
| 索引器、分析或跨链桥中继器 | Arbitrum One | 42161 | 具有归档访问权限的专用节点 |
| 需要推送更新的钱包或机器人 | Arbitrum One | 42161 | 支持 WebSocket 的 RPC |
OnFinality 通过其 RPC API 服务 和 专用节点 选项提供 Arbitrum 端点。您可以在 Arbitrum 网络页面 查看网络详情。
Arbitrum 链设置一览
钱包以及 Hardhat、Foundry、ethers 和 viem 等框架需要相同的几个参数。请在各环境之间保持一致,以免意外将预发布构建指向主网。
| 设置 | Arbitrum One | Arbitrum Sepolia |
|---|---|---|
| 链 ID | 42161 | 421614 |
| 链名称 | Arbitrum One | Arbitrum Sepolia |
| 原生货币 | ETH(18 位小数) | ETH(18 位小数) |
| 区块浏览器 | https://arbiscan.io | https://sepolia.arbiscan.io |
| RPC 传输 | HTTP 和 WebSocket | HTTP |
| 公共 OnFinality 端点 | https://arbitrum.api.onfinality.io/public | https://arbitrum-sepolia.api.onfinality.io/public |
钱包网络配置如下所示:
await window.ethereum.request({
method: "wallet_addEthereumChain",
params: [{
chainId: "0xa4b1", // 42161 in hex
chainName: "Arbitrum One",
nativeCurrency: { name: "Ether", symbol: "ETH", decimals: 18 },
rpcUrls: ["https://arbitrum.api.onfinality.io/public"],
blockExplorerUrls: ["https://arbiscan.io"]
}]
});
对于 Sepolia,请将 chainId 替换为 0xa4ba(421614),并替换链名称、RPC URL 和浏览器 URL。公共端点便于开发,但生产流量应通过托管或专用端点,以便您控制吞吐量和可用性。
发出您的第一个 JSON-RPC 请求
Arbitrum 使用标准以太坊 JSON-RPC。最简单的健康检查是 eth_blockNumber,它确认端点可达且同步程度足以响应:
curl -s https://arbitrum.api.onfinality.io/public \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "eth_blockNumber",
"params": []
}'
响应会以十六进制返回最新区块高度。此后,您最常使用的方法包括 eth_getBalance、eth_getTransactionCount、eth_call、eth_estimateGas、eth_getLogs 和 eth_sendRawTransaction。由于 Arbitrum 与 EVM 等效,合约 ABI 和 Solidity 工具几乎无需更改即可从以太坊迁移过来。
在 JavaScript 中,使用 viem 连接 Arbitrum 端点如下所示:
import { createPublicClient, http } from "viem";
import { arbitrum } from "viem/chains";
const client = createPublicClient({
chain: arbitrum,
transport: http("https://arbitrum.api.onfinality.io/public")
});
const block = await client.getBlockNumber();
console.log("Latest Arbitrum block:", block);
如果您需要基于推送的更新而非轮询,请通过 WebSocket 连接到支持该功能的提供商,并订阅 newHeads 或 logs。Arbitrum One 在 OnFinality 上支持 WebSocket 传输;在当前网络配置中,Sepolia 仅支持 HTTP。
方法支持与 Arbitrum 特有行为
大多数以太坊 JSON-RPC 方法按预期工作,但从测试网迁移到生产环境时,有几个方面值得注意:
- 日志和过滤器。
eth_getLogs是索引器和事件驱动后端的支柱。宽区块范围和无过滤查询是超时最常见的原因。请缩小范围并按地址和主题过滤。 - Gas 估算。 Arbitrum 在以太坊之上有自己的费用模型。
eth_estimateGas仍然有效,但不要硬编码从以太坊主网复制的 gas 价格。 - 归档数据。 历史状态查询(例如旧区块的余额)需要支持归档的节点。在构建分析或会计功能之前,请与提供商确认归档访问权限。
- Trace 和 debug 方法。 Debug 和 trace API 对交易模拟和事件分析很有用,但支持情况因提供商和节点类型而异。请明确询问,不要假设。
- 批量请求。 JSON-RPC 批处理可减少仪表板和钱包的往返次数。请检查您的端点套餐是否支持。
一条实用规则:列出应用调用的所有非标准方法,然后在发布前逐一对照提供商的文档进行确认。标准方法通常安全;debug、trace 和归档查询才是意外出现的地方。
公共、共享或专用:选择 Arbitrum 节点基础设施
原型运行成功后,下一个决策是运维层面的。获取 Arbitrum 端点有三种主要方式,它们在控制力与投入之间进行权衡。
| 选项 | 您获得的内容 | 最适合 | 注意事项 |
|---|---|---|---|
| 公共 RPC | 免费的共享端点,通常有速率限制 | 快速测试、教程、一次性脚本 | 无吞吐量保证;不适合面向用户的流量 |
| 共享托管 RPC | 提供商托管的端点,带 API 密钥和使用计划 | 大多数 dApp 和后端 | 确认您套餐的速率限制、归档访问和 WebSocket 支持 |
| 专用节点 | 为您的负载配置的节点 | 索引器、高流量后端、需要隔离的团队 | 成本更高;您需要承担更多运维检查项 |
OnFinality 通过其 API 服务 提供托管 RPC,并通过 专用节点 基础设施提供专用 Arbitrum 节点。定价随您选择的选项而变化;请参阅 RPC 定价 了解当前套餐。有关评估提供商的更广泛框架,RPC 提供商选择指南 涵盖了负载规模评估、故障转移和支持预期。
Arbitrum API 生产就绪检查清单
在将真实用户流量路由到 Arbitrum 端点之前,请逐一检查以下检查点。它们能捕获发布后出现的大多数问题。
- 按环境分离密钥。 为预发布和生产使用不同的 API 密钥或端点,以免失控的测试脚本耗尽生产吞吐量。
- 添加备用端点。 在客户端配置辅助 RPC URL,以免单一提供商故障导致应用宕机。
- 设置请求超时和重试。 JSON-RPC 调用在负载下可能变慢;请用超时和带退避的有界重试进行包装。
- 监控区块延迟。 定期轮询
eth_blockNumber,如果端点落后于网络则发出警报。 - 限制
eth_getLogs范围。 将大型历史扫描分块为有界窗口并持久化进度。 - 确认归档和 trace 需求。 如果您查询旧状态或模拟交易,请验证这些方法在您的套餐中已启用。
- 测试 WebSocket 重连。 如果您订阅事件,请处理断开连接并干净地重新订阅。
您可以定期运行的简单监控探测:
#!/usr/bin/env bash
RPC="https://arbitrum.api.onfinality.io/public"
HEIGHT=$(curl -s "$RPC" -H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}' \
| sed -E 's/.*"result":"(0x[0-9a-f]+)".*/\1/')
echo "Arbitrum block height: $((HEIGHT))"
记录结果并对意外间隙发出警报。这是一个轻量级信号,不是完整的可观测性栈,但它能捕获最常见的故障模式:端点可达但已过期。
常见故障模式及调试方法
当 Arbitrum API 调用失败时,错误消息通常指向症状而非原因。使用此映射从症状推进到下一步。
| 症状 | 可能原因 | 下一步 |
|---|---|---|
429 或速率限制错误 | 共享端点配额超限 | 减少请求量、批量调用,或升级套餐/迁移到专用节点 |
eth_getLogs 超时 | 区块范围过宽 | 分块范围并按地址/主题过滤 |
eth_call 上的 execution reverted | 合约逻辑或状态缺失 | 使用确切的区块和发送者进行模拟;检查归档访问 |
nonce too low | 交易卡住或重复 | 使用 pending 查询 eth_getTransactionCount 并重新同步 |
| WebSocket 断开连接 | 空闲超时或网络中断 | 添加心跳和重连逻辑;重连后重新订阅 |
| 历史状态缺失 | 非归档节点 | 向提供商请求归档访问权限 |
从最简单的检查开始:eth_blockNumber 是否有响应?如果有,则端点正常,问题可能特定于方法、参数或配额。如果没有,则将其视为连接或提供商故障并进行故障转移。
从其他 Arbitrum 提供商迁移
切换 Arbitrum RPC 提供商通常是配置更改而非重写,因为 API 与以太坊兼容。安全迁移遵循四个步骤:
- 盘点您的方法。 列出应用调用的每个 JSON-RPC 方法,包括 debug、trace 和归档查询。
- 并行运行两个端点。 将预发布环境指向新端点,并针对相同区块和调用比较响应。
- 验证传输需求。 确认 HTTP 和 WebSocket 支持与客户端预期匹配。
- 带备用方案切换。 在新端点完整运行一个发布周期之前,将旧端点保留为辅助 URL。
由于链 ID 和链名称在各提供商之间相同,您无需更改钱包配置或合约地址。主要风险是方法支持缺口和吞吐量限制,并行运行步骤会尽早暴露这两者。
关键要点
- Arbitrum 在 Arbitrum One(链 ID
42161)和 Arbitrum Sepolia(链 ID421614)上提供以太坊兼容的 JSON-RPC API。 - 标准方法如
eth_call、eth_getLogs和eth_sendRawTransaction按预期工作;debug、trace 和归档方法需要明确确认。 - 公共端点适合原型开发,但不适合生产流量;共享托管 RPC 和专用节点可覆盖生产负载。
- OnFinality 通过其 API 服务 和 专用节点 提供 Arbitrum RPC;详情请参阅 RPC 定价 和 支持的 RPC 网络。
- 生产检查清单——分离密钥、备用端点、区块延迟监控和有界日志查询——可预防大多数发布后事件。
常见问题
Arbitrum 的链 ID 是什么?
Arbitrum One 使用链 ID 42161;Arbitrum Sepolia 使用 421614。两者均使用 ETH 作为原生货币。
Arbitrum API 与以太坊的相同吗? 它是以太坊兼容的 JSON-RPC,因此大多数方法、客户端库和工具无需更改即可使用。部分费用模型和方法支持细节有所不同,因此请与提供商确认非标准方法。
我可以在生产环境中使用公共 Arbitrum RPC 端点吗? 公共端点最适合开发和测试。对于生产环境,请使用托管或专用端点,以便控制吞吐量、可用性和方法支持。
Arbitrum 支持 WebSocket 订阅吗? Arbitrum One 在 OnFinality 上支持 WebSocket 传输;在当前网络配置中,Arbitrum Sepolia 仅支持 HTTP。在依赖订阅之前,请与提供商确认。
如何获取 Arbitrum Sepolia 的测试网 ETH? 使用 Sepolia 水龙头获取测试 ETH,然后跨链或在 Arbitrum Sepolia 上直接使用。水龙头可用性会变化,因此在依赖某个来源之前请检查当前来源。
在哪里可以找到 OnFinality 的 Arbitrum 端点详情? 请参阅 Arbitrum 网络页面 了解端点和链设置,并参阅 RPC 定价 了解套餐选项。