Arbitrum Archive Mainnet Node Guide
Introduction
This guide provides an end-to-end walkthrough for setting up an Indexer on the Graph Protocol Mainnet for the Arbitrum One network. It details the steps for deploying both Arbitrum Classic and Arbitrum Nitro.
Architecture Overview
Arbitrum Nitro includes a built-in proxy that automatically redirects queries for blocks older than its genesis to the Arbitrum Classic node.
Setup Environment
This guide assumes operation within a Kubernetes cluster:
- For setups using Launchpad, follow the steps outlined here.
- For setups using Helm only, refer to the instructions here.
Prerequisites
Before you begin, ensure you have the following:
- An
ethereum-mainnet
RPC endpoint. - CPU: 4 Cores / 8 Threads.
- RAM: 16 GiB.
- Storage: 3 TiB NVMe SSD.
Kubernetes Cluster Using Launchpad
Ensure all Launchpad Prerequisites are met before proceeding.
Initial Configuration
- Confirm your cluster is operational by consulting our Quick Start guide.
- In your private infra repo pull in latest
launchpad-starter
changes:
task launchpad:pull-upstream-starter
Data Restoration and Configuration
- Blockchain node data snapshot The Arbitrum-One namespace contains default configurations for both Arbitrum Classic and Arbitrum Nitro to download data from a snapshot. The snapshots have been set by default:
- for Arbitrum Classic
restoreSnapshot:
enabled: true
snapshotUrl: https://snapshot.arbitrum.foundation/arb1/classic-archive.tar
- for Arbitrum Nitro
restoreSnapshot:
enabled: true
snapshotUrl: https://snapshot.arbitrum.foundation/arb1/nitro-archive.tar
you can overwrite both of these values in <your-private-copy-of-launchpad-starter>/namespaces/arbitrum-one.yaml
- Connect to eth-mainnet-rpc-node Both Arbitrum Classic and Arbitrum Nitro connect to l1, and recent versions of Arbitrum Nitro require connection to a beacon chain RPC:
- for Arbitrum Classic - update values in
<your-private-copy-of-launchpad-starter>/namespaces/arbitrum-one.yaml
as needed. Example:
arbitrum-classic:
values:
arbitrum:
config:
parentChainUrl: http://your-eth-mainnet-url:8545 ## changeme
- for Arbitrum Nitro - update values in
<your-private-copy-of-launchpad-starter>/helmfiles/namespaces/arbitrum-one.yaml
as needed. Example:
arbitrum-nitro:
values:
nitro:
config:
parentChainUrl: http://your-eth-mainnet-url:8545 ## changeme
parentChainBeaconUrl: http://your-eth-consensus-node-url:5052 ## changeme
Deploying with helm in a Kubernetes Cluster Outside Launchpad
You can find blockchain related helm packages here
Deploy Arbitrum Classic
We'll first deploy Arbitrum Classic as Arbitrum Nitro needs to connect to the Classic endpoint.
- Prepare your configuration file,
arbitrum-classic.yaml
, with the necessary RPC URL and optional snapshot URL:
arbitrum:
config:
parentChainUrl: http://your-eth-mainnet-url:8545 ## changeme
restoreSnapshot:
enabled: true
snapshotUrl: https://a-link-to-your-snapshot-archive.tar.gz ## specify only if overriding default
- Add the Helm repository and deploy:
helm repo add graphops http://graphops.github.io/launchpad-charts
helm install --dry-run arbitrum-classic graphops/arbitrum-classic:latest --namespace arbitrum-one --values arbitrum-classic.yaml
Deploy Arbitrum Nitro
- Prepare your configuration file,
arbitrum-nitro.yaml
, with the necessary RPC URLs, classic node URLs and optional snapshot URL:
nitro:
config:
parentChainUrl: http://your-eth-mainnet-url:8545 ## changeme
parentChainBeaconUrl: http://your-eth-consensus-node-url:5052 ## changeme
classicUrl: http://arbitrum-classic:8547/ # replace `arbitrum-classic` with the name of your arbitrum-classic release deployed at the previous step
restoreSnapshot:
enabled: true
snapshotUrl: https://a-link-to-your-snapshot-archive.tar.gz ## specify only if overriding default
- Deploy using helm:
helm install --dry-run arbitrum-nitro graphops/arbitrum-classic:latest --namespace arbitrum-one --values arbitrum-nitro.yaml