Om The Graph

Reading time: 4 min

Denna sida kommer att förklara vad The Graph är och hur du kan komma igång.

Vad är The Graph?

Länk till detta avsnitt

The Graph är en decentraliserad protokoll för indexering och frågning av blockkedjedata. The Graph möjliggör frågor på data som är svår att fråga direkt.

Projekt med komplexa smarta kontrakt som Uniswap och NFT-initiativ som Bored Ape Yacht Club lagrar data på Ethereum-blockkedjan, vilket gör det mycket svårt att läsa något annat än grundläggande data direkt från blockkedjan.

I fallet med Bored Ape Yacht Club kan vi utföra grundläggande läsfunktioner på kontraktet som att hämta ägaren av en viss Ape, hämta innehålls-URI:en för en Ape baserat på deras ID eller den totala tillgången, eftersom dessa läsfunktioner är programmerade direkt i det smarta kontraktet. Men mer avancerade frågor och operationer i den verkliga världen, som aggregering, sökning, relationer och icke trivial filtrering, är inte möjliga. Om vi till exempel ville fråga efter apor som ägs av en viss adress och filtrera efter en av deras egenskaper, skulle vi inte kunna få den informationen genom att interagera direkt med kontraktet självt.

För att få denna data skulle du behöva bearbeta varje enskilt transfer-händelse som någonsin har emitterats, läsa metadata från IPFS med hjälp av Token-ID och IPFS-hash, och sedan aggregera den. Även för dessa typer av relativt enkla frågor skulle det ta timmar eller till och med dagar för en decentraliserad applikation (dapp) som körs i en webbläsare att få ett svar.

Du skulle också kunna bygga din egen server, bearbeta transaktionerna där, spara dem i en databas och skapa en API-slutpunkt ovanpå alltihop för att fråga data. Men den här möjligheten är resurskrävande, kräver underhåll, utgör en enskild felkälla och bryter viktiga säkerhetsegenskaper som krävs för decentralisering.

Indexering av blockkedjedata är verkligen, verkligen svårt.

Blockkedjeegenskaper som slutgiltighet, kedjereorganisationer eller "uncled blocks" komplicerar denna process ytterligare och gör det inte bara tidskrävande utan också konceptuellt svårt att hämta korrekta frågeresultat från blockkedjedata.

The Graf löser detta med ett decentraliserat protokoll som indexerar och möjliggör prestanda- och effektiv frågning av blockkedjedata. Dessa API:er (indexerade "subgrafer") kan sedan frågas med en standard GraphQL-API. Idag finns det en värdtjänst samt ett decentraliserat protokoll med samma funktioner. Båda stöds av den öppna källkoden för Graf Node-implementeringen.

Hur The Graph Fungerar

Länk till detta avsnitt

The Graf lär sig vad och hur man indexerar Ethereum-data baserat på subgrafbeskrivningar, kända som subgraf-manifestet. Subgrafbeskrivningen definierar de intressanta smarta kontrakten för en subgraf, händelserna i dessa kontrakt att vara uppmärksam på och hur man kartlägger händelsedata till data som The Graf kommer att lagra i sin databas.

När du har skrivit ett subgraf-manifest, använder du Graf CLI för att lagra definitionen i IPFS och talar om för indexeringen att börja indexera data för den subgrafen.

Denna diagram ger mer detaljer om datatillflödet när ett subgraf-manifest har distribuerats och hanterar Ethereum-transaktioner:

En grafik som förklarar hur The Graf använder Graf Node för att servera frågor till datakonsumenter

Följande steg följs:

  1. En dapp lägger till data i Ethereum genom en transaktion på ett smart kontrakt.
  2. Det smarta kontraktet sänder ut en eller flera händelser under bearbetningen av transaktionen.
  3. Graf Node skannar kontinuerligt Ethereum efter nya block och den data för din subgraf de kan innehålla.
  4. Graf Node hittar Ethereum-händelser för din subgraf i dessa block och kör de kartläggande hanterarna du tillhandahållit. Kartläggningen är en WASM-modul som skapar eller uppdaterar de dataenheter som Graph Node lagrar som svar på Ethereum-händelser.
  5. Dappen frågar Graph Node om data som indexerats från blockkedjan med hjälp av nodens GraphQL-slutpunkt. Graph Node översätter i sin tur GraphQL-frågorna till frågor för sin underliggande datalagring för att hämta dessa data, och använder lagrets indexeringsegenskaper. Dappen visar dessa data i ett användarvänligt gränssnitt för slutanvändare, som de använder för att utfärda nya transaktioner på Ethereum. Cykeln upprepas.

I de följande avsnitten går vi in mer detaljerat på hur man definierar subgrafer, hur man distribuerar dem och hur man frågar data från indexen som Graph Node bygger.

Innan du börjar skriva din egen subgraf kan du vilja titta på Graph Explorer och utforska några av de subgrafer som redan har distribuerats. Sidan för varje subgraf innehåller en lekplats som låter dig fråga den subgrafens data med GraphQL.

Redigera sida

Tidigare
Komma igång
Nästa
Overview
Redigera sida