Wie erstellt man eine dezentrale Anwendung, die skalierbar ist? Nutzen 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 nicht einmal darüber nach, ob die Anwendung auf der Blockchain läuft – sie wählen einfach das Produkt, das günstiger, schneller und einfacher ist.

Leider, selbst wenn die Blockchain ihre eigenen einzigartigen Merkmale und Vorteile hat, sind die meisten Anwendungen, die darauf basieren, viel teurer, langsamer und weniger verständlich als ihre zentralisierten Wettbewerber.

Wie erstellt man eine dezentrale Anwendung, die skalierbar ist? Nutzen Sie weniger Blockchain

In den Whitepapers von Anwendungen, die auf der Blockchain basieren, findet man oft einen Abschnitt, in dem steht: "Die Blockchain ist teuer und kann die erforderliche Anzahl von Transaktionen pro Sekunde nicht unterstützen. Glücklicherweise arbeiten viele kluge Köpfe an der Skalierung der Blockchain, und zum Zeitpunkt der Einführung unserer Anwendung wird sie ausreichend skalierbar sein."

In einem einfachen Abschnitt kann der Entwickler der dapp sich mit einer tiefergehenden Diskussion über Skalierungsprobleme und alternative Lösungsansätze zurückhalten. Dies führt häufig zu einer ineffizienten Architektur, bei der Smart Contracts, die auf der Blockchain laufen, als Backend und Kern der Anwendung dienen.

Es gibt jedoch noch unerprobte Ansätze in der Architektur dezentraler Anwendungen, die es ermöglichen, viel besser zu skalieren, indem die Abhängigkeit von der Blockchain verringert wird. Zum Beispiel arbeitet Blockstack an einer Architektur, bei der die meisten Daten und die Logik der Anwendung außerhalb der Blockchain gespeichert werden.

Lassen Sie uns zunächst einen traditionelleren Ansatz betrachten, bei dem die Blockchain als direkter Vermittler zwischen den Nutzern der Anwendung fungiert und der nicht besonders gut skalierbar ist.

Ansatz #1: Blockchain als Backend

Um es anschaulicher zu machen, nehmen wir die Hotelbranche als Beispiel. Es handelt sich um eine riesige Branche, in der Vermittler wie Booking.com, hohe Gebühren erheben für die Vermittlung von Gästen und Hotels.

In jeder Situation, in der wir versuchen, einen solchen Vermittler mit diesem Ansatz zu überlisten, werden wir versuchen, seine Geschäftslogik mithilfe von Smart Contracts auf einer Blockchain wie Ethereum nachzubauen.

Smart Contracts mit offenem Quellcode, die auf dem "weltweiten Computer" gestartet wurden, können Verkäufer ohne zwischengeschaltete Unternehmen mit Verbrauchern verbinden, wodurch letztendlich die Gebühren und Provisionen, die von Mittelsmännern erhoben werden, reduziert werden.

Wie im Bild unten gezeigt, nutzen Hotels eine dezentrale Anwendung, um Informationen über Zimmer, deren Verfügbarkeit und Preise an Werktagen oder am Wochenende in der Blockchain zu speichern, möglicherweise sogar eine Beschreibung der Zimmer mit allen weiteren relevanten Informationen.

Wie erstellt man eine dezentrale Anwendung, die skalierbar ist? Nutzen Sie weniger Blockchain

Jeder, der ein Zimmer buchen möchte, nutzt diese Anwendung, um nach Hotels und Zimmern zu suchen, die in der Blockchain gelistet sind. Sobald der Nutzer ein Zimmer auswählt, erfolgt die Buchung durch das Senden des erforderlichen Betrags an Token an das Hotel als Anzahlung. Im Gegenzug aktualisiert der Smart Contract die Informationen in der Blockchain, dass das Zimmer nicht mehr verfügbar ist.

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

Lassen Sie uns grobe Berechnungen anstellen. booking.com gibt an, dass sie fast 2 Millionen Hotels registriert haben. Angenommen, jedes Hotel hat durchschnittlich 10 Zimmer und jedes wird nur 20 Mal im Jahr gebucht – das ergibt im Durchschnitt 13 Buchungen pro Sekunde.

Um diese Zahl zu schätzen, sollte man beachten, dass Ethereum etwa 15 Transaktionen pro Sekunde verarbeiten kann.

Dabei ist zu berücksichtigen, dass in unserer Anwendung auch Transaktionen von den Hotels stattfinden – um Informationen über ihre Zimmer hochzuladen und kontinuierlich zu aktualisieren. Hotels aktualisieren die Zimmerpreise sehr häufig, manchmal sogar täglich, und jede Preis- oder Beschreibungsänderung erfordert eine Transaktion in der Blockchain.

Hier gibt es auch ein Problem der Größe – das Gewicht der Ethereum-Blockchain hat kürzlich die Marke von 2 TB überschritten. Wenn Anwendungen mit einem solchen Ansatz wirklich populär werden, würde das Ethereum-Netzwerk extrem instabil werden.

Ein solches auf Blockchain basierendes System kann Außenstehende ausschließen, dank seiner Unparteilichkeit und Dezentralisierung – den Hauptvorteilen der Blockchain-Technologie. Aber die Blockchain hat auch andere Merkmale – sie ist verteilt und nicht beschreibbar, das sind tolle Eigenschaften, aber man muss dafür in der Geschwindigkeit und den Transaktionsgebühren bezahlen.

Deshalb müssen die Entwickler von dapps sorgfältig abwägen, ob jede Funktion, die Blockchain verwendet, wirklich Dezentralisierung und Unveränderlichkeit benötigt.

Zum Beispiel: Welchen Vorteil bringt es, die Daten jedes Hotels auf Hunderte von Maschinen weltweit zu verteilen und sie dort dauerhaft zu speichern? Ist es wirklich wichtig, dass historische Preisdaten und die Verfügbarkeit von Zimmern immer in der Blockchain integriert sind? Wahrscheinlich nicht.

Wenn wir beginnen, solche Fragen zu stellen, erkennen wir, dass wir nicht alle kostspieligen Merkmale der Blockchain für jede unserer Funktionen benötigen. Was ist also die Alternative?

Ansatz #2: Architektur inspiriert von Blockstack

Obwohl der Schwerpunkt Blockstack auf Anwendungen liegt, bei denen die Nutzer Eigentümer ihrer Daten sind (zum Beispiel bei Airtext, BentenSound, ImageOptimizer oder Graphite), hat Blockstack auch die Philosophie, Blockchain nur dann zu nutzen, wenn es absolut notwendig ist. Ihr Hauptargument ist, dass Blockchain langsam und teuer ist und daher nur für einmalige oder seltene Operationen verwendet werden sollte. Alle anderen Interaktionen mit Anwendungen sollten über Peer-to-Peer erfolgen, d.h. die Nutzer dezentraler Anwendungen sollten Daten direkt miteinander teilen, anstatt über die Blockchain. Schließlich wurden die ältesten und erfolgreichsten dezentralisierten Anwendungen wie BitTorrent, E-Mail und Tor noch vor der Erfindung des Konzepts der Blockchain entwickelt.

Wie erstellt man eine dezentrale Anwendung, die skalierbar ist? Nutzen Sie weniger Blockchain
Links: erster Ansatz, bei dem Nutzer über die Blockchain interagieren. Rechts: Nutzer interagieren direkt miteinander, während die Blockchain nur zur Identifikation und ähnlichem genutzt wird..

Kehren wir zurück zu unserem Beispiel mit der Hotelbuchung. Wir möchten ein unparteiisches, unabhängiges und offenes Protokoll, um Gäste mit Hotels zu verbinden. Mit anderen Worten, wir möchten einen zentralen Vermittler ausschließen. Wir haben zum Beispiel keine Notwendigkeit, die Preise der Zimmer ständig in einem gemeinsamen verteilten Register zu speichern.

Warum erlauben wir den Gästen und Hotels nicht einfach, direkt miteinander zu interagieren, anstatt über die Blockchain? Hotels können ihre Preise, Verfügbarkeit der Zimmer und jede andere Informationen irgendwo speichern, wo sie für alle zugänglich sind - zum Beispiel IPFS, Amazon S3 oder sogar auf ihrem eigenen lokalen Server. Das ist genau das, was das dezentrale Speichersystem von Blockstack mit dem Namen Gaia. Es ermöglicht den Nutzern auszuwählen, wo sie ihre Daten speichern möchten und zu kontrollieren, wer darauf zugreifen kann, durch einen Ansatz, der als mehrbenutzerspeicher.

Um Vertrauen aufzubauen, werden alle Daten des Hotels kryptografisch vom Hotel selbst signiert. Unabhängig davon, wo diese Daten gespeichert sind, kann ihre Integrität mit öffentlichen Schlüsseln, die mit den Identifikationsinformationen des jeweiligen Hotels in der Blockchain verbunden sind, überprüft werden.

Im Falle von Blockstack wird in der Blockchain nur Ihre Identifikationsinformation gespeichert. Informationen darüber, wie die Daten jedes Nutzers abgerufen werden können, werden in Zonen-Dateien (zone files) gespeichert und über ein Peer-to-Peer-Netzwerk mit Knoten verteilt. Und noch einmal - Sie müssen den Daten, die Knoten bereitstellen, nicht vertrauen, weil Sie deren Authentizität überprüfen können, indem Sie sie mit den Hashes vergleichen, die in der Blockchain und bei anderen Nutzern gespeichert sind.

In einer vereinfachten Version des Systems werden die Gäste das Peer-to-Peer-Netzwerk von Blockstack nutzen, um Hotels zu finden und Informationen über deren Zimmer zu erhalten. Und die Authentizität und Integrität aller Daten, die Sie erhalten, kann überprüft werden, indem öffentliche Schlüssel und Hashes verwendet werden, die in der virtuellen Kette von Blockstack gespeichert sind.

Diese Architektur ist komplexer als der erste Ansatz und erfordert eine umfassendere Infrastruktur. Tatsächlich ist das genau der Punkt, an dem Blockstack ins Spiel kommt, da es alle notwendigen Komponenten für den Aufbau eines solchen dezentralen Systems bereitstellt.

Wie erstellt man eine dezentrale Anwendung, die skalierbar ist? Nutzen Sie weniger Blockchain

Bei dieser Architektur speichern wir in der Blockchain nur Daten, die tatsächlich verteilt und nicht beschreibbar sein müssen. Im Fall von Blockstack benötigen Sie Blockchain-Transaktionen nur, um sich zu registrieren und anzugeben, wo Ihre Daten gespeichert werden sollen. Sie benötigen möglicherweise mehr Transaktionen, wenn Sie etwas aus diesen Informationen ändern möchten, aber das ist nicht der Regelfall.

Darüber hinaus funktioniert die Logik der Anwendung, im Gegensatz zum ersten Ansatz, auf der Client-Seite und nicht in Smart Contracts. Dies ermöglicht es dem Entwickler, diese Logik ohne kostspielige oder manchmal sogar unmögliche Aktualisierungen des Smart Contracts zu ändern. Da die Daten und die Logik der Anwendung nicht in der Blockchain gespeichert sind, können dezentrale Anwendungen ein Leistungs- und Skalierungsniveau traditioneller zentralisierter Systeme erreichen.

Fazit

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

Zum Beispiel, wenn eine dezentrale Anwendung nicht auf Smart Contracts basiert, verringert sich der Bedarf an Utility-Token. Das kann Probleme für Unternehmen verursachen, wenn man bedenkt, dass ICOs die Hauptquelle für die Finanzierung dezentraler Anwendungen waren (einschließlich Blockstack selbst).

Es gibt auch technische Probleme. Es ist relativ einfach, eine Hotelbuchungsfunktion in einem Smart Contract zu implementieren, bei der bei einer atomaren Operation Zimmer gegen Tokens reserviert werden. Es ist jedoch nicht ganz klar, wie die Buchung in einer Blockstack-Anwendung ohne Smart Contracts funktionieren würde.

Anwendungen, die auf globale Märkte mit dem Potenzial für Millionen von Nutzern abzielen, müssen sehr gut skalieren, um erfolgreich zu sein. Es wäre ein Fehler, allein auf Blockchains zu setzen, um in naher Zukunft ein solches Maß an Skalierbarkeit zu erreichen. Um mit großen zentralisierten Marktakteuren wie Booking.com konkurrieren zu können, müssen Entwickler dezentraler Anwendungen alternative Ansätze für das Design ihrer Anwendungen in Betracht ziehen, beispielsweise den von Blockstack.

Quelle: habr.com

60GB SSD 8Gb DDR4