4 minutes
Intégration d'une Nouvelle Chaîne
Chains can bring Subgraph support to their ecosystem by starting a new graph-node
integration. Subgraphs are a powerful indexing tool opening a world of possibilities for developers. Graph Node already indexes data from the chains listed here. If you are interested in a new integration, there are 2 integration strategies:
- EVM JSON-RPC
- Firehose : toutes les solutions d’intégration Firehose incluent Substreams, un moteur de streaming à grande échelle basé sur Firehose avec prise en charge native de
graph-node
, permettant des transformations parallélisées.
Notez que même si l’approche recommandée consiste à développer un nouveau Firehose pour toutes les nouvelles chaînes, elle n’est requise que pour les chaînes non EVM.
Stratégies d’intégration
1. EVM JSON-RPC
Si la blockchain est équivalente à EVM et que le client/nœud expose l’API JSON-RPC EVM standard, Graph Node devrait pouvoir indexer la nouvelle chaîne.
Tester un EVM JSON-RPC
Afin que Graph Node puisse ingérer des données provenant d’une chaîne EVM, le nœud RPC doit exposer les méthodes JSON-RPC EVM suivantes :
eth_getLogs
eth_call
(pour les blocs historiques, avec EIP-1898 - nécessite un nœud d’archivage)eth_getBlockByNumber
eth_getBlockByHash
net_version
eth_getTransactionReceipt
, in a JSON-RPC batch requesttrace_filter
(traçage limité et optionnellement requis pour Graph Node)
2. Intégration Firehose
Firehose est une couche d’extraction de nouvelle génération. Elle collecte l’historique dans des fichiers plats et des flux en temps réel. La technologie Firehose remplace ces appels d’API d’interrogation par un flux de données utilisant un modèle push qui envoie les données au nœud d’indexation plus rapidement. Cela permet d’augmenter la vitesse de synchronisation et d’indexation.
REMARQUE : toutes les intégrations effectuées par l’équipe StreamingFast incluent la maintenance du protocole de réplication Firehose dans la base de code de la chaîne. StreamingFast suit toutes les modifications et publie les binaires lorsque vous modifiez le code et lorsque StreamingFast modifie le code. Cela comprend la publication des binaires Firehose/Substreams pour le protocole, la maintenance des modules Substreams pour le modèle de bloc de la chaîne et la publication des binaires pour le nœud de blockchain avec instrumentation si nécessaire.
Intégration des Chaînes Non-EVM
L’approche principale pour intégrer Firehose dans ces chaînes repose sur une stratégie de polling RPC. L’algorithme de polling prédit l’arrivée des nouveaux blocs et ajuste dynamiquement le taux d’interrogation, ce qui garantit une solution à très faible latence et efficace. Pour obtenir de l’aide concernant l’intégration et la maintenance du Firehose, contactez l’équipe StreamingFast . Les nouvelles chaînes et leurs intégrateurs apprécieront la gestion des forks et les capacités massives d’indexation parallélisée que Firehose et Substreams apportent à leur écosystème.
Instrumentation spécifique pour les Blockchains EVM (geth
)
Pour les chaînes EVM, il existe un niveau de données plus approfondi qui peut être atteint grâce à geth
live-tracer, une collaboration entre Go-Ethereum et StreamingFast, dans la construction d’un système de traçage de transaction riche et à haut débit. Le Live Tracer est la solution la plus complète, qui permet d’obtenir des détails sur les blocs Extended. Cela permet de nouveaux paradigmes d’indexation, comme la recherche de modèles d’événements basés sur des changements d’état, des appels, des arbres d’appels parents, ou le déclenchement d’événements basés sur des changements de variables réelles dans un contrat intelligent.

REMARQUE : cette amélioration du Firehose nécessite que les chaînes utilisent le moteur EVM geth version 1.13.0
et supérieur.
Considérations sur EVM - Différence entre JSON-RPC et Firehose
While the JSON-RPC and Firehose are both suitable for Subgraphs, a Firehose is always required for developers wanting to build with Substreams. Supporting Substreams allows developers to build Substreams-powered Subgraphs for the new chain, and has the potential to improve the performance of your Subgraphs. Additionally, Firehose — as a drop-in replacement for the JSON-RPC extraction layer of graph-node
— reduces by 90% the number of RPC calls required for general indexing.
- All those
getLogs
calls and roundtrips get replaced by a single stream arriving into the heart ofgraph-node
; a single block model for all Subgraphs it processes.
NOTE: A Firehose-based integration for EVM chains will still require Indexers to run the chain’s archive RPC node to properly index Subgraphs. This is due to the Firehose’s inability to provide smart contract state typically accessible by the eth_call
RPC method. (It’s worth reminding that eth_calls
are not a good practice for developers)
Configuration Graph Node
Configuring Graph Node is as easy as preparing your local environment. Once your local environment is set, you can test the integration by locally deploying a Subgraph.
-
Modifier [cette ligne] (https://github.com/graphprotocol/graph-node/blob/master/docker/docker-compose.yml#L22) pour inclure le nouveau nom du réseau et l’URL JSON-RPC ou Firehose de l’EVM.
Ne changez pas le nom de la var env elle-même. Il doit rester
ethereum
même si le nom du réseau est différent. -
Exécutez un nœud IPFS ou utilisez celui utilisé par The Graph : https://ipfs.thegraph.com
Subgraphs alimentés par des substreams
For StreamingFast-led Firehose/Substreams integrations, basic support for foundational Substreams modules (e.g. decoded transactions, logs and smart-contract events) and Substreams codegen tools are included. These tools enable the ability to enable Substreams-powered Subgraphs. Follow the How-To Guide and run substreams codegen subgraph
to experience the codegen tools for yourself.