As the Internet continues to develop, the decentralized web, commonly referred to as web3, is gaining attention. However, accessing and reading blockchain data remains difficult. According to Linea, The Graph solves this problem by providing a decentralized protocol for indexing and querying blockchain data.
Understanding Graphs
The Graph is an indexing protocol designed to make blockchain data easily accessible through an open API known as a subgraph. The protocol leverages the participation of various network contributors who earn GRT, The Graph’s native utility token, in return for their efforts to organize data efficiently.
The main participants in The Graph network are:
- Subgraph developer: Create and publish subgraphs that everyone can access.
- Indexer: It operates nodes to index subgraphs and provide data to consumers.
- Curator: Identify and curate valuable subgraphs for your indexer.
- Delegate: Protect your network by delegating GRT to indexers.
The decentralized nature of The Graph ensures open access to data and fosters innovation and collaboration within the web3 ecosystem.
Creating subgraphs in Linea
Linea’s ecosystem uses The Graph to access blockchain data, increasing transparency and reducing the risk of censorship. Here is a step-by-step guide to building a subgraph in Linea.
Step 0: Create a new subgraph
Start by visiting Subgraph Studio and connecting your wallet. Once connected, select “Create Subgraph”, select Linea as the network, and click Continue.
Step 1: Install the Graph CLI
Install the Graph CLI on your local machine using npm or Yarn.
$ npm install -g @graphprotocol/graph-cli
$ yarn global add @graphprotocol/graph-cli
Step 2: Initialize the subgraph
Initialize a subgraph from an existing contract.
graph init --studio <SUBGRAPH_SLUG>
Provide the necessary information: protocol (choose Ethereum), subgraph slug, local directory, network (Linea or Linea Sepolia), contract address, ABI, starting block, contract name, and whether to index contract events as entities.
Step 3: Building the Subgraph
We modify the scaffold subgraph using three main files:
- Manifest (subgraph.yaml): Defines the data source that the subgraph will index.
- Schema (schema.graphql): Defines the data to retrieve in the subgraph.
- AssemblyScript mapping (mapping.ts): Transforms data from a data source into entities defined in the schema.
See The Graph documentation for detailed instructions.
Step 4: Deploy to Subgraph Studio
Create an AssemblyScript type and compile the subgraph.
$ graph codegen
$ graph build
Authenticate the subgraph and deploy it to graph nodes.
$ graph auth --studio <DEPLOY_KEY>
$ graph deploy --studio <SUBGRAPH_SLUG>
Provide a version label, preferably using semver.
Step 5: Test the subgraph
Test your subgraph by creating a sample query in the Playground section and checking the logs for errors. If necessary, use the GraphiQL playground to query the state of the subgraph.
Step 6: Publish to The Graph’s decentralized network
Deploy and test your subgraph, then publish it to the decentralized network with Subgraph Studio. To keep gas costs down, consider publishing a subgraph on Arbitrum One. Use GRT to manage your subgraphs so they are indexed and instantly queryable.
Step 7: Subgraph Query
Query a subgraph by sending a GraphQL query to the subgraph’s query URL. For more information about querying data, see The Graph’s querying documentation.
Image source: Shutterstock
. . .
tag