Вы можете найти последнюю версию MetaMask на нашем официальном сайте. Для получения помощи по использованию MetaMask посетите наш сайт поддержки пользователей.
Если у вас есть общие вопросы, пожелания по функциям или вопросы разработчиков, посетите наш форум сообщества.
MetaMask поддерживает браузеры Firefox, Google Chrome и Chromium. Мы рекомендуем использовать последнюю доступную версию браузера.
Чтобы быть в курсе последних новостей, подписывайтесь на нас на X.
Чтобы узнать, как разрабатывать приложения, совместимые с MetaMask, посетите нашу Документацию для разработчиков.
Чтобы узнать, как внести свой вклад в кодовую базу MetaMask, посетите нашу Документацию для участников.
Чтобы узнать, как внести свой вклад в сам проект расширения MetaMask, посетите нашу документацию по расширению.
В качестве альтернативы сборке на локальном компьютере появилась новая возможность запустить среду разработки менее чем за 5 минут с помощью GitHub Codespaces. Обратите внимание, что существует ограниченная ежемесячная квота бесплатного пользования, после чего GitHub начнет взимать с вас плату.
Примечание. Вам выставляется счет как за время, потраченное на работу, так и за использованное хранилище.
Начните с нажатия кнопки выше
Откроется новая вкладка браузера с удаленной версией Visual Studio Code (загрузка займет несколько минут).
В браузере с noVNC откроется «Простой браузер» — нажмите «Подключиться».
Нажмите кнопку в правом верхнем углу вкладки «Простой браузер», чтобы открыть окно noVNC на отдельной вкладке.
Откройте боковую панель noVNC слева, щелкните значок шестеренки, измените режим масштабирования на удаленное изменение размера.
Дополнительные шаги:
Подождите около 20 дополнительных секунд при первом запуске, чтобы скрипты завершились.
Щелкните правой кнопкой мыши на рабочем столе noVNC, чтобы запустить Chrome или Firefox с предустановленной MetaMask.
Измените немного кода, затем запустите yarn start
для сборки в режиме разработки.
Через минуту или две сборка завершится, и вы сможете увидеть изменения на рабочем столе noVNC.
Вам выставляется счет как за время, потраченное на работу, так и за использованное хранилище.
Кодовые пространства приостанавливаются после 30 минут бездействия и автоматически удаляются через 30 дней бездействия.
Вы можете управлять своими кодовыми пространствами здесь: https://github.com/codespaces.
Возможно, вы захотите вручную приостановить их до истечения 30-минутного тайм-аута.
Если у вас есть несколько простаивающих кодовых пространств в течение нескольких дней, вы можете быстро исчерпать квоту хранилища. Вам следует удалить те, которые вы больше не планируете использовать, и, вероятно, оставить только 1 или 2 в долгосрочной перспективе. Также можно повторно использовать старые кодовые пространства и переключать ветки вместо создания новых и удаления старых.
Если вы не являетесь внутренним разработчиком MetaMask или иным образом разрабатываете форк, ключ Infura по умолчанию будет находиться в бесплатном плане и иметь очень ограниченное количество запросов в секунду. Если вы хотите использовать свой собственный ключ Infura, следуйте инструкциям .metamaskrc
и INFURA_PROJECT_ID
в разделе Сборка на локальном компьютере.
Установите Node.js версии 20.
Если вы используете nvm (рекомендуется), запуск nvm use
автоматически выберет для вас подходящую версию узла.
Включите Corepack, выполнив команду corepack enable
в проекте расширения метамаски. Corepack — это утилита, включенная в Node.js по умолчанию. Он управляет Yarn для каждого проекта отдельно, используя версию, указанную свойством packageManager
в файле package.json проекта. Обратите внимание, что современные версии Yarn не предназначены для глобальной установки или через npm.
Дублируйте .metamaskrc.dist
в корне и переименуйте его в .metamaskrc
, запустив cp .metamaskrc{.dist,}
.
Если у вас нет учетной записи Infura, вы можете бесплатно создать ее на веб-сайте Infura.
Замените значение INFURA_PROJECT_ID
своим личным ключом API Infura.
При отладке MetaMetrics вам потребуется добавить значение для ключа записи сегмента SEGMENT_WRITE_KEY
, см. раздел Разработка на MetaMask — сегмент.
При отладке необработанных исключений вам потребуется добавить значение для SENTRY_DSN
Sentry Dsn, см. раздел Разработка на MetaMask — Sentry.
При желании замените значение PASSWORD
паролем вашего кошелька разработки, чтобы не вводить его каждый раз при открытии приложения.
Запустите yarn install
, чтобы установить зависимости.
Создайте проект в папке ./dist/
с помощью yarn dist
(для браузеров на основе Chromium) или yarn dist:mv2
(для Firefox).
При желании, чтобы создать сборку для разработки, вы можете вместо этого запустить yarn start
(для браузеров на базе Chromium) или yarn start:mv2
(для Firefox).
Несжатые сборки можно найти в /dist
, сжатые сборки можно найти в /builds
после их сборки.
Информацию об использовании системы сборки см. в файле readme системы сборки.
Следуйте этим инструкциям, чтобы убедиться, что ваша локальная сборка работает правильно:
Как добавить собственную сборку в Chrome
Как добавить собственную сборку в Firefox
Чтобы получить быструю обратную связь от наших общих функций проверки качества кода перед его фиксацией, вы можете установить наши git-хуки с помощью Husky.
$ yarn githooks:install
Подробнее о них можно прочитать в нашей документации по тестированию.
Если вы используете VS Code и не можете выполнять коммиты с боковой панели системы управления версиями из-за ошибки «команда не найдена», попробуйте выполнить следующие действия из документации Husky.
Чтобы начать сборку для разработки (например, с ведением журнала и просмотром файлов), запустите yarn start
.
Вы можете запустить сборку для разработки с предварительно загруженным состоянием кошелька, добавив TEST_SRP='
и PASSWORD='
в файл .metamaskrc
. Тогда у вас есть следующие варианты:
Запустите кошелек с флагами фиксации по умолчанию, запустив yarn start:with-state
.
Проверьте список доступных флагов фиксации, запустив yarn start:with-state --help
.
Запустите кошелек с пользовательскими флагами фиксации, запустив yarn start:with-state --FIXTURE_NAME=VALUE
, например, yarn start:with-state --withAccounts=100
. Вы можете передать столько флагов, сколько захотите. Остальные светильники примут значения по умолчанию.
Вы также можете запустить сборку для разработки с помощью команды yarn webpack
или yarn webpack --watch
. Здесь используется альтернативная система сборки, которая намного быстрее, но еще не готова к производству. Дополнительную информацию см. в README Webpack.
Чтобы запустить React DevTools, запустите yarn devtools:react
со сборкой разработки, установленной в браузере. Это откроется в отдельном окне; расширение браузера не требуется.
Чтобы запустить расширение Redux DevTools:
Установите пакет remotedev-server
глобально (например, yarn global add remotedev-server
).
Установите расширение Redux Devtools.
Откройте расширение Redux DevTools и установите флажок «Использовать собственный (локальный) сервер» в настройках удаленного DevTools, используя конфигурацию сервера по умолчанию (хост localhost
, порт 8000
, флажок безопасного соединения снят).
Затем запустите команду yarn devtools:redux
с установленной в браузере сборкой разработки. Это позволит вам использовать расширение Redux DevTools для проверки MetaMask.
Чтобы создать сборку для разработки и одновременно запустить оба этих инструмента, запустите yarn start:dev
.
Этот тестовый сайт можно использовать для выполнения различных пользовательских потоков.
Запускаем юнит-тесты и линтер с помощью yarn test
. Чтобы запустить только модульные тесты, запустите yarn test:unit
.
Вы можете запустить линтер самостоятельно с помощью yarn lint
и автоматически исправить некоторые проблемы с ворсом с помощью yarn lint:fix
. Вы также можете запустить эти две команды только для локальных изменений, чтобы сэкономить время с помощью yarn lint:changed
и yarn lint:changed:fix
соответственно.
Руководство по отладке Jest с использованием Node.js см. в docs/tests/jest.md.
Наш набор тестов e2e можно запускать в Firefox или Chrome. Вот как начать тестирование e2e:
Прежде чем запускать тесты e2e, убедитесь, что вы запустили yarn install
для загрузки зависимостей. Далее вам понадобится тестовая сборка. У вас есть 3 варианта:
Используйте yarn download-builds:test
, чтобы быстро загрузить и разархивировать тестовые сборки для Chrome и Firefox в папку ./dist/
. Этот метод быстрый и удобный для стандартного тестирования.
Создайте собственную тестовую сборку: для тестирования различных типов сборок используйте yarn build:test
. Эта команда позволяет генерировать тестовые сборки различных типов, в том числе:
yarn build:test
для основной сборки
yarn build:test:flask
для сборки колбы
yarn build:test:mmi
для сборки mmi
yarn build:test:mv2
для сборки mv2
Запустите тестовую сборку с живыми изменениями: yarn start:test
особенно полезен для разработки. Он запускает тестовую сборку, которая автоматически перекомпилирует код приложения при изменениях. Этот вариант идеально подходит для итеративного тестирования и разработки. Эта команда также позволяет генерировать тестовые сборки различных типов, в том числе:
yarn start:test
для основной сборки
yarn start:test:flask
для сборки колбы
yarn start:test:mv2
для сборки mv2
Примечание. Команда yarn start:test
(которая инициирует тип сборки testDev) отключает LavaMoat как для системы сборки, так и для приложения, что обеспечивает упрощенный процесс тестирования во время разработки. С другой стороны, yarn build:test
позволяет LavaMoat повысить безопасность как системы сборки, так и приложения, более точно отражая производственную среду.
Подготовив тестовую сборку, выберите браузер для тестов e2e:
Для Firefox запустите yarn test:e2e:firefox
.
Примечание. Если вы используете Firefox как пакет Snap в Linux, убедитесь, что вы включили соответствующую переменную среды: FIREFOX_SNAP=true yarn test:e2e:firefox
Для Chrome запустите yarn test:e2e:chrome
.
Эти сценарии поддерживают дополнительные параметры отладки. Используйте --help
, чтобы просмотреть все доступные параметры.
Отдельные тесты e2e можно запускать с помощью yarn test:e2e:single test/e2e/tests/TEST_NAME.spec.js
вместе с параметрами, указанными ниже.
--browser Установить браузер, который будет использоваться; укажите «chrome», «firefox», «all» или оставьте отключенными, чтобы по умолчанию запускалось «все». [строка] [по умолчанию: 'all'] --debug Запускать тесты в режиме отладки, регистрируя каждое взаимодействие с драйвером [логическое значение] [по умолчанию: true] --retries Установите, сколько раз тест должен повторяться в случае неудачи. [число] [по умолчанию: 0] --leave-running Оставляет браузер запущенным после неудачного теста вместе со всем остальным, что использовалось в тесте (ганаш, тестовое приложение и т. д.) [логическое значение] [по умолчанию: false] -- update-snapshot Обновить тестовые снимки E2E [псевдоним: -u] [логическое значение] [по умолчанию: false]
Например, чтобы запустить тесты account-details
с помощью Chrome, с ведением журнала отладки и с сохранением открытия браузера в случае сбоя, вы должны использовать: yarn test:e2e:single test/e2e/tests/account-menu/account-details.spec.js --browser=chrome --leave-running
При разработке новых функций мы часто используем флаги функций. Готовясь сделать эти функции общедоступными (GA), мы удаляем флаги функций. Существующие флаги функций перечислены в файле .metamaskrc.dist
. Чтобы выполнить тесты e2e с включенным определенным флагом функции, необходимо сначала создать тестовую сборку с активированным флагом этой функции. Есть два способа добиться этого:
Чтобы включить флаг функции в вашей локальной конфигурации, вам следует сначала убедиться, что у вас есть файл .metamaskrc
, скопированный из .metamaskrc.dist
. Затем в локальном файле .metamaskrc
вы можете установить для нужного флага функции значение true. После этого можно создать тестовую сборку с включенным флагом функции, выполнив yarn build:test
.
Альтернативно, чтобы включить флаг функции непосредственно во время создания тестовой сборки, вы можете передать параметр как true через командную строку. Например, активацию функционального флага MULTICHAIN можно выполнить, запустив MULTICHAIN=1 yarn build:test
или MULTICHAIN=1 yarn start:test
. Этот метод позволяет быстро настраивать флаги функций без изменения файла .metamaskrc
.
После того как вы создали тестовую сборку с включенным флагом нужной функции, приступайте к запуску тестов как обычно. Теперь ваши тесты будут выполняться для версии расширения с активированным флагом конкретной функции. Например: yarn test:e2e:single test/e2e/tests/account-menu/account-details.spec.js --browser=chrome
Такой подход гарантирует, что ваши тесты e2e точно отражают пользовательский опыт будущих функций общедоступной версии.
Различные типы сборок имеют разные наборы тестов e2e. Чтобы запустить их, загляните в файл package.json
. Вы найдете:
"test:e2e:chrome:mmi": "SELENIUM_BROWSER=тест узла Chrome/e2e/run-all.js --mmi", "test:e2e:chrome:snaps": "SELENIUM_BROWSER=тест узла Chrome/e2e/run- all.js --snaps", "test:e2e:firefox": "SELENIUM_BROWSER=тест узла Firefox/e2e/run-all.js",
При запуске e2e в сборке MMI вам необходимо знать, что существует два отдельных набора тестов:
MMI запускает подмножество тестов e2e MetaMask. Чтобы облегчить это, мы добавили теги @no-mmi
к названиям тех тестов, которые не применимы к этому типу сборки.
MMI запускает еще один специальный набор устаревших тестов e2e, которые лучше документированы здесь.
Всякий раз, когда вы меняете зависимости (добавляете, удаляете или обновляете в package.json
или yarn.lock
), существуют различные файлы, которые необходимо поддерживать в актуальном состоянии.
yarn.lock
:
После внесения изменений запустите yarn
еще раз, чтобы убедиться, что yarn.lock
обновлен правильно.
Запустите yarn lint:lockfile:dedupe:fix
, чтобы удалить повторяющиеся зависимости из файла блокировки.
Конфигурация allow-scripts
в package.json
Запустите yarn allow-scripts auto
, чтобы автоматически обновить конфигурацию allow-scripts
. Эта конфигурация определяет, разрешено ли выполнение сценариев установки/постустановки пакета. Просмотрите каждый новый пакет, чтобы определить, нужно ли запускать сценарий установки, при необходимости проверив его.
К сожалению, yarn allow-scripts auto
будут вести себя по-разному на разных платформах. Пользователи macOS и Windows могут увидеть посторонние изменения, связанные с дополнительными зависимостями.
Файлы политики LavaMoat
Существует два набора файлов политики LavaMoat:
Каждый раз, когда вы повторно создаете файл политики, просмотрите изменения, чтобы определить, является ли доступ, предоставленный каждому пакету, подходящим.
К сожалению, yarn lavamoat:auto
будет вести себя по-разному на разных платформах. Пользователи macOS и Windows могут увидеть посторонние изменения, связанные с дополнительными зависимостями.
Если вы продолжаете получать сбои политики даже после восстановления файлов политики, попробуйте восстановить политики после чистой установки, выполнив следующие действия:
Имейте в виду, что любой вид динамического импорта или динамического использования глобальных переменных может ускользнуть от статического анализа LavaMoat. Обратитесь к документации LavaMoat или обратитесь за помощью, если у вас возникнут какие-либо проблемы.
Его следует создавать заново всякий раз, когда изменяются зависимости, используемые самой системой сборки.
Их следует создавать заново всякий раз, когда изменяются производственные зависимости веб-приложения.
Производственные файлы политики LavaMoat ( lavamoat/browserify/*/policy.json
), которые повторно генерируются с использованием yarn lavamoat:webapp:auto
. Добавьте --help
для использования.
Файл политики системы сборки LavaMoat ( lavamoat/build-system/policy.json
), который повторно создается с помощью yarn lavamoat:build:auto
.
rm -rf node_modules/ && yarn && yarn lavamoat:auto
Если вы являетесь членом команды MetaMask и ваш PR находится в ветке репозитория, вы можете использовать команду бота @metamaskbot update-policies
, чтобы попросить бота MetaMask автоматически обновить политики для вас.
Если ваш PR исходит от форка, вы можете попросить члена команды MetaMask помочь с обновлением файлов политики.
Инструкции по ручному обновлению: tl;dr должен запустить yarn lavamoat:auto
чтобы обновить эти файлы, но в деталях могут быть черти:
Файл атрибуции
Если вы являетесь членом команды MetaMask и ваш PR находится в ветке репозитория, вы можете использовать команду бота @metamaskbot update-attributions
, чтобы попросить бота MetaMask автоматически обновить файл атрибуции для вас.
Обновление вручную: запустите yarn attributions:generate
.
Визуализация иерархии контроллеров и зависимостей по состоянию на лето 2022 г.
Визуализация всей кодовой базы.
Как добавить новый перевод в MetaMask
Руководство по публикации
Как использовать эмулятор TREZOR
Разработка на MetaMask
Как создать визуализацию развития этого репозитория
Как добавить новые подтверждения
Рекомендации по поддержке браузера
Расширьте возможности MetaMask с помощью MetaMask Snaps.
Предложите пользователям добавить новую сеть и переключиться на нее.
Измените логотип, который появляется, когда ваше децентрализованное приложение подключается к MetaMask.