Wie entwickelt man große Anwendungen auf Blockchain?

Ich versuche, eine Social-Media-Plattform auf der Ethereum-Plattform zu entwickeln und sie mit meiner Währung (einem ERC20-Token) zu integrieren. Diese Plattform ermöglicht es Benutzern, Mediendateien (Artikel/Bilder/Videos) zu veröffentlichen, und andere können sie anzeigen und kommentieren. Deshalb bin ich hier, um ein paar Fragen zu beantworten.

Erste Frage: Was ist die empfohlene Methode zum Speichern von Mediendateien in DApps?
Ich kenne zwei Möglichkeiten; IPFS und SWARM , weiß aber nicht, was in meinem Szenario am besten geeignet wäre. Tatsächlich befindet sich Swarm in der Testphase.

Zweite Frage: Was sind die empfohlenen Methoden zur Authentifizierung von Benutzern in DApp?
Um die Authentifizierung auf Basis langer öffentlicher Schlüssel zu vermeiden, habe ich Uport gefunden , das in DApps benutzerfreundlich zur Authentifizierung von Benutzern verwendet werden kann, aber noch in der Alpha ist.

Dritte Frage: Welcher Technologie-Stack wird für das Frontend (Mobile, Web) empfohlen? Besteht Bedarf an Backend oder Middleware für DApps?

Vierte Frage: Ist es möglich, ein System auf herkömmliche Weise mit einer zentralisierten Datenbank (marai/mongo/casendra) zu entwickeln, die mit dem Backend kommuniziert, aber das Backend ist auch mit der Blockchain verknüpft, um Hashes von Daten für seinen Existenznachweis zu speichern.

Fünfte Frage: Was sind die bewährten Praktiken oder empfohlenen Wege, um riesige Blockchain-basierte Systeme (Dapps) zu entwerfen und zu entwickeln?

Bitte zögern Sie nicht zu bearbeiten, wenn etwas fehlt, das für die Entwicklung von DApps hilfreich sein könnte.

Ich denke, es könnte sich lohnen, dies in verschiedene Fragen aufzuteilen, da sie jeweils sehr unterschiedliche Themen behandeln.
Ja, das kann sein, aber der einzige Zweck dieser Frage geht verloren. Dabei geht es nicht um einzelne Technologien, sondern um die Infrastruktur von DApps.

Antworten (1)

Was ist die empfohlene Methode zum Speichern von Mediendateien in DApps?

Es gibt keinen empfohlenen Weg. Die meisten DApps befassen sich nicht mit Medien, sondern mit Wert, Sicherheit und Problemen, die kryptografische Beweise oder Authentifizierung erfordern (wer ist wer und wer besitzt einen bestimmten privaten Schlüssel). Und ja, IPFS und Swarm sind Datenspeicheroptionen. IPFS ist derzeit auf dem neuesten Stand, was bedeutet, dass nicht alles perfekt ist. Es wächst, sie haben ein großartiges Team (wie super genial) und jetzt haben sie nahezu unbegrenztes Kapital, was Gutes für die Zukunft von IPFS und Filecoin verheißt. Mediendateien sind im Vergleich zu Text normalerweise groß und das Speichern von Daten auf der Ethereum-Blockchain ist sehr teuer ( von $0.09-$0.90 pro kB zu aktuellen Ethereum-Preisen). Ganz zu schweigen von den Einschränkungen und Schwierigkeiten beim Arbeiten mit Mediendateien (vorausgesetzt, Sie müssen mehr tun, als sie nur zu speichern) in Solidity.

Was sind die empfohlenen Methoden zur Authentifizierung von Benutzern in DApp?

Das ist eine nette Sache bei DApps: Nur diejenigen, die einen privaten Schlüssel und die Passphrase eines Kontos besitzen, können sich als dieses Konto authentifizieren, also ist es in Ethereum eingebaut, dass Benutzer sich selbst authentifizieren. Du erwähnst uPort, das selbst noch im Anfangsstadium ist, aber auch ein nettes Team hat. uPort liefert Ihren öffentlichen Ethereum-Schlüssel (dieser geht auf das Bit des öffentlichen/privaten Schlüssels zurück, das in Ethereum eingebaut ist). Diese Adresse ist eine sehr eindeutige Benutzerkennung. Sehen Sie sich das public_keyBit im folgenden Bild aus einem kürzlich erschienenen uPort-Blogbeitrag an :

Geben Sie hier die Bildbeschreibung ein

Welcher Technologie-Stak[sic] wird für das Frontend (Mobile, Web) empfohlen? Besteht Bedarf an Backend oder Middleware für DApps?

Es gibt einige Teile typischer DApp-Tech-Stacks:

  1. Solide Smart Contracts, die in der Blockchain ausgeführt und gespeichert werden
  2. Ein Javascript-Webclient, der eine Verbindung zu gethKnoten herstellt (dies ist die Art und Weise, wie sich Clients mit der Blockchain verbinden und mit ihr interagieren)
  3. Die Clients in Nr. 2 laufen im Grunde alle web3. web3ist eine von Ethereum selbst geschriebene Javascript-Bibliothek. web3ist definitiv etwas, das Sie brauchen und mit dem Sie sich vertraut machen möchten.
  4. Möglicherweise IPFS für die Speicherung von Daten außerhalb der Kette, die eines oder beides sind: zu groß, um sie in der Kette zu speichern, oder zu schwierig, mit der aktuellen Einschränkung der Hochsprachen der Ethereum Virtual Machine zu arbeiten.

Vierte Frage: Ist es möglich, ein System auf herkömmliche Weise mit einer zentralisierten Datenbank (marai/mongo/casendra) zu entwickeln, die mit dem Backend kommuniziert, aber das Backend ist auch mit der Blockchain verknüpft, um Hashes von Daten für seinen Existenznachweis zu speichern.

Kurze Antwort ist ja, es ist möglich. Wie dieses Problem gelöst wird, ist für mich, der gerade auf http://Disten.se arbeitet, von großem Interesse . gitWir haben zum Beispiel ein Tool entwickelt, das Hashes auf Hashes abbildet IPFS(um zu ermöglichen, dass der Zustand eines Repos in der Kette gesichert wird). Dies ist eine Möglichkeit, einen Zeiger auf den korrekten oder wahren Zustand einiger Inhalte an anderer Stelle zu speichern (wofür Blockchains wirklich gut sind) . Wie Sie angedeutet haben, kann der Hash tatsächlich den Inhalt selbst codieren (was eine erstaunliche Eigenschaft von Hash-Funktionen ist) und kann gemäß einer Reihe von Regeln aktualisiert werden, die in Ihrem Smart-Contract-Code geschrieben sind.

Fünfte Frage: Was sind die bewährten Praktiken oder empfohlenen Wege, um riesige Blockchain-basierte Systeme (Dapps) zu entwerfen und zu entwickeln?

Diese Reihe von Fragen beantwortet diese Frage etwas, daher hoffe ich, dass Sie das oben Genannte wertvoll finden. Fühlen Sie sich frei, sich mit mir in Verbindung zu setzen, wenn Sie weitere Fragen haben, bei denen ich helfen kann.