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.5.4-mocha \
        --enable-rpc --rpc-addr=0.0.0.0 --rpc-port=9876 \
        --celestia.rpc=<YOUR_CELESTIA_ENDPOINT> \
        --celestia.namespace-id=0000047d50b18e30e965 \
        --fallback-enabled \
        --das.rpc.url="https://dap-gravity-mainnet-0.t.conduit.xyz"
  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 20+ days.

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://host.docker.internal: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.6.8 \
    --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=false \
    --node.da-provider.enable=true \
    --node.da-provider.rpc.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?