Logo
新用户订阅 RPC,首月享 6.5 折优惠查看优惠
RPC Assistant

Arbitrum RPC API:端点设置、方法与故障模式

摘要

Arbitrum RPC API 是一个 JSON-RPC 接口,允许你的应用程序读取 Arbitrum One 状态并提交交易。你通过 HTTP 或 WebSocket 连接到与 Arbitrum rollup 同步的节点,然后调用标准的以太坊方法,如 eth_call、eth_getLogs 和 eth_sendRawTransaction。本文介绍了你需要的链设置、在 Arbitrum 上行为不同的方法,以及集成过程中团队常遇到的故障模式。

如果你正在选择发送这些请求的位置,OnFinality 提供 Arbitrum RPC API 访问和专用节点基础设施,以便随着工作负载增长,你可以从公共端点迁移到托管或私有节点。请先使用本页正确配置你的客户端,然后决定共享端点还是专用节点更适合你的流量模式。

Arbitrum One 是一个乐观 rollup,结算到以太坊,但它暴露了与以太坊兼容的 JSON-RPC 接口。这种兼容性很方便,也是一个陷阱:大多数以太坊工具都能工作,但少数方法、gas 规则和时序假设的行为有所不同。本页提供了连接所需的设置、发布前值得检查的方法,以及生产环境中出现的故障模式。

链设置一览

首先确认你的客户端、钱包或框架所需的值。Arbitrum One 是主网 rollup;Arbitrum Sepolia 是用于暂存的测试网。

设置Arbitrum One(主网)Arbitrum Sepolia(测试网)
链 ID42161421614
原生货币ETH(18 位小数)ETH(18 位小数)
区块浏览器https://arbiscan.iohttps://sepolia.arbiscan.io
HTTP 端点https://arbitrum.api.onfinality.io/publichttps://arbitrum-sepolia.api.onfinality.io/public
WebSocket在 Arbitrum One 上支持检查测试网端点的可用性
Rollup 类型乐观 rollup乐观 rollup

Arbitrum One 的钱包网络配置如下所示:

{
  "chainId": "0x66eee",
  "chainName": "Arbitrum One",
  "nativeCurrency": { "name": "Ether", "symbol": "ETH", "decimals": 18 },
  "rpcUrls": ["https://arbitrum.api.onfinality.io/public"],
  "blockExplorerUrls": ["https://arbiscan.io"]
}

注意 0x66eee 是 42161 的十六进制形式。钱包会拒绝你在文档中引用的十进制链 ID 与在 wallet_addEthereumChain 中发送的十六进制值不匹配的情况。

在编写代码之前决定如何连接

连接决策通常归结为三个问题:你的应用是否需要推送更新,是否需要历史状态,以及你的流量突发性如何?

  • 只读仪表盘和钱包通常可以在共享 HTTP 端点上运行。请求短小、无状态且可缓存。
  • 对新块或待处理活动做出反应的应用受益于 WebSocket 订阅,这样你就不必在循环中轮询 eth_getBlockByNumber。
  • 索引器、分析和回填需要归档访问,并且通常需要更重的 eth_getLogs 查询,这正是共享公共端点开始吃紧的地方。
  • 高流量或延迟敏感的工作负载更适合专用节点,你的流量不会与其他租户共享容量。

如果你不确定自己属于哪一类,RPC 提供商选择指南 会介绍评估标准。具体到 Arbitrum,你可以在 Arbitrum 网络页面 上比较共享和专用选项。

调用 Arbitrum RPC API

基本的读取请求与以太坊相同。这个 curl 调用获取最新的区块号:

curl -s https://arbitrum.api.onfinality.io/public \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}'

在 JavaScript 中使用 viem,配置好链后,同样的调用只需一行:

import { createPublicClient, http } from 'viem';
import { arbitrum } from 'viem/chains';

const client = createPublicClient({
  chain: arbitrum,
  transport: http('https://arbitrum.api.onfinality.io/public'),
});

const blockNumber = await client.getBlockNumber();
console.log(blockNumber);

要订阅新块头的 WebSocket:

import WebSocket from 'ws';

const ws = new WebSocket('wss://arbitrum.api.onfinality.io/public/ws');
ws.on('open', () => {
  ws.send(JSON.stringify({
    jsonrpc: '2.0',
    id: 1,
    method: 'eth_subscribe',
    params: ['newHeads'],
  }));
});
ws.on('message', (data) => console.log(data.toString()));

在硬编码之前,请根据 Arbitrum 网络页面 确认确切的 WebSocket 路径,因为主网和测试网之间的传输支持可能不同。

在 Arbitrum 上行为不同的方法

由于 Arbitrum 是 rollup,一些方法返回的值与以太坊 L1 的思维模型不匹配。

方法在 Arbitrum 上的变化需要注意什么
eth_gasPrice反映 L2 gas 定价加上 L1 数据组件不要硬编码 gas 价格;按交易估算
eth_estimateGas考虑 L1 calldata 成本估算值可能高于仅基于 L2 的简单计算
eth_getLogs大区块范围开销大分页并限制 fromBlock/toBlock
eth_getBlockByNumber出块时间快轮询循环浪费配额;优先使用订阅
eth_call对视图函数正常工作调用和交易之间状态可能变化
eth_sendRawTransaction标准签名交易注意 nonce 和 gas 错误,而不是格式错误

gas 差异是最让团队惊讶的地方。Arbitrum 上的交易支付 L2 执行 gas 和单独的 L1 数据可用性成本,因此在以太坊上看起来合适的 gas 价格可能低估了 Arbitrum 交易。始终估算而不是假设。

故障模式及如何调试

大多数 Arbitrum RPC API 问题都属于少数几类。在更换提供商之前,将症状与可能的原因匹配。

症状可能原因首先检查
nonce too low之前的交易已经打包使用 pending 查询 eth_getTransactionCount
replacement transaction underpriced使用相同 nonce 和低 gas 重新提交提高替换交易的 gas 价格
eth_getLogs 超时区块范围太宽将范围拆分为更小的窗口
请求间歇性失败共享端点在突发负载下添加带退避的重试,或迁移到专用节点
WebSocket 断开连接空闲超时或网络中断实现重连和重新订阅逻辑
execution reverted 无原因合约回滚且无消息在失败的区块用 eth_call 重放调用

一个实用的调试顺序:用 curl 重现失败的调用,从而将你的框架排除在外,确认你查询的区块号,然后检查同样的调用在第二个端点上是否成功。如果只在一个端点上失败,则存在基础设施问题。如果在所有地方都失败,则问题出在请求本身。

生产就绪检查清单

在将真实流量指向 Arbitrum 端点之前,请确认以下每一项:

  • 故障转移:你的客户端可以在不重新部署的情况下切换到第二个端点。
  • 重试:瞬态 5xx 和超时响应使用指数退避重试,而不是立即重试。
  • 超时:设置请求超时,以免慢调用阻塞整个请求路径。
  • 日志查询:eth_getLogs 范围有界并分页。
  • 订阅:WebSocket 客户端自动重连并重新订阅。
  • 可观测性:你按方法跟踪错误率和延迟,而不仅仅是整体正常运行时间。
  • 容量:你知道峰值每秒请求数以及共享端点是否能吸收。

如果你的峰值负载稳定且高,或者你需要归档和 trace 访问,专用节点 消除了噪声邻居变量。如果你的负载适中且突发,托管共享端点通常是更简单的选择。两种模式的定价在 RPC 定价页面 上。

测试网工作流程

使用 Arbitrum Sepolia 进行暂存,这样你就不会在集成测试中消耗主网 ETH。链 ID 是 421614,浏览器是 https://sepolia.arbiscan.io。Arbitrum Sepolia 的水龙头由生态系统提供商运营;为一个一次性密钥提供资金,并将其排除在生产配置之外。由于测试网状态不是永久的,不要构建依赖于特定历史区块永久存在的断言。

值得跟踪的监控信号

一旦上线,有用的信号是方法级别的。将 eth_sendRawTransaction 的错误率与读取方法分开跟踪,因为写入失败通常表示 nonce 或 gas 问题,而不是基础设施问题。单独跟踪 eth_getLogs 延迟,因为它对查询形状最敏感。并跟踪 WebSocket 重连频率,因为重连次数上升是订阅处理需要关注的早期预警。

关键要点

  • Arbitrum One 使用链 ID 42161,Arbitrum Sepolia 使用 421614;两者都使用 ETH 作为原生货币。
  • JSON-RPC 接口与以太坊兼容,但由于 Arbitrum 是 rollup,gas 估算和日志查询行为不同。
  • 始终估算 gas 而不是硬编码,并始终限制 eth_getLogs 区块范围。
  • 将连接类型与工作负载匹配:HTTP 用于无状态读取,WebSocket 用于推送更新,专用节点用于持续或归档密集型流量。
  • 在扩展流量之前构建故障转移、重试和重连逻辑,而不是在事件之后。

常见问题

Arbitrum RPC API 与以太坊的相同吗? 很接近。方法名称和请求格式相同,但 gas 定价、日志查询成本和出块时间不同,因为 Arbitrum 是乐观 rollup。

Arbitrum 使用什么链 ID? Arbitrum One 使用 42161,Arbitrum Sepolia 使用 421614。在钱包配置中,发送十六进制形式。

我需要 WebSocket 端点吗? 只有当你的应用需要推送更新(如新块头或事件订阅)时才需要。只读应用可以仅使用 HTTP。

为什么我的 eth_getLogs 调用超时? 区块范围通常太宽。将其拆分为更小的窗口并分页。

什么时候应该从共享端点迁移到专用节点? 当你的持续请求量、归档需求或延迟要求超过共享端点舒适服务的范围时。在 Arbitrum 网络页面 上比较选项,并查看 RPC 定价 了解两种模式。

在哪里可以看到 OnFinality 支持哪些网络? 完整列表在 支持的 RPC 网络 页面上。

RPC 知识库

相关 RPC 内容

网络 RPCPolkadot

Polkadot 节点:开发者运行与连接网络指南

本指南涵盖开发者需要了解的关于 Polkadot 节点的所有内容:节点类型、如何运行自己的节点、如何通过 RPC 端点连接,以及如何选择自托管节点与提供商托管节点。无论您是在构建 dApp、钱包还是基础设施工具,您都将学习到可靠地与 Polkadot 网络交互的实用步骤。...

区块链基础设施Bittensor

Bittensor 矿机实际需要什么硬件?

Bittensor 矿机不是一台用来哈希区块的 GPU 机器。它是一台运行注册到子网的矿工程序的机器,其中真正的工作是模型推理或训练,奖励来自你与其他矿工相比的排名。硬件选择取决于你瞄准哪个子网,而不是一份全球统一的规格表。 本文将矿机拆解为各个部分,解释 CPU、GPU、显存、存储和网络如何分别影...

网络 RPCBNB Chain

选择BNB Chain RPC提供商时应注意什么?

# 选择BNB Chain RPC提供商时应注意什么? 最佳的BNB Chain RPC提供商能为生产级dApp提供可靠的BNB RPC访问、清晰的请求限制、高可用性、实用的分析功能、测试网支持,以及在共享端点无法满足工作负载时提供专用BNB节点的路径。 BNB Chain被DeFi应用、交易所、钱...

网络 RPCPolkadot

什么是Polkadot节点,如何运行一个?

# 什么是Polkadot节点,如何运行一个? Polkadot节点是一种软件客户端,它连接到Polkadot网络,同步区块链数据,并提供RPC端点用于查询状态、提交交易以及与平行链交互。运行自己的节点可以让你直接、无需信任地访问网络,但这需要大量的硬件、存储和持续的维护。对于许多开发者和dApp来...

RPC 故障排查

区块链交易中的nonce是什么?

区块链nonce是一个用于排序交易、防止重放攻击以及在某些区块生产系统中证明工作量的数字。在以太坊等基于账户的链上,每次账户发送交易时交易nonce都会递增,这使得网络能够按预期顺序处理交易。 如果应用通过RPC端点发送大量交易,nonce处理就成为生产可靠性的组成部分。OnFinality帮助团队...

RPC 提供商选择Sui

专用 Sui gRPC 节点:流式传输、容量与隔离

专用 Sui gRPC 节点为您的团队提供隔离的全节点环境,用于高吞吐的 Sui 数据访问。您不必共享限速的公共或多租户端点,而是运行一个为索引器、后端服务和订阅消费者量身定制的节点。gRPC API 使用基于 HTTP/2 的 Protocol Buffers,使检查点、交易和事件流的效率高于轮询...

永远不用担心基础设施

OnFinality 消除了 DevOps 的繁重工作,让您能够更聪明、更快地构建。

开始