Bereitstellen von Metamask-Hooks nur unter Verwendung von Knoten, die auf dem Server gehostet werden

Ich überlege derzeit, einen Ethereum-Knoten auf meinem Webserver zu hosten, damit meine Benutzer mit meinen dApps interagieren können, ohne Metamask zu benötigen (obwohl es verwendet werden könnte). Wie könnte ich den clientseitigen Web3.js-Code mit meinem Server als Hook interagieren lassen, anstatt was normalerweise von Metamask injiziert würde. Wenn ich den web3.js-Code auf meinem Server einbinden und im Header verlinken würde, könnte ich dann einfach das Web3-Objekt mit meinem Node als Provider konstruieren und Metamask wäre nicht mehr nötig?

Wenn Metamask für normale Browser auf jeden Fall notwendig ist, wäre eine Erklärung dafür sehr willkommen. Wenn das, was ich gesagt habe, funktionieren könnte, wie könnte ich meinen servergehosteten Knoten als Anbieter verwenden (welchen Port würde ich verwenden und könnte ich meine normale Domäne verwenden) und was könnte ich tun, um die Sicherheit zu verbessern? Meine größte Sorge ist, dass, wenn alles so einfach funktioniert, wie ich es hier vorgeschlagen habe, jemand eine eigene Website erstellen könnte, die sich mit meinem Knoten verbindet, und jeder wird anfangen, meinen Knoten für alle seine Websites zu verwenden.

Mein Server ist als LAMP-Server eingerichtet und ich verwende benannte virtuelle Hosts, um den Datenverkehr nach Bedarf umzuleiten/zu steuern (könnte dies verwendet werden, um meinen Knoten vor anderen zu schützen, die ihn verwenden). Ich würde es vorziehen, bei meinem aktuellen Setup zu bleiben, anstatt zu node.js zu wechseln, aber wenn es absolut notwendig ist, um eine Site zu bekommen, die ohne Metamask funktioniert, würde ich es auf jeden Fall prüfen.

Antworten (1)

Ich arbeite an MetaMask.

Ich denke, MetaMask macht hauptsächlich zwei Dinge:

  1. Es stellt ein web3-Objekt zum Lesen bereit, eine Blockchain-Datenquelle.
  2. Es verwaltet die Schlüssel des Benutzers und bietet Websites durch die Verbindung mit der web3-API eine einfache Möglichkeit, von einem Benutzer die Unterzeichnung einer Transaktion anzufordern, ohne die Kontrolle des Benutzers aufzugeben, nur das zu genehmigen, was er möchte.

Die von Ihnen vorgeschlagene Lösung wäre ein einfacher Ersatz für MetaMask im ersten Fall, den ich beschrieben habe. Das kniffligere Thema ist die Schlüsselverwaltung des Benutzers. Worauf würde das Ihrer Meinung nach bei Ihrem vorgeschlagenen LAMP-Setup fallen?

Sie können sich einfach dafür entscheiden, Benutzerkonten serverseitig zu verwalten, die privaten Schlüssel der Benutzer für sie zu speichern und verlangen, dass sie die Konten finanzieren, wenn sie beginnen, was es vielleicht einfach macht, sie mit dem Coinbase-Widget zu finanzieren, wie es MetaMask tut.

Das größte Problem dabei ist, dass das Vertrauensmodell nicht wirklich dezentralisiert ist. Ihr Server wird zu einem zentralen Vertrauens- und Fehlerpunkt. Wenn ein einzelner Hacker Zugriff auf Ihren Server erlangt, könnte das Konto jedes einzelnen Benutzers vollständig geleert und alle Vermögenswerte auf einen Schlag gestohlen werden.

Ein Teil der Innovation in Blockchains besteht darin, die kryptografischen Schlüssel eines Benutzers unter seiner eigenen Kontrolle zu halten. Es gibt einige anständige Möglichkeiten, dies ohne MetaMask zu tun. Mein Favorit ist, wenn Ihre Benutzer eine Hardware-Wallet haben, gibt es zum Beispiel einige anständige Bibliotheken für Ledger, aber die meisten Leute haben kein Ledger.

Vor MetaMask haben die Leute viele unsichere Dinge getan, um Websites zu erstellen, auf denen Benutzer mit Ethereum interagieren konnten. Dinge wie das Hochladen privater Schlüssel oder das Erteilen von Befehlen zum Kopieren und Einfügen in ihre Befehlszeilen.

Das ist das grundlegende Problem, das dazu geführt hat, dass ich mich entschieden habe, an MetaMask zu arbeiten. Diese Benutzererfahrungen waren schrecklich und wir brauchten einfachere Möglichkeiten, mit Ethereum zu interagieren. Es gibt einige coole neue Modelle, die auf mobilen Anwendungen basieren, aber ich denke, MetaMask ist immer noch sehr wichtig für den Desktop, weil es es so einfach macht, wie eine Website zu erstellen, um eine Ethereum-kompatible App zu erstellen.

Ich hoffe, das beantwortet Ihre Frage.

Toll zu wissen. Ich muss das weiter testen, aber ich bin damit einverstanden, dass der Benutzer keinen Zugriff auf ein Konto hat. Eine Seite, auf der Sie alles sehen können, was ein Metamask-Benutzer sehen würde, aber ohne die Möglichkeit zur Interaktion, ist eine gute Alternative, um sie einfach im Staub zu lassen. Danke noch einmal!