Anmeldesystem für DAPP

Ich baue Dapp auf Ethereum auf. Das Hauptmerkmal dieser Dapp ist die Registrierungs-/Login-Logik. Ich möchte Metamask nicht verwenden, aber ich möchte ein Anmeldesystem wie MyEtherWallet ohne Chrome-Erweiterung erstellen. Wie geht das am besten?

sollte ich eine zentralisierte Datenbank verwenden? weil Dapp nicht mehr dezentralisiert sein wird.

Antworten (4)

Zu Testzwecken können wir metamask/myetherwallet verwenden. Aber für das Produktionssystem in Dapp müssen wir das Konto und seine Aktivitäten wie das Signieren der Transaktion verwalten. Hier sind allgemeine Schritte, damit Ihre DApp gut funktioniert.

  1. Kontoverwaltung: Dies ist ein grundlegender Teil der Interaktion mit Vertragsfunktionen. Hier ist das Modul web3.eth.accounts. dies erklärt Die web3.eth.accounts enthalten Funktionen zum Erstellen von Ethereum-Konten und Signieren von Transaktionen und Daten. Sie können fast alle Dinge tun, die Sie von Metamask aus tun.

  2. Netzwerk-RPC-Endpunkt: Die oben genannten Konten müssen sich in demselben Netzwerk befinden, in dem Sie den RPC-Port aktiviert haben.

  3. Dapp-Hosting: Letztendlich ist Ihre Blockchain verteilt und dezentralisiert, aber Ihre Dapp muss nicht verteilt und dezentralisiert werden. Sie können überall hosten, wo Sie möchten, AWS, Google Cloud. Sie benötigen nur einen privaten/öffentlichen Schlüssel, um mit der Blockchain zu interagieren. Das bedeutet, dass Sie sich um Ihr Konto und Ihren Signaturmechanismus kümmern müssen, was bedeutet, dass Sie Ihren privaten Schlüssel getrennt und sicher aufbewahren.

Unabhängig davon, ob Sie Ihre DApp mit web3 oder der nativen Go-Sprache oder einer beliebigen . Das Konzept ist das gleiche.

Wenn Sie Ihren separaten privaten Schlüssel haben und nur Sie mit diesem Schlüssel interagieren können, gibt es keine solche Einschränkung, die Benutzerinteraktion mit einer zentralisierten Benutzeroberfläche zu dezentralisieren.

Hören Sie, ich möchte meinen Knoten nicht laufen lassen, ich baue nur eine Demo. Diese Demoversion sollte auch eine mobile (ionische) Anwendung enthalten, haben Sie eine Idee, wie das möglich ist?
Hier sind einige Informationen ethereum.stackexchange.com/questions/18461/… , ich habe sie nicht in der mobilen App implementiert, aber es könnte eine Lösung geben. Oder Sie können web3js und NodeJS als Backend verwenden und ionic als Schnittstelle verwenden, es wird gut funktionieren
Aber wie hat der NodeJS-Server meinen privaten Schlüssel, um zum Beispiel die sign()-Funktion im Backend zu machen? Auf der Website kann ich den Metemask-Anbieter und die Call-sign()-Funktion im Frontend verbinden.
Wenn Sie Node nicht ausführen, ist es nicht möglich, die Demo anzuzeigen. Entweder Sie können testRPC oder ein privates Netzwerk/Testnetzwerk verwenden. Und eine andere Sache ist, dass Ihr nodejs-Server nichts außer Ihrer Logik speichert. Sie müssen die Keystore-Datei speichern und bitte sehen Sie sich diesen Link an. Dies hilft, eine Keystore-Datei zu erstellen, und Sie können sie überall speichern, aber sie muss während des Transaktionsvorgangs zugänglich sein, da Sie einen privaten Schlüssel benötigen, medium.com/@julien.maffre/… Hier ist erklärte den gesamten Prozess zum Erstellen einer Keystore-Datei.

Ergänzend zu Guilhermes Antwort: Ich bin kürzlich auf ein Projekt namens Fortmatic gestoßen

Scheint eine weitere praktikable Lösung zu sein, um Identität ohne MetaMask zu handhaben. Ich bin gerade in die Alpha gekommen und habe angefangen, damit herumzuspielen, und soweit so gut, sehr saubere und anständige Dokumentation und lässt sich gut in web3 integrieren

Es gibt eine Reihe von Möglichkeiten, mit der Identität umzugehen, ohne Metamask oder eine Chrome-Erweiterung zu verwenden, aber Sie werden immer auf eine Art "nicht so dezentralisierte" Weise sein, weil Sie am Ende eine externe Datenbank erstellen müssen.

Sie können sich mit einem Identitätsanbieter verbinden, der dies für Sie erledigt. Ich denke, das ist der einfachste Weg, das zu tun, was Sie wollen.

Ich kenne einige Anbieter, wenn Sie sie sich ansehen möchten:

  1. Uport – https://www.uport.me/ uPort gibt das Eigentum an der Identität an die Person zurück. Das offene Identitätssystem von uPort ermöglicht es Benutzern, ihre eigene Identität auf Ethereum zu registrieren, Anmeldeinformationen zu senden und anzufordern, Transaktionen zu signieren und Schlüssel und Daten sicher zu verwalten. Schauen Sie sich an, was wir bauen:
  2. Civic – https://www.civic.com/ Die Secure Identity Platform (SIP) von Civic verwendet eine verifizierte Identität für die Multi-Faktor-Authentifizierung in Web- und mobilen Apps, ohne dass Benutzernamen oder Passwörter erforderlich sind.
  3. OriginalMy - https://originalmy.com/ Melden Sie sich bei Websites an, ohne sich Gedanken über Passwörter machen zu müssen, und füllen Sie nie wieder Formulare aus. Verwenden Sie Ihre Blockchain-ID, um verschiedene Aktionen im Internet sicher durchzuführen, ohne sich Gedanken über Betrug machen zu müssen.
Ich weiß, Sie sprechen von dezentralisierter Identität, aber das ist nicht das, was ich brauche. Stellen Sie sich vor, ich habe Unternehmen, die sich in meinem Dapp registrieren müssen. Ich werde ihnen ihren eigenen Smart Contract und ein Paar aus öffentlichem und privatem Schlüssel zur Verfügung stellen, mit denen sie einfach ihr Konto entsperren und einige Änderungen an ihrem Smart Contract vornehmen.
Wie also soll diese Kontoentsperrung geschehen? Ich möchte es einfach machen. Vielleicht werde ich ihnen ein Ethereum-Konto zur Verfügung stellen und einfach den öffentlichen und privaten Schlüssel dieses Kontos verwenden?
Ja ich habe es falsch verstanden. Lass mich darüber nachdenken.
ok, lassen Sie mich wissen, wenn Sie irgendwelche Gedanken haben.

Es hört sich so an, als würden Sie ein Transaktionsrelaissystem benötigen, damit Ihr dapp-Benutzer Transaktionen signiert und der Relayer sie dann auf Ethereum ausführt. Dazu können Sie sich https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1077.md und eine ähnliche Implementierung unter https://github.com/gnosis/safe-contracts ansehen

Die Relayer wären dann jedoch höchstwahrscheinlich zentralisiert, im Prinzip, wenn wir ein dezentralisiertes Relay-Netzwerk für all diese Arten von Transaktionen aufbauen könnten. Aber fertig ist mir noch nichts bekannt.

PS: Wir haben versucht, in einem Hackathon unter https://devpost.com/software/hermes-network ein dezentralisiertes Relay-Netzwerk aufzubauen, und ich hoffe, dass bald weitere Nachfolgeprojekte ähnlicher Projekte folgen werden.