Docs
Buscar⌘ K
  • Início
  • Sobre o The Graph
  • Redes Apoiadas
  • Contratos de Protocolo
  • Subgraphs
    • Substreams
      • Token API
        • Hypergraph
          • 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