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

Nein, das Starten einer dezentralen Anwendung (dapp) auf der Blockchain führt nicht zu einem erfolgreichen Geschäft. 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 sind die meisten Anwendungen, die auf der Blockchain laufen, trotz ihrer einzigartigen Merkmale und Vorteile viel teurer, langsamer und weniger benutzerfreundlich als ihre zentralisierten Konkurrenten.

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

In vielen Whitepapers von Anwendungen, die auf der Blockchain basieren, findet man häufig einen Absatz, in dem steht: "Blockchain ist teuer und nicht in der Lage, die erforderliche Anzahl an Transaktionen pro Sekunde zu unterstützen. Glücklicherweise arbeiten viele kluge Köpfe an der Skalierung der Blockchain, und zum Zeitpunkt des Starts unserer Anwendung wird sie ausreichend skalierbar sein."

In einem einfachen Absatz kann der Entwickler einer dapp tiefere Diskussionen über Skalierungsprobleme und alternative Lösungen ablehnen. Dies führt oft zu einer ineffizienten Architektur, bei der Smart Contracts, die auf der Blockchain laufen, das Backend und das Kernstück der Anwendung bilden.

Es gibt jedoch noch unerprobte Ansätze in der Architektur dezentraler Anwendungen, die eine wesentlich bessere Skalierbarkeit ermöglichen, indem sie die Abhängigkeit von der Blockchain verringern. Zum Beispiel arbeitet Blockstack an einer Architektur, bei der die meisten Daten und Logik der Anwendung außerhalb der Blockchain gespeichert werden.

Schauen wir uns zunächst einen traditionelleren Ansatz an, bei dem die Blockchain als direkter Vermittler zwischen den Nutzern der Anwendung fungiert, was sich nicht besonders gut skalieren lässt.

Ansatz #1: Blockchain als Backend

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

In jeder Situation, in der wir versuchen, einen solchen Mittelsmann zu überwinden, indem wir diesen Ansatz nutzen, werden wir versuchen, dessen Geschäftslogik nachzubilden, indem wir Smart Contracts auf einer Blockchain wie Ethereum verwenden.

Smart Contracts mit offenem Quellcode, die auf dem "Weltcomputer" betrieben werden, können Verkäufer direkt mit Käufern verbinden, ohne ein Zwischenunternehmen. Dies reduziert letztendlich die Gebühren und Provisionen, die von einem Vermittler erhoben werden.

Wie im Bild unten dargestellt, nutzen Hotels eine dezentrale Anwendung, um Informationen über Zimmer, deren Verfügbarkeit und Preise an Wochentagen oder am Wochenende im Blockchain-System bereitzustellen, möglicherweise sogar mit einer Beschreibung der Zimmer und allen 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 Hotels und Zimmer im Blockchain-System zu suchen. Sobald der Nutzer ein Zimmer auswählt, erfolgt die Buchung durch die Übermittlung des erforderlichen Betrags an Tokens an das Hotel als Kaution. Im Gegenzug aktualisiert der Smart Contract die Informationen in der Blockchain, wodurch das Zimmer als nicht mehr verfügbar markiert wird.

Dieser Ansatz bringt zwei Probleme in Bezug auf die Skalierbarkeit mit sich. Erstens die maximale Anzahl an Transaktionen pro Sekunde. Zweitens das Volumen an Daten, das in der Blockchain gespeichert werden kann.

Lassen Sie uns einige grobe Schätzungen anstellen. Booking.com berichtet von nahezu 2 Millionen registrierten Hotels. Angenommen, jedes Hotel hat durchschnittlich 10 Zimmer und jedes Zimmer wird im Jahr nur 20 Mal gebucht – das ergibt durchschnittlich 13 Buchungen pro Sekunde.

Um diese Zahl zu bewerten, sollte erwähnt werden, dass Ethereum ungefähr 15 Transaktionen pro Sekunde verarbeiten kann.

Dabei ist zu berücksichtigen, dass in unserer Anwendung auch Transaktionen von Hotels verarbeitet werden – zur Erfassung und ständigen Aktualisierung ihrer Zimmerinformationen. Hotels aktualisieren die Preise sehr häufig, manchmal sogar täglich, und jede Preis- oder Beschreibungsänderung erfordert eine Transaktion in der Blockchain.

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

Ein auf Blockchain basierendes System kann Dritte aufgrund seiner Unparteilichkeit und dezentralen Struktur ausschließen – die Hauptvorteile der Blockchain-Technologie. Doch die Blockchain weist auch weitere Eigenschaften auf – sie ist verteilt und nicht schreibbar. Diese Merkmale sind ausgezeichnet, aber sie haben ihren Preis in Bezug auf Geschwindigkeit und Transaktionsgebühren.

Deshalb sollten Entwickler von dApps sorgfältig abwägen, ob jede Funktion, die Blockchain nutzt, wirklich auf Verteilung und Unveränderlichkeit angewiesen ist.

Zum Beispiel: Welchen Vorteil bringt es, die Daten jedes Hotels auf hunderten 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 enthalten sind? Wahrscheinlich nicht.

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

Ansatz #2: Architektur inspiriert durch Blockstack

Obwohl der Schwerpunkt hauptsächlich Blockstack in Anwendungen, bei denen die Nutzer Eigentümer ihrer Daten sind (zum Beispiel wie Airtext, BentenSound, ImageOptimizer oder Graphite), verfolgt Blockstack auch die Philosophie des minimalen Einsatzes von Blockchain – nur wenn es absolut notwendig ist. Ihr Hauptargument ist, dass Blockchain langsam und teuer ist, weshalb sie nur für einzelne oder seltene Operationen genutzt werden sollte. Alle anderen Interaktionen mit den Anwendungen sollten über Peer-to-Peer stattfinden, d.h. Nutzer dezentraler Anwendungen sollten Daten direkt miteinander teilen, und nicht über die Blockchain. Schließlich wurden die ältesten und erfolgreichsten dezentralen Anwendungen, wie BitTorrent, E-Mail und Tor, bereits vor der Schaffung des Blockchain-Konzepts entwickelt.

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

Lassen Sie uns zum Beispiel der Hotelbuchung zurückkehren. Wir wünschen uns ein neutrales, unabhängiges und offenes Protokoll, um Gäste mit Hotels zu verbinden. Mit anderen Worten, wir möchten den zentralen Vermittler beseitigen. Es besteht keine Notwendigkeit, beispielsweise ständig die Zimmerpreise in einem gemeinsamen verteilten Register zu speichern.

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

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

Im Fall von Blockstack wird nur Ihre Identifikationsinformation in der Blockchain gespeichert. Informationen darüber, wie die Daten jedes Nutzers abgerufen werden können, sind in den Zone-Dateien gespeichert und werden über ein Peer-to-Peer-Netzwerk mithilfe von Nodes verteilt. Und erneut – Sie müssen den Daten, die die Nodes bereitstellen, nicht vertrauen, denn Sie können deren Authentizität überprüfen, indem Sie sie mit den Hashes vergleichen, die in der Blockchain und bei anderen Nutzern gespeichert sind.

In einer vereinfachten Version des Systems werden Gäste das Peer-to-Peer-Netzwerk von Blockstack verwenden, um Hotels zu suchen und Informationen über deren Zimmer zu erhalten. 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 Blockstack.

Diese Architektur ist komplexer als der erste Ansatz und erfordert eine ausgeklügeltere Infrastruktur. Tatsächlich ist dies der Punkt, an dem Blockstack ins Spiel kommt und 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 im Blockchain nur die Daten, die tatsächlich verteilt und nicht überschreibbar sein müssen. Im Falle von Blockstack benötigen Sie Transaktionen in der Blockchain lediglich zur Registrierung und zur Angabe, wo Ihre Daten gespeichert werden sollen. Es könnte nötig sein, mehr Transaktionen durchzuführen, wenn Sie Informationen ändern möchten, aber das ist kein häufiges Ereignis.

Darüber hinaus erfolgt die Logik der Anwendung im Gegensatz zum ersten Ansatz auf der Client-Seite und nicht über Smart Contracts. Dies ermöglicht es Entwicklern, diese Logik zu ändern, ohne kostspielige oder manchmal sogar unmögliche Aktualisierungen des Smart Contracts vorzunehmen. Durch die Trennung von Daten und der Anwendungslogik von der Blockchain können dezentrale Anwendungen die Leistung und Skalierbarkeit traditioneller zentraler Systeme erreichen.

Fazit

Anwendungen, die auf Blockstack basieren, können viel besser skalieren als herkömmliche Blockchain-Anwendungen. Es handelt sich jedoch um einen neueren Ansatz, der mit eigenen Problemen und unbeantworteten Fragen verbunden ist.

Wenn beispielsweise eine dezentrale Anwendung nicht auf Smart Contracts basiert, verringert sich die Notwendigkeit für Utility-Token. Dies kann für Unternehmen problematisch sein, da ICOs eine wichtige Finanzierungsquelle für dezentrale Anwendungen (einschließlich Blockstack) waren.

Es gibt auch technische Herausforderungen. So ist es relativ einfach, eine Hotelbuchungsfunktion in einem Smart Contract zu implementieren, bei der die Buchung von Zimmern im Austausch gegen Tokens erfolgt. 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 Millionen von Nutzern abzielen, müssen sich hervorragend skalieren, um erfolgreich zu sein. Es ist ein Fehler, ausschließlich auf Blockchains zu setzen, um ein solches Maß an Skalierbarkeit in naher Zukunft zu erreichen. Um mit großen zentralisierten Marktteilnehmern 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, den Blockstack bietet.

Quelle: habr.com

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster