Integração de Novas Redes

Reading time: 4 min

Atualmente, Graph Nodes podem indexar dados dos seguintes tipos de chain:

Se tiver interesse em qualquer destas chains, a integração será uma questão de configuração e testes do Graph Node.

Caso tenha interesse num tipo diferente de chain, será necessária a criação de uma integração nova com o Graph Node. Recomendamos programar um novo Firehose para a chain em questão e então a integração daquele Firehose com o Graph Node. Mais informações abaixo.

1. EVM JSON-RPC

Se a blockchain for equivalente à EVM, e o cliente/node expor a API EVM JSON-RPC, o Graph Node deve ser capaz de indexar a nova chain. Para mais informações, confira Como testar uma EVM JSON-RPC.

2. Firehose

Para chains que não são baseadas em EVM, o Graph Node deverá ingerir dados de blockchain através da gRPC e definições de tipos conhecidas. Isto pode ser feito através do Firehose, uma nova tecnologia desenvolvida pelo StreamingFast que providencia uma solução de indexação de blockchain altamente escalável com o uso de uma abordagem baseada em arquivos e que prioriza a transmissão de dados. Contacte a equipe do StreamingFast caso precise de ajuda com a programação do Firehose.

Diferenças entre EVM JSON-RPC e Firehose

Link para esta seção

Enquanto os dois são aptos para subgraphs, um Firehose é sempre exigido para programadores que querem construir com Substreams, como a construção de subgraphs movidos a Substreams. Além disso, o Firehose gera velocidades de indexação mais rápidas em comparação ao JSON-RPC.

Novos integradores de chain EVM também podem considerar a abordagem com base no Firehose, com consideração aos benefícios do substreams e as suas imensas capacidades paralelas de indexação. Apoiar ambos permite que programadores escolham entre a construção de substreams ou subgraphs para a nova chain.

NOTA: Uma integração baseada no Firehose para chains EVM ainda exigirá que Indexadores executem o node RPC de arquivo da chain para indexar subgraphs corretamente. Isto se deve à inabilidade do Firehose para providenciar estados de contratos inteligentes que são tipicamente acessíveis pelo método RPC eth_call. (Vale lembrar que eth_calls não são uma boa prática para programadores)


Como testar uma EVM JSON-RPC

Link para esta seção

Para que o Graph Node possa ingerir dados de uma chain EVM, o node RPC deve expor os seguintes métodos em EVM JSON-RPC:

  • eth_getLogs
  • eth_call _(para blocos históricos, com EIP-1898 - requer node de arquivo):
  • eth_getBlockByNumber
  • eth_getBlockByHash
  • net_version
  • eth_getTransactionReceipt, em um pedido conjunto em JSON-RPC
  • trace_filter (opcional, para que o Graph Node tenha apoio a call handlers)

Configuração do Graph Node

Link para esta seção

Primeiro, prepare o seu ambiente local

  1. Clone o Graph Node
  2. Modifique esta linha para ela incluir o nome da nova rede e a URL do EVM JSON-RPC

    Não mude o nome do env var. Ele deve permanecer como ethereum mesmo se o nome da rede for diferente.

  3. Execute um node IPFS ou use aquele usado pelo The Graph: https://api.thegraph.com/ipfs/

Teste a integração com o lançamento local de um subgraph

  1. Instale o graph-cli
  2. Crie um subgraph de exemplo simples. Aqui estão algumas opções:
    1. O contrato inteligente e o subgraph Gravitar pré-inclusos são bons para começar
    2. Inicie um subgraph local de qualquer contrato inteligente existente ou de um ambiente de programação em solidity com o uso do Hardhat com um plugin do Graph
  3. Adapte o subgraph.yaml resultante com a mudança do dataSources.network para o mesmo nome passado anteriormente ao Graph Node.
  4. Crie o seu subgraph no Graph Node: graph create $SUBGRAPH_NAME --node $GRAPH_NODE_ENDPOINT
  5. Publique o seu subgraph no Graph Node: graph deploy $SUBGRAPH_NAME --ipfs $IPFS_ENDPOINT --node $GRAPH_NODE_ENDPOINT

O Graph Node deve então sincronizar o subgraph lançado caso não haja erros. Dê um tempo para que ele sincronize, e depois envie alguns queries em GraphQL ao endpoint da API produzido pelos logs.


Integração de uma nova chain com o Firehose

Link para esta seção

Integrar uma nova chain também é possível com a abordagem do Firehose. Esta é, atualmente, a melhor opção para chains não-EVM, e necessária para o apoio do substreams. Há mais documentações sobre como o Firehose funciona, como adicionar apoio ao Firehose para uma nova chain, e como integrá-la com o Graph Node. Documentos recomendados para integradores:

  1. Documentos gerais sobre o Firehose
  2. Como adicionar apoio do Firehose a uma nova chain
  3. Integração do Graph Node com uma nova chain através do Firehose
Editar página

Anterior
Visão Geral do Processo de Integração de Chains
Próximo
Firehose
Editar página