Quick Start
Reading time: 5 min
Learn how to easily publish and query a on The Graph.
You must have and a package manager of your choice (npm
, yarn
or pnpm
) installed to use the Graph CLI. Check for the CLI version.
On your local machine, run one of the following commands:
npm install -g @graphprotocol/graph-cli@latest
yarn global add @graphprotocol/graph-cli
If your contract has events, the init
command will automatically create a scaffold of a subgraph.
Use the following command to create a subgraph in Subgraph Studio using the CLI:
graph init --product subgraph-studio
Subgraph Studio lets you create, manage, deploy, and publish subgraphs, as well as create and manage API keys.
- Go to and connect your wallet.
- Click "Create a Subgraph". It is recommended to name the subgraph in Title Case: "Subgraph Name Chain Name".
For additional information on subgraph creation and the Graph CLI, see .
The following command initializes your subgraph from an existing contract:
graph init --studio <SUBGRAPH_SLUG>
Note: If your contract was verified on Etherscan, then the ABI will automatically be created in the CLI.
You can find commands for your specific subgraph on the subgraph page in .
When you initialize your subgraph, the CLI will ask you for the following information:
- Protocol: Choose the protocol your subgraph will be indexing data from.
- Subgraph slug: Create a name for your subgraph. Your subgraph slug is an identifier for your subgraph.
- Directory to create the subgraph in: Choose your local directory.
- Ethereum network (optional): You may need to specify which EVM-compatible network your subgraph will be indexing data from.
- Contract address: Locate the smart contract address you’d like to query data from.
- ABI: If the ABI is not auto-populated, you will need to input it manually as a JSON file.
- Start Block: You should input the start block to optimize subgraph indexing of blockchain data. Locate the start block by finding the block where your contract was deployed.
- Contract Name: Input the name of your contract.
- Index contract events as entities: It is suggested that you set this to true, as it will automatically add mappings to your subgraph for every emitted event.
- Add another contract (optional): You can add another contract.
See the following screenshot for an example for what to expect when initializing your subgraph:
The init
command in the previous step creates a scaffold subgraph that you can use as a starting point to build your subgraph.
When making changes to the subgraph, you will mainly work with three files:
- Manifest (
subgraph.yaml
) - defines what data sources your subgraph will index. - Schema (
schema.graphql
) - defines what data you wish to retrieve from the subgraph. - AssemblyScript Mappings (
mapping.ts
) - translates data from your data sources to the entities defined in the schema.
For a detailed breakdown on how to write your subgraph, check out .
Remember, deploying is not the same as publishing.
- When you deploy a subgraph, you push it to , where you can test, stage and review it.
- When you publish a subgraph, you are publishing it onchain to the decentralized network.
Once your subgraph is written, run the following commands:
graph codegengraph buildAuthenticate and deploy your subgraph. The deploy key can be found on the subgraph's page in Subgraph Studio.
graph auth --studio <DEPLOY_KEY>graph deploy --studio <SUBGRAPH_SLUG>
- The CLI will ask for a version label.
If you’d like to examine your subgraph before publishing it to the network, you can use to do the following:
-
Run a sample query.
-
Analyze your subgraph in the dashboard to check information.
-
Check the logs on the dashboard to see if there are any errors with your subgraph. The logs of an operational subgraph will look like this:
Publishing a subgraph to the decentralized network makes it available for to begin curating it and to begin indexing it.
- To publish your subgraph, click the Publish button in the dashboard.
- Select the network to which you would like to publish your subgraph.
As of version 0.73.0, you can also publish your subgraph with the Graph CLI.
Open the
graph-cli
.Use the following commands:
graph codegen && graph buildThen,
graph publishA window will open, allowing you to connect your wallet, add metadata, and deploy your finalized subgraph to a network of your choice.
To customize your deployment, see .
To attract indexers to query your subgraph, you should add GRT curation signal to it.
- This action improves quality of service, reduces latency, and enhances network redundancy and availability for your subgraph.
If eligible for indexing rewards, Indexers receive GRT rewards based on the signaled amount.
- It’s recommended to curate at least 3,000 GRT to attract 3 Indexers. Check reward eligibility based on subgraph feature usage and supported networks.
To learn more about curation, read .
To save on gas costs, you can curate your subgraph in the same transaction you publish it by selecting this option:
Now, you can query your subgraph by sending GraphQL queries to its Query URL, which you can find by clicking the Query button.
For more information about querying data from your subgraph, read .