The Graph Network [Part - II] - Deploying the Subgraph

Zainab Hasan   |   

Sep 18, 2020

Sep 18, 2020

Introduction:

In the Introduction to The Graph network part I, we learned about The Graph network, subgraphs, and how The Graph network is intended to operate in the future.

In this part, we’ll be looking at how to deploy a subgraph and how to query it.

However we won’t be creating our own node, we will be using the hosting service provided by The Graph.

Using Hosting Service Of The Graph:

Before we create a subgraph, we need a place for it to exist on, in our case we are using the hosting service of The Graph network. 

Create Account:

In order to do that the first important thing is having an account on graph explorer.

Hosting service of the The Graph

Just sign in to your GitHub account and click sign up with Github.

After you sign up, go to the dashboard.

Hosting service of the The Graph

Add a subgraph:

Hosting service of the The Graph

To add a subgraph, click on the add subgraph button.

You will be prompted to a page like the following snippet.

Hosting service of the The Graph

I’ll explain the relevant fields only.

  • Subgraph Name: This is the name of the subgraph, once named, you can't change it.
  • Account: As you probably know the Github can have a personal account or organizational accounts, you can toggle between those here.
  • Subtitle: Just add little information regarding the subgraph. This field is necessary,

Then click create subgraph.

This way we have an end-point to create the subgraph on.

Now you are all set up on The Graph Networks side, we will now move to our system’s terminal and proceed with deploying the subgraph from there.

Deploying the Subgraph:

From here on all commands are to be entered in your system terminal.

Installing The Graph cli

On your system, install the cli globally using either yarn or npm

$ npm install -g @graphprotocol/graph-cli

$ yarn global add @graphprotocol/graph-cli

There are instances when installation from yarn globally doesn't work.

Just use

$ export PATH="$(yarn global bin):$PATH"

Initiating the Graph

To create the graph, run the following command

$ graph init

Then the console will prompt for information.

  • Subgraph Name: This is the name of the subgraph.should be identical to the one entered on the dashboard preceding your GitHub username.
  • Directory to create the subgraph in: This is the directory name.
  • Ethereum network: The Graph network supports multiple ethereum networks such as mainnet, kovan, rinkeby, ropsten, goerli, and poa-core. In this field just choose the one your contract is on.
  • Contract Address: Enter your contract address here. I used a dummy address

After you enter the relevant data, the cli will fetch the ABI from etherscan, You can enter the local path of ABI as well.

The end result will be as follows:

Deploying the Subgraph

Understanding the file structure:

Once the subgraph is initiated, default files will show up in your directory.

It consists of:

  • Schema.graphQL: Define the entities and their attributes in this file.
  • Subgraph.yaml: This file consists of all the information regarding your project, like network, contract address, start block, event handlers, call handlers, block handlers, and data sources.
  • src/mapping.ts: In this file, you create the logic for event handling, block handling, and call handling. 

After you edit the schema and subgraph.yaml file, use the command 

$ yarn codegen

This command will generate or update the auto-generated files

Then make relevant changes to the mapping file.

To save those changes run

$ yarn build

Deploying the Subgraph:

To deploy the subgraph first we need to authenticate with the hosted service. To do that copy the access token from the dashboard.

Deploying the Subgraph

Then run the following command

$ graph auth https://api.thegraph.com/deploy/ <your access token>

Go inside your subgraph directory by simply running

$ cd <directory name>

Then a simple command will deploy the subgraph

$ yarn deploy 

Keeping track of progress:

Once a subgraph is deployed, the graph node will sync, the progress can be tracked via the dashboard.

This syncing starts from the genesis block however it is a more practical approach to give start block property, in this way the subgraph will start syncing from the starting block to the recently mined blocks. 

Deploying the Subgraph

Redeploying the subgraph:

If you make a change in the subgraph files, you can redeploy it on the same endpoint by using the same command of:

$ yarn deploy

Subgraph Versions:

When a subgraph is deployed for the first time, it has no version, however, when subgraphs are updated they exist in two states. The current version holds the initial state of the subgraph. While the updating / syncing version falls under the pending version category. 

Querying the Subgraph:

GraphQL is used to query the subgraph.

You can query any subgraph you own, or the subgraphs lying on the explorer. You can even query the subgraphs which aren’t on explorer, all you need is the Query link.

Deploying the Subgraph

In the above snippet, a simple query to fetch all balances and their id where balance is greater than 0 is taking place. The results can be seen as well. In the schema column, lies the entities present in your schema. 

In cli installation, I mentioned that you can install it using either yarn or npm. But The Graph installs dependency using yarn, which is why, even if you install the package using npm, to deploy and build subgraph you still have to use the yarn package. 

Conclusion:

This article covers all you need to know about deploying the subgraph. Now you can create and deploy subgraphs on any contract of your liking. 

Uniswap, Airswap, Opium Network, Sabier, and many other services hosted their subgraphs on The Graphs hosting service as well.

Xord will help you integrate your business processes with Blockchain technology. Follow the link to connect with us: https://xord.solutions/contact/

Written by

Researcher. Blockchain Enthusiast. ZK Maximalist. Interested in scalability and privacy-preserving.

Similar Articles

January 9, 2021
Author: Zainab Hasan
January 28, 2021
Author: Zainab Hasan
March 15, 2021
Author: Zainab Hasan
1 2 3 16

Get notified on our latest Web3 researches and catch Xord at a glance.

    By checking this box , I agree to receive email communication from Xord.