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 .
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.
Medan båda alternativen är lämpliga för subgrafer krävs en Firehose alltid för utvecklare som vill bygga med , som att bygga . 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 )
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ärantrace_filter
(valfritt krav för att Graf Node ska stödja anropshanterare)
Börja med att förbereda din lokala miljö
- Ändra 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. - Kör en IPFS-nod eller använd den som används av The Graf:
Testa integrationen genom att lokalt distribuera en subgraf
- Install
- Skapa en enkel exempelsubgraf. Några alternativ är nedan:
- Adapt the resulting
subgraph.yaml
by changingdataSources.network
to the same name previously passed on to Graph Node. - Skapa din subgraf i Graf Node:
graph create $SUBGRAPH_NAME --node $GRAPH_NODE_ENDPOINT
- 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.
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: