WEB3DEV

Cover image for Criando um Subgrafo para Ethereum a partir de um Contrato Inteligente Existente em Sete Etapas
Paulo Gio
Paulo Gio

Posted on • Atualizado em

Criando um Subgrafo para Ethereum a partir de um Contrato Inteligente Existente em Sete Etapas

Este tutorial mostrará como inicializar, criar e publicar seu subgrafo no Subgraph Studio.

1. Instalar a CLI do Protocolo The Graph

Você precisa ter o yarn ou o npm instalado.

# NPM$ 
npm install -g @graphprotocol/graph-cli

# Yarn$ 
yarn global add @graphprotocol/graph-cli
Enter fullscreen mode Exit fullscreen mode

2. Crie uma conta para seu subgrafo

Acesse o link do The Graph abaixo e crie um subgrafo digitando o nome do subgrafo e selecione uma cadeia na qual deseja implantá-lo.

https://thegraph.com/studio/

3. Criando o subgrafo a partir de um contrato existente

Um subgrafo que será criado e encarregado de indexar todos os eventos em um contrato inteligente existente.

O subgrafo tentará buscar a ABI do contrato do Etherscan. Se não for bem-sucedido, ele retornará à solicitação de um caminho de arquivo local. Um formulário interativo o guiará pelo processo caso algum dos argumentos opcionais esteja ausente.

graph init -- studio <SUBGRAPH_SLUG>
Enter fullscreen mode Exit fullscreen mode

SUBGRAPH_SLUG: o nome do seu subgrafo.

4. Criando um manifesto de subgrafo

O manifesto do subgrafo é armazenado em subgraph.yaml. Ele especifica quais contratos inteligentes seu subgrafo indexa, quais eventos observar e como transferir os dados de evento para as entidades que o nó The Graph mantém.

Nós vamos utilizar o contrato Gravity. O contrato inteligente gerencia avatares de usuários. Sempre que avatares são criados ou atualizados, o contrato emite eventos NewGravatar ou UpdateGravatar.

Este é o arquivo subgraph.yaml do subgrafo de exemplo que indexa o contrato Gravity:

# specVersion: 0.0.1
description: Gravatar for Ethereum
repository: https://github.com/graphprotocol/example-subgraph
schema:
 file: ./schema.graphql
dataSources:
 - kind: ethereum/contract
   name: Gravity
   network: mainnet
   source:
     address: '0x2E645469f354BB4F5c8a05B3b30A929361cf77eC'
     abi: Gravity
     startBlock: 6175244
   mapping:
     kind: ethereum/events
     apiVersion: 0.0.1
     language: wasm/assemblyscript
     entities:
       - Gravatar
     abis:
       - name: Gravity
         file: ./abis/Gravity.json
     eventHandlers:
       - event: NewGravatar(uint256,address,string,string)
         handler: handleNewGravatar
       - event: UpdatedGravatar(uint256,address,string,string)
         handler: handleUpdatedGravatar
     callHandlers:
       - function: createGravatar(string,string)
         handler: handleCreateGravatar
     blockHandlers:
       - function: handleBlock
       - function: handleBlockWithCall
         filter:
           kind: call
     file: ./src/mapping.ts
Enter fullscreen mode Exit fullscreen mode

5. O esquema GraphQL

O esquema do subgrafo está localizado em schema.graphql. Para definir o esquema GraphQL, utilize a linguagem de especificação da interface do GraphQL.

6. Compilando e Construindo

$ graph codegen

$ graph build
Enter fullscreen mode Exit fullscreen mode

7. Autentique e implante seu subgrafo

  • A chave de implantação pode ser encontrada na página do subgrafo no Subgraph Studio.
$ graph auth --studio <CHAVE_DE_IMPLANTAÇÃO>

$ graph deploy --node https://api.thegraph.com/deploy/ --ipfs https://api.thegraph.com/ipfs/ <USERNAME_DO_GITHUB>/<SUBGRAPH_SLUG>
Enter fullscreen mode Exit fullscreen mode

Você será solicitado a dar um nome à versão. É altamente recomendável usar as seguintes convenções para nomear suas versões. Exemplo: 0.0.1, v1, version1.

Conclusão

Com estes sete passos, você deve ser capaz de encontrar o caminho para implantar um subgrafo na rede do The Graph. Se você ficar preso, pode entrar em contato através do meu e-mail "emmanuel.adeojo.ibk@gmail" e eu ficarei feliz em ajudar.

Feliz codificação!

Artigo original publicado por Adeojo Emmanuel. Traduzido por Paulinho Giovannini.

Latest comments (0)