Intégration de nouveaux réseaux

Reading time: 4 min

Graph Node peut actuellement indexer les données des types de chaînes suivants :

Si l'une de ces chaînes vous intéresse, l'intégration est une question de configuration et de test de Graph Node.

If you are interested in a different chain type, a new integration with Graph Node must be built. Our recommended approach is developing a new Firehose for the chain in question and then the integration of that Firehose with Graph Node. More info below.

1. EVM JSON-RPC

Si la blockchain est équivalente à EVM et que le client/nœud expose l'API EVM JSON-RPC standard, Graph Node devrait pouvoir indexer la nouvelle chaîne. Pour plus d'informations, reportez-vous à [Test d'un EVM JSON-RPC] (new-chain-integration#testing-an-evm-json-rpc).

2. Firehose

Pour les chaînes non basées sur EVM, Graph Node doit ingérer des données de blockchain via gRPC et des définitions de type connues. Cela peut être fait via Firehose, une nouvelle technologie développée par StreamingFast qui fournit une solution de blockchain d'indexation hautement évolutive utilisant un système de streaming et de fichiers basé sur des fichiers. première approche. Contactez l'équipe StreamingFast si vous avez besoin d'aide pour le développement de Firehose.

Différence entre EVM JSON-RPC et Firehose

Lien vers cette section

Bien que les deux conviennent aux subgraphs, un Firehose est toujours requis pour les développeurs souhaitant construire avec Substreams, comme la construction de Substreams-powered subgraphs. De plus, Firehose permet des vitesses d'indexation améliorées par rapport à JSON-RPC.

Les nouveaux intégrateurs de chaîne EVM peuvent également envisager l'approche basée sur Firehose, compte tenu des avantages des sous-flux et de ses capacités d'indexation parallélisées massives. La prise en charge des deux permet aux développeurs de choisir entre la création de sous-flux ou de subgraphs pour la nouvelle chaîne.

REMARQUE : Une intégration basée sur Firehose pour les chaînes EVM nécessitera toujours que les indexeurs exécutent le nœud RPC d'archive de la chaîne pour indexer correctement les subgraph. Cela est dû à l'incapacité de Firehose à fournir un état de contrat intelligent généralement accessible par la méthode RPC eth_call. (Il convient de rappeler que les eth_calls ne sont pas une bonne pratique pour les développeurs)


Tester un EVM JSON-RPC

Lien vers cette section

Pour que Graph Node puisse ingérer des données à partir d'une chaîne EVM, le nœud RPC doit exposer les méthodes EVM JSON RPC suivantes :

  • eth_getLogs
  • eth_call _(for historical blocks, with EIP-1898 - requires archive node):
  • eth_getBlockByNumber
  • eth_getBlockByHash
  • net_version
  • eth_getTransactionReceipt, in a JSON-RPC batch request
  • trace_filter (optionally required for Graph Node to support call handlers)

Configuration Graph Node

Lien vers cette section

Commencez par préparer votre environnement local

  1. Clone Graph Node
  2. Modifiez cette ligne pour inclure le nouveau nom de réseau et l'URL compatible avec le RPC JSON EVM

    Ne modifiez pas le nom de la variable d'environnement lui-même. Il doit rester « Ethereum » même si le nom du réseau est différent.

  3. Exécutez un nœud IPFS ou utilisez celui utilisé par The Graph : https://api.thegraph.com/ipfs/

Testez l'intégration en déployant localement un subgraph

  1. Install graph-cli
  2. Créez un exemple de subgraph simple. Certaines options sont ci-dessous :
    1. Le contrat intelligent et le subgraph pré-emballés Gravitar sont un bon point de départ
    2. Amorcez un subgraph local à partir de n'importe quel contrat intelligent ou environnement de développement Solidity existant en utilisant Hardhat avec un plugin Graph
  3. Adapt the resulting subgraph.yaml by changing dataSources.network to the same name previously passed on to Graph Node.
  4. Créez votre subgraph dans Graph Node : graph create $SUBGRAPH_NAME --node $GRAPH_NODE_ENDPOINT
  5. Publiez votre subgraph sur Graph Node : graph deploy $SUBGRAPH_NAME --ipfs $IPFS_ENDPOINT --node $GRAPH_NODE_ENDPOINT

Graph Node devrait synchroniser le subgraph déployé s'il n'y a pas d'erreurs. Laissez-lui le temps de se synchroniser, puis envoyez des requêtes GraphQL au point de terminaison de l'API indiqué dans les journaux.


Intégration d'une nouvelle chaîne Firehose

Lien vers cette section

L'intégration d'une nouvelle chaîne est également possible en utilisant l'approche Firehose. Il s'agit actuellement de la meilleure option pour les chaînes non-EVM et d'une exigence pour la prise en charge des substreams. La documentation supplémentaire se concentre sur le fonctionnement de Firehose, l'ajout de la prise en charge de Firehose pour une nouvelle chaîne et son intégration avec Graph Node. Documentation recommandée aux intégrateurs :

  1. Documentation générale sur Firehose
  2. Ajout du support Firehose pour une nouvelle chaîne
  3. [Intégration de Graph Node avec une nouvelle chaîne via Firehose] (https://github.com/graphprotocol/graph-node/blob/master/docs/implementation/add-chain.md)
Modifier une page

Précédente
Aperçu du processus d'intégration de la chaîne
Suivante
Firehose
Modifier une page