Die neueste Version von MetaMask finden Sie auf unserer offiziellen Website. Wenn Sie Hilfe bei der Verwendung von MetaMask benötigen, besuchen Sie unsere Benutzer-Support-Website.
Für allgemeine Fragen, Funktionswünsche oder Entwicklerfragen besuchen Sie unser Community-Forum.
MetaMask unterstützt Firefox-, Google Chrome- und Chromium-basierte Browser. Wir empfehlen die Verwendung der neuesten verfügbaren Browserversion.
Für aktuelle Neuigkeiten folgen Sie uns auf X.
Um zu erfahren, wie Sie MetaMask-kompatible Anwendungen entwickeln, besuchen Sie unsere Entwicklerdokumente.
Um zu erfahren, wie Sie zur MetaMask-Codebasis beitragen können, besuchen Sie unsere Mitwirkendendokumente.
Um zu erfahren, wie Sie zum MetaMask Extension-Projekt selbst beitragen können, besuchen Sie unsere Erweiterungsdokumente.
Als Alternative zum Erstellen auf Ihrem lokalen Computer gibt es eine neue Option, mit der Sie mithilfe von GitHub Codespaces eine Entwicklungsumgebung in weniger als 5 Minuten zum Laufen bringen können. Bitte beachten Sie, dass es ein begrenztes kostenloses monatliches Kontingent gibt und GitHub Ihnen danach Gebühren in Rechnung stellt.
Hinweis: Ihnen werden sowohl die Betriebszeit als auch der genutzte Speicher in Rechnung gestellt
Klicken Sie zunächst auf die Schaltfläche oben
Es öffnet sich ein neuer Browser-Tab mit einer Remote-Version von Visual Studio Code (das Laden dauert einige Minuten).
Mit noVNC wird im Browser ein „Einfacher Browser“ geöffnet – klicken Sie auf „Verbinden“.
Klicken Sie auf die Schaltfläche oben rechts auf der Registerkarte „Einfacher Browser“, um das noVNC-Fenster in einer eigenen Registerkarte zu öffnen
Öffnen Sie die noVNC-Seitenleiste auf der linken Seite, klicken Sie auf das Zahnradsymbol und ändern Sie den Skalierungsmodus in „Remote-Größenänderung“.
Optionale Schritte:
Warten Sie beim ersten Start etwa 20 zusätzliche Sekunden, bis die Skripte abgeschlossen sind
Klicken Sie mit der rechten Maustaste auf den noVNC-Desktop, um Chrome oder Firefox mit vorinstalliertem MetaMask zu starten
Ändern Sie etwas Code und führen Sie dann yarn start
aus, um im Entwicklungsmodus zu erstellen
Nach ein oder zwei Minuten ist der Aufbau abgeschlossen und Sie können Ihre Änderungen auf dem noVNC-Desktop sehen
Ihnen werden sowohl die Betriebszeit als auch der genutzte Speicher in Rechnung gestellt
Codespaces werden nach 30 Minuten Inaktivität angehalten und nach 30 Tagen Inaktivität automatisch gelöscht
Sie können Ihre Codespaces hier verwalten: https://github.com/codespaces
Möglicherweise möchten Sie sie vor Ablauf der 30-minütigen Zeitüberschreitung manuell anhalten
Wenn mehrere Tage lang mehrere Codespaces im Leerlauf sind, kann das Speicherkontingent schnell erschöpft sein. Sie sollten diejenigen löschen, die Sie nicht mehr verwenden möchten, und langfristig wahrscheinlich nur ein oder zwei behalten. Es ist auch möglich, alte Codespaces wiederzuverwenden und den Zweig zu wechseln, anstatt neue zu erstellen und die alten zu löschen.
Wenn Sie kein interner MetaMask-Entwickler sind oder anderweitig auf einem Fork entwickeln, ist der Standard-Infura-Schlüssel im kostenlosen Plan enthalten und hat nur sehr begrenzte Anfragen pro Sekunde. Wenn Sie Ihren eigenen Infura-Schlüssel verwenden möchten, befolgen Sie die Anweisungen zu .metamaskrc
und INFURA_PROJECT_ID
im Abschnitt „Auf Ihrem lokalen Computer erstellen“.
Installieren Sie Node.js Version 20
Wenn Sie NVM verwenden (empfohlen), wählt die Ausführung nvm use
automatisch die richtige Knotenversion für Sie aus.
Aktivieren Sie Corepack, indem Sie den Befehl corepack enable
innerhalb des Metamask-Extension-Projekts ausführen. Corepack ist ein Dienstprogramm, das standardmäßig in Node.js enthalten ist. Es verwaltet Yarn auf Projektbasis und verwendet dabei die Version, die durch die Eigenschaft packageManager
in der Datei package.json des Projekts angegeben wird. Bitte beachten Sie, dass moderne Versionen von Yarn nicht dazu gedacht sind, global oder über npm installiert zu werden.
Duplizieren Sie .metamaskrc.dist
im Stammverzeichnis und benennen Sie es in .metamaskrc
um, indem Sie cp .metamaskrc{.dist,}
ausführen.
Wenn Sie kein Infura-Konto haben, können Sie auf der Infura-Website kostenlos eines erstellen.
Ersetzen Sie den Wert INFURA_PROJECT_ID
durch Ihren persönlichen Infura-API-Schlüssel.
Wenn Sie MetaMetrics debuggen, müssen Sie einen Wert für den Segmentschreibschlüssel SEGMENT_WRITE_KEY
hinzufügen, siehe Entwickeln auf MetaMask – Segment.
Wenn Sie nicht behandelte Ausnahmen debuggen, müssen Sie einen Wert für SENTRY_DSN
Sentry Dsn hinzufügen, siehe Entwickeln auf MetaMask – Sentry.
Ersetzen Sie optional den PASSWORD
Wert durch Ihr Entwicklungs-Wallet-Passwort, um zu vermeiden, dass Sie es jedes Mal eingeben müssen, wenn Sie die App öffnen.
Führen Sie yarn install
aus, um die Abhängigkeiten zu installieren.
Erstellen Sie das Projekt im Ordner ./dist/
mit yarn dist
(für Chromium-basierte Browser) oder yarn dist:mv2
(für Firefox).
Optional können Sie zum Erstellen eines Entwicklungs-Builds stattdessen yarn start
(für Chromium-basierte Browser) oder yarn start:mv2
(für Firefox) ausführen.
Unkomprimierte Builds finden Sie in /dist
, komprimierte Builds finden Sie in /builds
sobald sie erstellt wurden.
Informationen zur Build-System-Nutzung finden Sie in der Build-System-Readme-Datei.
Befolgen Sie diese Anweisungen, um zu überprüfen, ob Ihr lokaler Build ordnungsgemäß ausgeführt wird:
So fügen Sie Chrome einen benutzerdefinierten Build hinzu
So fügen Sie Firefox einen benutzerdefinierten Build hinzu
Um vor dem Festschreiben des Codes ein schnelles Feedback zu unseren Fitnessfunktionen für die gemeinsame Codequalität zu erhalten, können Sie unsere Git-Hooks mit Husky installieren.
$ yarn githooks:install
Weitere Informationen hierzu finden Sie in unserer Testdokumentation.
Wenn Sie VS-Code verwenden und aufgrund des Fehlers „Befehl nicht gefunden“ keine Commits über die Seitenleiste der Quellcodeverwaltung durchführen können, versuchen Sie diese Schritte in den Husky-Dokumenten.
Um einen Entwicklungs-Build zu starten (z. B. mit Protokollierung und Dateiüberwachung), führen Sie yarn start
aus.
Sie können einen Entwicklungs-Build mit einem vorinstallierten Wallet-Status starten, indem Sie TEST_SRP='
und PASSWORD='
zur .metamaskrc
Datei hinzufügen. Dann haben Sie folgende Möglichkeiten:
Starten Sie das Wallet mit den Standard-Fixture-Flags, indem Sie yarn start:with-state
ausführen.
Überprüfen Sie die Liste der verfügbaren Fixture-Flags, indem Sie yarn start:with-state --help
ausführen.
Starten Sie das Wallet mit benutzerdefinierten Fixture-Flags, indem Sie yarn start:with-state --FIXTURE_NAME=VALUE
ausführen, zum Beispiel yarn start:with-state --withAccounts=100
. Sie können so viele Flags übergeben, wie Sie möchten. Die übrigen Geräte übernehmen die Standardwerte.
Sie können einen Entwicklungs-Build auch mit dem Befehl yarn webpack
oder yarn webpack --watch
starten. Dabei wird ein alternatives Build-System verwendet, das viel schneller, aber noch nicht produktionsreif ist. Weitere Informationen finden Sie in der Webpack-README-Datei.
Um die React DevTools zu starten, führen Sie yarn devtools:react
mit einem in einem Browser installierten Entwicklungs-Build aus. Dies wird in einem separaten Fenster geöffnet; Es ist keine Browsererweiterung erforderlich.
So starten Sie die Redux DevTools-Erweiterung:
Installieren Sie das Paket remotedev-server
global (z. B. „ yarn global add remotedev-server
).
Installieren Sie die Redux Devtools-Erweiterung.
Öffnen Sie die Redux DevTools-Erweiterung und aktivieren Sie das Kontrollkästchen „Benutzerdefinierten (lokalen) Server verwenden“ in den Remote-DevTools-Einstellungen. Verwenden Sie dabei die Standardserverkonfiguration (Host localhost
, Port 8000
, Kontrollkästchen „Sichere Verbindung“ deaktiviert).
Führen Sie dann den Befehl yarn devtools:redux
mit einem in einem Browser installierten Entwicklungs-Build aus. Dadurch können Sie die Redux DevTools-Erweiterung zum Überprüfen von MetaMask verwenden.
Um einen Entwicklungs-Build zu erstellen und beide Tools gleichzeitig auszuführen, führen Sie yarn start:dev
aus.
Auf dieser Testseite können verschiedene Benutzerabläufe ausgeführt werden.
Führen Sie Unit-Tests und den Linter-mit- yarn test
durch. Um nur Unit-Tests auszuführen, führen Sie yarn test:unit
aus.
Sie können den Linter selbst mit yarn lint
ausführen und einige Flusenprobleme automatisch mit yarn lint:fix
beheben. Sie können diese beiden Befehle auch nur für Ihre lokalen Änderungen ausführen, um mit yarn lint:changed
bzw. yarn lint:changed:fix
Zeit zu sparen.
Eine Jest-Debugging-Anleitung mit Node.js finden Sie unter docs/tests/jest.md.
Unsere e2e-Testsuite kann entweder auf Firefox oder Chrome ausgeführt werden. So beginnen Sie mit dem E2E-Testen:
Stellen Sie vor dem Ausführen von e2e-Tests sicher, dass Sie yarn install
ausgeführt haben, um Abhängigkeiten herunterzuladen. Als Nächstes benötigen Sie einen Test-Build. Sie haben 3 Möglichkeiten:
Verwenden Sie yarn download-builds:test
um Test-Builds für Chrome und Firefox schnell herunterzuladen und in den Ordner ./dist/
zu entpacken. Diese Methode ist für Standardtests schnell und praktisch.
Erstellen Sie einen benutzerdefinierten Test-Build: Zum Testen mit verschiedenen Build-Typen verwenden Sie yarn build:test
. Mit diesem Befehl können Sie Testbuilds für verschiedene Typen generieren, darunter:
yarn build:test
für den Haupt-Build
yarn build:test:flask
für Flaschenbau
yarn build:test:mmi
für mmi build
yarn build:test:mv2
für mv2 build
Starten Sie einen Test-Build mit Live-Änderungen: yarn start:test
ist besonders nützlich für die Entwicklung. Es startet einen Testbuild, der den Anwendungscode bei Änderungen automatisch neu kompiliert. Diese Option ist ideal für iterative Tests und Entwicklung. Mit diesem Befehl können Sie auch Testbuilds für verschiedene Typen generieren, darunter:
yarn start:test
für Hauptbuild
yarn start:test:flask
für den Flaschenaufbau
yarn start:test:mv2
für MV2-Build
Hinweis: Beim Befehl yarn start:test
(der den Build-Typ „testDev“ initiiert) ist LavaMoat sowohl für das Build-System als auch für die Anwendung deaktiviert, was ein optimiertes Testerlebnis während der Entwicklung bietet. Andererseits ermöglicht yarn build:test
LavaMoat eine verbesserte Sicherheit sowohl im Build-System als auch in der Anwendung und spiegelt so Produktionsumgebungen besser wider.
Sobald Sie Ihren Test-Build fertig haben, wählen Sie den Browser für Ihre e2e-Tests:
Führen Sie für Firefox yarn test:e2e:firefox
aus.
Hinweis: Wenn Sie Firefox als Snap-Paket unter Linux ausführen, stellen Sie sicher, dass Sie die entsprechende Umgebungsvariable aktivieren: FIREFOX_SNAP=true yarn test:e2e:firefox
Führen Sie für Chrome yarn test:e2e:chrome
aus.
Diese Skripte unterstützen zusätzliche Optionen zum Debuggen. Verwenden Sie --help
, um alle verfügbaren Optionen anzuzeigen.
Einzelne e2e-Tests können mit yarn test:e2e:single test/e2e/tests/TEST_NAME.spec.js
zusammen mit den folgenden Optionen ausgeführt werden.
--browser Legt den zu verwendenden Browser fest; Geben Sie „Chrome“, „Firefox“, „Alle“ an oder lassen Sie die Einstellung deaktiviert, um standardmäßig auf „Alle“ ausgeführt zu werden. [string] [default: 'all'] --debug Führen Sie Tests im Debug-Modus aus und protokollieren Sie jede Treiberinteraktion. [boolean] [default: true] --retries Legen Sie fest, wie oft der Test bei einem Fehler wiederholt werden soll. [Nummer] [Standard: 0] --leave-running Lässt den Browser weiterlaufen, nachdem ein Test fehlgeschlagen ist, zusammen mit allem anderen, was der Test verwendet hat (Ganache, die Test-DAPP usw.) [boolean] [Standard: false] -- update-snapshot E2E-Test-Snapshots aktualisieren [Alias: -u] [boolean] [Standard: false]
Um beispielsweise die account-details
mit Chrome auszuführen, mit Debug-Protokollierung und mit der Einstellung, dass der Browser bei einem Fehler geöffnet bleibt, würden Sie Folgendes verwenden: yarn test:e2e:single test/e2e/tests/account-menu/account-details.spec.js --browser=chrome --leave-running
Bei der Entwicklung neuer Funktionen verwenden wir häufig Feature-Flags. Während wir uns darauf vorbereiten, diese Funktionen allgemein verfügbar zu machen (GA), entfernen wir die Feature-Flags. Vorhandene Feature-Flags sind in der Datei .metamaskrc.dist
aufgeführt. Um E2E-Tests mit einem bestimmten aktivierten Feature-Flag auszuführen, muss zunächst ein Test-Build mit aktiviertem Feature-Flag generiert werden. Es gibt zwei Möglichkeiten, dies zu erreichen:
Um ein Feature-Flag in Ihrer lokalen Konfiguration zu aktivieren, sollten Sie zunächst sicherstellen, dass Sie eine .metamaskrc
Datei aus .metamaskrc.dist
kopiert haben. Anschließend können Sie in Ihrer lokalen .metamaskrc
Datei das gewünschte Feature-Flag auf „true“ setzen. Anschließend kann ein Test-Build mit aktiviertem Feature-Flag durch Ausführen yarn build:test
erstellt werden.
Alternativ können Sie zum Aktivieren eines Feature-Flags direkt während der Test-Build-Erstellung den Parameter über die Befehlszeile als „true“ übergeben. Die Aktivierung des MULTICHAIN-Feature-Flags kann beispielsweise durch Ausführen von MULTICHAIN=1 yarn build:test
oder MULTICHAIN=1 yarn start:test
erfolgen. Diese Methode ermöglicht schnelle Anpassungen an Feature-Flags, ohne die .metamaskrc
Datei zu ändern.
Sobald Sie einen Test-Build mit aktiviertem gewünschten Feature-Flag erstellt haben, führen Sie Ihre Tests wie gewohnt aus. Ihre Tests werden nun mit der Version der Erweiterung ausgeführt, bei der das spezifische Feature-Flag aktiviert ist. Zum Beispiel: yarn test:e2e:single test/e2e/tests/account-menu/account-details.spec.js --browser=chrome
Dieser Ansatz stellt sicher, dass Ihre e2e-Tests die Benutzererfahrung für die kommenden GA-Funktionen genau widerspiegeln.
Verschiedene Build-Typen verfügen über unterschiedliche E2E-Testsätze. Um sie auszuführen, schauen Sie in der Datei package.json
nach. Sie finden:
„test:e2e:chrome:mmi“: „SELENIUM_BROWSER=chrome node test/e2e/run-all.js --mmi“, „test:e2e:chrome:snaps“: „SELENIUM_BROWSER=chrome node test/e2e/run- all.js --snaps", "test:e2e:firefox": "SELENIUM_BROWSER=firefox node test/e2e/run-all.js",
Wenn Sie e2e auf einem MMI-Build ausführen, müssen Sie wissen, dass es zwei separate Testreihen gibt:
MMI führt eine Teilmenge der e2e-Tests von MetaMask aus. Um dies zu erleichtern, haben wir die @no-mmi
-Tags an die Namen der Tests angehängt, die für diesen Build-Typ nicht anwendbar sind.
MMI führt einen weiteren spezifischen Satz von E2E-Legacy-Tests durch, die hier besser dokumentiert sind
Immer wenn Sie Abhängigkeiten ändern (Hinzufügen, Entfernen oder Aktualisieren, entweder in package.json
oder yarn.lock
), müssen verschiedene Dateien auf dem neuesten Stand gehalten werden.
yarn.lock
:
Führen Sie yarn
nach Ihren Änderungen erneut aus, um sicherzustellen, dass yarn.lock
ordnungsgemäß aktualisiert wurde.
Führen Sie yarn lint:lockfile:dedupe:fix
aus, um doppelte Abhängigkeiten aus der Sperrdatei zu entfernen.
Die allow-scripts
Konfiguration in package.json
Führen Sie yarn allow-scripts auto
aus, um die allow-scripts
-Konfiguration automatisch zu aktualisieren. Diese Konfiguration bestimmt, ob die Installations-/Postinstallationsskripts des Pakets ausgeführt werden dürfen. Überprüfen Sie jedes neue Paket, um festzustellen, ob das Installationsskript ausgeführt werden muss oder nicht, und testen Sie es gegebenenfalls.
Leider verhält sich yarn allow-scripts auto
auf verschiedenen Plattformen inkonsistent. Benutzer von macOS und Windows sehen möglicherweise irrelevante Änderungen im Zusammenhang mit optionalen Abhängigkeiten.
Die LavaMoat-Richtliniendateien
Es gibt zwei Sätze von LavaMoat-Richtliniendateien:
Wenn Sie eine Richtliniendatei neu generieren, überprüfen Sie die Änderungen, um festzustellen, ob der jedem Paket gewährte Zugriff angemessen erscheint.
Leider verhält sich yarn lavamoat:auto
auf verschiedenen Plattformen inkonsistent. Benutzer von macOS und Windows sehen möglicherweise irrelevante Änderungen im Zusammenhang mit optionalen Abhängigkeiten.
Wenn Sie auch nach der Neugenerierung der Richtliniendateien weiterhin Richtlinienfehler erhalten, versuchen Sie, die Richtlinien nach einer Neuinstallation neu zu generieren, indem Sie Folgendes tun:
Beachten Sie, dass jede Art von dynamischem Import oder dynamischer Verwendung von Globals der statischen Analyse von LavaMoat entgehen kann. Lesen Sie die LavaMoat-Dokumentation oder bitten Sie um Hilfe, wenn Sie auf Probleme stoßen.
Dies sollte immer dann neu generiert werden, wenn sich die vom Build-System selbst verwendeten Abhängigkeiten ändern.
Diese sollten immer dann neu generiert werden, wenn sich die Produktionsabhängigkeiten für die Webanwendung ändern.
Die LavaMoat-Richtliniendateien für die Produktion ( lavamoat/browserify/*/policy.json
), die mit yarn lavamoat:webapp:auto
neu generiert werden. Fügen Sie --help
zur Verwendung hinzu.
Die Build-System-LavaMoat-Richtliniendatei ( lavamoat/build-system/policy.json
), die mit dem yarn lavamoat:build:auto
neu generiert wird.
rm -rf node_modules/ && yarn && yarn lavamoat:auto
Wenn Sie ein MetaMask-Teammitglied sind und Ihr PR sich in einem Repository-Zweig befindet, können Sie den Bot-Befehl @metamaskbot update-policies
verwenden, um den MetaMask-Bot zu bitten, die Richtlinien automatisch für Sie zu aktualisieren.
Wenn Ihr PR von einem Fork stammt, können Sie ein MetaMask-Teammitglied bitten, bei der Aktualisierung der Richtliniendateien zu helfen.
Manuelle Aktualisierungsanweisungen: Der tl;dr besteht darin yarn lavamoat:auto
auszuführen, um diese Dateien zu aktualisieren, aber im Detail können Teufel stecken:
Die Attributionsdatei
Wenn Sie ein MetaMask-Teammitglied sind und sich Ihr PR in einem Repository-Zweig befindet, können Sie den Bot-Befehl @metamaskbot update-attributions
verwenden, um den MetaMask-Bot zu bitten, die Attributionsdatei automatisch für Sie zu aktualisieren.
Manuelles Update: yarn attributions:generate
ausführen.
Visual der Controller-Hierarchie und Abhängigkeiten ab Sommer 2022.
Visuelle Darstellung der gesamten Codebasis.
So fügen Sie MetaMask eine neue Übersetzung hinzu
Veröffentlichungshandbuch
So verwenden Sie den TREZOR-Emulator
Entwickeln auf MetaMask
So erstellen Sie eine Visualisierung der Entwicklung dieses Repositorys
So fügen Sie neue Bestätigungen hinzu
Richtlinien zur Browserunterstützung
Erweitern Sie die Funktionen von MetaMask mit MetaMask Snaps.
Fordern Sie Ihre Benutzer auf, ein neues Netzwerk hinzuzufügen und zu einem neuen Netzwerk zu wechseln.
Ändern Sie das Logo, das angezeigt wird, wenn Ihr Dapp eine Verbindung zu MetaMask herstellt.