4 minutes
Sobre o The Graph
O que é o The Graph?
O The Graph é um protocolo descentralizado poderoso que permite a consulta e indexação rápida de dados em blockchain. Ele simplifica o processo complexo de queries de dados de blockchain, o que facilita e acelera a programação de dApps.
Entenda o Básico
Projetos com contratos inteligentes complexos, como o Uniswap e iniciativas de NFTs como o Bored Ape Yacht Club, armazenam dados na blockchain Ethereum, o que torna muito difícil ler qualquer coisa que não seja dados básicos diretamente da blockchain.
Desafios sem o The Graph
No caso do exemplo listado acima, o Bored Ape Yacht Club, é possível realizar operações básicas no contrato. Pode-se ver o dono de um certo Ape, ler a URI de um Ape com base na sua ID, ou ler a reserva total.
-
Isto pode ser feito porque estas operações de leitura são programadas diretamente no próprio contrato inteligente. Porém, queries e operações mais avançadas e específicas do mundo real, como agregação, busca, relacionamentos e filtros não triviais, não são possíveis.
-
Por exemplo, se alguém quisesse ver Apes em posse de um endereço específico e refinar a sua busca com base numa característica particular, não seria possível obter aquela informação ao interagir diretamente com o próprio contrato.
-
Para conseguir mais dados, seria necessário processar todo evento de
transfer
emitido na história, ler os metadados do IPFS usando a ID e o hash IPFS do token, e depois agregá-los.
Por que isto é um problema?
Levariam horas, ou até mesmo dias, para que um aplicativo descentralizado (dApp) executado em um navegador conseguisse uma resposta a estas questões simples.
Alternatively, you have the option to set up your own server, process the transactions, store them in a database, and create an API endpoint to query the data. However, this option is resource intensive, needs maintenance, presents a single point of failure, and breaks important security properties required for decentralization.
Propriedades de blockchain, como finalidade, reorganizações de chain, ou blocos uncle, complicam ainda mais este processo, e não apenas o tornam longo e cansativo, mas dificultam conceitualmente a retirada de resultados precisos de queries dos dados da blockchain.
The Graph Providencia uma Solução
O The Graph resolve este desafio com um protocolo descentralizado que indexa e permite queries eficientes e de alto desempenho de dados de blockchain. Estas APIs (“subgraphs” indexados) podem então ser consultados num query com uma API GraphQL padrão.
Hoje, há um protocolo descentralizado apoiado pela implementação de código aberto do Graph Node que facilita este processo.
Como o The Graph Funciona
Indexar dados em blockchain é um processo difícil, mas facilitado pelo The Graph. O The Graph aprende como indexar dados no Ethereum com o uso de subgraphs. Subgraphs são APIs personalizadas construídas com dados de blockchain, que extraem, processam e armazenam dados de uma blockchain para poderem ser consultadas suavemente via GraphQL.
Especificações
-
O The Graph usa descrições de subgraph, conhecidas como “manifests de subgraph” dentro do subgraph.
-
A descrição do subgraph contorna os contratos inteligentes de interesse para o mesmo, os eventos dentro destes contratos para focar, e como mapear dados de evento para dados que o The Graph armazenará no seu banco de dados.
-
Ao criar um subgraph, primeiro é necessário escrever um manifest de subgraph.
-
Após escrever o
subgraph manifest
, é possível usar o Graph CLI para armazenar a definição no IPFS e instruir o Indexador para começar a indexar dados para o subgraph.
O diagrama abaixo dá informações mais detalhadas sobre o fluxo de dados quando um manifest de subgraph for lançado com transações no Ethereum.

O fluxo segue estes passos:
- Um dApp adiciona dados à Ethereum através de uma transação em contrato inteligente.
- O contrato inteligente emite um ou mais eventos enquanto processa a transação.
- O Graph Node escaneia continuamente a Ethereum por novos blocos e os dados que podem conter para o seu subgraph.
- O Graph Node encontra eventos na Ethereum para o seu subgraph nestes blocos e executa os handlers de mapeamento que forneceu. O mapeamento é um módulo WASM que cria ou atualiza as entidades de dados que o Graph Node armazena em resposta a eventos na Ethereum.
- O dApp consulta o Graph Node para dados indexados da blockchain, através do endpoint GraphQL do node. O Graph Node, por sua vez, traduz os queries GraphQL em queries para o seu armazenamento subjacente de dados para poder retirar estes dados, com o uso das capacidades de indexação do armazenamento. O dApp exibe estes dados em uma interface rica para utilizadores finais, que eles usam para emitir novas transações na Ethereum. E o ciclo se repete.
Próximos Passos
As seguintes secções providenciam um olhar mais íntimo nos subgraphs, na sua publicação e no query de dados.
Antes de escrever o seu próprio subgraph, é recomendado explorar o Graph Explorer e revir alguns dos subgraphs já publicados. A página de todo subgraph inclui um ambiente de teste em GraphQL que lhe permite consultar os dados dele.