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