Das Herzstück der Architektur von The Graph ist der Graph Node. Diese Schlüsselkomponente ist dafür verantwortlich, Subgraphen zu indizieren und die resultierenden Daten über eine GraphQL-API zugänglich zu machen. Er ist der Kern des Indexerstapels, und sein effektiver Betrieb ist entscheidend für die Ausführung eines erfolgreichen Indexers. Graph Node arbeitet vielseitig und kann sowohl in Bare-Metal- als auch in Cloud-Umgebungen ausgeführt werden, was die Anpassungsfähigkeit widerspiegelt, die in der dynamischen Landschaft der Blockchain-Technologie erforderlich ist.
Integraler Bestandteil des Betriebs des Graph Node ist die PostgreSQL-Datenbank, die als Hauptspeicher fungiert. Diese Datenbank enthält nicht nur die Subgraph-Daten, sondern auch Metadaten über Subgraphen und wichtige Netzwerkdaten wie Block- und eth_call-Caches. Die Organisation und Verwaltung dieser Datenbank sind für den reibungslosen Betrieb des Graph Node von entscheidender Bedeutung, um die Datenintegrität und -zugänglichkeit zu gewährleisten.
Für die Indizierung von Blockchain-Netzwerken stellt Graph Node über eine EVM-kompatible JSON-RPC-API eine Verbindung zu Netzwerkclients her. Dieses Setup kann von der Verbindung mit einem einzelnen Client bis hin zu einer komplexeren Anordnung mit Lastenausgleich über mehrere Clients hinweg variieren. Darüber hinaus hat The Graph die Network Firehoses entwickelt - einen gRPC-Dienst, der einen geordneten, forkfähigen Strom von Blöcken bereitstellt. Obwohl die Firehose derzeit keine Voraussetzung für Indexer ist, stellt sie einen bedeutenden Fortschritt bei der Unterstützung einer leistungsstarken Indizierung in großem Maßstab dar.
Die Interaktion von Graph Node mit dem IPFS-Netzwerk ist entscheidend für die Speicherung von Metadaten für die Bereitstellung von Subgraphen. Ein IPFS-Knoten, der auf Netzwerkebene gehostet wird, vereinfacht diesen Prozess für Indexer. Darüber hinaus fügt die optionale Integration mit einem Prometheus-Metrikserver für die Überwachung und Berichterstellung eine weitere Ebene der Raffinesse hinzu, die es Indexern ermöglicht, die Leistung des Graph-Knotens zu verfolgen und zu optimieren.
Die flexible Einrichtung des Graph Node, von den Installationsoptionen bis hin zu den Skalierungsmöglichkeiten, unterstreicht das Engagement von The Graph, verschiedene betriebliche Anforderungen zu erfüllen. Das System kann horizontal mit mehreren Graph Nodes und Datenbanken skaliert werden, um den steigenden Anforderungen des Netzwerks gerecht zu werden. Fortgeschrittene Benutzer können die Konfigurationsoptionen des Graphknotens nutzen, die über eine TOML-Datei oder Umgebungsvariablen verwaltet werden, um die Datenverarbeitung und die Verteilung der Arbeitslast zu optimieren.
Firehose, konzipiert und entwickelt von StreamingFast, markiert eine Revolution bei der Extraktion von Daten aus Blockchain-Knoten. Dieses innovative Tool zerlegt jede Transaktion innerhalb eines Blockchain-Blocks in ihre kleinsten Elemente und speichert sie als einfache, flache Dateien. Bei diesen Flatfiles handelt es sich nicht nur um ein Speicherformat. Sie verkörpern einen Paradigmenwechsel in der Datenindizierung. Sie erleichtern die parallele Verarbeitung, wodurch Indizierungsvorgänge drastisch beschleunigt werden. Diese Technologie liefert umfangreiche, Fork-fähige Daten von instrumentierten Blockchain-Knoten direkt an die Verbraucher. In der Praxis hat Firehose sein Können unter Beweis gestellt, indem es Erfassungs- und Verarbeitungsgeschwindigkeiten bietet, die einst als unerreichbar galten, und damit neue Maßstäbe für die Datenextraktion im Ökosystem von The Graph gesetzt hat.
Substreams, eine Erweiterung der von Firehose bereitgestellten Funktionen, sind für die parallele Streaming-First-Verarbeitung von Hochleistungsdaten konzipiert. Diese von Rust geschriebenen Module ermöglichen es Entwicklern, Blockchain-Daten für verschiedene Zwecke zu erstellen, zu sortieren, zu speichern und zu transformieren. Der Einfallsreichtum von Substreams liegt in ihrer Fähigkeit, die flachen Dateien von Firehose für die Indizierung von Daten mit außergewöhnlich hoher Geschwindigkeit zu nutzen. Dieser Ansatz stellt sicher, dass Substreams nicht nur Daten hocheffizient verarbeiten, sondern auch verteilen, sobald sie verfügbar sind, anstatt sich auf kontinuierliche Anfragen zu verlassen.
Die Integration von Firehose und Substreams in das Ökosystem von The Graph bietet eine leistungsstarke Kombination für die Datenverarbeitung. Firehose sorgt für die schnelle Bereitstellung von Blockchain-Daten in einem optimierten Format, während Substreams diese Daten weiter verfeinern und verarbeiten. Diese synergetische Beziehung führt zu einer beispiellosen Effizienz bei der Verarbeitung großer Mengen von Blockchain-Daten, was die Fähigkeiten von The Graph erheblich erhöht.
Subgraphen haben sich seit ihrer Einführung durch The Graph im Jahr 2018 zum Industriestandard für die Indizierung von Blockchain-Daten entwickelt. Dabei handelt es sich im Wesentlichen um offene APIs, die Daten aus Blockchains extrahieren, verarbeiten und speichern und so über eine GraphQL-Schnittstelle leicht abfragebar machen. Mit über 85.000 Subgraphen, die in mehr als 40 Chains unterstützt werden, sind Subgraphen für Web3-Entwickler unverzichtbar geworden. Sie ermöglichen die schnelle Bereitstellung einer Postgres-Datenbank, die mit indizierten Daten gefüllt ist und über eine GraphQL-Schicht abgefragt werden kann. Subgraphen ermöglichen es Entwicklern, eine breite Palette von Blockchain-Daten in ihren DApps auf organisierte und effiziente Weise anzuzeigen, von DeFi-Transaktionen bis hin zur NFT-Herkunft.
In der sich ständig weiterentwickelnden Landschaft der Blockchain-Technologie haben sich Subgraphen zu einem zentralen Konzept entwickelt, das die Art und Weise verändert, wie wir mit Blockchain-Daten interagieren und diese nutzen. Diese offenen APIs fungieren als Vermittler und schließen nahtlos die Lücke zwischen der dezentralen Welt der Blockchains und dem vertrauten Reich der strukturierten Daten. Durch das Extrahieren, Verarbeiten und Organisieren von Blockchain-Daten in ein abfragbares Format ermöglichen Subgraphen Entwicklern, innovative und datengesteuerte Anwendungen zu erstellen.
Subgraphen bieten eine Fülle von Vorteilen, was sie zu einer attraktiven Wahl für Entwickler und Benutzer gleichermaßen macht. Ihr dezentraler Charakter gewährleistet die Widerstandsfähigkeit gegen Zensur und Ausfallzeiten und fördert ein sicheres und zuverlässiges Datenökosystem. Darüber hinaus sind Subgraphen von Natur aus skalierbar und in der Lage, riesige Datenmengen ohne Leistungseinbußen zu verarbeiten. Kosteneffizienz ist ein weiterer wichtiger Vorteil, da Subgraphen oft günstiger sind als herkömmliche Daten-APIs.
Subgraphen bestehen aus drei wesentlichen Komponenten, die harmonisch zusammenarbeiten, um ihre transformativen Fähigkeiten zu entfalten:
Manifest: Das Manifest dient als Blaupause für das Teildiagramm und beschreibt die Datenquellen, das Schema und den AssemblyScript-Code. Es definiert die Grenzen der Daten, die der Subgraph indiziert, und stellt sicher, dass nur relevante Informationen erfasst werden.
Schema: Das Schema definiert die Struktur der Daten, ähnlich wie die Blaupause eines Gebäudes. Es umreißt die Entitäten, Felder und Beziehungen zwischen Entitäten und bietet eine klare und organisierte Möglichkeit, die Daten darzustellen.
AssemblyScript-Code: Dieser ausführbare Code fungiert als Arbeitspferd des Subgraphen und übersetzt die Rohdaten aus Blockchains in ein Format, das die GraphQL-Engine verstehen kann. Es kümmert sich auch um die Indizierung und Speicherung von Daten und gewährleistet deren Zugänglichkeit und Zuverlässigkeit.
Das Erstellen eines Subgraphen umfasst eine Reihe von Schritten, die jeweils sorgfältig ausgearbeitet wurden, um die Funktionalität und Effektivität des Subgraphen zu gewährleisten:
Konzeption und Entwurf: Die Reise beginnt mit einer klaren Vorstellung von den zu indizierenden Daten und den Anwendungen, die sie unterstützen werden. Dazu gehört die Definition der Entitäten, Felder und Beziehungen zwischen ihnen, um sicherzustellen, dass die Struktur des Teilgraphen mit dem beabsichtigten Zweck übereinstimmt.
Manifest- und Schemaentwicklung: Das Manifest und das Schema werden sorgfältig ausgearbeitet und bilden die Grundlage für die Datenarchitektur des Subgraphen. Das Manifest gibt die Datenquellen an, während das Schema die Datenstruktur umreißt, um die Datenintegrität und -konsistenz sicherzustellen.
Implementierung des AssemblyScript-Codes: Der AssemblyScript-Code wird geschrieben und übersetzt die rohen Blockchain-Daten in ein Format, das GraphQL verstehen kann. Es übernimmt die Indizierung, Speicherung und den Abruf von Daten und ermöglicht einen effizienten Zugriff auf die indizierten Daten.
Sobald der Subgraph entwickelt ist, durchläuft er einen Bereitstellungsprozess, der ihn der Welt vorstellt:
Subgraph Studio-Integration: Das Subgraph Studio dient als zentrale Plattform für die Verwaltung von Subgraphen. Es erleichtert den Bereitstellungsprozess und ermöglicht es Entwicklern, ihre Subgraphen im dezentralen Netzwerk zu veröffentlichen.
Indizierung und Kuratierung: Indexer, die für das Abrufen und Speichern von Blockchain-Daten verantwortlich sind, sind unerlässlich, um Subgraphen für Entwickler zugänglich zu machen. Das Kuratieren, das in der Regel über GRT-Token erfolgt, bietet Indexern einen Anreiz, Subgraphen mit hoher Nachfrage zu priorisieren.
Abfragen und Nutzung: Entwickler können jetzt den bereitgestellten Subgraphen mithilfe von GraphQL-Abfragen abfragen und spezifische Daten abrufen, die auf die Anforderungen ihrer Anwendung zugeschnitten sind. Diese nahtlose Integration ermöglicht es Entwicklern, Blockchain-Daten für Innovationen zu nutzen.
Während The Graph in seine neue Ära eintritt (wir werden sie in Lektion 5 untersuchen), wird die weitere Entwicklung dieser Kerntechnologien – Subgraphen, Firehose und Substreams – mit Spannung erwartet. Diese Komponenten werden erweitert und weiterentwickelt und spielen eine wichtige Rolle bei der Einführung neuer Datendienste und der Gewährleistung schnellerer, modularerer Datenflüsse. Der Verifiable Firehose zum Beispiel ist eine bahnbrechende Lösung für den Zugriff auf historische Ethereum-Daten, die die Herausforderungen der sich entwickelnden Blockchain-Standards angeht.
Es ist wichtig, zwischen Subgraphen und Substreams zu unterscheiden, da sie unterschiedlichen Zwecken dienen. Subgraphen eignen sich ideal für den Standarddatenabruf und die Verwaltung und bieten eine einfache Einrichtung und Verwendung mit einer GraphQL-Abfrageschicht. Umgekehrt sind Substreams auf komplexere Analyse- und Big-Data-Anforderungen zugeschnitten und bieten eine parallelisierte Datenverarbeitung und eine größere Flexibilität bei der Datenverarbeitung und -speicherung. Substreams ermöglichen es Entwicklern, Daten aus einfachen Dateiformaten in besser nutzbare Formen umzuwandeln, die anspruchsvollen Anforderungen an die Datenverarbeitung gerecht werden.
The Graph, traditionell bekannt für seine Fähigkeiten bei der Organisation von On-Chain-Daten, erweitert nun seinen Horizont, indem es sich in den Bereich der Off-Chain-Daten wagt. Dieser Ansatz steht im Einklang mit der langfristigen Mission von The Graph, einen einfachen Zugang zu öffentlichem Wissen und Informationen der Welt zu ermöglichen.
In der Web3-Architektur können Benutzer zwar über Middleware-Dienste direkt mit der Blockchain interagieren, aber es gibt einen Kompromiss, insbesondere wenn es um die Kosten geht. Die On-Chain-Transaktionskosten, die oft als Gasgebühren bezeichnet werden, können bei komplexen Berechnungen oder umfangreicher Datenspeicherung unerschwinglich hoch sein. Diese Einschränkung hat in der Vergangenheit die Komplexität von Anwendungen eingeschränkt oder Entwickler dazu veranlasst, proprietäre Off-Chain-APIs zu erstellen, die von Open-Source-Modellen abweichen.
The Graph stellt eine einzigartige Lösung für diese Herausforderung dar, indem es die Organisation und Bereitstellung von Off-Chain-Daten über sein dezentrales Netzwerk ermöglicht. Diese Methode beinhaltet einen Workflow, bei dem traditionell Off-Chain-Daten an IPFS (InterPlanetary File System) gesendet werden und die IPFS-Hashes dann on-chain aufgezeichnet werden. Anschließend können diese Daten durch Subgraphen indiziert und für die Abfrage zur Verfügung gestellt werden. Dieser Ansatz bietet eine skalierbare und wirtschaftliche Möglichkeit, komplexe, dynamische Daten zu veröffentlichen und bereitzustellen, ohne den Aufwand für die Erstellung und Pflege proprietärer APIs.
Cronjobs für die Datenberechnung und -veröffentlichung: Ein Off-Chain-Cronjob führt komplexe Berechnungen durch und veröffentlicht die Ergebnisse in einer Permaweb-Quelle wie IPFS, die von The Graph indiziert werden kann. Dieser Auftrag generiert auch eine On-Chain-Transaktion, um den IPFS-Datei-Hash und alle relevanten Metadaten zu veröffentlichen.
Subgraph-Veröffentlichung für die Indizierung: Der nächste Schritt besteht darin, einen Subgraphen zu veröffentlichen, der diese IPFS-Dateien basierend auf den in der Kette veröffentlichten Datei-Hashes indiziert. Sobald der Subgraph veröffentlicht ist, kann er von Indexern im Netzwerk von The Graph abgeholt und bereitgestellt werden, sodass Entwickler und Benutzer von Drittanbietern die Daten abfragen können.
Robuster und zuverlässiger Datenzugriff: Durch die Nutzung des verteilten Netzwerks von Indexern von The Graph bleibt der Datenzugriff robust und zuverlässig, ohne dass der Datenherausgeber zusätzlichen Aufwand betreiben muss. Diese dezentrale Struktur erhöht die Verfügbarkeit und Integrität der Daten erheblich.
Ein praktisches Beispiel im The Graph-Ökosystem ist das von Edge & Node entwickelte Orakel für die Veröffentlichung von Netzwerkkosten und Quality-of-Service-Metriken. Dieses Orakel sendet alle fünf Minuten aggregierte Daten an IPFS und protokolliert den IPFS-Datei-Hash in der Gnosis-Kette. Diese Daten werden dann in einem Subgraphen indiziert, der von den Protokollbeteiligten genutzt werden kann. Die mit diesem Workflow verbundenen Kosten sind überraschend niedrig, was ihn zu einer attraktiven Option für Datenherausgeber macht.
Diese Methode der Verwendung von The Graph für dynamische Daten eröffnet aufregende neue Möglichkeiten für Permaweb-Sites, einschließlich schlanker Backends für Blogs, algorithmischer Inhaltskuratierung und Echtzeit-Überwachungssystemen. Es stellt eine signifikante Veränderung in der Art und Weise dar, wie Daten veröffentlicht, indiziert und abgerufen werden, und fördert ein offeneres und kollaborativeres Web3-Ökosystem.
Die Erweiterung von The Graph auf die Verwaltung von Off-Chain-Daten eröffnet neue Wege im Web3-Ökosystem und schafft eine Brücke zwischen den dezentralen und traditionellen Datenbereichen. Diese Initiative spiegelt die Mission von The Graph wider, ein breiteres Spektrum an Informationen dezentral zugänglich zu machen und die inhärenten Einschränkungen der On-Chain-Datenspeicherung und -berechnung zu beheben.
The Graph erkennt die kostenbezogenen Kompromisse bei der On-Chain-Datenspeicherung und -berechnung in Web3-Architekturen. Während die direkte Interaktion mit der Blockchain unkompliziert ist, können komplexe Berechnungen und die Speicherung umfangreicher Daten unerschwinglich teuer werden. Um diese Einschränkungen zu umgehen, führt The Graph eine Methode ein, die Off-Chain-Datenspeicherung mit On-Chain-Datenreferenzierung kombiniert, wodurch das dezentrale Ethos beibehalten und gleichzeitig die Funktionalität verbessert wird.
Off-Chain-Berechnung und IPFS-Posting: Komplexe Berechnungen werden off-chain durchgeführt, und die resultierenden Daten werden an IPFS, eine dezentrale Speicherlösung, gesendet. Dieser Schritt stellt sicher, dass die Daten zwar off-chain, aber überprüfbar und dezentral gespeichert werden.
On-Chain-Verknüpfung über Transaktionen: Neben der Speicherung von Daten auf IPFS wird eine entsprechende On-Chain-Transaktion durchgeführt, um den IPFS-Hash und andere relevante Metadaten zu protokollieren. Diese Methode verankert die Off-Chain-Daten in der Blockchain und bietet eine Ebene des Vertrauens und der Rückverfolgbarkeit.
Subgraph-Indizierung für Barrierefreiheit: Der letzte Schritt besteht darin, die IPFS-gespeicherten Daten mithilfe von Subgraphen zu indizieren. Dieser Prozess macht die Off-Chain-Daten leicht abfragbar und über das dezentrale Netzwerk von The Graph zugänglich.
Praktische Umsetzung: Edge & Nodes Oracle
Eine praktische Anwendung dieser Methodik innerhalb des Ökosystems von The Graph ist das von Edge & Node entwickelte Orakel. Dieses Orakel veröffentlicht alle fünf Minuten Metriken zu Netzwerkkosten und Servicequalität auf folgende Weise:
Aggregierte Daten werden an IPFS gesendet.
Der entsprechende IPFS-Datei-Hash wird dann über einen DataEdge-Vertrag auf der Gnosis-Kette aufgezeichnet.
Diese IPFS-Dateien werden in einem Subgraphen indiziert, wodurch die Daten dezentral für die Stakeholder verfügbar sind.
Diese Implementierung demonstriert den kostengünstigen, skalierbaren und effizienten Ansatz zum Veröffentlichen und Bereitstellen komplexer Daten, ohne dass proprietäre APIs erforderlich sind. Es ist ein Beispiel dafür, wie die Methode von The Graph genutzt werden kann, um dynamische Datenquellen für eine Vielzahl von Anwendungen zu erstellen.
Die mit diesem Workflow verbundenen Kosten sind überraschend gering, was ihn zu einer attraktiven Lösung für Datenverlage macht. Zum Beispiel verursacht die Oracle-Implementierung von Edge & Node nur minimale Kosten für On-Chain-Transaktionen und IPFS-Node-Pinning, wobei die Bereitstellungskosten vom Datenkonsumenten getragen werden. Dieses Modell reduziert effektiv den Betriebsaufwand für Datenherausgeber und gewährleistet gleichzeitig einen robusten und zuverlässigen Datenzugriff.
Diese Methode eröffnet neue Möglichkeiten für Permaweb-Anwendungen, wie z. B. dynamische Back-Ends für Blogs, algorithmische Content-Kuration und Echtzeit-Monitoring-Systeme. Es ermöglicht die Trennung von Datenherausgebern von App-/Frontend-Betreibern und fördert so die Spezialisierung und Arbeitsteilung in einer Open-Source-Community. Dieser Ansatz ist vielversprechend für dezentrale soziale Anwendungen und Protokolle und bietet einen neuen Weg für die dezentrale Veröffentlichung und Nutzung von Daten.
Die Integration von GraphQL als Abfragesprache der Wahl. Diese Entscheidung prägt maßgeblich die Art und Weise, wie über die APIs von The Graph auf Daten zugegriffen und mit ihnen interagiert wird, und bietet eine optimierte und effiziente Methode zur Abfrage von Blockchain-Daten.
GraphQL steht an der Spitze des modernen API-Designs und bietet einen flexiblen und effizienten Ansatz für den Datenabruf. Im Blockchain-Kontext, in dem Datenstrukturen komplex sind und sich ständig weiterentwickeln, ist die Fähigkeit von GraphQL, genau das abzurufen, was benötigt wird, von unschätzbarem Wert.
Maßgeschneiderte Datenabfragen: Der Kern der Attraktivität von GraphQL liegt in seiner Fähigkeit, es Kunden zu ermöglichen, die Struktur der benötigten Daten genau zu definieren. Diese Funktion ist eine deutliche Abkehr von herkömmlichen Antworten mit fester Struktur und ermöglicht eine fokussiertere und effizientere Dateninteraktion.
Verbesserung von Echtzeit-Interaktionen: GraphQL in The Graph unterstützt nicht nur Abfragen, sondern auch Echtzeit-Datenabonnements. Diese Funktion ist für Blockchain-Anwendungen von entscheidender Bedeutung, bei denen zeitnahe Updates und Reaktionsfähigkeit der Schlüssel zur Benutzererfahrung sind.
Dezentraler und vertrauensloser Datenzugriff: Die Verwendung von GraphQL durch The Graph erweitert seine Philosophie der Dezentralisierung auf den Bereich des Datenzugriffs. Durch die Anbindung an ein Netzwerk dezentraler Knoten stellen GraphQL-Abfragen sicher, dass die Daten offen, transparent und zensurresistent bleiben.
Die Konvergenz von APIs und GraphQL
Im Ökosystem von The Graph entsteht durch die Verschmelzung von APIs mit GraphQL ein harmonisches und leistungsstarkes System für den Datenabruf:
Schemadefinition und Datenzuordnung: Entwickler definieren ein GraphQL-Schema in ihrem Subgraphen, das die Struktur der abfragbaren Daten umreißt. Das Schema wird dann auf komplizierte Weise Blockchain-Ereignissen zugeordnet, wodurch On-Chain-Aktivitäten in strukturierte Daten übersetzt werden.
Ausführen von Abfragen über Indexer: Wenn eine GraphQL-Abfrage an eine Subgraph-API gesendet wird, wird sie vom dezentralen Netzwerk von Indexern von The Graph verarbeitet. Dieser Prozess ist ein Beispiel dafür, wie Abfragen verteilt ausgeführt werden, wobei die Prinzipien der Blockchain-Technologie eingehalten werden.
Umgang mit komplexen Datenbeziehungen: Da komplexe Datenbeziehungen in der Blockchain an der Tagesordnung sind, ist die Fähigkeit von GraphQL, komplizierte Abfragen zu bearbeiten, einschließlich verschiedener Formen der Datenfilterung und -sortierung, besonders vorteilhaft.
Die Vorteile ergeben sich für Entwickler und Endanwender
Die Integration von GraphQL in The Graph bringt zahlreiche Vorteile mit sich:
Das Herzstück der Architektur von The Graph ist der Graph Node. Diese Schlüsselkomponente ist dafür verantwortlich, Subgraphen zu indizieren und die resultierenden Daten über eine GraphQL-API zugänglich zu machen. Er ist der Kern des Indexerstapels, und sein effektiver Betrieb ist entscheidend für die Ausführung eines erfolgreichen Indexers. Graph Node arbeitet vielseitig und kann sowohl in Bare-Metal- als auch in Cloud-Umgebungen ausgeführt werden, was die Anpassungsfähigkeit widerspiegelt, die in der dynamischen Landschaft der Blockchain-Technologie erforderlich ist.
Integraler Bestandteil des Betriebs des Graph Node ist die PostgreSQL-Datenbank, die als Hauptspeicher fungiert. Diese Datenbank enthält nicht nur die Subgraph-Daten, sondern auch Metadaten über Subgraphen und wichtige Netzwerkdaten wie Block- und eth_call-Caches. Die Organisation und Verwaltung dieser Datenbank sind für den reibungslosen Betrieb des Graph Node von entscheidender Bedeutung, um die Datenintegrität und -zugänglichkeit zu gewährleisten.
Für die Indizierung von Blockchain-Netzwerken stellt Graph Node über eine EVM-kompatible JSON-RPC-API eine Verbindung zu Netzwerkclients her. Dieses Setup kann von der Verbindung mit einem einzelnen Client bis hin zu einer komplexeren Anordnung mit Lastenausgleich über mehrere Clients hinweg variieren. Darüber hinaus hat The Graph die Network Firehoses entwickelt - einen gRPC-Dienst, der einen geordneten, forkfähigen Strom von Blöcken bereitstellt. Obwohl die Firehose derzeit keine Voraussetzung für Indexer ist, stellt sie einen bedeutenden Fortschritt bei der Unterstützung einer leistungsstarken Indizierung in großem Maßstab dar.
Die Interaktion von Graph Node mit dem IPFS-Netzwerk ist entscheidend für die Speicherung von Metadaten für die Bereitstellung von Subgraphen. Ein IPFS-Knoten, der auf Netzwerkebene gehostet wird, vereinfacht diesen Prozess für Indexer. Darüber hinaus fügt die optionale Integration mit einem Prometheus-Metrikserver für die Überwachung und Berichterstellung eine weitere Ebene der Raffinesse hinzu, die es Indexern ermöglicht, die Leistung des Graph-Knotens zu verfolgen und zu optimieren.
Die flexible Einrichtung des Graph Node, von den Installationsoptionen bis hin zu den Skalierungsmöglichkeiten, unterstreicht das Engagement von The Graph, verschiedene betriebliche Anforderungen zu erfüllen. Das System kann horizontal mit mehreren Graph Nodes und Datenbanken skaliert werden, um den steigenden Anforderungen des Netzwerks gerecht zu werden. Fortgeschrittene Benutzer können die Konfigurationsoptionen des Graphknotens nutzen, die über eine TOML-Datei oder Umgebungsvariablen verwaltet werden, um die Datenverarbeitung und die Verteilung der Arbeitslast zu optimieren.
Firehose, konzipiert und entwickelt von StreamingFast, markiert eine Revolution bei der Extraktion von Daten aus Blockchain-Knoten. Dieses innovative Tool zerlegt jede Transaktion innerhalb eines Blockchain-Blocks in ihre kleinsten Elemente und speichert sie als einfache, flache Dateien. Bei diesen Flatfiles handelt es sich nicht nur um ein Speicherformat. Sie verkörpern einen Paradigmenwechsel in der Datenindizierung. Sie erleichtern die parallele Verarbeitung, wodurch Indizierungsvorgänge drastisch beschleunigt werden. Diese Technologie liefert umfangreiche, Fork-fähige Daten von instrumentierten Blockchain-Knoten direkt an die Verbraucher. In der Praxis hat Firehose sein Können unter Beweis gestellt, indem es Erfassungs- und Verarbeitungsgeschwindigkeiten bietet, die einst als unerreichbar galten, und damit neue Maßstäbe für die Datenextraktion im Ökosystem von The Graph gesetzt hat.
Substreams, eine Erweiterung der von Firehose bereitgestellten Funktionen, sind für die parallele Streaming-First-Verarbeitung von Hochleistungsdaten konzipiert. Diese von Rust geschriebenen Module ermöglichen es Entwicklern, Blockchain-Daten für verschiedene Zwecke zu erstellen, zu sortieren, zu speichern und zu transformieren. Der Einfallsreichtum von Substreams liegt in ihrer Fähigkeit, die flachen Dateien von Firehose für die Indizierung von Daten mit außergewöhnlich hoher Geschwindigkeit zu nutzen. Dieser Ansatz stellt sicher, dass Substreams nicht nur Daten hocheffizient verarbeiten, sondern auch verteilen, sobald sie verfügbar sind, anstatt sich auf kontinuierliche Anfragen zu verlassen.
Die Integration von Firehose und Substreams in das Ökosystem von The Graph bietet eine leistungsstarke Kombination für die Datenverarbeitung. Firehose sorgt für die schnelle Bereitstellung von Blockchain-Daten in einem optimierten Format, während Substreams diese Daten weiter verfeinern und verarbeiten. Diese synergetische Beziehung führt zu einer beispiellosen Effizienz bei der Verarbeitung großer Mengen von Blockchain-Daten, was die Fähigkeiten von The Graph erheblich erhöht.
Subgraphen haben sich seit ihrer Einführung durch The Graph im Jahr 2018 zum Industriestandard für die Indizierung von Blockchain-Daten entwickelt. Dabei handelt es sich im Wesentlichen um offene APIs, die Daten aus Blockchains extrahieren, verarbeiten und speichern und so über eine GraphQL-Schnittstelle leicht abfragebar machen. Mit über 85.000 Subgraphen, die in mehr als 40 Chains unterstützt werden, sind Subgraphen für Web3-Entwickler unverzichtbar geworden. Sie ermöglichen die schnelle Bereitstellung einer Postgres-Datenbank, die mit indizierten Daten gefüllt ist und über eine GraphQL-Schicht abgefragt werden kann. Subgraphen ermöglichen es Entwicklern, eine breite Palette von Blockchain-Daten in ihren DApps auf organisierte und effiziente Weise anzuzeigen, von DeFi-Transaktionen bis hin zur NFT-Herkunft.
In der sich ständig weiterentwickelnden Landschaft der Blockchain-Technologie haben sich Subgraphen zu einem zentralen Konzept entwickelt, das die Art und Weise verändert, wie wir mit Blockchain-Daten interagieren und diese nutzen. Diese offenen APIs fungieren als Vermittler und schließen nahtlos die Lücke zwischen der dezentralen Welt der Blockchains und dem vertrauten Reich der strukturierten Daten. Durch das Extrahieren, Verarbeiten und Organisieren von Blockchain-Daten in ein abfragbares Format ermöglichen Subgraphen Entwicklern, innovative und datengesteuerte Anwendungen zu erstellen.
Subgraphen bieten eine Fülle von Vorteilen, was sie zu einer attraktiven Wahl für Entwickler und Benutzer gleichermaßen macht. Ihr dezentraler Charakter gewährleistet die Widerstandsfähigkeit gegen Zensur und Ausfallzeiten und fördert ein sicheres und zuverlässiges Datenökosystem. Darüber hinaus sind Subgraphen von Natur aus skalierbar und in der Lage, riesige Datenmengen ohne Leistungseinbußen zu verarbeiten. Kosteneffizienz ist ein weiterer wichtiger Vorteil, da Subgraphen oft günstiger sind als herkömmliche Daten-APIs.
Subgraphen bestehen aus drei wesentlichen Komponenten, die harmonisch zusammenarbeiten, um ihre transformativen Fähigkeiten zu entfalten:
Manifest: Das Manifest dient als Blaupause für das Teildiagramm und beschreibt die Datenquellen, das Schema und den AssemblyScript-Code. Es definiert die Grenzen der Daten, die der Subgraph indiziert, und stellt sicher, dass nur relevante Informationen erfasst werden.
Schema: Das Schema definiert die Struktur der Daten, ähnlich wie die Blaupause eines Gebäudes. Es umreißt die Entitäten, Felder und Beziehungen zwischen Entitäten und bietet eine klare und organisierte Möglichkeit, die Daten darzustellen.
AssemblyScript-Code: Dieser ausführbare Code fungiert als Arbeitspferd des Subgraphen und übersetzt die Rohdaten aus Blockchains in ein Format, das die GraphQL-Engine verstehen kann. Es kümmert sich auch um die Indizierung und Speicherung von Daten und gewährleistet deren Zugänglichkeit und Zuverlässigkeit.
Das Erstellen eines Subgraphen umfasst eine Reihe von Schritten, die jeweils sorgfältig ausgearbeitet wurden, um die Funktionalität und Effektivität des Subgraphen zu gewährleisten:
Konzeption und Entwurf: Die Reise beginnt mit einer klaren Vorstellung von den zu indizierenden Daten und den Anwendungen, die sie unterstützen werden. Dazu gehört die Definition der Entitäten, Felder und Beziehungen zwischen ihnen, um sicherzustellen, dass die Struktur des Teilgraphen mit dem beabsichtigten Zweck übereinstimmt.
Manifest- und Schemaentwicklung: Das Manifest und das Schema werden sorgfältig ausgearbeitet und bilden die Grundlage für die Datenarchitektur des Subgraphen. Das Manifest gibt die Datenquellen an, während das Schema die Datenstruktur umreißt, um die Datenintegrität und -konsistenz sicherzustellen.
Implementierung des AssemblyScript-Codes: Der AssemblyScript-Code wird geschrieben und übersetzt die rohen Blockchain-Daten in ein Format, das GraphQL verstehen kann. Es übernimmt die Indizierung, Speicherung und den Abruf von Daten und ermöglicht einen effizienten Zugriff auf die indizierten Daten.
Sobald der Subgraph entwickelt ist, durchläuft er einen Bereitstellungsprozess, der ihn der Welt vorstellt:
Subgraph Studio-Integration: Das Subgraph Studio dient als zentrale Plattform für die Verwaltung von Subgraphen. Es erleichtert den Bereitstellungsprozess und ermöglicht es Entwicklern, ihre Subgraphen im dezentralen Netzwerk zu veröffentlichen.
Indizierung und Kuratierung: Indexer, die für das Abrufen und Speichern von Blockchain-Daten verantwortlich sind, sind unerlässlich, um Subgraphen für Entwickler zugänglich zu machen. Das Kuratieren, das in der Regel über GRT-Token erfolgt, bietet Indexern einen Anreiz, Subgraphen mit hoher Nachfrage zu priorisieren.
Abfragen und Nutzung: Entwickler können jetzt den bereitgestellten Subgraphen mithilfe von GraphQL-Abfragen abfragen und spezifische Daten abrufen, die auf die Anforderungen ihrer Anwendung zugeschnitten sind. Diese nahtlose Integration ermöglicht es Entwicklern, Blockchain-Daten für Innovationen zu nutzen.
Während The Graph in seine neue Ära eintritt (wir werden sie in Lektion 5 untersuchen), wird die weitere Entwicklung dieser Kerntechnologien – Subgraphen, Firehose und Substreams – mit Spannung erwartet. Diese Komponenten werden erweitert und weiterentwickelt und spielen eine wichtige Rolle bei der Einführung neuer Datendienste und der Gewährleistung schnellerer, modularerer Datenflüsse. Der Verifiable Firehose zum Beispiel ist eine bahnbrechende Lösung für den Zugriff auf historische Ethereum-Daten, die die Herausforderungen der sich entwickelnden Blockchain-Standards angeht.
Es ist wichtig, zwischen Subgraphen und Substreams zu unterscheiden, da sie unterschiedlichen Zwecken dienen. Subgraphen eignen sich ideal für den Standarddatenabruf und die Verwaltung und bieten eine einfache Einrichtung und Verwendung mit einer GraphQL-Abfrageschicht. Umgekehrt sind Substreams auf komplexere Analyse- und Big-Data-Anforderungen zugeschnitten und bieten eine parallelisierte Datenverarbeitung und eine größere Flexibilität bei der Datenverarbeitung und -speicherung. Substreams ermöglichen es Entwicklern, Daten aus einfachen Dateiformaten in besser nutzbare Formen umzuwandeln, die anspruchsvollen Anforderungen an die Datenverarbeitung gerecht werden.
The Graph, traditionell bekannt für seine Fähigkeiten bei der Organisation von On-Chain-Daten, erweitert nun seinen Horizont, indem es sich in den Bereich der Off-Chain-Daten wagt. Dieser Ansatz steht im Einklang mit der langfristigen Mission von The Graph, einen einfachen Zugang zu öffentlichem Wissen und Informationen der Welt zu ermöglichen.
In der Web3-Architektur können Benutzer zwar über Middleware-Dienste direkt mit der Blockchain interagieren, aber es gibt einen Kompromiss, insbesondere wenn es um die Kosten geht. Die On-Chain-Transaktionskosten, die oft als Gasgebühren bezeichnet werden, können bei komplexen Berechnungen oder umfangreicher Datenspeicherung unerschwinglich hoch sein. Diese Einschränkung hat in der Vergangenheit die Komplexität von Anwendungen eingeschränkt oder Entwickler dazu veranlasst, proprietäre Off-Chain-APIs zu erstellen, die von Open-Source-Modellen abweichen.
The Graph stellt eine einzigartige Lösung für diese Herausforderung dar, indem es die Organisation und Bereitstellung von Off-Chain-Daten über sein dezentrales Netzwerk ermöglicht. Diese Methode beinhaltet einen Workflow, bei dem traditionell Off-Chain-Daten an IPFS (InterPlanetary File System) gesendet werden und die IPFS-Hashes dann on-chain aufgezeichnet werden. Anschließend können diese Daten durch Subgraphen indiziert und für die Abfrage zur Verfügung gestellt werden. Dieser Ansatz bietet eine skalierbare und wirtschaftliche Möglichkeit, komplexe, dynamische Daten zu veröffentlichen und bereitzustellen, ohne den Aufwand für die Erstellung und Pflege proprietärer APIs.
Cronjobs für die Datenberechnung und -veröffentlichung: Ein Off-Chain-Cronjob führt komplexe Berechnungen durch und veröffentlicht die Ergebnisse in einer Permaweb-Quelle wie IPFS, die von The Graph indiziert werden kann. Dieser Auftrag generiert auch eine On-Chain-Transaktion, um den IPFS-Datei-Hash und alle relevanten Metadaten zu veröffentlichen.
Subgraph-Veröffentlichung für die Indizierung: Der nächste Schritt besteht darin, einen Subgraphen zu veröffentlichen, der diese IPFS-Dateien basierend auf den in der Kette veröffentlichten Datei-Hashes indiziert. Sobald der Subgraph veröffentlicht ist, kann er von Indexern im Netzwerk von The Graph abgeholt und bereitgestellt werden, sodass Entwickler und Benutzer von Drittanbietern die Daten abfragen können.
Robuster und zuverlässiger Datenzugriff: Durch die Nutzung des verteilten Netzwerks von Indexern von The Graph bleibt der Datenzugriff robust und zuverlässig, ohne dass der Datenherausgeber zusätzlichen Aufwand betreiben muss. Diese dezentrale Struktur erhöht die Verfügbarkeit und Integrität der Daten erheblich.
Ein praktisches Beispiel im The Graph-Ökosystem ist das von Edge & Node entwickelte Orakel für die Veröffentlichung von Netzwerkkosten und Quality-of-Service-Metriken. Dieses Orakel sendet alle fünf Minuten aggregierte Daten an IPFS und protokolliert den IPFS-Datei-Hash in der Gnosis-Kette. Diese Daten werden dann in einem Subgraphen indiziert, der von den Protokollbeteiligten genutzt werden kann. Die mit diesem Workflow verbundenen Kosten sind überraschend niedrig, was ihn zu einer attraktiven Option für Datenherausgeber macht.
Diese Methode der Verwendung von The Graph für dynamische Daten eröffnet aufregende neue Möglichkeiten für Permaweb-Sites, einschließlich schlanker Backends für Blogs, algorithmischer Inhaltskuratierung und Echtzeit-Überwachungssystemen. Es stellt eine signifikante Veränderung in der Art und Weise dar, wie Daten veröffentlicht, indiziert und abgerufen werden, und fördert ein offeneres und kollaborativeres Web3-Ökosystem.
Die Erweiterung von The Graph auf die Verwaltung von Off-Chain-Daten eröffnet neue Wege im Web3-Ökosystem und schafft eine Brücke zwischen den dezentralen und traditionellen Datenbereichen. Diese Initiative spiegelt die Mission von The Graph wider, ein breiteres Spektrum an Informationen dezentral zugänglich zu machen und die inhärenten Einschränkungen der On-Chain-Datenspeicherung und -berechnung zu beheben.
The Graph erkennt die kostenbezogenen Kompromisse bei der On-Chain-Datenspeicherung und -berechnung in Web3-Architekturen. Während die direkte Interaktion mit der Blockchain unkompliziert ist, können komplexe Berechnungen und die Speicherung umfangreicher Daten unerschwinglich teuer werden. Um diese Einschränkungen zu umgehen, führt The Graph eine Methode ein, die Off-Chain-Datenspeicherung mit On-Chain-Datenreferenzierung kombiniert, wodurch das dezentrale Ethos beibehalten und gleichzeitig die Funktionalität verbessert wird.
Off-Chain-Berechnung und IPFS-Posting: Komplexe Berechnungen werden off-chain durchgeführt, und die resultierenden Daten werden an IPFS, eine dezentrale Speicherlösung, gesendet. Dieser Schritt stellt sicher, dass die Daten zwar off-chain, aber überprüfbar und dezentral gespeichert werden.
On-Chain-Verknüpfung über Transaktionen: Neben der Speicherung von Daten auf IPFS wird eine entsprechende On-Chain-Transaktion durchgeführt, um den IPFS-Hash und andere relevante Metadaten zu protokollieren. Diese Methode verankert die Off-Chain-Daten in der Blockchain und bietet eine Ebene des Vertrauens und der Rückverfolgbarkeit.
Subgraph-Indizierung für Barrierefreiheit: Der letzte Schritt besteht darin, die IPFS-gespeicherten Daten mithilfe von Subgraphen zu indizieren. Dieser Prozess macht die Off-Chain-Daten leicht abfragbar und über das dezentrale Netzwerk von The Graph zugänglich.
Praktische Umsetzung: Edge & Nodes Oracle
Eine praktische Anwendung dieser Methodik innerhalb des Ökosystems von The Graph ist das von Edge & Node entwickelte Orakel. Dieses Orakel veröffentlicht alle fünf Minuten Metriken zu Netzwerkkosten und Servicequalität auf folgende Weise:
Aggregierte Daten werden an IPFS gesendet.
Der entsprechende IPFS-Datei-Hash wird dann über einen DataEdge-Vertrag auf der Gnosis-Kette aufgezeichnet.
Diese IPFS-Dateien werden in einem Subgraphen indiziert, wodurch die Daten dezentral für die Stakeholder verfügbar sind.
Diese Implementierung demonstriert den kostengünstigen, skalierbaren und effizienten Ansatz zum Veröffentlichen und Bereitstellen komplexer Daten, ohne dass proprietäre APIs erforderlich sind. Es ist ein Beispiel dafür, wie die Methode von The Graph genutzt werden kann, um dynamische Datenquellen für eine Vielzahl von Anwendungen zu erstellen.
Die mit diesem Workflow verbundenen Kosten sind überraschend gering, was ihn zu einer attraktiven Lösung für Datenverlage macht. Zum Beispiel verursacht die Oracle-Implementierung von Edge & Node nur minimale Kosten für On-Chain-Transaktionen und IPFS-Node-Pinning, wobei die Bereitstellungskosten vom Datenkonsumenten getragen werden. Dieses Modell reduziert effektiv den Betriebsaufwand für Datenherausgeber und gewährleistet gleichzeitig einen robusten und zuverlässigen Datenzugriff.
Diese Methode eröffnet neue Möglichkeiten für Permaweb-Anwendungen, wie z. B. dynamische Back-Ends für Blogs, algorithmische Content-Kuration und Echtzeit-Monitoring-Systeme. Es ermöglicht die Trennung von Datenherausgebern von App-/Frontend-Betreibern und fördert so die Spezialisierung und Arbeitsteilung in einer Open-Source-Community. Dieser Ansatz ist vielversprechend für dezentrale soziale Anwendungen und Protokolle und bietet einen neuen Weg für die dezentrale Veröffentlichung und Nutzung von Daten.
Die Integration von GraphQL als Abfragesprache der Wahl. Diese Entscheidung prägt maßgeblich die Art und Weise, wie über die APIs von The Graph auf Daten zugegriffen und mit ihnen interagiert wird, und bietet eine optimierte und effiziente Methode zur Abfrage von Blockchain-Daten.
GraphQL steht an der Spitze des modernen API-Designs und bietet einen flexiblen und effizienten Ansatz für den Datenabruf. Im Blockchain-Kontext, in dem Datenstrukturen komplex sind und sich ständig weiterentwickeln, ist die Fähigkeit von GraphQL, genau das abzurufen, was benötigt wird, von unschätzbarem Wert.
Maßgeschneiderte Datenabfragen: Der Kern der Attraktivität von GraphQL liegt in seiner Fähigkeit, es Kunden zu ermöglichen, die Struktur der benötigten Daten genau zu definieren. Diese Funktion ist eine deutliche Abkehr von herkömmlichen Antworten mit fester Struktur und ermöglicht eine fokussiertere und effizientere Dateninteraktion.
Verbesserung von Echtzeit-Interaktionen: GraphQL in The Graph unterstützt nicht nur Abfragen, sondern auch Echtzeit-Datenabonnements. Diese Funktion ist für Blockchain-Anwendungen von entscheidender Bedeutung, bei denen zeitnahe Updates und Reaktionsfähigkeit der Schlüssel zur Benutzererfahrung sind.
Dezentraler und vertrauensloser Datenzugriff: Die Verwendung von GraphQL durch The Graph erweitert seine Philosophie der Dezentralisierung auf den Bereich des Datenzugriffs. Durch die Anbindung an ein Netzwerk dezentraler Knoten stellen GraphQL-Abfragen sicher, dass die Daten offen, transparent und zensurresistent bleiben.
Die Konvergenz von APIs und GraphQL
Im Ökosystem von The Graph entsteht durch die Verschmelzung von APIs mit GraphQL ein harmonisches und leistungsstarkes System für den Datenabruf:
Schemadefinition und Datenzuordnung: Entwickler definieren ein GraphQL-Schema in ihrem Subgraphen, das die Struktur der abfragbaren Daten umreißt. Das Schema wird dann auf komplizierte Weise Blockchain-Ereignissen zugeordnet, wodurch On-Chain-Aktivitäten in strukturierte Daten übersetzt werden.
Ausführen von Abfragen über Indexer: Wenn eine GraphQL-Abfrage an eine Subgraph-API gesendet wird, wird sie vom dezentralen Netzwerk von Indexern von The Graph verarbeitet. Dieser Prozess ist ein Beispiel dafür, wie Abfragen verteilt ausgeführt werden, wobei die Prinzipien der Blockchain-Technologie eingehalten werden.
Umgang mit komplexen Datenbeziehungen: Da komplexe Datenbeziehungen in der Blockchain an der Tagesordnung sind, ist die Fähigkeit von GraphQL, komplizierte Abfragen zu bearbeiten, einschließlich verschiedener Formen der Datenfilterung und -sortierung, besonders vorteilhaft.
Die Vorteile ergeben sich für Entwickler und Endanwender
Die Integration von GraphQL in The Graph bringt zahlreiche Vorteile mit sich: