Warum wir noch eine weitere Kryptowallet entwickelt haben
Hallo, ich bin Thomas, CTO hier bei Morpher. In diesem Beitrag möchte ich ein wenig darüber sprechen, wie die Wallet-Komponenten eingerichtet sind und warum wir die Wallet überhaupt erstellt haben. Es handelt sich um einen ziemlich technischen Artikel, also ist dieser Artikel für sie, wenn sie ein Entwickler sind.
Warum noch ein weiteres Wallet?! 🤔
Das Ziel von Morpher ist es, den Handel mithilfe der Blockchain-Technologie für die breite Öffentlichkeit zugänglich zu machen. Aktuelle Wallet-Implementierungen sind alle sehr, sehr sicher, aber nicht sehr benutzerfreundlich. Sie sind auch oft nicht einfach für Entwickler zu verwenden. Wir sind der Meinung, dass Benutzerfreundlichkeit die Sicherheit nicht gefährden muss.
Wir haben Morpher mit drei verschiedenen Wallets gestartet: MetaMask, Portis und Fortmatic. Die Integration mit Wallets funktioniert in der Regel so: Das Wallet injiziert ein vollständiges Web3-Objekt in die Website und kümmert sich um die Verbindung zu einem Knoten sowie um die Bereitstellung eines Keystores zum Signieren von Transaktionen. Im Wesentlichen müssen Sie sich also mit dem richtigen Knoten verbinden und die Mittel haben, Transaktionen zu signieren, die über die Verbindung des Wallets mit dem Knoten gesendet werden. Das sind zwei Komponenten: ein HTTP/WebSocket-Connector und ein Keystore, beide in einem "Wallet", das sich um das Signieren und Senden kümmert.
Die Tatsache, dass beide Komponenten extern sind, gibt dem Entwickler sehr wenig Kontrolle zurück. Zum Beispiel können Sie mit MetaMask nicht direkt beeinflussen, mit welchem Netzwerk Sie sich verbinden möchten – dies muss der Benutzer tun. Abgesehen von einigen kleinen Fortschritten bei neuen RPC-Aufrufen, die es Entwicklern ermöglichen, automatisch ein neues Netzwerk hinzuzufügen, können Sie nur zuhören und beobachten, mit welchem Netzwerk der Benutzer verbunden ist, und ihn über ein Modal oder eine Art von Warnung informieren, dass er mit dem falschen Netzwerk verbunden ist.
MetaMask
Stellen sie sich vor, sie sind ein nutzer, der noch nie mit der Blockchain in Berührung gekommen ist.
Jetzt müssen sie MetaMask einrichten, bevor sie eine Plattform nutzen können. Sie müssen ein Browser-Plugin herunterladen, von dem sie noch nie gehört haben, das einen Fuchskopf hat, der ihrem Mauszeiger folgt. Danach müssen sie ein sicheres Passwort eingeben – und Gott bewahre, sie verlieren es. Danach werden sie aufgefordert, sich an einen "Seed-Phrase" zu erinnern. Zu diesem Zeitpunkt haben sie keine Ahnung, was eine Seed-Phrase ist, aber es klingt, als hätten sie gerade ihr Praktikum bei der CIA begonnen.
Wenn sie bis zu diesem Punkt nicht aufgegeben haben, werden sie dann mit einem Popup-Fenster begrüßt, um Netzwerkdetails einzugeben und etwas umzuschalten, was für den normalen Nutzer sehr beängstigend klingt. Jetzt haben sie es zur Morpher Sidechain geschafft 🎉 (genau wie wir, wahrscheinlich nutzt ihre DApp auch ein Layer-2-Netzwerk).
Zu guter Letzt erhalten sie einen ETH, um Transaktionen auf unserer Sidechain zu signieren. Diese sind wie Testnet-ETH auf unserer POA-Sidechain und sind im Grunde wertlos. Trotzdem sagt ihnen MetaMask, dass sie reich sind. Es ist natürlich sehr enttäuschend festzustellen, dass ihr neuer Reichtum überhaupt kein Reichtum ist und die $3.000 in ihrer Brieftasche nicht real sind. Aber zu diesem Zeitpunkt sind dies nur Details, denn die meisten Nutzer haben bereits aufgegeben, MetaMask herunterzuladen.
Sie kommen, um zu handeln, nicht um Blockchain-Experten zu werden.
Portis und Fortmatic
Hier kommen die gehosteten Wallets. Lassen sie uns jetzt nur auf Fortmatic (oder Magic?) konzentrieren.
Es ermöglicht auch den vollen Web3-Zugriff auf die Website. Das bedeutet, es erledigt zwei Dinge: Verbindung zu einem Netzwerk herstellen und einen Keystore bereitstellen.
Es behauptet, nicht verwahrend zu sein. Es verwendet AWS KMS zur Verschlüsselung. Aber im Wesentlichen ist es ein Mittelsmann im Wiederherstellungsprozess und speichert ihre Wiederherstellungsschlüssel innerhalb ihrer eigenen Infrastruktur 🤷♂️.
Es erlaubt ihnen, die Pop-ups ein wenig zu gestalten. Aber wenn Fortmatic entscheidet, dass heute jeder 2FA benötigt, dann sei es so. Nichts, was sie dagegen tun können. Wenn Fortmatic morgen entscheidet, dass sie ihre E-Mail-Adresse erneut bestätigen müssen, dann sei es so. Wenn Fortmatic entscheidet, dass das Exportieren ihres privaten Schlüssels das Löschen des Kontos bedeutet, nun, nichts, was sie tun können. Wenn Fortmatic entscheidet, dass es sich nicht mehr mit ihrem Layer-2-Netzwerk verbindet, können sie nur zu den allmächtigen Blockchain-Göttern beten. Und Fortmatic hat nicht entschieden, ob Entwickler oder Benutzer die Transaktionsbestätigungsbildschirme überhaupt ausschalten können (und diese Pop-ups sind auf Mobilgeräten nicht schön). Aber es gibt nur so viel, was sie dagegen tun können.
Es reicht nicht aus, in einer Welt den Launen von Drittanbietern ausgeliefert zu sein, sie müssen tiefe Taschen haben. Die Preisgestaltung basiert auf Benutzerregistrierungen. Sobald ihre DApp Fahrt aufnimmt, sind sie bereits verpflichtet, auch wenn sie diese Benutzer noch nicht monetarisiert haben.
Vorstellung des Morpher Wallets
Stellen sie sich folgendes vor:
Sie sind eine Nutzerin, die zu Morpher kommt. Sie sind an die Anmeldungsabläufe von Web 2.0 gewöhnt. Sie möchten sich anmelden, um zu handeln. Sie möchten bei Tesla long gehen. Sie möchten sich keine Gedanken machen (und haben keinen Grund, sich mit) Signatur-Popups, Seed-Phrasen oder privaten Schlüsseln zu befassen. Sie könnten auch all diese coolen Krypto-Dinge machen, aber in erster Linie sind sie hier, um zu handeln, nicht um zu lernen, wie Krypto funktioniert, Seed-Phrasen zu exportieren oder warum es besser ist, PBKDF2 anstelle von SHA256 zur Verschlüsselung zu verwenden.
Oder sie sind wie wir: Sie sind eine Entwicklerin. Sie möchten ihren Nutzern ein reibungsloses Erlebnis bieten. Sie möchten eine nicht verwahrte Lösung und die volle Kontrolle darüber haben, wie es aussieht und sich anfühlt, ohne zu viel bei der Sicherheit zu beeinträchtigen.
Deshalb haben wir das Morpher Wallet entwickelt. Aber wie funktioniert es?
Technischer Überblick
Nach dieser esoterischen Einführung, warum wir das Wallet gebaut haben, sind sie sicherlich auch an einem umfassenden technischen Überblick interessiert. Immerhin sind wir Entwickler. Also, lasst uns das machen!
Das Morpher Wallet verwendet 3 Komponenten.
- Eine Backend-Komponente, geschrieben in NodeJS/Express, die niemals einen unverschlüsselten privaten Schlüssel oder Seed-Phrase sieht. Es handelt sich im Grunde um Speichern und Abrufen von verschlüsselten Schlüsseln.
- Eine Frontend-Komponente, die als Schlüsselspeicher und Schnittstelle fungiert.
- Und ein SDK, das ein web3-Objekt erstellt und es einer Website übergibt. Es verbindet das Wallet als iFrame und stellt sicher, dass die Kommunikation zwischen dem iFrame sicher ist und Funktionen wie web3.eth.signTransaction funktionieren.
Lassen sie uns das Schritt für Schritt durchgehen und sehen, was zum Beispiel beim Anmelden passiert, bevor wir in die Kommunikation zwischen dem iFrame und dem Elternelement eintauchen.
Anmeldung und nicht verwahrungsbezogener Datenfluss
Wenn sich ein Benutzer anmeldet, generiert das Frontend eine Seed-Phrase unter Verwendung von bip39.
Das geschieht alles zu diesem Zeitpunkt im Frontend - das Backend sitzt dort untätig und teilt dem Frontend nur mit, ob bereits ein Benutzer mit dieser E-Mail-Adresse existiert.
Daraufhin hashen das Frontend das Passwort des Benutzers, verwendet diesen Hash, um die Seed-Phrase mit AES-GCM 256 Bit und 10000 SHA-256-Iterationen PBKDF2 zu verschlüsseln. Zu diesem Zeitpunkt ist dies branchenüblich.
Anschließend speichern wir den verschlüsselten Schlüsselspeicher im Backend.
Wir speichern den verschlüsselten Schlüsselspeicher auch im localStorage, damit der Benutzer beim nächsten Öffnen des Browsers nur das Passwort eingeben muss, aber das ist eine andere Geschichte und rein aus Bequemlichkeit. Es gefährdet nicht die Tatsache, dass alles nicht verwahrungsbezogen und verschlüsselt ist.
Anmeldung
Ein Benutzer ist registriert, aber woher stammen die Daten, um zum magischen privaten Schlüssel zu gelangen? Sie sind im Backend gespeichert, aber verschlüsselt. Neben allen üblichen bewährten Webpraktiken, um nicht Opfer von DDoS-Angriffen usw. zu werden, wird der Schlüssel auch nur clientseitig entschlüsselt.
Es funktioniert wie folgt:
- Der Benutzer gibt die E-Mail-Adresse und ein Passwort ein.
- (Optional) Der Benutzer wird durch einen 2FA-Prozess geführt.
- Das Frontend fordert das Backend auf, einen Eintrag in der Datenbank für diese E-Mail-Adresse zu suchen.
- Das Backend sendet die verschlüsselte Seed-Phrase zurück.
- Das Frontend versucht, die Seed-Phrase clientseitig mit dem gehashten Passwort zu entschlüsseln.
Von dort aus wird ein web3.eth.accounts-Schlüsselspeicher aus der nun entschlüsselten Seed-Phrase erstellt und im Browser-Sandbox im Speicher für weitere Verwendung aufbewahrt.
Transaktion signieren
Der Schlüsselspeicher im Morpher Wallet ist tatsächlich nur die wichtigste Komponente, die an sich nicht mit einem Knoten verbunden ist. Die Architektur ist so aufgebaut, dass das Wallet als iFrame in eine andere Website eingebettet ist.
Wenn sie ihre Aufmerksamkeit auf den Vuex-Speicher richten, finden sie alle notwendigen Funktionen, wenn das Wallet eingebettet ist.
Die eigentliche Signatur erfolgt durch die web3-Bibliothek und wird dann an das übergeordnete Frame zurückgegeben, das das Wallet einbettet, das ein benutzerdefinierter HookedWalletProvider ist.
Dies wird dann über den normalen web3-Prozess an einen Knoten weitergeleitet und sendet eine signierte Transaktion.
Fazit
Zusammenfassend ist das, wie die inneren Abläufe funktionieren. Offensichtlich steckt mehr dahinter als nur die Anmeldung, den Login und das Unterzeichnen von Transaktionen. Aber für eine schnelle Einführung ist das wahrscheinlich ausreichend.
Der wichtigste Teil für uns ist die vollständige Kontrolle über die Benutzeroberfläche und ihr Verhalten zu haben. Wir wollten bewusst die Nutzeranmeldung einfach gestalten, aber genug Kontrollen für den Benutzer lassen, um ihr Portemonnaie nach Bedarf abzusichern.
Verdammt, sie könnten sogar den Wiederherstellungssatz exportieren, in MetaMask importieren und sich erneut bei Morpher anmelden. So standardisiert ist das.
Wenn sie mehr interessiert, gibt es ein vollständiges Prüfdokument, das näher auf die Funktionsweise der Verschlüsselung und Entschlüsselung sowie des Datenflusses eingeht.
Wenn sie die Wallet-Lösung in ihre eigene Website oder DApp integrieren möchten, lassen sie es uns wissen! Wir planen, sie auch für andere Entwickler vollständig zu öffnen.
Wie sie sich einbringen und mehr erfahren können:
- Füllen sie das SDK-Anforderungsformular aus
- Erkunden sie MorpherWallet auf Github
- Besuchen sie die Wallet-Landingpage
- Probieren sie die Morpher Wallet in ihrem Browser aus
Haftungsausschluss: Alle Investitionen sind mit Risiken verbunden und die bisherige Performance eines Wertpapiers, einer Branche, eines Sektors, eines Marktes, eines Finanzprodukts, einer Handelsstrategie oder des Handels einer Einzelperson ist keine Garantie für zukünftige Ergebnisse oder Erträge. Anleger sind voll verantwortlich für alle von ihnen getroffenen Anlageentscheidungen. Solche Entscheidungen sollten ausschließlich auf einer Bewertung ihrer finanziellen Umstände, Anlageziele, Risikobereitschaft und Liquiditätsbedürfnisse basieren. Dieser Beitrag stellt keine Anlageberatung dar
Schmerzfreier Handel für alle
Hunderte von Märkten an einem Ort - Apple, Bitcoin, Gold, Uhren, NFTs, Sneaker und vieles mehr.
Schmerzfreier Handel für alle
Hunderte von Märkten an einem Ort - Apple, Bitcoin, Gold, Uhren, NFTs, Sneaker und vieles mehr.