5 minutes
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:
- EVM JSON-RPC
- 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-RPCtrace_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.

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 dograph-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 edição local de um subgraph.
-
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. -
Execute um node IPFS ou use aquele usado pelo The Graph: https://api.thegraph.com/ipfs/
Subgraphs movidos por Substreams
Para integrações do Substreams ou Firehose movidas ao 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.