2

The Graph is a protocol for building decentralized applications (dApps) quickly on Ethereum and IPFS using GraphQL.

Graph Node is an open source Rust implementation that event sources the Ethereum blockchain to deterministically update a data store that can be queried via the GraphQL endpoint.

The error when trying to deploy to ShimmerEVM is the the following:

{"jsonrpc":"2.0","id":1,"error":{"code":-32000,"message":"gas limit exceeds maximum allowed"}}

What is the way to get a graph node for ShimmerEVM?

1 Answer 1

2

If you are getting an error like

{"jsonrpc":"2.0","id":1,"error":{"code":-32000,"message":"gas limit exceeds maximum allowed"}}

There is a modified version with a small tweak to avoid the gas that the graph node has defined per default.

https://hub.docker.com/r/deeprfinance/graph-node

We have been using it for 3 different projects that require several subgraphs and it works like a charm.

Hope this helps 🙂

Here are the instructions from the forks README:

Graph Node Docker Image

Preconfigured Docker image for running a Graph Node.

Usage

docker run -it \
  -e postgres_host=<HOST> \
  -e postgres_port=<PORT> \
  -e postgres_user=<USER> \
  -e postgres_pass=<PASSWORD> \
  -e postgres_db=<DBNAME> \
  -e ipfs=<HOST>:<PORT> \
  -e ethereum=<NETWORK_NAME>:<ETHEREUM_RPC_URL> \
  graphprotocol/graph-node:latest

Example usage

docker run -it \
  -e postgres_host=host.docker.internal \
  -e postgres_port=5432 \
  -e postgres_user=graph-node \
  -e postgres_pass=oh-hello \
  -e postgres_db=graph-node \
  -e ipfs=host.docker.internal:5001 \
  -e ethereum=mainnet:http://localhost:8545/ \
  graphprotocol/graph-node:latest

Docker Compose

The Docker Compose setup requires an Ethereum network name and node to connect to. By default, it will use mainnet:http://host.docker.internal:8545 in order to connect to an Ethereum node running on your host machine. You can replace this with anything else in docker-compose.yaml.

After you have set up an Ethereum node—e.g. Ganache or Parity—simply clone this repository and run

docker-compose up

This will start IPFS, Postgres and Graph Node in Docker and create persistent data directories for IPFS and Postgres in ./data/ipfs and ./data/postgres. You can access these via:

  • Graph Node:
    • GraphiQL: http://localhost:8000/
    • HTTP: http://localhost:8000/subgraphs/name/<subgraph-name>
    • WebSockets: ws://localhost:8001/subgraphs/name/<subgraph-name>
    • Admin: http://localhost:8020/
  • IPFS:
    • 127.0.0.1:5001 or /ip4/127.0.0.1/tcp/5001
  • Postgres:
    • postgresql://graph-node:let-me-in@localhost:5432/graph-node

Once this is up and running, you can use graph-cli to create and deploy your subgraph to the running Graph Node.

Running Graph Node on an Macbook M1

We do not currently build native images for Macbook M1, which can lead to processes being killed due to out-of-memory errors (code 137). Based on the example docker-compose.yml is possible to rebuild the image for your M1 by running the following, then running docker-compose up as normal:

Important Increase memory limits for the docker engine running on your machine. Otherwise docker build command will fail due to out of memory error. To do that, open docker-desktop and go to Resources/advanced/memory.

# Remove the original image
docker rmi graphprotocol/graph-node:latest

# Build the image
./docker/build.sh

# Tag the newly created image
docker tag graph-node graphprotocol/graph-node:latest

Source: https://github.com/nakamaio/graph-node/tree/master/docker

Credit goes to Carpincho from Nakama on the Touchpoint Discord

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.