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 , une nouvelle technologie développée par 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' si vous avez besoin d'aide pour le développement de Firehose.
Bien que les deux conviennent aux subgraphs, un Firehose est toujours requis pour les développeurs souhaitant construire avec , comme la construction de . 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 )
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 requesttrace_filter
(optionally required for Graph Node to support call handlers)
Commencez par préparer votre environnement local
- Modifiez 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.
- Exécutez un nœud IPFS ou utilisez celui utilisé par The Graph :
Testez l'intégration en déployant localement un subgraph
- Install
- Créez un exemple de subgraph simple. Certaines options sont ci-dessous :
- Adapt the resulting
subgraph.yaml
by changingdataSources.network
to the same name previously passed on to Graph Node. - Créez votre subgraph dans Graph Node :
graph create $SUBGRAPH_NAME --node $GRAPH_NODE_ENDPOINT
- 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.
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 :