Kurz erklärt: Ein Subgraph ist eine offene Definition, die festlegt, welche Daten aus einer Blockchain indexiert und wie sie für Abfragen aufbereitet werden. Der Begriff stammt aus dem Graph-Protokoll (The Graph) und bildet die Grundlage, um Blockchain-Ereignisse effizient über GraphQL abrufbar zu machen.
Herkunft und Zweck
Subgraphs sind zentraler Bestandteil von The Graph, einem 2018 gestarteten Protokoll zur dezentralen Indexierung von Blockchain-Daten. Der zugehörige Token GRT wurde 2020 eingeführt.
Das Problem, das Subgraphs adressieren: Rohdaten einer Blockchain lassen sich über JSON-RPC zwar abrufen, komplexe Abfragen – etwa „alle Transfers eines Nutzers sortiert nach Zeit“ – sind direkt am Knoten jedoch aufwendig. Ein Subgraph indexiert die relevanten Ereignisse vorab und stellt sie strukturiert bereit.
Aufbau eines Subgraphs
Ein Subgraph besteht typischerweise aus drei Komponenten:
- Manifest (subgraph.yaml): beschreibt, welche Smart Contracts und Ereignisse beobachtet werden und ab welchem Block.
- GraphQL-Schema: definiert die Datenstruktur (Entitäten), die abgefragt werden kann.
- Mapping (AssemblyScript): Programmcode, der Blockchain-Ereignisse in die definierten Entitäten übersetzt.
Ein Indexer-Dienst (Graph Node) liest die Blockchain – häufig über eine Archive Node – wendet das Mapping an und speichert die Ergebnisse in einer abfragbaren Datenbank.
Abfrage und Netzwerk
Anwendungen fragen die aufbereiteten Daten über GraphQL ab, statt jede Information einzeln vom Knoten zu holen. Das reduziert Komplexität und Antwortzeiten für dezentrale Anwendungen (dApps).
The Graph unterscheidet zwischen dem Betrieb eigener Graph Nodes und dem dezentralen Netzwerk, in dem verschiedene Rollen zusammenwirken:
- Indexer betreiben die Knoten und indexieren Daten.
- Curators signalisieren, welche Subgraphs wertvoll sind.
- Delegators hinterlegen GRT, um Indexer zu unterstützen.
Subgraphs werden für zahlreiche Ethereum-basierte und weitere kompatible Netzwerke erstellt und sind ein verbreitetes Werkzeug in der Anwendungsentwicklung.
Häufige Fragen
Was ist ein Subgraph im Graph-Protokoll?
Ein Subgraph ist eine Definition, die festlegt, welche Blockchain-Daten indexiert und wie sie strukturiert werden. Er ermöglicht es, Ereignisse aus Smart Contracts effizient über GraphQL abzufragen.
Aus welchen Teilen besteht ein Subgraph?
Ein Subgraph umfasst in der Regel ein Manifest (welche Contracts und Ereignisse), ein GraphQL-Schema (Datenstruktur) und ein Mapping in AssemblyScript, das Ereignisse in die definierten Entitäten übersetzt.
Wie fragt man Daten aus einem Subgraph ab?
Die indexierten Daten werden über GraphQL abgefragt. Anwendungen erhalten so strukturierte, vorab aufbereitete Ergebnisse, ohne einzelne Rohdaten direkt vom Knoten holen zu müssen.
Warum benötigt ein Subgraph oft eine Archive Node?
Um historische Ereignisse ab einem bestimmten Startblock vollständig zu indexieren, wird häufig Zugriff auf historische Zustandsdaten benötigt, wie sie eine Archive Node bereitstellt.
Welche Rolle spielt der Token GRT?
GRT ist der Token des Graph-Protokolls. Er wird im dezentralen Netzwerk genutzt, in dem Indexer Daten bereitstellen, Curators Subgraphs signalisieren und Delegators GRT hinterlegen, um Indexer zu unterstützen.
Zusammenfassung
Ein Subgraph ist eine offene Definition aus dem Graph-Protokoll, die festlegt, welche Blockchain-Daten indexiert und wie sie für GraphQL-Abfragen aufbereitet werden. Er besteht aus Manifest, Schema und Mapping und macht komplexe Abfragen dezentraler Anwendungen effizient. Indexiert werden die Daten von Graph Nodes, häufig über eine Archive Node; im dezentralen Netzwerk kommt der Token GRT zum Einsatz.
Weiterführende Quellen
- The Graph: Dokumentation zu Subgraphs: thegraph.com
- GraphQL: Offizielle Website: graphql.org