Integrering av Nya Nätverk

Reading time: 3 min

Graf Node kan för närvarande indexera data från följande typer av blockkedjor:

Om du är intresserad av någon av dessa blockkedjor är integrering en fråga om konfiguration och testning av Graf 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

Om blockkedjan är EVM-ekvivalent och klienten/noden exponerar den standardiserade EVM JSON-RPC API:n, bör Graf Node kunna indexera den nya blockkedjan. För mer information, se Testa en 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.

Skillnad mellan EVM JSON-RPC och Firehose

Länk till detta avsnitt

Medan båda alternativen är lämpliga för subgrafer krävs en Firehose alltid för utvecklare som vill bygga med Substreams, som att bygga Substreams-drivna subgrafer. Dessutom möjliggör Firehose förbättrade indexeringstider jämfört med JSON-RPC.

Nya EVM-blockkedjeintegratörer kan också överväga den Firehose-baserade metoden med tanke på fördelarna med substreams och dess massivt parallella indexeringsegenskaper. Att stödja båda alternativen ger utvecklare möjlighet att välja mellan att bygga substreams eller subgrafer för den nya blockkedjan.

OBS: En Firehose-baserad integration för EVM-blockkedjor kommer fortfarande att kräva att Indexers kör blockkedjans arkiv-RPC-nod för att korrekt indexera subgrafer. Detta beror på att Firehosen inte kan tillhandahålla den smarta kontraktsstatus som normalt är åtkomlig via eth_call RPC-metoden. (Det är värt att påminna om att eth_calls inte är en bra praxis för utvecklare)


Testa en EVM JSON-RPC

Länk till detta avsnitt

För att Graf Node ska kunna ta emot data från en EVM-blockkedja måste RPC-noden exponera följande EVM JSON-RPC-metoder:

  • eth_getLogs
  • eth_call _(för historiska block, med EIP-1898 - kräver arkivnod):
  • eth_getBlockByNumber
  • eth_getBlockByHash
  • net_version
  • eth_getTransactionReceipt, i en JSON-RPC batch-begäran
  • trace_filter (valfritt krav för att Graf Node ska stödja anropshanterare)

Graf Node-konfiguration

Länk till detta avsnitt

Börja med att förbereda din lokala miljö

  1. Klona Graf Node
  2. Ändra den här raden för att inkludera det nya nätverksnamnet och den EVM JSON-RPC-kompatibla URL:n

    Byt inte namnet på env-var självt. Det måste förbli ethereum även om nätverksnamnet är annorlunda.

  3. Kör en IPFS-nod eller använd den som används av The Graf: https://api.thegraph.com/ipfs/

Testa integrationen genom att lokalt distribuera en subgraf

  1. Install graph-cli
  2. Skapa en enkel exempelsubgraf. Några alternativ är nedan:
    1. Den förpackade Gravitar-smartkontrakt och subgraf är en bra startpunkt
    2. Starta en lokal subgraf från ett befintligt smart kontrakt eller en Solidity-utvecklingsmiljö med hjälp av Hardhat med ett Graf-plugin
  3. Adapt the resulting subgraph.yaml by changing dataSources.network to the same name previously passed on to Graph Node.
  4. Skapa din subgraf i Graf Node: graph create $SUBGRAPH_NAME --node $GRAPH_NODE_ENDPOINT
  5. Publicera din subgraf till Graf Node: graph deploy $SUBGRAPH_NAME --ipfs $IPFS_ENDPOINT --node $GRAPH_NODE_ENDPOINT

Graf Node bör synkronisera den distribuerade subgrafen om det inte finns några fel. Ge det tid att synkronisera, och skicka sedan några GraphQL-begäranden till API-slutpunkten som skrivs ut i loggarna.


Integrera en ny Firehose-aktiverad blockkedja

Länk till detta avsnitt

Det är också möjligt att integrera en ny blockkedja med Firehose-metoden. Detta är för närvarande det bästa alternativet för icke-EVM-blockkedjor och ett krav för stöd för delströmmar. Ytterligare dokumentation fokuserar på hur Firehose fungerar, hur du lägger till Firehose-stöd för en ny blockkedja och integrerar den med Graf Node. Rekommenderade dokument för integratörer:

  1. Allmänna dokument om Firehose
  2. Adding Firehose support for a new chain
  3. Integrera Graf Node med en ny blockkedja via Firehose
Redigera sida

Tidigare
Översikt över Kedjeintegrationsprocessen
Nästa
Firehose
Redigera sida