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

Arbitrum RPC Endpoints and Providers: How Do You Pick the Right One?

摘要

Arbitrum exposes a standard EVM JSON-RPC interface, so any Ethereum-compatible tooling works once you point it at a working endpoint. The real decision is not the method list but which endpoint type fits your workload: a shared public URL for quick tests, a managed RPC API for steady production traffic, or a dedicated Arbitrum node when you need predictable capacity, archive data, or WebSocket subscriptions. This article walks through Arbitrum One and Arbitrum Sepolia chain settings, endpoint options, request examples, and the failure modes that usually push teams off public endpoints.

Arbitrum is an EVM-compatible Layer 2, which means the RPC surface you connect to is the same JSON-RPC interface you already use on Ethereum. What changes between providers is not the method names but how the endpoint behaves under load: rate limits, archive depth, WebSocket support, and whether you share capacity with other teams.

This page is for developers and infrastructure buyers who searched for Arbitrum RPC endpoints and node providers and now need to decide what to connect to. It covers chain settings for Arbitrum One and Arbitrum Sepolia, the endpoint types available, working request examples, and the failure modes that usually force a migration.

Endpoint options: which one fits your workload

Before copying a URL, match the endpoint type to what your app actually does. Most teams start on a public endpoint and outgrow it; the question is when.

Endpoint typeBest forWatch out for
Public shared endpointQuick tests, prototypes, low-volume scriptsShared rate limits, no SLA, occasional throttling under bursts
Managed RPC API (shared pool)Production apps with steady read trafficPer-key limits, archive/trace methods may need a higher tier
Dedicated Arbitrum nodeHigh-throughput indexers, trading bots, archive queries, WebSocket subscriptionsHigher cost, requires capacity planning
Self-hosted nodeTeams with strict data-residency or custom patching needsOperational overhead, sync time, upgrade maintenance

If you are validating a contract or running a one-off script, a public endpoint is fine. If you are shipping a product where a failed eth_call means a broken user experience, plan for a managed or dedicated endpoint from the start.

OnFinality provides Arbitrum RPC through a managed API and dedicated node options, so you can start on a shared endpoint and move to isolated capacity without changing your application code. See Arbitrum RPC for the current endpoint and transport details, and RPC pricing for how plans scale.

Arbitrum One and Arbitrum Sepolia chain settings

Use these values when adding Arbitrum to a wallet, a Hardhat/Foundry config, or a frontend network switcher. Keep mainnet and testnet separate — mixing them is one of the most common setup mistakes.

SettingArbitrum One (mainnet)Arbitrum Sepolia (testnet)
Chain ID42161421614
Chain nameArbitrum OneArbitrum Sepolia
Native currencyETH (18 decimals)ETH (18 decimals)
Block explorerhttps://arbiscan.iohttps://sepolia.arbiscan.io
TransportHTTP and WebSocketHTTP

A public OnFinality endpoint you can use for quick checks:

# Arbitrum One
https://arbitrum.api.onfinality.io/public

# Arbitrum Sepolia
https://arbitrum-sepolia.api.onfinality.io/public

For production traffic, replace the public URL with your own authenticated endpoint from the Arbitrum network page. Public URLs are shared and are not intended for sustained load.

Adding Arbitrum to a wallet or app config

If you are wiring Arbitrum into a frontend, the network configuration usually looks like this:

const arbitrumOne = {
  chainId: '0x' + (42161).toString(16), // 0xa4b1
  chainName: 'Arbitrum One',
  nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },
  rpcUrls: ['https://arbitrum.api.onfinality.io/public'],
  blockExplorerUrls: ['https://arbiscan.io'],
};

await window.ethereum.request({
  method: 'wallet_addEthereumChain',
  params: [arbitrumOne],
});

For a viem or ethers client, point the transport at the same URL and let the library handle retries:

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(block);

What a basic Arbitrum request looks like

Every Arbitrum endpoint speaks JSON-RPC over HTTP POST. A minimal health check is eth_chainId, which should return 0xa4b1 on Arbitrum One.

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

A more realistic call fetches the latest block and a contract read:

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

If eth_chainId works but your application calls fail, the problem is usually the method, the parameters, or a rate limit — not the endpoint URL itself.

Methods that decide your provider choice

Most Arbitrum apps only need a handful of methods, but a few of them separate a basic endpoint from one that can carry production traffic.

MethodTypical useWhy it affects provider choice
eth_callContract reads, balancesHigh volume; benefits from load balancing
eth_getLogsIndexers, event backfillsExpensive; often rate-limited on shared endpoints
eth_getBlockByNumberBlock explorers, monitorsCheap but frequent; watch request budgets
debug_traceTransactionDebugging, simulationNeeds trace support and archive data
eth_subscribeReal-time event streamsRequires WebSocket transport

If your workload depends on eth_getLogs over wide block ranges, debug_* methods, or WebSocket subscriptions, confirm those are supported before committing to a provider. OnFinality's Arbitrum support includes HTTP and WebSocket transport — check the Arbitrum network page for the current method and transport coverage.

Common failure modes and how to read them

When an Arbitrum integration breaks, the error usually points at one of four causes. Match the symptom to the fix before assuming the provider is down.

SymptomLikely causeNext step
429 Too Many RequestsShared endpoint rate limitMove to an authenticated or dedicated endpoint
-32601 Method not foundMethod not enabled on that endpointCheck trace/archive support with the provider
-32000 missing trie nodeArchive data not availableRequest an archive-enabled endpoint
Timeouts on eth_getLogsBlock range too wideNarrow the range or batch requests
WebSocket disconnectsIdle timeout or unstable transportAdd reconnect logic with backoff

A quick diagnostic loop: call eth_chainId to confirm connectivity, then eth_blockNumber to confirm the node is synced, then retry the failing method with a smaller payload. If the first two succeed and only the third fails, the issue is method support or request size, not the endpoint.

Production readiness checklist

Before you route real traffic to an Arbitrum endpoint, confirm these points. They are the same questions that come up in a provider evaluation.

  • Transport: Do you need HTTP only, or WebSocket for subscriptions?
  • Archive depth: Does your app query historical state, or only recent blocks?
  • Trace methods: Do you rely on debug_* or trace_* calls?
  • Rate limits: What happens during a burst — throttling, queueing, or hard errors?
  • Failover: Can you switch endpoints without redeploying?
  • Observability: Can you measure error rate and latency per endpoint?
  • Testnet parity: Does your provider cover Arbitrum Sepolia so staging matches production?

If you answer "yes" to archive, trace, or WebSocket needs, a shared public endpoint will not hold. A managed RPC API or a dedicated node is the more realistic path. For a broader framework, see how to choose an RPC provider.

Migrating between Arbitrum endpoints

Because Arbitrum is EVM-compatible, migrating endpoints is mostly a configuration change, not a code rewrite. The safe sequence:

  1. Add the new endpoint alongside the old one in your config.
  2. Run both in parallel and compare responses for the same block height.
  3. Shift read traffic first, then writes and subscriptions.
  4. Keep the old endpoint as a fallback until the new one has run through a full traffic cycle.
  5. Remove the old endpoint only after your monitoring shows stable error rates.

If you use a client library, keep the endpoint in an environment variable so switching does not require a code change or redeploy.

Key Takeaways

  • Arbitrum uses standard EVM JSON-RPC, so tooling compatibility is rarely the blocker — endpoint capacity and method support are.
  • Arbitrum One uses chain ID 42161; Arbitrum Sepolia uses 421614. Keep them separate in configs.
  • Public endpoints are fine for tests but are shared and rate-limited; production apps need an authenticated or dedicated endpoint.
  • eth_getLogs, debug_*, and eth_subscribe are the methods that most often force a provider upgrade.
  • OnFinality offers Arbitrum RPC through a managed API and dedicated nodes, with HTTP and WebSocket transport. See Arbitrum RPC, RPC pricing, and supported RPC networks.

Frequently Asked Questions

What is the Arbitrum One RPC endpoint?

Arbitrum One is reachable at any EVM-compatible JSON-RPC endpoint. OnFinality provides a public endpoint at https://arbitrum.api.onfinality.io/public for testing, and authenticated endpoints for production. See the Arbitrum network page for current details.

What chain ID does Arbitrum use?

Arbitrum One uses chain ID 42161. Arbitrum Sepolia, the testnet, uses 421614. Always confirm the chain ID your wallet or client reports before sending transactions.

Do I need a dedicated Arbitrum node?

Not always. If your app makes steady, low-volume reads, a managed shared endpoint may be enough. If you run indexers, trading bots, or archive queries, or you need predictable capacity and WebSocket subscriptions, a dedicated node is usually the better fit.

Does Arbitrum support WebSocket RPC?

Arbitrum One supports WebSocket transport, which is required for eth_subscribe event streams. Confirm WebSocket availability with your provider, since not every endpoint exposes it.

Why does my Arbitrum request return a rate-limit error?

Public and shared endpoints apply rate limits to protect capacity. If you see 429 responses during normal traffic, move to an authenticated endpoint or a dedicated node with capacity sized to your workload.

How do I test an Arbitrum endpoint before switching?

Call eth_chainId to confirm connectivity, eth_blockNumber to confirm the node is synced, then replay a few real requests from your app. Run the new endpoint in parallel with the old one before cutting over.

RPC 知识库

相关 RPC 内容

网络 RPCArbitrum

Arbitrum RPC 列表:如何为你的应用选择合适的端点

本文介绍了不同类型的 Arbitrum RPC 端点——公共、托管和专用——以及如何为你的应用选择合适的端点。内容涵盖链设置、常见用例,以及如何根据可靠性、可扩展性和支持来评估提供商。...

网络 RPCAvalanche

什么是 Avalanche 归档节点,何时应该使用?

Avalanche 归档节点存储 C 链、X 链和 P 链的完整历史状态,能够回答修剪节点无法回答的查询。本文解释了归档节点、修剪节点和状态同步节点之间的区别,并帮助您决定是自己运行节点还是使用托管的 RPC 提供商。...

网络 RPCSolana

如何为你的工作负载评估最快的 Solana RPC?

没有单一最快的 Solana RPC 端点,因为延迟取决于你的应用运行位置、调用的方法以及是否需要 WebSocket 或归档数据。实用的方法是从你自己的区域针对实际使用的方法测量往返时间,然后在共享 RPC 和专用 Solana 节点之间做出选择。OnFinality 提供 Solana RPC ...

网络 RPCBNB Chain

BNB Smart Chain 应该使用什么 RPC URL?

BNB Smart Chain 主网的 RPC URL 是 https://bnb.api.onfinality.io/public,链 ID 为 56,原生代币为 BNB。测试网请使用 https://bnb-testnet.api.onfinality.io/public,链 ID 为 97,代...

网络 RPCMoonriver

Moonriver RPC:端点、配置与最佳实践

Moonriver 是 Kusama 上兼容以太坊的金丝雀网络,适合在部署到 Moonbeam 之前测试 dApp。本指南涵盖 Moonriver RPC 端点、如何配置钱包和工具,以及如何为生产环境选择可靠的 RPC 提供商。...

网络 RPCAcala

什么是Acala Network,如何连接?

Acala Network是基于Polkadot构建的去中心化金融(DeFi)中心,提供跨链流动性、流动性质押和EVM兼容的智能合约平台。本指南涵盖Acala的架构、如何通过RPC端点连接,以及开发者在Acala上构建时的关键考量。...

永远不用担心基础设施

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

开始