Technische Architektur der Blockchain-App

Nehmen wir an, ich möchte eine App erstellen, die nicht vollständig dezentralisiert ist, sondern Restful-APIs für das Frontend bereitstellt und eine private Ethereum-Blockchain im Backend verwendet, um sensible Daten zu verarbeiten und Benutzerberechtigungen zu verwalten. Ich erstelle für jeden Benutzer bei der Anmeldung bei meinem Backend ein Ethereum-Konto mit seinem Passwort. Das Back-End führt NodeJS Express aus und ist mit der web3-Instanz verbunden. Wann immer der Benutzer eine Aktion ausführen möchte, muss er sein Passwort eingeben, dann verwende ich dieses Passwort, um sein Konto zu entsperren und eine Transaktion zu senden (oder es könnte ein Vertragsanruf sein).

  1. Ist es sinnvoll, als Middleware zwischen dem Nutzer und der privaten Blockchain zu fungieren? Ich meine, ist dies aus Sicht des Ethereum-Designs eine gängige Praxis? Wie sollte sich der Benutzer dieser Praxis bewusst sein, wenn er nichts im Zusammenhang mit Blockchain sieht, weil die ganze Arbeit hinter den Kulissen erledigt wird? Wie könnte der Benutzer meinem System vertrauen, dass sein Passwort nicht preisgegeben wird?

  2. Ist es in einem solchen Fall empfehlenswert, mehrere Knoten für diese private Blockchain zu verwenden? Welchen Nutzen bringt es? Ist es nur die hohe Verfügbarkeit und das Entfernen des zentralen Fehlerpunkts?

1. Nein, tun Sie es nicht .... vertrauen Sie mir in diesem Fall. 2. Nein, es sei denn, Sie arbeiten mit mehreren Unternehmen zusammen, die dasselbe tun, und Sie alle tun dies auf einer gemeinsam vereinbarten Blockchain.
@OWADVL .. können Sie die Antwort auf die erste Frage etwas näher erläutern?

Antworten (2)

Bevor ich versuche, Ihre Fragen zu beantworten: Es gibt bestimmte Vorteile für die Verwendung einer Blockchain und insbesondere von Ethereum. Diese Vorteile sind:

  • Die Blockchain-Technologie hilft dabei , Dinge zu verfolgen, indem sie ihr einzigartiges Währungssystem und "Token" verwendet.
  • Die Blockchain-Technologie kann einen unbestreitbaren Integritätsnachweis für jede Art von Daten liefern
  • Ethereum Smart Contracts können Mittel für transparente Transaktionen zwischen automatisierten Einheiten bereitstellen. Unternehmen, die durch "Code Laws" reguliert werden.
  • Ethereum Smart Contracts schaffen eine Art automatisierten Händler für alle Arten von Waren (ein Verkaufsautomat für alles)

Diese Vorteile sind diejenigen, die Sie benötigen, um eine auf Ethereum basierende Plattform zu implementieren. Abgesehen davon wird Ethereum schnell zu einer Belastung und einem Schwachpunkt in Ihrem System.

Deine Fragen :

1) In vielen aktuellen und den meisten zukünftigen Großprojekten werden Ethereum-Knoten ohnehin für den Benutzer nicht sichtbar sein. Was das Vertrauen zwischen der Plattform (dem System) und dem Benutzer aufbaut, ist das Versprechen von Transparenz und Robustheit. Eine bewährte Vorgehensweise besteht darin, Ihren Benutzern ausdrücklich mitzuteilen, dass Sie ihre Konten in ihrem Namen verwalten, und ihnen die Möglichkeit zu geben, sich dagegen zu entscheiden und ihre Ethereum-Konten und -Transaktionen selbst zu verwalten, während sie weiterhin von den Diensten Ihrer Plattform profitieren.

2) Mehrere Knoten im Falle eines privaten Netzwerks sind nicht erforderlich. Möglicherweise müssen Sie viele Knoten verwenden, wenn die Logik hinter Ihrem System die tatsächliche Entscheidungsteilung zwischen diesen Knoten erfordert. So etwas wie ein Knoten für jedes Land oder ein Knoten für jede Partei. Viele Knoten können auch den Druck auf Ihre Hardware verringern und die Kapazität und Fehlertoleranz Ihres Systems erhöhen.

Nehmen wir an, ich möchte ein vertrauenswürdiges Treuesystem für meine Benutzer erstellen. Soll ich einen ERC-20-Token erstellen? Oder es ist nicht wirklich nötig, da ich die Logik im Smart Contract verwalte.
Wenn Sie sagen, dem Benutzer die Möglichkeit zu geben, direkt mit der Blockchain zu interagieren, wie kann dies eine Option sein, die eine mobile App verwendet?
@abed Sie können einen Metamasken-ähnlichen Dienst für Ihre mobile App integrieren (falls vorhanden).
Es gibt tatsächlich einen Geth-Client für iOS und Android, habe ihn aber nie ausprobiert.
@abed es ist wahrscheinlich kein voller Knoten, vielleicht ein leichter. Es ist schwierig, ein Geth auf Mobilgeräten zu installieren

Ich habe eine private Blockchain mit einem Backend-System in nodejs implementiert, das einige der Hürden bewältigt, aber der Blockchain die Arbeit überlassen, die sie am besten kann: Vertrauen geben. Also habe ich im Grunde eine Lösung implementiert, die umgekehrt zu dem funktioniert, was Sie hier beschrieben haben.

In meiner Architektur befindet sich der private Schlüssel eines Benutzers auf dem Client und die Benutzerdaten werden zusammen mit dem Benutzerkonto auf Ethereum auf einem Mongodb-Server registriert. Immer wenn eine Transaktion angefordert wird, erstellt der Client sie auf der Blockchain mit dem privaten Schlüssel des Benutzers (in einer mobilen App wird er im Speicherbereich gespeichert, in einer Web-App wird er von MetaMask verwaltet) und registriert die Transaktion bei Erfolg darin die Datenbank mit einem Verweis auf den Transaktionshash.

Auf diese Weise bleibt die Wahrheit in der Blockchain, niemand kann Passwörter stehlen und in der Datenbank haben Sie Daten, die zu teuer sind, um sie in der Blockchain zu behalten.

Der private Schlüssel des Benutzers wird also auf dem Mobiltelefon gespeichert und jedes Mal über die REST-API an Ihren Server gesendet, wenn der Benutzer eine Transaktion senden möchte?
Absolut nicht. Wir haben eine mobile App, die den privaten Schlüssel auf dem Smartphone speichert und die Transaktion auf der Blockchain erstellt, ohne den Backend-Server zu verwenden. Nachdem die Transaktion auf der Blockchain bestätigt wurde, sendet die mobile App einige Daten zusammen mit dem Transaktionshash an den Backend-Server.
Ok, das klingt großartig. Wenn es also bei der mobilen App um eine private Blockchain geht, beziehen Sie den Benutzer in den Wallet-Erstellungsprozess mit ein? Was ist, wenn er die App deinstalliert und sich dann erneut anmelden möchte, wie kann er den privaten Schlüssel wiederherstellen?
@abed Ja, während der Benutzerregistrierung erstellt die App den privaten Schlüssel. Dann muss der Benutzer den 12-Wörter-Seed speichern, drucken oder irgendwo speichern (GDrive?). Um die Unordnung zu reduzieren, wenn Sie spezifischere Fragen haben, schreiben Sie mir eine E-Mail (Adresse im Profil)