摘要
Arbitrum 节点是一种客户端,用于同步 Arbitrum One 的 rollup 状态,并为 dApp、索引器和交易机器人提供 JSON-RPC 请求服务。您可以运行自己的节点、使用公共端点,或依赖像 OnFinality 这样的托管 RPC 提供商来处理生产工作负载。本指南介绍了节点类型、同步权衡以及如何选择合适的设置。
快速建议:运行、租用还是使用公共端点?
在深入了解节点内部之前,先决定您真正需要什么。如果您正在 Arbitrum 上构建生产级 dApp、索引器或交易机器人,最快的路径通常是使用托管 RPC 提供商。运行自己的节点可以完全控制,但会增加运维负担:硬件、监控、故障转移和同步维护。公共端点适合原型开发,但在持续负载下不可靠。
- 原型开发或轻量使用: 使用公共端点,如
https://arbitrum.api.onfinality.io/public,进行快速测试。 - 生产级 dApp 或后端: 使用具有 SLA、存档数据和 WebSocket 支持的托管 RPC 服务。OnFinality 提供 Arbitrum RPC,包括共享和专用选项。
- 完全控制或数据隐私: 运行自己的节点,但需规划硬件、同步时间和持续维护。
如果您正在评估提供商,请比较速率限制、存档数据、WebSocket 支持和故障转移行为。有关详细信息,请参阅我们的 RPC 定价 和 支持的网络。
什么是 Arbitrum 节点?
Arbitrum 节点是一种软件客户端,连接到 Arbitrum One 网络(以太坊 Layer 2 rollup)。它通过处理发布到以太坊的交易批次来维护 rollup 状态的副本。该节点公开 JSON-RPC API,使应用程序能够读取区块链数据并提交交易,就像以太坊节点一样。
Arbitrum 节点对于需要直接访问链上数据而无需依赖第三方 API 的开发人员至关重要。它们验证 rollup 的进度,并提供一种无需信任的方式与网络交互。
Arbitrum 节点如何工作:简短的技术概述
Arbitrum 是一种乐观 rollup:它假设交易有效,除非受到挑战。排序器收集用户交易,对它们进行排序,并将压缩批次作为 calldata 发布到以太坊。Arbitrum 节点软件读取这些批次,在兼容 EVM 的执行环境中重放它们,并更新其本地状态。
Arbitrum 节点的关键组件:
- Nitro 节点: 当前客户端,运行修改后的 Geth 执行引擎。
- 排序器馈送: 来自排序器的实时交易流,实现快速区块传播。
- 收件箱跟踪器: 监控以太坊上的批次发布,并推导出规范链。
- JSON-RPC 服务器: 提供标准以太坊方法,如
eth_call、eth_getLogs和eth_sendRawTransaction。
节点类型:全节点、存档节点和验证节点
Arbitrum 节点根据您的需求有不同的类型:
| 节点类型 | 存储的数据 | 使用场景 |
|---|---|---|
| 全节点 | 当前状态和近期历史 | 标准 dApp 查询、交易发送 |
| 存档节点 | 每个区块的完整历史状态 | 分析、深度历史查询、调试 |
| 验证节点 | 完整状态加挑战逻辑 | 参与争议解决(高级) |
对于大多数开发人员来说,全节点就足够了。如果您需要查询历史状态(例如,在旧区块上执行 eth_call),则需要存档节点。
运行自己的 Arbitrum 节点:硬件和同步
运行节点可以自主,但需要投入。以下是主要考虑因素:
硬件要求
- CPU: 建议 8 核以上
- 内存: 最低 16 GB,存档节点建议 32 GB
- 存储: 2 TB+ NVMe SSD(全节点),存档节点 4 TB+
- 带宽: 100 Mbps+ 且低延迟
同步模式
- 全同步: 下载并处理所有历史区块。可能需要数天。
- 快照同步: 从最近的快照开始,速度快得多(数小时)。
运维开销
- 监控: 您需要关注同步状态、磁盘空间和 RPC 延迟。
- 故障转移: 如果节点崩溃,您需要备份或故障转移计划。
- 更新: 保持客户端软件与网络升级同步。
如果您缺乏时间或专业知识,像 OnFinality 这样的托管提供商会为您处理所有这些。
通过 RPC 访问 Arbitrum:端点和链设置
要将您的 dApp 连接到 Arbitrum,您需要正确的网络配置。以下是 Arbitrum One 的官方设置:
- 链 ID: 42161
- 网络名称: Arbitrum One
- 原生货币: ETH(18 位小数)
- 浏览器: https://arbiscan.io
- 公共 RPC URL:
https://arbitrum.api.onfinality.io/public
对于测试网开发,请使用 Arbitrum Sepolia(链 ID 421614),端点为 https://arbitrum-sepolia.api.onfinality.io/public。
钱包配置示例
如果您要将 Arbitrum 添加到像 MetaMask 这样的钱包,可以使用以下代码片段:
await window.ethereum.request({
method: 'wallet_addEthereumChain',
params: [{
chainId: '0xA4B1', // 42161 的十六进制
chainName: 'Arbitrum One',
nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },
rpcUrls: ['https://arbitrum.api.onfinality.io/public'],
blockExplorerUrls: ['https://arbiscan.io']
}]
});
向 Arbitrum 节点发起 JSON-RPC 调用
一旦您有了端点,就可以使用标准的以太坊 JSON-RPC 与之交互。以下是一个获取最新区块号的 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}'
对于 WebSocket 订阅(例如,待处理交易),请使用您的 RPC 提供商提供的 WebSocket 端点。OnFinality 在 Arbitrum One 上支持 WebSocket。
运行或使用 Arbitrum 节点时的常见陷阱
- 低估存储需求: Arbitrum 的状态增长迅速;存档节点需要数 TB 空间。
- 忽略同步状态: 未完全同步的节点会返回过时数据。始终检查
eth_syncing。 - 在生产环境中使用公共端点: 公共端点有速率限制,并且可能宕机。对于生产环境,请使用托管提供商。
- 忘记 L1 数据: Arbitrum 节点需要访问以太坊以验证批次。如果您的节点无法访问以太坊,它将停滞。
- 未规划故障转移: 单个节点是单点故障。请使用具有冗余的提供商。
托管 RPC 与自托管:需要考虑什么
| 因素 | 自托管 | 托管 RPC(例如 OnFinality) |
|---|---|---|
| 初始成本 | 高(硬件、设置) | 低(订阅) |
| 维护 | 您自己处理 | 提供商处理 |
| 可扩展性 | 手动 | 自动 |
| 存档数据 | 您自己存储 | 按需可用 |
| 正常运行时间 | 取决于您的运维 | 提供商 SLA |
| 控制 | 完全 | 控制较少 |
对于大多数团队来说,权衡倾向于托管 RPC。您获得可靠的端点、存档访问和支持,而无需承担运维负担。
如何选择 Arbitrum RPC 提供商
如果您决定使用托管提供商,请评估以下标准:
- 可靠性: 寻找具有冗余基础设施和透明状态页面的提供商。
- 存档数据: 您是否需要历史状态?确保提供商提供存档节点。
- WebSocket 支持: 实时应用程序需要。
- 速率限制: 了解您计划的限制。
- 专用节点: 对于高吞吐量,可能需要专用节点。
OnFinality 为 Arbitrum 提供共享和 专用节点 选项。您可以从共享端点开始,随着流量增长再升级。
关键要点
- Arbitrum 节点是同步 rollup 状态并提供 JSON-RPC 的客户端。
- 对于大多数应用程序,全节点就足够了;存档节点用于历史查询。
- 运行自己的节点需要大量硬件和维护。
- 公共端点适合测试,但生产应用程序应使用托管 RPC 提供商。
- OnFinality 提供可靠的 Arbitrum RPC,支持 HTTP 和 WebSocket。
常见问题解答
Arbitrum One 和 Arbitrum Sepolia 有什么区别? Arbitrum One 是拥有真实资产的主网,而 Arbitrum Sepolia 是用于开发的测试网。它们具有不同的链 ID 和 RPC 端点。
我需要为 Arbitrum 使用存档节点吗? 仅当您需要查询特定区块的历史状态时才需要。大多数应用程序可以使用全节点。
我可以将公共 Arbitrum RPC 用于生产环境吗? 公共端点有速率限制,并且不保证可用。对于生产环境,请使用像 OnFinality 这样的托管提供商。
同步一个 Arbitrum 节点需要多长时间? 使用快照同步,可能需要几个小时。全同步可能需要数天。
OnFinality 是否支持 Arbitrum 上的 WebSocket? 是的,OnFinality 支持 Arbitrum One 上的 WebSocket。有关详细信息,请查看 网络页面。