摘要
Arbitrum 节点是维护 Arbitrum 链(如 Arbitrum One 和 Arbitrum Sepolia)状态的软件客户端。你可以运行自己的全节点或归档节点来独立验证链,或者使用托管的 RPC 提供商来访问,而无需操作基础设施。本指南解释了节点类型、运营权衡,以及如何决定是自托管还是使用像 OnFinality 这样的服务。
快速建议:自托管还是使用托管 RPC?
在深入了解节点类型和设置之前,先决定你是否需要运行 Arbitrum 节点。如果你的目标是读取链状态、提交交易或为 dApp 索引事件,像 OnFinality 这样的托管 RPC 提供商可以为你提供生产就绪的端点,而无需承担运营负担。如果你需要独立验证链、运行验证器或有严格的数据主权要求,自托管全节点可能值得付出成本。
以下是一个简单的决策路径:
- 你需要为应用提供可靠的端点 → 使用托管 RPC 提供商。你可以访问 Arbitrum One 和 Sepolia,而无需同步或维护基础设施。
- 你想自己验证交易 → 以 Watchtower 模式运行全节点。
- 你需要超出默认修剪窗口的历史状态 → 运行归档节点或使用提供归档数据的提供商。
- 你在测试网上构建 → 使用像 Arbitrum Sepolia 这样的测试网端点,以避免主网成本。
如果你选择托管提供商,请比较请求限制、归档支持、WebSocket 可用性和故障转移行为等因素。OnFinality 提供公共和专用的 Arbitrum 节点,具有透明的定价并支持许多网络。
什么是 Arbitrum 节点?
Arbitrum 节点是连接到 Arbitrum 网络、验证区块并维护链状态的软件客户端。Arbitrum 是一个在以太坊上结算的乐观汇总,因此节点必须同时跟踪 L2 链和发布到以太坊的 L1 数据。参考客户端称为 Nitro,它是一个 Go 实现,结合了 Geth 执行引擎和 Arbitrum 特定组件。
Arbitrum 节点主要有两种类型:
- 全节点:存储最新状态并验证新区块。它可以提供 RPC 请求,但默认会修剪历史状态。
- 归档节点:存储链的完整历史,允许查询任何过去的区块。归档节点需要显著更多的磁盘空间。
还有专门的角色,如排序器、批量发布者和验证器,但这些由 Arbitrum 团队和生态系统合作伙伴运行。对于大多数开发者来说,选择是在全节点和归档节点之间。
全节点与归档节点:对你的应用有什么变化?
| 节点类型 | 存储的数据 | 用例 | 磁盘空间 | 受影响的 RPC 方法 |
|---|---|---|---|---|
| 全节点 | 最新状态,近期历史(已修剪) | 标准 dApp 读取,交易提交 | 约 1 TB | eth_getBalance、eth_call 用于近期区块 |
| 归档节点 | 自创世以来的完整历史 | 分析、历史查询、调试 | 数 TB | eth_getBalance 在旧区块,eth_getStorageAt 用于历史槽位 |
如果你的应用只需要当前余额和近期交易,全节点就足够了。如果你需要查询几个月前的状态,你需要归档节点。托管提供商通常提供两者,但归档请求可能成本更高。
运行自己的 Arbitrum 节点:预期什么
运行 Nitro 节点并非易事。你需要提供具有足够 CPU、内存和磁盘的机器,然后从快照或创世块同步节点。官方文档建议使用快照以避免数天的同步。
以下是一个典型的 Docker 命令,用于运行 Arbitrum 全节点(简化):
docker run --name arbitrum-node \
-v /path/to/data:/home/user/.arbitrum \
-p 8547:8547 \
-p 8548:8548 \
offchainlabs/nitro-node:v3.9.0 \
--init.url=https://snapshot.arbitrum.io/nitro/full \
--l1.url=https://ethereum-rpc.example.com \
--chain.id=42161
请注意,你需要一个以太坊 L1 RPC 端点来同步。节点将读取 L1 数据以验证汇总。你还需要打开端口 8547(RPC)和 8548(WebSocket)如果你想暴露它们,但要注意安全。
关键运营问题
- 状态方案:Nitro 支持 HashDB(默认)和 PathDB。你必须在初始化数据库之前选择;之后无法切换。
- 修剪:全节点自动修剪旧状态。如果你需要历史数据,请使用归档快照。
- 内存:Nitro 可能消耗数 GB 的内存。监控你的节点以避免 OOM 崩溃。
- Watchtower 模式:默认情况下,全节点以 Watchtower 模式运行,该模式监视链上断言并在不同意时记录错误。这不是验证器角色。
- 安全性:公开暴露你的 RPC 端点可能导致资源耗尽。如果必须暴露,请使用防火墙和身份验证。
托管 RPC:何时有意义
运行自己的节点给你完全控制权,但也意味着你负责正常运行时间、备份和扩展。对于大多数生产 dApp,托管 RPC 提供商更实用。你可以获得:
- 高可用性:提供商运行多个节点并负载均衡请求。
- 归档访问:无需运行归档节点即可查询历史状态。
- WebSocket 支持:用于实时订阅。
- 专用节点:如果你需要具有保证容量的私有端点。
OnFinality 提供托管的 Arbitrum 节点,具有公共和专用选项。你可以从免费的公共端点开始,随着流量增长升级到专用节点。有关详细信息,请参阅 Arbitrum 网络页面。
Arbitrum One 和 Sepolia 的链设置
连接到 Arbitrum 时,你需要正确的链 ID 和 RPC URL。以下是两个网络的设置:
| 网络 | 链 ID | RPC URL | 浏览器 |
|---|---|---|---|
| Arbitrum One | 42161 | https://arbitrum.api.onfinality.io/public | Arbiscan |
| Arbitrum Sepolia | 421614 | https://arbitrum-sepolia.api.onfinality.io/public | Sepolia Arbiscan |
你可以使用这些公共端点进行测试,但对于生产环境,请考虑具有更高速率限制的专用端点。OnFinality 的公共端点有速率限制;有关详细信息,请查看定价。
将你的应用连接到 Arbitrum 节点
以下是使用 ethers.js 连接到 Arbitrum One 的示例:
const { ethers } = require("ethers");
const provider = new ethers.JsonRpcProvider("https://arbitrum.api.onfinality.io/public");
async function getBlock() {
const block = await provider.getBlockNumber();
console.log("Current block:", block);
}
getBlock();
对于 WebSocket 订阅,你可以使用可用的 WebSocket 端点。OnFinality 支持 Arbitrum One 上的 WebSocket;请查看网络页面获取确切 URL。
使用 Arbitrum 节点时的常见陷阱
- 使用错误的链 ID:确保你的钱包或应用使用 42161 用于主网,421614 用于 Sepolia。
- 假设全节点有归档数据:如果你在全节点上查询非常旧的区块,可能会收到错误。请使用归档端点。
- 忽略速率限制:公共端点有限制。如果你的应用发出许多请求,你需要专用节点。
- 不处理 WebSocket 重连:WebSocket 连接可能会断开。在你的应用中实现重连逻辑。
- 忘记 L1 依赖:如果你运行自己的节点,你需要可靠的以太坊 L1 端点。如果该端点失败,你的节点无法同步。
如何为 Arbitrum 节点选择提供商
在评估 RPC 提供商时,请考虑以下标准:
- 请求限制:免费层是什么?超出后会发生什么?
- 归档支持:他们是否提供归档节点?成本如何?
- WebSocket:是否可用?连接限制是多少?
- 专用节点:你能获得具有专用资源的私有节点吗?
- 地理分布:是否有多个区域的端点以实现低延迟?
- 支持:SLA 和支持响应时间是什么?
OnFinality 提供透明的定价页面和支持的网络列表。你可以从免费的公共端点开始,并在需要时扩展到专用节点。
关键要点
- Arbitrum 节点是验证和提供 Arbitrum 链服务的 Nitro 客户端。
- 全节点修剪历史;归档节点存储所有内容。
- 自托管提供控制,但需要大量的运营工作。
- 像 OnFinality 这样的托管 RPC 提供商提供生产就绪的端点,开销更少。
- 始终使用目标网络的正确链 ID 和 RPC URL。
- 对于生产环境,考虑专用节点以避免速率限制并确保可靠性。
常见问题解答
Arbitrum 上的全节点和归档节点有什么区别?
全节点存储最新状态并修剪旧数据,而归档节点保留完整历史。归档节点用于历史查询,但需要更多磁盘空间。
我需要运行 Arbitrum 节点来构建 dApp 吗?
不需要。你可以使用托管 RPC 提供商来访问 Arbitrum,而无需运行自己的节点。这设置更快,并且对于生产应用通常更可靠。
我可以在笔记本电脑上运行 Arbitrum 节点吗?
技术上可以,但不推荐。节点需要大量磁盘空间和内存,同步可能需要数天。云服务器或专用机器更好。
什么是 Watchtower 模式?
Watchtower 模式是全节点的默认模式。它监视链上断言并在不同意时记录错误。它不参与验证。
如何获得 Arbitrum Sepolia 测试网节点?
你可以使用公共测试网端点,如 https://arbitrum-sepolia.api.onfinality.io/public,或运行自己的配置为 Sepolia 的节点。有关详细信息,请参阅 Arbitrum Sepolia 页面。
运行 Arbitrum 节点的成本是多少?
成本因硬件、云提供商以及是否使用托管服务而异。自托管需要支付具有足够磁盘和内存的服务器费用。托管提供商根据使用量或专用节点的固定费用收费。
我可以将 OnFinality 用于 Arbitrum 主网吗?
可以,OnFinality 支持 Arbitrum One,提供公共和专用端点。有关详细信息,请查看 Arbitrum 网络页面。