Running a Graph Node on REI Network

This document describes how set up a local graph node for REI network

Introduction

The Graph is a decentralized protocol for indexing and querying data from blockchains, starting with Ethereum. It makes it possible to query data that is difficult to query directly. Graph nodes which source events from blockchain to deterministically update a data store that can be queried via the GraphQL endpoint

There are two ways to launch a Graph Node: you can use Docker to run related images, or you can compile their Source code. The steps described in this document will only be run through docker, because it is more convenient, and you can launch a Graph Node very quickly.

The steps described in this guide have been tested in both Ubuntu 20.04-based and MacOs environments, and they will need to be adapted accordingly for other systems.

Prerequisites

Before you start, you need some pre-environment configuration on your system:

In this guide, you will learn how to run a Graph node against a node with the REI testnet node.This guide can also be adapted for mainnet.

Running a Graph Node

The first step is to clone the Graph Node repository:

git clone https://github.com/graphprotocol/graph-node/
cd graph-node/docker

Then execute the setup.sh file, this file will pull all the necessary Docker images and write the necessary information into the docker-compose.yml file.

./setup.sh

The log information returned looks like:

When everything is ready, you should to revise the "Ethereum environment" inside the docker-compose.yml file, so that it points to the endpoint of the node you are running this Graph Node against. Note that the setup.sh file detects the Host IP and writes its value, so you'll need to modify it accordingly.

The entire docker-compose.yml file should look something similar to:

version: '3'
services:
  graph-node:
    image: graphprotocol/graph-node
    ports:
      - '8000:8000'
      - '8001:8001'
      - '8020:8020'
      - '8030:8030'
      - '8040:8040'
    depends_on:
      - ipfs
      - postgres
    environment:
      postgres_host: postgres
      postgres_user: graph-node
      postgres_pass: let-me-in
      postgres_db: graph-node
      ipfs: 'ipfs:5001'
      ethereum: 'reitest:http://127.0.0.1:3030'
      RUST_LOG: info
  ipfs:
    image: ipfs/go-ipfs:v0.4.23
    ports:
      - '5001:5001'
    volumes:
      - ./data/ipfs:/data/ipfs
  postgres:
    image: postgres
    ports:
      - '5432:5432'
    command: ["postgres", "-cshared_preload_libraries=pg_stat_statements"]
    environment:
      POSTGRES_USER: graph-node
      POSTGRES_PASSWORD: let-me-in
      POSTGRES_DB: graph-node
    volumes:
      - ./data/postgres:/var/lib/postgresql/data

Finally, you can start with the following command:

docker-compose up

Wait for a while and you will see the log with the latest block synced:

As you can see, you have a Graph Node running against the REI TestNet. This example is also suitable for mainnet

References

Last updated