Skip to main content

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

  1. Confirm your cluster is operational by consulting our Quick Start guide.
  2. In your private infra repo pull in latest launchpad-starter changes:
task launchpad:pull-upstream-starter

Data Restoration and Configuration

  1. 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:
restoreSnapshot:
enabled: true
snapshotUrl: https://snapshot.arbitrum.foundation/arb1/classic-archive.tar
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

  1. 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:
arbitrum-classic:
values:
arbitrum:
config:
parentChainUrl: http://your-eth-mainnet-url:8545 ## changeme
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.

  1. 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
  1. 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

  1. 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
  1. Deploy using helm:
helm install --dry-run arbitrum-nitro graphops/arbitrum-classic:latest --namespace arbitrum-one --values arbitrum-nitro.yaml