Der Web3 TechStack

In den früheren Teilen dieser Serie haben wir grundlegende Architekturaspekte von Web3-Lösungen beleuchtet. Durch die Dezentralisierung von Diensten und die Verlagerung von Geschäftslogik auf Smart Contracts innerhalb eines Blockchain-Netzwerks kommt es auch zur Veränderung der Gesamtarchitektur einer dezentralen Anwendung, der „dApp“. In diesem Teil soll es darum gehen, diese Veränderung zu zeigen und gleichzeitig mit Softwareprodukten zu hinterlegen, welche die Transformation möglich machen. Wir werden nicht alle Werkzeuge im Detail untersuchen, möchten aber zumindest Anregungen zum Eigenstudium geben. Eine Auswahl der Werkzeuge werden wir in Folgeposts betrachten. 

Single Page Applications

Viele Applikationen des Internets sind Single Page Applications, d. h. die Anwendung besteht nicht mehr aus mehreren verlinkten HTML-Seiten, sondern nur noch aus einer HTML-Seite, die alle Daten und auch die Content-Elemente dynamisch aufbaut. Entsprechend hoch ist der Anteil an Programmlogik innerhalb der Seite, der so weit gehen kann, dass die Seite unter Nutzung lokalen Storages auch offline nutzbar ist. In diesem Sinne ist eine SPA für das dezentrale Web3 gut geeignet – einmal geladen kann sie laufen und muss sich mit dezentralen Diensten verbinden, um Daten anzuzeigen und zu verarbeiten. 

Im letzten Teil dieser Serie haben wir drei Aspekte untersucht: Compute (Rechenpower), Network (Kommunikation) und Storage. Wie lassen sich diese Dinge auf eine Web3-Single Page Application anwenden? Die obige Grafik gibt eine einfache Übersicht über die Architektur einer dApp. 

Compute

Im Mittelpunkt steht die Single Page Application (SPA abgekürzt), die im Browser abläuft. Der Code (d. h. HTML, CSS, Javascript) kann von einem dezentralen Storage oder einer klassischen Webserver-Farm abgerufen werden. 
Applikationen lassen sich dezentral bauen. Dabei wird Funktionalität nicht hinter einer einzelnen API verpackt und mit einer starken Lokalisierung deployed (z. B. Kubernetes Cluster in der Region West EU 1 einer Public Cloud), sondern in ein Peer-to-peer-artiges Netz von Services gelegt.  

Einfache Funktionalität und Geschäftslogik kann weiterhin von klassischen Backend-Services geliefert werden (s. Abbildung 2 weiter unten), z. B. über REST APIs. Ein Unterschied besteht nun darin, dass klassische Web2-Services in den meisten Fällen ein Login verlangen, um den Nutzer zu identifizieren – dies ändert sich mit Web3 fundamental. 

Wallet 

Im Bild oben ist die Wallet darstellt, ein zentrales Element in Bereich der Cryptocurrencies. Wallets speichern (u. a.) asymmetrische Schlüsselpaare des Nutzers ab – aus dem öffentlichen Schlüssel eines Schlüsselpaars wird eine öffentliche Adresse generiert, unter der der Nutzer Cryptowährungen empfangen kann. Mit dem privaten Schlüssel signiert der Nutzer oder die Nutzerin mit Hilfe der Wallet Blockchain-Transaktionen, z. B. um Cryptowährungen zu senden oder NFTs zu minten. Eine weitere wichtige Eigenschaft ist, dass Wallets im Prinzip beliebige Daten signieren können, das wird für dezentrale Services relevant.   
Wallets stellen somit auch Zugänge zu Identitäten dar, und auch klassische Backends wie dezentrale P2P-Services können von einem vereinfachten Login profitieren. In diesem Fall hat man sich als Nutzer:in einmal mit einer Web2-Identität (z. B. Benutzername und Passwort) registriert, „loggt“ sich aber mit Hilfe der Wallet ein. Sofern man hier überhaupt noch von Einloggen sprechen kann, denn das Konzept der Nutzersession wird gefühlt irrelevanter. 

In Bezug auf die Web3-Architektur sind im obigen Bild browser-basierte Wallets gemeint, d. h. ein Plugin im Browser speichert Daten über Web-Storage auf dem Nutzergerät, oder es vermittelt die Kommunikation zu einer Hardware-Wallet. 

Storage 

Viele Web3-Dienste nutzen „dezentralen Storage“. Der Fokus hierbei liegt darauf, Nutzerinhalte (z. B. Profilbild oder Profildaten) dauerhaft abzuspeichern, aber ohne die Daten bei einem Anbieter hinterlegen zu müssen, sei es ein Infrastruktur/Plattformanbieter („AWS, S3“) oder dem Diensteanbieter („Social Media Plattform XYZ“). Im dezentralen Bereich funktioniert dies, indem Daten in kleine Häppchen aufgespaltet und über ein P2P-Storage-Netzwerk verteilt werden. Teilweise sind dezentrale Storage-Netzwerke auch mit einer Streaming-Verarbeitung verbunden, sodass sich eingehende Daten direkt prozessieren lassen. 

Die Blockchain 

Der neuartige Bereich des Web3 ist sicherlich die Blockchain und die Verwendung von Smart Contracts. Hierüber werden Transaktionen dauerhaft in der Blockchain verankert, Zahlungen vorgenommen und digitale Assets zwischen Teilnehmende übertragen. Die SPA erzeugt damit den Aufruf einer Funktion innerhalb eines Smart Contracts und lässt den Nutzer sie über die Wallet signieren. 

Alle Fäden laufen somit in der Single Page Application zusammen, sie bringt die einzelnen Elemente auf sinnvolle Weise zusammen: Identität aus der Wallet, zum Auffinden von Transaktionen in Blockchain Contracts, verknüpft mit Daten vom dezentralen Storage und Backend-Services – Web2-klassisch oder Web3-P2P-artig.

Der TechStack des Web3

Dieses Bild zeigt eine Auswahl von möglichen Produkten und Services, um eine Web3-dApp möglich zu machen. Nicht alle sind unbedingt notwendig. Es sind auch nicht genau die gezeigten Produkte notwendig. Das Bild zeigt eine mögliche Ausprägung eines Web3 Stacks.

Bei den Wallets stehen eine große Auswahl zur Verfügung. Häufig werden Wallets passend zu Blockchain-Netzwerken verwendet. Die bekannteste browser-basierte Wallet ist sicherlich MetaMask, sie steht als Extension für Chrome, Brave, Firefox und Edge zur Verfügung. 

Wenn es darum geht, backend-artige Funktionalität dezentral zu bauen ist libp2p sicherlich in der engeren Auswahl. Es handelt sich um einen modularen Software-Stack für verschiedene Sprachen, um Peer-to-Peer Anwendungen zu bauen. Um die Koordination müssen sich Entwickler:innen selbst kümmern – oder Aufsätze wie das Fluence Network verwenden. Fluence bringt eine eigene Sprache mit, um auf die Ebene von verteilten Komponenten und deren Kommunikation abstrahieren zu können. Wenn es darum geht, Daten aus Blockchains und dezentralem Storage abzufragen und zu analysieren kann The Graph hilfreich sein. 

Fly.io zählt eher in die Ecke des Deployments und Betriebs, wenn es darum geht, einen Service weltweit und (netzwerktechnisch) nah am Kunden zu betreiben. Denn Web3-dApps richten sich potenziell an die ganze Welt als Kundenkreis. 

Die Auswahl einer Blockchain ist vermutlich der relevanteste Punkt in einer dApp. Transaktionsgeschwindigkeit, Transaktionskosten, Sprachen für die Entwicklung von Smart Contracts, Verfügbarkeit von Entwicklern und Entwicklerinnen – all das und mehr beeinflusst die Auswahl eines Netzwerks. Als Beispiele seien hier Ethereum, Layer 2-Lösungen auf Basis Ethereum, Tezos oder Polkadot genannt.  

Wichtig wird die Integration zwischen der SPA im Browser und dem Blockchain-Netzwerk. Eine signierte Transaktion muss an das Blockchain-Netzwerk übergeben werden, allerdings ist dies aufgrund der Dezentralität nicht wie gewohnt erreichbar. Zur Natur dezentraler Dienste gehört, dass Netzwerkknoten dynamisch dazukommen oder auch verschwinden können. Die SPA braucht also eine Zugangsschicht, um mit einem Netzwerk kommunizieren zu können. Diese Aufgabe können Services wie Infura (gleichzeitig eine Entwicklungs-Suite) oder das Pocket Network übernehmen. Hier liegt auch einer der fundamentalen Kritikpunkte an Web3-Architekturen: Auch wenn die Überschrift „dezentral“ verspricht, nicht alle drehenden Teile im Gesamtkonstrukt sind es. 

Zum Abschluss das Thema Storage: Hier kann als langjähriger Vertreter IPFS genannt werden, das Interplanetary File System. Seine dezentrale Ablage mit content-basierter Indexierung ist die Basis für die Ablage z. B. von Bilddaten und Code von NFTs. Weitere Vertreter sind StorJ oder Ceramic, letzteres erlaubt die streaming-artige Verarbeitung und Veränderung von Daten. 

 

Fazit 

Der Web3 TechStack wird umfangreicher. Es kommen neue Backend-Frameworks hinzu, um dezentrale Peer-to-Peer Ansätze bedienen zu können, der Bereich der Daten verlagert sich von klassischen Datenbanken hin zu dezentralen Speicherungs- und Verarbeitungskonzepten. Und mit Smart Contracts eröffnete sich ein neues (Spiel-)Feld.
In den nächsten Artikeln zum Thema Web3 werden wir uns einzelne Technologien genauer anschauen.

Seite teilen