Sobre o The Graph
Reading time: 4 min
Esta página explicará o que é o The Graph e como pode começar.
O The Graph é um protocolo descentralizado para indexação e queries de dados de blockchains. O The Graph possibilita a consulta de dados que são difíceis de consultar diretamente.
Projetos com contratos inteligentes complexos, como o e iniciativas de NFTs como o , armazenam dados na blockchain Ethereum, o que torna muito difícil ler qualquer coisa que não seja dados básicos diretamente da blockchain.
No caso do Bored Ape Yacht Club, podemos realizar operações básicas de leitura no , como buscar o dono de um certo Ape, buscar a URI de conteúdo de um Ape com base na sua ID, ou na reserva total. Isto é possível porque estas operações de leitura são programadas diretamente no contrato inteligente, mas consultas e operações no mundo real mais avançadas, como agregação, busca, relacionamentos, e filtragem não-trivial não são possíveis. Por exemplo, se quiséssemos consultar por Apes que são de um certo endereço, e filtrar por uma das suas características, nós não poderíamos pegar essa informação ao interagir diretamente com o próprio contrato.
Para conseguir estes dados, seria necessário processar todo evento de emitido na história, ler os metadados do IPFS usando a ID e o hash IPFS do token, e depois agregá-los. Levariam horas, ou até mesmo dias, para que um aplicativo descentralizado (dApp) executado em um navegador conseguisse uma resposta a estas questões simples.
Também valeria construir o seu próprio servidor, processar as transações lá, salvá-las em um banco de dados, e construir um endpoint de API sobre tudo isso tudo para poder fazer o query dos dados. Porém, esta opção , precisa de manutenção, apresenta um único ponto de falha, e quebra propriedades de segurança importantes obrigatórias para a descentralização.
Indexar dados de blockchain é muito, muito difícil.
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 conceitualmente dificultam a retirada de resultados corretos de queries dos dados da blockchain.
O The Graph fornece uma solução 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 serviço hospedado, e também um protocolo descentralizado com as mesmas capabilidades. Ambos são apoiados pela implementação de código aberto do .
O The Graph aprende quais dados indexar, e como indexar os dados na Ethereum com base em descrições de subgraph — conhecidas como manifests de subgraph. A descrição do subgraph define os contratos inteligentes de interesse para o mesmo, os eventos nestes contratos para prestar atenção, e como mapear dados de evento para dados que o The Graph armazenará no seu banco de dados.
Quando tiver escrito um subgraph manifest
, use o Graph CLI para armazenar a definição no IPFS e mandar o indexador começar a indexar dados para o subgraph.
Este diagrama dá mais detalhes sobre o fluxo de dados quando um manifest de subgraph for lançado, na questão de transações na 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 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.
As seguintes secções explicam em mais detalhes como definir subgraphs, como lançá-los, e como buscar dados dos indexes que o Graph Node constrói.
Antes de começar a escrever o seu próprio subgraph, confira o e explore alguns dos subgraphs que já foram lançados. A página para cada subgraph contém um playground que permite-lhe consultar os dados desse subgraph com queries no GraphQL.