Integración de nuevas redes

El Graph Node actualmente puede indexar datos de los siguientes tipos de cadena:

Si estás interesado en alguna de esas cadenas, la integración es una cuestión de configuración y prueba 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 cadena de bloques es equivalente a EVM y el cliente/nodo expone la EVM JSON-RPC API estándar, Graph Node debería poder indexar la nueva cadena. Para obtener más información, consulte Testing an EVM JSON-RPC.

2. Firehose

For non-EVM-based chains, Graph Node must ingest blockchain data via gRPC and known type definitions. This can be done via Firehose, a new technology developed by StreamingFast that provides a highly-scalable indexing blockchain solution using a files-based and streaming-first approach. Reach out to the StreamingFast team if you need help with Firehose development.

Diferencia entre EVM JSON-RPC y Firehose

Enlace a esta sección

Si bien los dos son adecuados para subgrafos, siempre se requiere un Firehose para los desarrolladores que quieran compilar con Substreams, como crear Substreams-powered subgraphs. Además, Firehose permite velocidades de indexación mejoradas en comparación con JSON-RPC.

Los nuevos integradores de cadenas EVM también pueden considerar el enfoque basado en Firehose, dados los beneficios de los substreams y sus enormes capacidades de indexación en paralelo. El soporte de ambos permite a los desarrolladores elegir entre crear substreams o subgrafos para la nueva cadena.

NOTA: Una integración basada en Firehose para cadenas EVM aún requerirá que los indexadores ejecuten el nodo RPC de archivo de la cadena para indexar correctamente los subgrafos. Esto se debe a la incapacidad de Firehose para proporcionar un estado de contrato inteligente al que normalmente se puede acceder mediante el método RPC eth_call. (Vale la pena recordar que eth_calls [no es una buena práctica para desarrolladores] (https://thegraph.com/blog/improve-subgraph-performance-reduce-eth-calls/))


Probando un EVM JSON-RPC

Enlace a esta sección

Para que Graph Node pueda ingerir datos de una cadena EVM, el nodo RPC debe exponer los siguientes métodos EVM JSON RPC:

  • eth_getLogs
  • eth_call _(para bloques históricos, con EIP-1898 - requiere nodo de archivo):
  • eth_getBlockByNumber
  • eth_getBlockByHash
  • net_version
  • eth_getTransactionReceipt, en una solicitud por lotes JSON-RPC
  • trace_filter (opcionalmente necesario para que Graph Node admita call handlers)

Configuración del Graph Node

Enlace a esta sección

Empiece por preparar su entorno local

  1. Clone Graph Node
  2. Modifique esta línea para incluir el nuevo nombre de la red y la URL compatible con EVM JSON RPC

    No cambie el nombre de la var env. Debe seguir siendo "ethereum" incluso si el nombre de la red es diferente.

  3. Ejecute un nodo IPFS o use el utilizado por The Graph: https://api.thegraph.com/ipfs/

Prueba la integración implementando localmente un subgrafo

  1. Instale [graph-cli] (https://github.com/graphprotocol/graph-cli)
  2. Crea un subgrafo simple de prueba. Algunas opciones están a continuación:
    1. El contrato inteligente y el subgrafo Gravitar preempaquetados son un buen comienzo
    2. Arranca un subgrafo local desde cualquier contrato inteligente existente o entorno de desarrollo de solidity [usando Hardhat con un plugin Graph] (https://github.com/graphprotocol/hardhat-graph)
  3. Adapta el subgraph.yaml resultante cambiando dataSources.network al mismo nombre que se pasó previamente a Graph Node.
  4. Crea tu subgrafo en Graph Node: graph create $SUBGRAPH_NAME --node $GRAPH_NODE_ENDPOINT
  5. Publica tu subgrafo en Graph Node: graph deploy $SUBGRAPH_NAME --ipfs $IPFS_ENDPOINT --node $GRAPH_NODE_ENDPOINT

Graph Node debería sincronizar el subgrafo implementado si no hay errores. Dale tiempo para que se sincronice y luego envíe algunas queries GraphQL al punto final de la API impreso en los registros.


Integración de una nueva cadena habilitada para Firehose

Enlace a esta sección

También es posible integrar una nueva cadena utilizando el enfoque Firehose. Actualmente, esta es la mejor opción para cadenas que no son EVM y un requisito para el soporte de substreams. La documentación adicional se centra en cómo funciona Firehose, agregando soporte de Firehose para una nueva cadena e integrándola con Graph Node. Documentos recomendados para integradores:

  1. Documentos generales sobre Firehose
  2. Adding Firehose support for a new chain
  3. Integración de Graph Node con una nueva cadena a través de Firehose
Editar página

Anterior
Chain Integration Process Overview
Siguiente
Firehose
Editar página