Wie erstellt man eine dezentrale, skalierbare Anwendung? Verwenden Sie weniger Blockchain

Nein, die Einführung einer dezentralen Anwendung (dapp) auf der Blockchain wird nicht zu einem erfolgreichen Geschäft führen. Tatsächlich denken die meisten Nutzer gar nicht darüber nach, ob die Anwendung auf der Blockchain läuft – sie entscheiden sich einfach für ein Produkt, das günstiger, schneller und einfacher ist.

Auch wenn die Blockchain ihre eigenen einzigartigen Funktionen und Vorteile hat, sind die meisten darauf laufenden Anwendungen leider viel teurer, langsamer und weniger intuitiv als ihre zentralisierten Konkurrenten.

Wie erstellt man eine dezentrale, skalierbare Anwendung? Verwenden Sie weniger Blockchain

In den Whitepapers von Anwendungen, die auf der Blockchain basieren, findet man häufig einen Absatz, in dem es heißt: „Die Blockchain ist teuer und kann nicht die erforderliche Anzahl von Transaktionen pro Sekunde unterstützen. Glücklicherweise arbeiten viele kluge Leute an der Skalierung der Blockchain und.“ Wenn unsere Anwendung auf den Markt kommt, wird sie ziemlich skalierbar sein.“

In einem einfachen Absatz kann ein Dapp-Entwickler auf eine tiefergehende Diskussion von Skalierbarkeitsproblemen und alternativen Problemlösungen verzichten. Dies führt häufig zu einer ineffizienten Architektur, bei der auf der Blockchain ausgeführte Smart Contracts als Backend und Kern der Anwendung dienen.

Allerdings gibt es noch ungetestete Ansätze für eine dezentrale Anwendungsarchitektur, die eine deutlich bessere Skalierbarkeit ermöglichen, indem sie die Abhängigkeit von der Blockchain verringern. Blockstack arbeitet beispielsweise an einer Architektur, bei der die meisten Anwendungsdaten und Logik außerhalb der Kette gespeichert werden.

Schauen wir uns zunächst einen traditionelleren Ansatz an, der die Blockchain als direkten Vermittler zwischen Anwendungsbenutzern nutzt und sich nicht besonders gut skalieren lässt.

Ansatz Nr. 1: Blockchain als Backend

Nehmen wir zur Verdeutlichung die Hotelbranche als Beispiel. Dies ist eine riesige Branche, in der Vermittler wie Booking.com, Sie verlangen eine enorme Gebühr zur Verbindung von Gästen und Hotels.

In jeder Situation, in der wir einen solchen Vermittler mit diesem Ansatz besiegen wollen, werden wir versuchen, seine Geschäftslogik mithilfe intelligenter Verträge auf einer Blockchain wie Ethereum zu replizieren.

Open-Source-Smart-Verträge, die auf dem „Weltcomputer“ laufen, können Händler mit Verbrauchern verbinden, ohne dass ein Dritter zwischengeschaltet ist, was letztendlich die vom Vermittler erhobenen Gebühren und Provisionen senkt.

Wie in der Abbildung unten gezeigt, verwenden Hotels eine dezentrale Anwendung, um Informationen über Zimmer, deren Verfügbarkeit und Preise an Wochentagen oder Wochenenden und möglicherweise sogar eine Beschreibung der Zimmer mit allen anderen relevanten Informationen auf der Blockchain zu veröffentlichen.

Wie erstellt man eine dezentrale, skalierbare Anwendung? Verwenden Sie weniger Blockchain

Wer ein Zimmer buchen möchte, nutzt diese Anwendung zur Suche nach Hotels und Zimmern, die auf der Blockchain gehostet werden. Sobald der Benutzer ein Zimmer auswählt, erfolgt die Reservierung, indem er die erforderliche Anzahl an Token als Anzahlung an das Hotel sendet. Und als Reaktion darauf aktualisiert der Smart Contract die Information in der Blockchain, dass die Nummer nicht mehr verfügbar ist.

Bei diesem Ansatz gibt es zwei Seiten des Skalierbarkeitsproblems. Erstens die maximale Anzahl von Transaktionen pro Sekunde. Zweitens die Datenmenge, die auf der Blockchain gespeichert werden kann.

Lassen Sie uns einige grobe Berechnungen durchführen. Laut Booking.com sind fast 2 Millionen Hotels bei ihnen registriert. Nehmen wir an, ein durchschnittliches Hotel verfügt über 10 Zimmer und jedes wird nur 20 Mal im Jahr gebucht – das ergibt einen Durchschnitt von 13 Buchungen pro Sekunde.

Um diese Zahl ins rechte Licht zu rücken, ist es erwähnenswert, dass Ethereum etwa 15 Transaktionen pro Sekunde verarbeiten kann.

Gleichzeitig ist zu bedenken, dass unsere Anwendung auch Transaktionen von Hotels enthält – zum Herunterladen und ständigen Aktualisieren von Informationen über deren Zimmer. Hotels aktualisieren die Zimmerpreise sehr häufig, manchmal sogar täglich, und jede Preis- oder Beschreibungsänderung erfordert eine Transaktion auf der Blockchain.

Auch hier gibt es Größenprobleme – das Gewicht der Ethereum-Blockchain hat kürzlich die 2-TB-Marke überschritten. Wenn Anwendungen mit diesem Ansatz wirklich populär würden, würde das Ethereum-Netzwerk extrem instabil werden.

Ein solches Blockchain-basiertes System kann aufgrund seiner Unparteilichkeit und fehlenden Zentralisierung, den Hauptvorteilen der Blockchain-Technologie, Außenstehende ausschließen. Aber die Blockchain hat auch andere Eigenschaften – sie wird verteilt und nicht neu geschrieben, das sind hervorragende Eigenschaften, aber man muss dafür mit der Geschwindigkeit und Provision der Transaktionen bezahlen.

Daher müssen Dapp-Entwickler sorgfältig abwägen, ob jede Funktion, die die Blockchain nutzt, wirklich verteilt und nicht beschreibbar sein muss.

Zum Beispiel: Welchen Vorteil hat es, die Daten jedes Hotels auf Hunderte von Maschinen auf der ganzen Welt zu verteilen und dort dauerhaft zu speichern? Ist es wirklich wichtig, dass historische Daten zu Zimmerpreisen und Verfügbarkeit immer in der Blockchain enthalten sind? Wahrscheinlich nicht.

Wenn wir anfangen, Fragen wie diese zu stellen, werden wir erkennen, dass wir nicht unbedingt alle teuren Blockchain-Funktionen für alle unsere Funktionen benötigen. Was ist also die Alternative?

Ansatz Nr. 2: Von Blockstack inspirierte Architektur

Obwohl der Schwerpunkt Blockstack bei Anwendungen, bei denen Benutzer Eigentümer ihrer Daten sind (z. B Lufttext, BentenSound, Bildoptimierer oder Graphite) verfolgt Blockstack auch die Philosophie, die Blockchain nur sparsam zu nutzen – nur wenn es absolut notwendig ist. Ihr Hauptargument ist, dass Blockchain langsam und teuer sei und daher nur für einzelne oder seltene Transaktionen verwendet werden sollte. Der Rest der Interaktion mit Anwendungen sollte über Peer-to-Peer erfolgen, d. h. Benutzer dezentraler Anwendungen müssen Daten direkt miteinander teilen und nicht über die Blockchain. Schließlich wurden die ältesten und erfolgreichsten dezentralen Anwendungen wie BitTorrent, E-Mail und Tor vor dem Konzept der Blockchain selbst entwickelt.

Wie erstellt man eine dezentrale, skalierbare Anwendung? Verwenden Sie weniger Blockchain
Links: Der erste Ansatz, bei dem Benutzer über die Blockchain interagieren. Rechts: Benutzer interagieren direkt miteinander und die Blockchain dient lediglich der Identifikation und Ähnlichem.

Kehren wir zum Hotelbuchungsbeispiel zurück. Wir wollen ein unparteiisches, unabhängiges und offenes Protokoll für die Verbindung von Gästen und Hotels. Mit anderen Worten: Wir wollen den zentralen Mittelsmann abschaffen. Wir müssen beispielsweise Zimmerpreise nicht ständig in einem gemeinsamen verteilten Hauptbuch speichern.

Warum ermöglichen wir Gästen und Hotels nicht einfach die direkte Interaktion statt über Blockchain? Hotels können ihre Preise, Zimmerverfügbarkeit und andere Informationen an einem Ort speichern, an dem jeder darauf zugreifen kann – zum Beispiel auf IPFS, Amazon S3 oder sogar auf ihrem eigenen lokalen Server. Genau so nennt sich das dezentrale Speichersystem von Blockstack Gaia. Es ermöglicht Benutzern, auszuwählen, wo ihre Daten gespeichert werden sollen, und zu steuern, wer über einen sogenannten Ansatz darauf zugreifen kann Mehrbenutzerspeicher.

Um Vertrauen herzustellen, werden alle Hoteldaten vom Hotel selbst kryptografisch signiert. Unabhängig davon, wo diese Daten gespeichert sind, kann ihre Integrität mithilfe der öffentlichen Schlüssel überprüft werden, die mit der in der Blockchain gespeicherten Identität des Hotels verknüpft sind.

Im Fall von Blockstack werden nur Ihre Identitätsinformationen auf der Blockchain gespeichert. Informationen darüber, wie die Daten jedes Benutzers abgerufen werden können, werden in Zonendateien gespeichert und über ein Peer-to-Peer-Netzwerk mithilfe von Knoten verteilt. Und noch einmal: Sie müssen den Daten, die die Knoten liefern, nicht vertrauen, denn Sie können ihre Authentizität überprüfen, indem Sie sie mit den Hashes vergleichen, die in der Blockchain und anderen Benutzern gespeichert sind.

In einer vereinfachten Version des Systems nutzen Gäste das Peer-to-Peer-Netzwerk Blockstack, um nach Hotels zu suchen und Informationen über ihre Zimmer zu erhalten. Und die Authentizität und Integrität aller Daten, die Sie erhalten, kann mithilfe der in gespeicherten öffentlichen Schlüssel und Hashes überprüft werden virtueller Kreislauf Blockstack.

Diese Architektur ist komplexer als der erste Ansatz und erfordert eine umfassendere Infrastruktur. Tatsächlich setzt Blockstack genau hier an und stellt alle notwendigen Komponenten bereit, um ein solches dezentrales System zu schaffen.

Wie erstellt man eine dezentrale, skalierbare Anwendung? Verwenden Sie weniger Blockchain

Mit dieser Architektur speichern wir nur Daten auf der Blockchain, die tatsächlich verteilt und nicht überschrieben werden müssen. Im Fall von Blockstack müssen Sie lediglich Transaktionen auf der Blockchain registrieren und angeben, wo Ihre Daten gespeichert werden sollen. Möglicherweise müssen Sie weitere Transaktionen durchführen, wenn Sie diese Informationen ändern möchten. Dies ist jedoch kein wiederkehrendes Ereignis.

Darüber hinaus läuft die Anwendungslogik im Gegensatz zum ersten Ansatz auf der Client-Seite und nicht auf Smart Contracts. Dies ermöglicht es dem Entwickler, diese Logik ohne kostspielige oder manchmal sogar unmögliche Smart-Contract-Updates zu ändern. Und indem Anwendungsdaten und Logik außerhalb der Kette bleiben, können dezentrale Anwendungen das Leistungs- und Skalierbarkeitsniveau traditioneller zentralisierter Systeme erreichen.

Abschluss

Anwendungen, die auf Blockstack laufen, können viel besser skaliert werden als herkömmliche Blockchain-Anwendungen, es handelt sich jedoch um einen jüngeren Ansatz mit eigenen Problemen und unbeantworteten Fragen.

Wenn beispielsweise eine dezentrale Anwendung nicht auf Smart Contracts läuft, verringert sich der Bedarf an Utility-Tokens. Dies könnte für Unternehmen zu Problemen führen, wenn man bedenkt, dass ICOs die Hauptfinanzierungsquelle für dezentrale Anwendungen (einschließlich Blockstack selbst) waren.

Auch hier gibt es technische Probleme. Beispielsweise ist es relativ einfach, eine Hotelbuchungsfunktion in einem Smart Contract zu implementieren, bei dem in einem atomaren Vorgang Zimmerreservierungen gegen Tokens vorgenommen werden. Und es ist nicht ganz offensichtlich, wie die Buchung in einer Blockstack-Anwendung ohne Smart Contracts funktionieren wird.

Apps, die auf globale Märkte mit dem Potenzial für Millionen von Nutzern abzielen, müssen sehr gut skalierbar sein, um erfolgreich zu sein. Es ist ein Fehler, sich allein auf Blockchains zu verlassen, um dieses Maß an Skalierbarkeit in naher Zukunft zu erreichen. Um mit großen zentralisierten Marktteilnehmern wie Booking.com konkurrieren zu können, sollten dezentrale Anwendungsentwickler alternative Ansätze für die Gestaltung ihrer Anwendungen in Betracht ziehen, wie beispielsweise den von Blockstack angebotenen.

Source: habr.com

Kommentar hinzufügen