Docs
Buscar⌘ K
  • Início
  • Sobre o The Graph
  • Redes Apoiadas
  • Contratos de Protocolo
  • Subgraphs
    • Substreams
      • Token API
        • AI Suite
          • Indexação
            • Recursos
              Indexação

              5 minutos

              Integração de Chains Novas

              Chains podem trazer apoio a subgraphs para os seus ecossistemas, ao iniciar uma nova integração de graph-node. Subgraphs são ferramentas poderosas de indexação que abrem infinitas possibilidades a programadores. O Graph Node já indexa dados das chains listadas aqui. Caso tenha interesse numa nova integração, há 2 estratégias para ela:

              1. EVM JSON-RPC
              2. Firehose: Todas as soluções de integração do Firehose incluem Substreams, um motor de transmissão de grande escala com base no Firehose com apoio nativo ao graph-node, o que permite transformações paralelizadas.

              Note que enquanto a abordagem recomendada é o desenvolvimento de um novo Firehose para todas as chains novas, ele só é requerido para chains que não sejam EVMs.

              Estratégias de Integração

              1. EVM JSON-RPC

              Se a blockchain for equivalente a EVM e o cliente/node expor a API padrão de JSON-RPC, o Graph Node deve poder indexar a nova chain.

              Como testar uma EVM JSON-RPC

              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 (tracing limitado, e opcionalmente necessário, para o Graph Node)

              2. Integração do Firehose

              O Firehose⁠ é uma camada de extração de última geração, que coleta históricos em streams e arquivos planos em tempo real. A tecnologia do Firehose substitui estas chamadas de API com um fluxo de dados que utilizam um modelo de empurrão que envia dados ao node de indexação mais rapidamente. Isto ajuda a aumentar a velocidade da sincronização e da indexação.

              NOTA: Todas as integrações feitas pela equipa da StreamingFast incluem manutenção para o protocolo de réplica do Firehose no banco de código da chain. O StreamingFast rastreia todas as mudanças e lança binários quando o código é mudado, pelo programador ou pela StreamingFast. Isto inclui o lançamento de binários do Firehose/Substreams para o protocolo, a manutenção dos módulos de Substreams para o modelo de bloco da chain, e o lançamento de binários para o node da blockchain com a instrumentação, caso necessária.

              Integração para Chains sem ser EVM (Máquina Virtual de Ethereum)

              O método principal de integrar o Firehose a chains é uma estratégia de polling de RPC. O nosso algoritmo de polling preverá quando um bloco novo irá chegar, e aumentará o ritmo em que ele verifica por um novo bloco quando se aproximar daquela hora, o que o faz uma solução de baixa latência muito eficiente. Para ajuda com a integração e a manutenção do Firehose, contacte a equipa do StreamingFast⁠. Novas chains e os seus integrantes apreciarão a consciência de fork⁠ e as capacidades imensas de indexação paralelizada que o Firehose e os Substreams trazem ao seu ecossistema.

              Instrumentação Específica do Firehose para chains EVM (geth)

              Para chains EVM, há um nível mais profundo de dados que podem ser alcançados através do live-tracer⁠ geth, uma colaboração entre a Go-Ethereum e a StreamingFast, na construção de um sistema de traços rico e de alto throughput. O Live Tracer é a solução mais compreensiva, o que resulta em detalhes de blocos Estendidos⁠. Isto permite novos paradigmas de indexação, como correspondência de padrões de eventos com base em mudanças no estado, chamadas, árvores de chamadas de parentes, ou o acionamento de eventos com base nas mudanças nas próprias variáveis em um contrato inteligente.

              Bloco base x bloco Estendido

              NOTA: Esta melhoria no Firehose requer que chains usem o motor de EVM na versão geth 1.13.0 adiante.

              Considerações de EVM - Diferença entre JSON-RPC e Firehose

              Enquanto ambos o JSON-RPC e o Firehose são próprios para subgraphs, um Firehose é sempre necessário para programadores que querem construir com Substreams⁠. Apoiar o Substreams permite que programadores construam subgraphs movidos a Substreams para a nova chain, e tem o potencial de melhorar o desempenho dos seus subgraphs. Além disto, o Firehose — como um substituto pronto para a camada de extração JSON-RPC do graph-node — reduz em 90% o número de RPCs (chamadas de procedimento remoto) exigidas para indexação geral.

              • Todas essas chamadas getLogs e roundtrips são substituídas por um único fluxo que chega no coração do graph-node, um modelo de bloco único para todos os subgraphs que processa.

              NOTA: Uma integração baseada no Firehose para chains EVM ainda exigirá que os Indexadores executem o node RPC de arquivo da chain para indexar subgraphs corretamente. Isto é porque o Firehose não pode fornecer 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 Configurar um Graph Node

              Configurar um Graph Node é tão fácil quanto preparar o seu ambiente local. Quando o seu ambiente local estiver pronto, será possível testar a integração com a implantação local de um subgraph.

              1. Clone o Graph Node⁠

              2. Modifique esta linha⁠ para incluir o nome da nova rede e a URL do JSON-RPC da EVM; ou uma compatível com o Firehose

                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://ipfs.thegraph.com⁠

              Subgraphs movidos por Substreams

              Para integrações do Substreams ou Firehose movidas pelo StreamingFast, são inclusos: apoio básico a módulos do Substreams (por exemplo: transações, logs, e eventos de contrato inteligente decodificados); e ferramentas de geração de código do Substreams. Estas ferramentas permitem a habilidade de ativar subgraphs movidos pelo Substreams. Siga o Passo-a-Passo⁠ e execute substreams codegen subgraph para sentir um gostinho das ferramentas.

              ⁠Editar no GitHub⁠

              Visão Geral do Processo de Integração de ChainsGlossário
              Nesta página
              • Estratégias de Integração
              • 1. EVM JSON-RPC
              • 2. Integração do Firehose
              • Considerações de EVM - Diferença entre JSON-RPC e Firehose
              • Como Configurar um Graph Node
              • Subgraphs movidos por Substreams
              The GraphStatusRede de TestesAtivos de MarcaFórumSegurançaPolítica de PrivacidadeAcordo de Serviço