Integración de nuevas redes
Reading time: 4 min
El Graph Node actualmente puede indexar datos de los siguientes tipos de cadena:
- Ethereum, a través de EVM JSON-RPC y [Ethereum Firehose] ()
- NEAR, a través de [NEAR Firehose] ()
- Cosmos, a través de
- Arweave, a través de
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 .
2. Firehose
For non-EVM-based chains, Graph Node must ingest blockchain data via gRPC and known type definitions. This can be done via , a new technology developed by that provides a highly-scalable indexing blockchain solution using a files-based and streaming-first approach. Reach out to the if you need help with Firehose development.
Si bien los dos son adecuados para subgrafos, siempre se requiere un Firehose para los desarrolladores que quieran compilar con , como crear . 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] ())
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-RPCtrace_filter
(opcionalmente necesario para que Graph Node admita call handlers)
Empiece por preparar su entorno local
- Modifique 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.
- Ejecute un nodo IPFS o use el utilizado por The Graph:
Prueba la integración implementando localmente un subgrafo
- Install
- Crea un subgrafo simple de prueba. Algunas opciones están a continuación:
- Adapt the resulting
subgraph.yaml
by changingdataSources.network
to the same name previously passed on to Graph Node. - Crea tu subgrafo en Graph Node:
graph create $SUBGRAPH_NAME --node $GRAPH_NODE_ENDPOINT
- 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.
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: