Gravity Alpha Mainnet (L2) Node Setup

Instructions about how to run a Gravity Alpha Mainnet node.

Guide

Prerequisites

  1. A local directory for storing node data

  2. An Ethereum mainnet RPC endpoint with unlimited rate limit for eth_getLogs

  3. An Ethereum beacon chain RPC endpoint

  4. Connection to a Celestia lightnode or public RPC endpoint

DAS Server Setup

  1. Setup the Celestia DAS Server

    docker run -d --rm --name celestia-das-server \
        -p 9876:9876 \
        --entrypoint /bin/celestia-server \
        ghcr.io/celestiaorg/nitro-das-celestia:v0.4.1 \
        --enable-rpc --rpc-addr=0.0.0.0 --rpc-port=9876 \
        --celestia.rpc=<YOUR_CELESTIA_ENDPOINT>\
        --celestia.namespace-id=0000047d50b18e30e965
  2. Connect to a Celestia RPC endpoint

Syncing a node from scratch can be extremely time-consuming and resource-intensive. We strongly recommend downloading our latest snapshot:

  1. Extract the snapshot to your local directory before running the node.

In our experiment, syncing from scratch without using snapshots will take 12-15 days for Gravity Alpha Mainnet. The experiment was done in March 2025, when the block height of Gravity Alpha Mainnet is around 51,413,000.

Running the Node

Save the following script as run-gravity-node.sh, make it executable with chmod +x run-gravity-node.sh, and update the TODO variables:

#!/bin/bash

# Define dependent variables
LOCAL_DIR="TODO"                # Replace with your local directory path
ETH_MAINNET_RPC="TODO"          # Replace with your Ethereum mainnet RPC endpoint
ETH_BEACON_RPC="TODO"           # Replace with your Ethereum beacon chain RPC endpoint
CELESTIA_DAS_URL="TODO"         # Replace with your Celestia DAS server URL (e.g., http://localhost:9876)

# Run the Docker container
docker run --rm -it \
    --add-host=host.docker.internal:host-gateway \
    -v "$LOCAL_DIR:/home/user/.arbitrum" \
    -p 0.0.0.0:8547:8547 \
    -p 0.0.0.0:8548:8548 \
    ghcr.io/celestiaorg/nitro:v3.3.2 \ \
    --parent-chain.connection.url="$ETH_MAINNET_RPC" \
    --chain.id=1625 \
    --chain.name=conduit-orbit-deployer \
    --http.api=net,web3,eth \
    --http.corsdomain="*" \
    --http.addr=0.0.0.0 \
    --http.vhosts="*" \
    --chain.info-json='[
        {
            "chain-id": 1625,
            "parent-chain-id": 1,
            "chain-name": "conduit-orbit-deployer",
            "chain-config": {
                "chainId": 1625,
                "homesteadBlock": 0,
                "daoForkBlock": null,
                "daoForkSupport": true,
                "eip150Block": 0,
                "eip150Hash": 
                "0x0000000000000000000000000000000000000000000000000000000000000000",
                "eip155Block": 0,
                "eip158Block": 0,
                "byzantiumBlock": 0,
                "constantinopleBlock": 0,
                "petersburgBlock": 0,
                "istanbulBlock": 0,
                "muirGlacierBlock": 0,
                "berlinBlock": 0,
                "londonBlock": 0,
                "clique": {
                    "period": 0,
                    "epoch": 0
                },
                "arbitrum": {
                    "EnableArbOS": true,
                    "AllowDebugPrecompiles": false,
                    "DataAvailabilityCommittee": true,
                    "InitialArbOSVersion": 11,
                    "InitialChainOwner": "0xd65776c5F9fA552cB5C9556B3e86bF6c376b233b",
                    "GenesisBlockNum": 0
                }
            },
            "rollup": {
                "bridge": "0x7983403dDA368AA7d67145a9b81c5c517F364c42",
                "inbox": "0x7AD2a94BefF3294a31894cFb5ba4206957a53c19",
                "sequencer-inbox": "0x8D99372612e8cFE7163B1a453831Bc40eAeb3cF3",
                "rollup": "0xf993AF239770932A0EDaB88B6A5ba3708Bd58239",
                "validator-utils": "0x2b0E04Dc90e3fA58165CB41E2834B44A56E766aF",
                "validator-wallet-creator": "0x9CAd81628aB7D8e239F1A5B497313341578c5F71",
                "deployed-at": 19898364
            }
        }
    ]' \
    --node.data-availability.enable \
    --node.data-availability.rest-aggregator.enable \
    --node.data-availability.rest-aggregator.urls=https://das-gravity-mainnet-0.t.conduit.xyz \
    --node.celestia-cfg.enable=true \
    --node.celestia-cfg.url="$CELESTIA_DAS_URL" \
    --execution.forwarding-target=https://rpc.gravity.xyz \
    --node.feed.input.url=wss://relay-gravity-mainnet-0.t.conduit.xyz \
    --parent-chain.blob-client.beacon-url="$ETH_BEACON_RPC"

Additional Information

  • The chain info is obtained from Conduit:

curl https://api.conduit.xyz/file/v1/arbitrum/chaininfo/gravity-mainnet-0
  • Relay endpoint is provided by Conduit as wss://relay-gravity-mainnet-0.t.conduit.xyz

  • Gravity Alpha Mainnet uses Anytrust DA, with aggregator URL: https://das-gravity-mainnet-0.t.conduit.xyz

  • Celestia namespace for Gravity mainnet: 0000047d50b18e30e965

References

For more information, please check out the following guides:

Last updated

Was this helpful?