Lição: 269: O Protocolo The Graph
O Protocolo The Graph é um protocolo descentralizado de indexação e consulta que permite aos desenvolvedores acessarem dados de blockchain de forma eficiente. Ele serve como uma API descentralizada significativa para aplicativos que operam em tecnologias de blockchain, especialmente no Ethereum. Nesta aula, vamos explorar os principais conceitos do The Graph, entender como criar um subgrafo e realizar consultas utilizando GraphQL.
O que é o The Graph?
O The Graph permite que desenvolvedores indexem dados da blockchain rapidamente e realizem consultas utilizando GraphQL. Os principais componentes do The Graph são:
- Subgrafos: São APIs de código aberto indexadas pelo The Graph e descrevem como ingerir e consultar dados da blockchain.
- GraphQL: Uma linguagem de consulta poderosa para APIs, que permite aos clientes solicitar dados específicos e recebê-los em formato JSON.
Conceitos Principais do The Graph
-
Manifesto do Subgrafo: Um arquivo que define o subgrafo, incluindo a rede (Ethereum, Polygon, etc.), os contratos inteligentes a serem monitorados e os eventos a serem indexados.
-
Mapping: Envolve transformar os dados da blockchain em um formato adequado para consulta. Mappings são escritos em AssemblyScript.
-
Nó Graph: Um servidor que processa o manifesto do subgrafo e executa os mappings para indexar os eventos relevantes da blockchain.
Criando um Subgrafo
Etapa 1: Instalar o CLI do The Graph
Para começar, você precisa instalar o CLI do The Graph. Você pode fazer isso usando npm:
npm install -g @graphprotocol/graph-cli
Etapa 2: Inicializar um Novo Subgrafo
Crie um novo subgrafo executando o seguinte comando e siga as instruções:
graph init --from-contract <ENDEREÇO_DO_CONTRATO> <NOME_DO_SUBGRAFO>
Isso gerará uma estrutura básica para seu subgrafo, incluindo um manifesto subgraph.yaml
.
Etapa 3: Definir o Manifesto do Subgrafo
No seu subgraph.yaml
, defina a rede e os eventos do contrato inteligente que você deseja monitorar:
subgraph:
name: exemplo/subgrafo
protocol: ethereum
network: mainnet
source:
address: "0xSeuEnderecoDeContrato"
startBlock: 12345678
mapping:
kind: replacement
apiVersion: 0.0.2
entities:
- ExemploEntidade
abis:
- name: Exemplo
file: ./abis/Exemplo.json
eventHandlers:
- event: ExemploEvento(indexed address from, uint256 value)
handler: handleExemploEvento
Etapa 4: Criar Mappings
Crie um arquivo src/mapping.ts
onde você tratará os eventos definidos no manifesto. Aqui está um exemplo:
import { BigInt } from "@graphprotocol/graph-ts";
import { ExemploEvento } from "../generated/Exemplo/Exemplo";
import { ExemploEntidade } from "../generated/schema";
export function handleExemploEvento(event: ExemploEvento): void {
let exemploEntidade = new ExemploEntidade(event.transaction.hash.toHex() + "-" + event.logIndex.toString());
exemploEntidade.from = event.params.from;
exemploEntidade.value = event.params.value;
exemploEntidade.save();
}
Etapa 5: Compilar e Implantar Seu Subgrafo
Após definir seu subgrafo e os mappings, você pode compilar e implantar seu subgrafo utilizando os seguintes comandos:
graph codegen
graph build
graph deploy --product hosted-service <USUÁRIO_GITHUB>/<NOME_DO_SUBGRAFO>
Consultando Seu Subgrafo
Uma vez que seu subgrafo esteja implantado, você pode consultá-lo utilizando GraphQL. Por exemplo, para obter todas as instâncias de ExemploEntidade
, use a seguinte consulta:
{
exemploEntidades {
id
from
value
}
}
Conclusão
O Protocolo The Graph simplifica significativamente o processo de acesso a dados de blockchain, permitindo que os desenvolvedores se concentrem na construção de suas aplicações. Com a capacidade de criar subgrafos e realizar consultas eficientes utilizando GraphQL, o The Graph se torna uma ferramenta essencial para desenvolvedores de dApps. À medida que a adoção de tecnologias descentralizadas cresce, dominar o The Graph será uma habilidade inestimável no kit de ferramentas de desenvolvimento de blockchain.