Você pode encontrar a versão mais recente do MetaMask em nosso site oficial. Para obter ajuda com o MetaMask, visite nosso site de suporte ao usuário.
Para perguntas gerais, solicitações de recursos ou perguntas de desenvolvedores, visite nosso Fórum da Comunidade.
MetaMask oferece suporte a navegadores Firefox, Google Chrome e Chromium. Recomendamos usar a versão mais recente do navegador disponível.
Para notícias atualizadas, siga-nos no X.
Para saber como desenvolver aplicativos compatíveis com MetaMask, visite nossos documentos para desenvolvedores.
Para saber como contribuir com a base de código MetaMask, visite nossos Documentos para Colaboradores.
Para saber como contribuir com o próprio projeto de extensão MetaMask, visite nossos documentos de extensão.
Como alternativa à construção em sua máquina local, há uma nova opção para colocar um ambiente de desenvolvimento em funcionamento em menos de 5 minutos usando GitHub Codespaces. Observe que há uma cota mensal gratuita limitada e, depois disso, o GitHub começará a cobrar de você.
Observação: você será cobrado pelo tempo gasto em execução e pelo armazenamento usado
Comece clicando no botão acima
Uma nova guia do navegador será aberta com uma versão remota do Visual Studio Code (isso levará alguns minutos para carregar)
Um "Navegador Simples" será aberto dentro do navegador com noVNC - clique em Conectar
Clique no botão no canto superior direito da guia Simple Browser para abrir a janela noVNC em sua própria guia
Abra a barra lateral noVNC à esquerda, clique no ícone de engrenagem, altere o modo de escala para redimensionamento remoto
Etapas opcionais:
Aguarde cerca de 20 segundos extras na primeira inicialização, para que os scripts terminem
Clique com o botão direito na área de trabalho noVNC para iniciar o Chrome ou Firefox com MetaMask pré-instalado
Altere algum código e execute yarn start
para construir no modo dev
Depois de um ou dois minutos, a construção será concluída e você poderá ver suas alterações na área de trabalho noVNC
Você será cobrado pelo tempo gasto em execução e pelo armazenamento utilizado
Os codespaces são pausados após 30 minutos de inatividade e excluídos automaticamente após 30 dias de inatividade
Você pode gerenciar seus Codespaces aqui: https://github.com/codespaces
Você pode querer pausá-los manualmente antes do tempo limite de 30 minutos
Se você tiver vários Codespaces ociosos por vários dias, poderá rapidamente ficar sem cota de armazenamento. Você deve excluir aqueles que não planeja mais usar e provavelmente manter apenas 1 ou 2 no longo prazo. Também é possível reutilizar Codespaces antigos e trocar de branch, em vez de criar novos e deletar os antigos.
Se você não for um desenvolvedor interno do MetaMask ou estiver desenvolvendo em um fork, a chave padrão do Infura estará no plano gratuito e terá solicitações muito limitadas por segundo. Se você quiser usar sua própria chave Infura, siga as instruções .metamaskrc
e INFURA_PROJECT_ID
na seção Construindo em sua máquina local.
Instale o Node.js versão 20
Se você estiver usando nvm (recomendado), executar nvm use
escolherá automaticamente a versão do nó certa para você.
Habilite o Corepack executando o comando corepack enable
no projeto metamask-extension. Corepack é um utilitário incluído no Node.js por padrão. Ele gerencia o Yarn por projeto, usando a versão especificada pela propriedade packageManager
no arquivo package.json do projeto. Observe que as versões modernas do Yarn não se destinam à instalação global ou via npm.
Duplique .metamaskrc.dist
na raiz e renomeie-o para .metamaskrc
executando cp .metamaskrc{.dist,}
.
Se você não possui uma conta Infura, você pode criar uma gratuitamente no site da Infura.
Substitua o valor INFURA_PROJECT_ID
pela sua própria chave pessoal da API Infura.
Se estiver depurando MetaMetrics, você precisará adicionar um valor para a chave de gravação do segmento SEGMENT_WRITE_KEY
, consulte Desenvolvendo no MetaMask - Segmento.
Se estiver depurando exceções não tratadas, você precisará adicionar um valor para SENTRY_DSN
Sentry Dsn, consulte Desenvolvendo no MetaMask - Sentry.
Opcionalmente, substitua o valor PASSWORD
pela senha da carteira de desenvolvimento para evitar digitá-la sempre que abrir o aplicativo.
Execute yarn install
para instalar as dependências.
Crie o projeto na pasta ./dist/
com yarn dist
(para navegadores baseados em Chromium) ou yarn dist:mv2
(para Firefox)
Opcionalmente, para criar uma compilação de desenvolvimento, você pode executar yarn start
(para navegadores baseados em Chromium) ou yarn start:mv2
(para o Firefox)
Compilações não compactadas podem ser encontradas em /dist
, compilações compactadas podem ser encontradas em /builds
assim que forem compiladas.
Consulte o leia-me do sistema de compilação para obter informações sobre o uso do sistema de compilação.
Siga estas instruções para verificar se sua compilação local é executada corretamente:
Como adicionar compilação personalizada ao Chrome
Como adicionar compilação personalizada ao Firefox
Para obter feedback rápido de nossas funções de fitness de qualidade de código compartilhadas antes de enviar o código, você pode instalar nossos git hooks com Husky.
$ yarn githooks:install
Você pode ler mais sobre eles em nossa documentação de testes.
Se você estiver usando o VS Code e não conseguir fazer commits na barra lateral de controle de origem devido a um erro de "comando não encontrado", tente estas etapas nos documentos do Husky.
Para iniciar uma construção de desenvolvimento (por exemplo, com registro e observação de arquivos), execute yarn start
.
Você pode iniciar uma construção de desenvolvimento com um estado de carteira pré-carregado, adicionando TEST_SRP='<insert SRP here>'
e PASSWORD='<insert wallet password here>'
ao arquivo .metamaskrc
. Então você tem as seguintes opções:
Inicie a carteira com os sinalizadores de fixture padrão, executando yarn start:with-state
.
Verifique a lista de flags de fixtures disponíveis, executando yarn start:with-state --help
.
Inicie a carteira com sinalizadores de fixture personalizados, executando yarn start:with-state --FIXTURE_NAME=VALUE
por exemplo yarn start:with-state --withAccounts=100
. Você pode passar quantas bandeiras quiser. O resto dos fixtures assumirão os valores padrão.
Você também pode iniciar uma construção de desenvolvimento usando o comando yarn webpack
ou yarn webpack --watch
. Isso usa um sistema de construção alternativo que é muito mais rápido, mas ainda não está pronto para produção. Consulte o README do Webpack para obter mais informações.
Para iniciar o React DevTools, execute yarn devtools:react
com uma compilação de desenvolvimento instalada em um navegador. Isto será aberto em uma janela separada; nenhuma extensão do navegador é necessária.
Para iniciar a extensão Redux DevTools:
Instale o pacote remotedev-server
globalmente (por exemplo, yarn global add remotedev-server
)
Instale a extensão Redux Devtools.
Abra a extensão Redux DevTools e marque a caixa de seleção "Usar servidor personalizado (local)" nas configurações do Remote DevTools, usando a configuração padrão do servidor (host localhost
, porta 8000
, caixa de seleção de conexão segura desmarcada).
Em seguida, execute o comando yarn devtools:redux
com uma compilação de desenvolvimento instalada em um navegador. Isso permitirá que você use a extensão Redux DevTools para inspecionar MetaMask.
Para criar uma compilação de desenvolvimento e executar essas duas ferramentas simultaneamente, execute yarn start:dev
.
Este site de teste pode ser usado para executar diferentes fluxos de usuário.
Execute testes de unidade e o linter com yarn test
. Para executar apenas testes de unidade, execute yarn test:unit
.
Você pode executar o linter sozinho com yarn lint
e pode corrigir automaticamente alguns problemas de lint com yarn lint:fix
. Você também pode executar esses dois comandos apenas nas alterações locais para economizar tempo com yarn lint:changed
e yarn lint:changed:fix
respectivamente.
Para obter o guia de depuração do Jest usando Node.js, consulte docs/tests/jest.md.
Nosso conjunto de testes e2e pode ser executado no Firefox ou no Chrome. Veja como começar com o teste e2e:
Antes de executar os testes e2e, certifique-se de ter executado yarn install
para baixar as dependências. Em seguida, você precisará de uma versão de teste. Você tem 3 opções:
Use yarn download-builds:test
para baixar e descompactar rapidamente compilações de teste para Chrome e Firefox na pasta ./dist/
. Este método é rápido e conveniente para testes padrão.
Crie uma compilação de teste personalizada: para testar diferentes tipos de compilação, use yarn build:test
. Este comando permite gerar compilações de teste para vários tipos, incluindo:
yarn build:test
para construção principal
yarn build:test:flask
para construção de frasco
yarn build:test:mmi
para construção mmi
yarn build:test:mv2
para construção mv2
Inicie uma construção de teste com alterações ao vivo: yarn start:test
é particularmente útil para desenvolvimento. Ele inicia uma construção de teste que recompila automaticamente o código do aplicativo após alterações. Esta opção é ideal para testes e desenvolvimento iterativos. Este comando também permite gerar compilações de teste para vários tipos, incluindo:
yarn start:test
para construção principal
yarn start:test:flask
para construção de frasco
yarn start:test:mv2
para construção mv2
Nota: O comando yarn start:test
(que inicia o tipo de compilação testDev) desativou o LavaMoat tanto para o sistema de compilação quanto para o aplicativo, oferecendo uma experiência de teste simplificada durante o desenvolvimento. Por outro lado, yarn build:test
permite ao LavaMoat aumentar a segurança tanto no sistema de construção quanto no aplicativo, espelhando os ambientes de produção mais de perto.
Depois de ter seu build de teste pronto, escolha o navegador para seus testes e2e:
Para Firefox, execute yarn test:e2e:firefox
.
Nota: Se você estiver executando o Firefox como um pacote snap no Linux, certifique-se de habilitar a variável de ambiente apropriada: FIREFOX_SNAP=true yarn test:e2e:firefox
Para o Chrome, execute yarn test:e2e:chrome
.
Esses scripts oferecem suporte a opções adicionais de depuração. Use --help
para ver todas as opções disponíveis.
Testes e2e únicos podem ser executados com yarn test:e2e:single test/e2e/tests/TEST_NAME.spec.js
junto com as opções abaixo.
--browser Define o navegador a ser usado; especifique 'chrome', 'firefox', 'all' ou deixe sem definição para executar em 'all' por padrão. [string] [padrão: 'all'] --debug Executa testes no modo de depuração, registrando cada interação do driver [boolean] [padrão: true] --retries Define quantas vezes o teste deve ser repetido em caso de falha. [número] [padrão: 0] --leave-running Deixa o navegador em execução após a falha de um teste, junto com qualquer outra coisa que o teste usou (ganache, o dapp de teste, etc.) [boolean] [padrão: false] -- update-snapshot Atualizar instantâneos de teste E2E [alias: -u] [boolean] [padrão: false]
Por exemplo, para executar os testes account-details
usando o Chrome, com registro de depuração e com o navegador configurado para permanecer aberto em caso de falha, você usaria: yarn test:e2e:single test/e2e/tests/account-menu/account-details.spec.js --browser=chrome --leave-running
Ao desenvolver novos recursos, frequentemente usamos sinalizadores de recursos. À medida que nos preparamos para disponibilizar esses recursos ao público geral (GA), removemos os sinalizadores de recursos. Os sinalizadores de recursos existentes estão listados no arquivo .metamaskrc.dist
. Para executar testes e2e com um sinalizador de recurso específico habilitado, é necessário primeiro gerar uma construção de teste com esse sinalizador de recurso ativado. Existem duas maneiras de conseguir isso:
Para ativar um sinalizador de recurso em sua configuração local, primeiro você deve garantir que tenha um arquivo .metamaskrc
copiado de .metamaskrc.dist
. Em seguida, no arquivo .metamaskrc
local, você pode definir o sinalizador do recurso desejado como verdadeiro. Depois disso, uma construção de teste com o sinalizador de recurso habilitado pode ser criada executando yarn build:test
.
Como alternativa, para ativar um sinalizador de recurso diretamente durante a criação do build de teste, você pode passar o parâmetro como verdadeiro por meio da linha de comando. Por exemplo, a ativação do sinalizador de recurso MULTICHAIN pode ser feita executando MULTICHAIN=1 yarn build:test
ou MULTICHAIN=1 yarn start:test
. Este método permite ajustes rápidos nos sinalizadores de recursos sem alterar o arquivo .metamaskrc
.
Depois de criar uma compilação de teste com o sinalizador de recurso desejado habilitado, execute seus testes normalmente. Seus testes agora serão executados na versão da extensão com o sinalizador de recurso específico ativado. Por exemplo: yarn test:e2e:single test/e2e/tests/account-menu/account-details.spec.js --browser=chrome
Essa abordagem garante que seus testes e2e reflitam com precisão a experiência do usuário para os próximos recursos do GA.
Diferentes tipos de construção têm diferentes conjuntos de testes e2e. Para executá-los procure no arquivo package.json
. Você encontrará:
"test:e2e:chrome:mmi": "SELENIUM_BROWSER=teste do nó cromo/e2e/run-all.js --mmi", "test:e2e:chrome:snaps": "SELENIUM_BROWSER=teste do nó cromo/e2e/run- all.js --snaps", "teste:e2e:firefox": "SELENIUM_BROWSER=teste do nó do Firefox/e2e/run-all.js",
Ao executar o e2e em uma compilação MMI, você precisa saber que existem 2 conjuntos separados de testes:
O MMI executa um subconjunto de testes e2e do MetaMask. Para facilitar isso, anexamos as tags @no-mmi
aos nomes dos testes que não são aplicáveis a este tipo de construção.
O MMI executa outro conjunto específico de testes legados e2e que estão melhor documentados aqui
Sempre que você altera dependências (adicionando, removendo ou atualizando, seja em package.json
ou yarn.lock
), existem vários arquivos que devem ser mantidos atualizados.
yarn.lock
:
Execute yarn
novamente após as alterações para garantir que yarn.lock
foi atualizado corretamente.
Execute yarn lint:lockfile:dedupe:fix
para remover dependências duplicadas do arquivo de bloqueio.
A configuração allow-scripts
em package.json
Execute yarn allow-scripts auto
para atualizar a configuração de allow-scripts
automaticamente. Esta configuração determina se os scripts de instalação/pós-instalação do pacote podem ser executados. Revise cada novo pacote para determinar se o script de instalação precisa ser executado ou não, testando se necessário.
Infelizmente, yarn allow-scripts auto
se comportará de maneira inconsistente em diferentes plataformas. Os usuários do macOS e do Windows podem ver alterações estranhas relacionadas às dependências opcionais.
Os arquivos de política LavaMoat
Existem dois conjuntos de arquivos de políticas LavaMoat:
Sempre que você gerar novamente um arquivo de política, revise as alterações para determinar se o acesso concedido a cada pacote parece apropriado.
Infelizmente, yarn lavamoat:auto
se comportará de maneira inconsistente em diferentes plataformas. Os usuários do macOS e do Windows podem ver alterações estranhas relacionadas às dependências opcionais.
Se você continuar recebendo falhas de políticas mesmo depois de regenerar os arquivos de políticas, tente regenerar as políticas após uma instalação limpa fazendo:
Tenha em mente que qualquer tipo de importação dinâmica ou uso dinâmico de globais pode escapar à análise estática do LavaMoat. Consulte a documentação do LavaMoat ou peça ajuda se tiver algum problema.
Isso deve ser regenerado sempre que as dependências usadas pelo próprio sistema de compilação mudarem.
Eles devem ser regenerados sempre que as dependências de produção do webapp mudarem.
Os arquivos de política de produção LavaMoat ( lavamoat/browserify/*/policy.json
), que são gerados novamente usando yarn lavamoat:webapp:auto
. Adicione --help
para uso.
O arquivo de política LavaMoat do sistema de construção ( lavamoat/build-system/policy.json
), que é gerado novamente usando yarn lavamoat:build:auto
.
rm -rf node_modules/ && yarn && yarn lavamoat:auto
Se você for membro da equipe MetaMask e seu PR estiver em uma ramificação do repositório, você pode usar o comando bot @metamaskbot update-policies
para solicitar ao bot MetaMask para atualizar automaticamente as políticas para você.
Se o seu PR for de um fork, você pode pedir ajuda a um membro da equipe MetaMask com a atualização dos arquivos de política.
Instruções de atualização manual: O tl; dr é executar yarn lavamoat:auto
para atualizar esses arquivos, mas pode haver problemas nos detalhes:
O arquivo de atribuições
Se você é um membro da equipe MetaMask e seu PR está em uma ramificação do repositório, você pode usar o comando bot @metamaskbot update-attributions
para pedir ao bot MetaMask para atualizar automaticamente o arquivo de atribuições para você.
Atualização manual: execute yarn attributions:generate
.
Visual da hierarquia e dependências do controlador no verão de 2022.
Visual de toda a base de código.
Como adicionar uma nova tradução ao MetaMask
Guia de publicação
Como usar o emulador TREZOR
Desenvolvendo em MetaMask
Como gerar uma visualização do desenvolvimento deste repositório
Como adicionar novas confirmações
Diretrizes de suporte do navegador
Estenda os recursos do MetaMask com MetaMask Snaps.
Solicite que seus usuários adicionem e mudem para uma nova rede.
Altere o logotipo que aparece quando seu dapp se conecta ao MetaMask.