摘要
Arbitrum RPC端点是dApp、钱包和索引器与Arbitrum One、Nova或测试网通信的网关。本文涵盖链设置、公共与私有端点、排序器行为以及为生产环境选择可靠RPC提供商的标准。
Arbitrum RPC 决策检查清单
在集成 Arbitrum RPC 端点之前,请评估以下标准以避免常见陷阱:
| 标准 | 检查内容 | 重要性 |
|---|---|---|
| 网络选择 | 确认链 ID(One 为 42161,Nova 为 42170,Sepolia 为 421614) | 错误的链 ID 会导致交易失败或资金丢失 |
| 公共与私有 | 速率限制、可靠性和数据隐私 | 公共端点可能限制请求或暴露 IP;私有端点提供更高限制 |
| 排序器与标准 RPC | 排序器端点仅支持 eth_sendRawTransaction | 对其他调用使用排序器将静默失败 |
| WebSocket 支持 | 检查提供商是否提供 WSS 用于实时订阅 | 许多公共端点缺少 WebSocket;事件驱动型 dApp 需要此功能 |
| 归档数据 | 提供商是否支持归档状态? | 历史查询、调试和分析所需 |
| 追踪 API | 用于 Arbitrum 特定调试的 Stylus 追踪 | 高级合约分析和 Gas 分析所需 |
| 回退策略 | 配置多个端点 | 防止主端点故障时的停机 |
| 定价模式 | 按需付费与专用节点 | 共享 RPC 更便宜;专用节点提供可预测性能 |
Arbitrum 网络概述
Arbitrum 是领先的第二层乐观汇总,继承了以太坊的安全性,同时提供更低的费用和更高的吞吐量。它有两个主要网络:
- Arbitrum One(链 ID 42161)——使用 Nitro 技术栈的主要汇总。
- Arbitrum Nova(链 ID 42170)——针对游戏和社交应用优化的 AnyTrust 链。
- Arbitrum Sepolia(链 ID 421614)——用于开发的测试网。
每个网络都有自己的公共 RPC 端点和排序器端点。排序器端点是一种特殊的只写端点,接受 eth_sendRawTransaction(和 eth_sendRawTransactionConditional),并提供更快的包含速度。它不应用于读取调用。
公共 Arbitrum RPC 端点
Arbitrum 为所有网络提供免费公共端点:
- Arbitrum One:
https://arb1.arbitrum.io/rpc - Arbitrum Nova:
https://nova.arbitrum.io/rpc - Arbitrum Sepolia:
https://sepolia-rollup.arbitrum.io/rpc
这些端点有速率限制,不支持 WebSocket。它们适用于轻度使用、原型开发或钱包,但不适用于高流量的生产 dApp。
第三方 RPC 提供商
许多节点提供商提供具有更高速率限制、WebSocket 支持、归档数据和专用节点选项的 Arbitrum RPC 服务。评估提供商时,请考虑:
- 速率限制:公共端点可能每秒只允许少量请求。付费计划提供更高吞吐量。
- WebSocket:对 DEX、NFT 市场和游戏等实时应用至关重要。
- 归档数据:历史状态查询所需(例如,使用过去区块编号的
eth_call)。 - 追踪 API:Arbitrum Stylus 追踪可实现深度合约调试。
- 地理分布:低延迟端点可改善用户体验。
OnFinality 为 Arbitrum One、Nova 和 Sepolia 提供托管 RPC 端点,并提供共享和专用节点选项。查看 Arbitrum 网络页面 了解当前支持情况,以及 RPC 定价 了解计划详情。
如何连接到 Arbitrum RPC
使用 curl
curl -X POST https://arb1.arbitrum.io/rpc \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
使用 ethers.js (JavaScript)
const { ethers } = require("ethers");
const provider = new ethers.JsonRpcProvider("https://arb1.arbitrum.io/rpc");
async function getBlock() {
const blockNumber = await provider.getBlockNumber();
console.log("Current block:", blockNumber);
}
getBlock();
使用 web3.py (Python)
from web3 import Web3
w3 = Web3(Web3.HTTPProvider("https://arb1.arbitrum.io/rpc"))
print(w3.eth.block_number)
排序器端点行为
Arbitrum 的排序器提供快速交易包含。关键点:
- 仅写入调用:
eth_sendRawTransaction和eth_sendRawTransactionConditional。 - 更低延迟:交易确认速度比标准 RPC 更快。
- 不支持读取:不要用于
eth_call、eth_getBalance等。 - 回退模式:使用排序器发送交易,使用标准 RPC 进行读取。
排序器端点示例:
- One:
https://arb1-sequencer.arbitrum.io/rpc - Nova:
https://nova-sequencer.arbitrum.io/rpc - Sepolia:
https://sepolia-rollup-sequencer.arbitrum.io/rpc
常见陷阱与故障排除
1. 对排序器使用读取调用
向排序器端点发送读取请求将返回错误。始终使用标准 RPC URL 进行读取。
2. 公共端点的速率限制
公共端点有严格的速率限制。如果看到 HTTP 429 响应,请切换到具有更高限制的提供商或专用节点。
3. 缺少 WebSocket 支持
许多公共端点不支持 WebSocket。对于实时订阅,请使用提供 WSS 的提供商。
4. 错误的链 ID
始终验证钱包或 dApp 配置中的链 ID。使用错误的链 ID 可能导致交易失败或资金丢失。
5. 归档数据可用性
如果您的应用需要历史状态,请确保您的提供商支持归档节点。公共端点通常只提供近期状态。
何时使用专用节点
对于高流量生产应用,专用 Arbitrum 节点提供:
- 保证资源:无其他用户争用。
- 自定义配置:根据工作负载调整节点设置。
- 完整归档数据:访问所有历史状态。
- WebSocket 支持:实时事件流。
- 明确速率限制:在节点容量内无限制请求。
OnFinality 提供灵活的部署选项的专用 Arbitrum 节点。访问专用节点页面了解更多信息。
关键要点
- Arbitrum 为 One、Nova 和 Sepolia 提供公共 RPC 端点,但它们有速率限制且缺少 WebSocket。
- 排序器端点是只写的;仅用于发送交易。
- 第三方提供商提供增强功能,如更高限制、WebSocket、归档数据和专用节点。
- 根据速率限制、WebSocket 支持、归档数据、追踪 API 和地理分布评估提供商。
- 对于生产环境,考虑使用专用节点以获得可预测性能和完全控制。
常见问题
Arbitrum的链ID是什么?
Arbitrum One是42161,Arbitrum Nova是42170,Arbitrum Sepolia是421614。
我可以对读取调用使用排序器端点吗?
不可以。排序器仅支持eth_sendRawTransaction和eth_sendRawTransactionConditional。读取请使用标准RPC。
公共Arbitrum RPC端点支持WebSocket吗?
不支持。公共端点仅支持HTTP。对于WebSocket,请使用第三方提供商。
如何在共享RPC和专用RPC之间选择?
共享RPC对低到中等流量具有成本效益。专用节点更适合高吞吐量、低延迟和自定义需求。
在哪里可以找到支持的Arbitrum网络列表?
查看支持的RPC网络页面获取最新列表。