Há alguns dias, a ConsenSys anunciou o lançamento público do MetaMask Snaps Open Beta. Os Snaps MetaMask são essencialmente plugins que alargam as capacidades da carteira MetaMask. Estes “Snaps” são aplicações desenvolvidas por terceiros que podem ser instaladas para adicionar novas funcionalidades.
Se comparássemos a transformação do Consensys da MetaMask para o WeChat, o Snap poderia ser visto como o Mini Programa WeChat. Como resultado, torna-se evidente que a MetaMask, com a sua ambição, combinada com a escala do Consensys e a base de utilizadores da MetaMask, irá alterar o panorama do setor das carteiras.
Lista Parcial de Snaps
Então, como são os MetaMask Snaps do ponto de vista técnico? Quais são as suas capacidades e limitações? Estão seguros? Como é a experiência do programador? Todos estes fatores podem determinar o potencial futuro dos MetaMask Snaps.
A partir do ano passado, a LXDAO esteve profundamente envolvida na investigação da implementação dos Snaps. Vários membros envolveram-se no desenvolvimento do Snap e participaram em hackathons relacionados. Hoje, vamos nos aprofundar nestas questões de uma perspectiva técnica e até desenvolver um Snap para lhe dar uma experiência prática de programador.
Geralmente, pode instalar Snaps a partir do mercado oficial do MetaMask Snap, ou diretamente do site de um projeto. Por exemplo, com o UniPass, assim que visitar a página da aplicação, haverá um botão para ligar a sua MetaMask.
Clicar nele inicia a instalação do Snap:
Uma vez instalado, pode começar a usar o produto e as suas funcionalidades. Neste caso, o UniPass criará uma conta de contrato inteligente para si, que pode controlar através da sua MetaMask EOA (Conta de Propriedade Externa).
Quando inicia uma transferência, o UniPass aciona um pop-up Snap para confirmar se deseja executar a operação para a carteira UniPass AA.
Depois de confirmar através da MetaMask, pode prosseguir com a transação. Neste cenário, a MetaMask ganha o controlo sobre a carteira UniPass AA através do Snap, eliminando a necessidade do UniPass desenvolver o seu próprio plugin de carteira. Isto também permite a integração de utilizadores de baixo custo através da MetaMask.
Que informações podemos obter deste processo de instalação e utilização?
A segurança tem sempre precedência quando se trata de produtos de carteira. Vamos mergulhar no design de segurança dos Snaps.
Os snaps são baseados no NPM, o que implica que são aplicações web e JavaScript. Como sabemos, o JavaScript é altamente flexível mas suscetível a ataques como XSS e phishing. Então, como é que o MetaMask Snap enfrenta estes desafios?
Ao pesquisar, descobrimos que a MetaMask financiou e integrou o Hardened JavaScript da Agoric (ou Secure ECMAScript) como uma solução de sandbox “totalmente virtualizada”. A Agoric elaborou uma API de restrição JavaScript e apresentou um projecto de proposta ao TC-39: Proposta TC-39.
Em termos simples, o Hardened JavaScript é um subconjunto mais seguro do JavaScript padrão. Ao ajustar algumas das capacidades do JavaScript e limitar as chamadas à API, reduz vários riscos. Cria uma sandbox segura para executar o código e segue o “Princípio do Menor Privilégio” no planeamento de permissões de código.
A Agoric e a MetaMask co-desenvolveram o LavaMoat (https://github.com/LavaMoat/lavamoat) projeto para aumentar a segurança dos Snaps. O LavaMoat aborda principalmente os riscos de segurança das dependências externas em projetos JavaScript.
Tanto a Agoric como a MetaMask foram submetidas a testes de segurança de caixa preta e caixa branca e publicaram relatórios de segurança detalhados. (Mais detalhes: https://agoric.com/blog/technology/purple-teaming-how-metamask-and-agoric-hunted-bugs-to-harden-javascript). Portanto, ao nível da execução do código, temos razões amplas para acreditar que os Snaps são seguros.
Além da autorização explícita do utilizador e do design de privilégio mínimo, para serem oficialmente reconhecidos, os Snaps devem ser de código aberto, reduzindo a probabilidade de código malicioso. Observamos também que os Snaps listados no site oficial foram submetidos a auditorias de segurança de terceiros, aumentando ainda mais a sua credibilidade.
Atualmente, os Snaps são geridos com base em pacotes NPM e versionamento. O NPM é uma ferramenta de gestão de pacotes amplamente utilizada para o Desenvolvimento Web, permitindo aos programadores e equipas de projeto lançar novos pacotes e código de forma independente.
A MetaMask não tem controlo sobre os lançamentos de versões na plataforma NPM. Existe a possibilidade de as alterações mais recentes da versão não serem de código aberto ou auditadas, não é?
Após esclarecimento oficial, todas as alterações às versões do pacote NPM precisam de ser revistas pela equipa oficial e adicionadas a uma lista de permissões antes de poderem ser instaladas. Portanto, mesmo que uma equipa de projeto lança um novo pacote NPM, não pode ser instalado pelos utilizadores até que esteja oficialmente listado. Esta abordagem aumenta sem dúvida o custo de atualização das versões do Snap mas é de facto a solução mais segura. Reflete a filosofia de design do MetaMask Snap de priorizar a segurança acima de tudo.
O MetaMask Snap foi recentemente anunciado oficialmente, mas está em desenvolvimento há mais de quatro anos! O conceito inicial do MetaMask Snap foi lançado por Dan Finlay em 10 de outubro de 2019, no Medium. Artigo Médio.
Equilibrar segurança, flexibilidade e eficiência é um desafio significativo. É evidente que a MetaMask investiu muitos recursos e preparação neste empreendimento.
Actualmente, três APIs principais estão expostas principalmente:
Abaixo está uma breve introdução às capacidades e efeitos específicos abertos pelo MetaMask Snap, para lhe dar uma compreensão mais vívida.
A interface Snap_NotiFY pode exibir notificações no MetaMask ou no navegador. Os Snaps podem enviar mensagens diretas aos utilizadores através desta interface, conforme mostrado na imagem abaixo.
Quando um utilizador interage com um contrato inteligente, a MetaMask aciona o evento OnTransaction do Snap. A MetaMask passa a transação bruta não assinada para o método do manipulador onTransaction. Os Snaps podem então devolver uma interface na página de confirmação secundária da transação, personalizando o conteúdo apresentado.
Através desta capacidade, podem ser realizadas funcionalidades como auditoria segura de informações sobre transações e exibições de informações alargadas.
A capacidade de diálogo permite que os Snaps abrem diretamente uma janela separada, semelhante às caixas de diálogo tradicionais Alerta/Confirmar/Prompt. São utilizados para lembretes, confirmações e envios de informações, respetivamente.
Através do Dialog, poderá personalizar interfaces interativas simples e operações para integrar com o seu DApp.
Por razões de segurança, o Snap atualmente não suporta estruturas frontend de terceiros e fornece apenas um UIKit limitado. Aqui, ainda usamos o Insight como exemplo, mostrando a biblioteca de componentes da interface do usuário disponível para desenvolvedores.
Como mostrado na imagem, os recursos atuais incluem Título (texto grande), Texto (texto pequeno), Painel (um cartão de uso único), Divisor, Copiável (clique para copiar) e um subconjunto de recursos Markdown (negrito e itálico). Portanto, as capacidades interativas parecem temporariamente inatingíveis e o HTML incorporado não pode ser usado para interações. No entanto, depois de fazerem uma pergunta no Discord oficial, afirmaram que essas limitações são por razões de segurança e podem ser relaxadas nas próximas versões.
Além disso, por razões de segurança, os pedidos externos são suportados apenas através do método Fetch e não suportam protocolos de pedido adicionais, como o WebSocket. Devido às limitações de segurança, capacidade e privacidade, também não é possível aceder a informações do cliente, como o URL atual que acionou o Snap, tornando difícil implementar uma gama mais ampla de funcionalidades.
A maioria destes problemas decorre de preocupações com a segurança. Acreditamos que à medida que a segurança for validada ao longo do tempo, serão concedidas mais permissões.
Com a introdução destas APIs, a MetaMask evoluiu essencialmente para um produto de plataforma aberta. Parece como quando o WeChat lançou a sua Conta Oficial e Mini-programas, transformando-se apenas numa ferramenta de chat.
Em 2019, a MetaMask já previa o cenário atual do mercado com inúmeras cadeias públicas, festas de projeto e requisitos de carteira personalizada. Em vez de cada projeto desenvolver o seu próprio plugin e os utilizadores terem de instalar vários plugins, é mais eficiente desenvolver com base no MetaMask Snap. No primeiro lote de Snaps, vimos carteiras de outros ecossistemas que não o EVM, como Sui Wallet, Solana Wallet e Arweave Wallet. Dada a sua base de utilizadores existente, o MetaMask Snap está fadado a impactar significativamente o cenário da carteira.
Na verdade, o potencial do MetaMask Snap pode ser ainda maior do que imaginamos, estendendo-se para além das carteiras. Também podemos ver os esforços da equipa EthSign, que criou um gestor de palavras-passe universal chamado KeyChain baseado no MetaMask Snaps. Todas as palavras-passe do navegador podem ser encriptadas e armazenadas usando a chave da carteira. Ao proteger a sua carteira, está essencialmente a proteger todas as suas palavras-passe.
Há também uma criação da equipa Web3MQ. O Web3MQ é uma rede de relé de comunicação descentralizada de alto desempenho. O Web3MQ Snap servirá como seu cliente para facilitar as interações de mensagens, notificações, alertas e funções push. Vai integrar-se com outros DApps que estão ligados ao Web3MQ, tais como ferramentas de chat ou jogos baseados em blockchain, entre outros. Com a ajuda do Web3mQ Snap, as mensagens e atualizações serão automaticamente enviadas aos utilizadores do Metamask Snap, eliminando a necessidade de autorização adicional do utilizador. Isto estabelece uma ligação sem confiança entre utilizadores e entre utilizadores e aplicações.
Os Snaps são altamente centrados no desenvolvimento. Com a API aberta, como está a experiência do programador? Vamos mergulhar na criação de um Snap para descobrir.
É sabido que a maioria dos utilizadores muitas vezes não conhece os contratos inteligentes com os quais estão a interagir, incluindo as seguintes preocupações:
Para os utilizadores médios, esperar que revisem o código de solidez dos contratos antes de cada operação é uma tarefa difícil. Esta situação é ideal para a funcionalidade Transaction Insight analisar contratos inteligentes, como usar IA para uma auditoria de segurança preliminar, possivelmente filtrando 80% dos ataques básicos de phishing.
Instalação da carteira
Primeiro, instale o MetaMask Flask.
O MetaMask Flask é uma versão centrada no desenvolvimento da extensão MetaMask, usada principalmente para pré-visualizar novas funcionalidades e desenvolvimento de funcionalidades experimentais. Lembre-se, é para desenvolvimento, não para uso diário. Não importe as suas chaves privadas de uso diário. Estamos a usar o Flask aqui principalmente para pré-visualizar o nosso Snap desenvolvido localmente.
Recomenda-se desativar temporariamente a sua carteira normal MetaMask e outras carteiras de navegador depois de instalar ou criar um novo perfil do Chrome para evitar conflitos.
Depois de instalar a carteira, crie uma nova tal como uma carteira normal MetaMask. Esta é uma carteira de teste, por isso não importe a sua carteira de uso diário.
Em seguida, precisamos de depositar algumas moedas de teste na carteira recém-criada, que podem ser obtidas através de torneiras. O Snap discutido neste artigo usa o Goerli, pelo que o conteúdo a seguir incidirá principalmente no Goerli.
Para inicializar um Snap com base num modelo, siga a documentação oficial. Primeiro, use a CLI @metamask/create-snap para criar um novo projeto Snap. Ao mesmo tempo, inicializaremos usando o modelo oficial:
yarn create @metamask/snap tranaction-insights-snap & & cd transaction-insights-snap
Os principais ficheiros Snap estão em. /pacotes/snap. A estrutura do directório é:
O ficheiro de configuração do Snap está em snap.mainfest.json
, e o corpo principal do Snap está dentro. /src/index.ts
, o que é bastante sucinto.
Primeiro, habilite as permissões. Adicione as três linhas seguintes ao snap.mainfest.json
:
Código JSONCopy
“InitialPermissions”: {
“endowment:transaction-insight”: {},//Perspetiva da transação
“endowment:ethereum-provider”: {},//Acesso ao RPC
“dota:acesso à rede”: {}//
No arquivo de manifesto, também pode atualizar a descrição
e o ProposedName para modificar a descrição e o nome
do projeto.
Para esta demonstração, tudo o que é necessário é modificar o ficheiro index.ts para completar todas as funcionalidades. Abaixo está um trecho de código simplificado. Para obter o código executável completo, visite: https://github.com/LidamaoHub/insights.
Código TSXCopy
importar { OnTransactionHandler, OnRpcRequestHandler } de '@metamask/snaps-types';
importar { heading, panel, text, copyable, divider } de '@metamask/snaps-ui';
export const onTransaction: onTransactionHandler = async ({ transaction }) = > {
// transação
inclui valores como (endereço do contrato)
e dados
(dados de interação)
//Exemplo de código para buscar informações de auditoria para o contrato abaixo
const info = aguardar busca (http://contract-info.audit.dev/?address=${transaction.to});
//Abaixo está um código de amostra de UI
retorno {
conteúdo: [
texto (
`${info.riskList.length} item de risco`,
),
título (`${info.riskList.length ? 'Risk List' : ''}`),
... Info.RiskList.map (item, i) = > texto (`${i + 1} ${item.text}`)),
divisor (),
texto (
`Mais informações de auditoria do seguinte url`,
),
copiável (
`https://contract-info.audit.dev/mm${info.token}`,
)
]
};
};
Para recursos mais detalhados, consulte a documentação do desenvolvedor do MetaMask Snap.
Após a instalação, todas as suas transações exibirão alertas de risco semelhantes:
A experiência de desenvolvimento com Snaps é atualmente bastante tranquila, com muito poucos problemas. Os modelos oficiais também são ricos e diversificados. Os programadores experientes podem normalmente começar e desenvolver o Snap necessário dentro de algumas horas. No entanto, o maior gargalo para lançamentos oficiais que atendem a um público mainstream serão as auditorias de segurança. Nem todos os programadores independentes ou pequenas equipas têm os recursos para conduzir auditorias aos seus Snaps. Portanto, espera-se que a quantidade e a diversidade de Snaps não experimentem um crescimento explosivo durante um tempo considerável.
Se conseguir executar com sucesso o exemplo acima, parabéns, é um programador iniciante qualificado do Snap!
No ano passado, a MetaMask lançou oficialmente o MetaMask Grants DAO para financiar projetos de alto valor dentro do ecossistema MetaMask. É uma iniciativa experimental orientada pelos funcionários, destinada a oferecer subsídios a programadores externos globais para a construção de experiências impactantes no ecossistema MetaMask. Uma parte dos lucros trimestrais da MetaMask são canalizados para este DAO, e o seu orçamento anual atual é de 2,4 milhões de dólares.
Qualquer projeto que enriqueça o ecossistema MetaMask pode candidatar-se a um Subsídio MetaMask oficial do MetaMask Grants DAO. Para mais informações, visite https://metamaskgrants.org/.
Vale a pena mencionar que a LXDAO tem a honra de ter solicitado e recebido uma bolsa da MetaMask este ano, e participou ativamente no desenvolvimento de projetos relacionados, contribuindo para o ecossistema MetaMask!
Dissecámos o que é o Snap de uma perspectiva técnica, as suas considerações de segurança, limitações e experiência do programador. Em resumo:
Atualmente, o MetaMask Snap ainda está a sofrer iterações rápidas. Prevê-se que mais permissões e capacidades serão abertas no futuro. Há esperança para a introdução de um mecanismo mais aberto mas seguro, como um sistema de auditoria de baixo custo seguro e sem permissão, de modo a permitir que mais desenvolvedores participem a um custo mais baixo. Se este problema for resolvido, pode haver um aumento esperado na procura no futuro. Podem até surgir posições de programador dedicadas do Snap.
Aproveitando a enorme base de utilizadores da MetaMask, os promotores indie também podem encontrar oportunidades únicas. Vamos manter os olhos abertos para as próximas inovações revolucionárias que os Snaps trarão para a mesa.
Por último, obrigado pelo seu artigo. Acredito que contribuirá significativamente para aumentar a consciencialização sobre o estado atual dos MetaMask Snaps.
Por favor, continue a seguir o nosso Twitter: < a href= "https://twitter.com/LXDAO_Official" " > @lxdao_official. Estaremos a lançar mais conteúdo relacionado com o MetaMask Snapchat, como workshops, por isso, fique ligado!
Há alguns dias, a ConsenSys anunciou o lançamento público do MetaMask Snaps Open Beta. Os Snaps MetaMask são essencialmente plugins que alargam as capacidades da carteira MetaMask. Estes “Snaps” são aplicações desenvolvidas por terceiros que podem ser instaladas para adicionar novas funcionalidades.
Se comparássemos a transformação do Consensys da MetaMask para o WeChat, o Snap poderia ser visto como o Mini Programa WeChat. Como resultado, torna-se evidente que a MetaMask, com a sua ambição, combinada com a escala do Consensys e a base de utilizadores da MetaMask, irá alterar o panorama do setor das carteiras.
Lista Parcial de Snaps
Então, como são os MetaMask Snaps do ponto de vista técnico? Quais são as suas capacidades e limitações? Estão seguros? Como é a experiência do programador? Todos estes fatores podem determinar o potencial futuro dos MetaMask Snaps.
A partir do ano passado, a LXDAO esteve profundamente envolvida na investigação da implementação dos Snaps. Vários membros envolveram-se no desenvolvimento do Snap e participaram em hackathons relacionados. Hoje, vamos nos aprofundar nestas questões de uma perspectiva técnica e até desenvolver um Snap para lhe dar uma experiência prática de programador.
Geralmente, pode instalar Snaps a partir do mercado oficial do MetaMask Snap, ou diretamente do site de um projeto. Por exemplo, com o UniPass, assim que visitar a página da aplicação, haverá um botão para ligar a sua MetaMask.
Clicar nele inicia a instalação do Snap:
Uma vez instalado, pode começar a usar o produto e as suas funcionalidades. Neste caso, o UniPass criará uma conta de contrato inteligente para si, que pode controlar através da sua MetaMask EOA (Conta de Propriedade Externa).
Quando inicia uma transferência, o UniPass aciona um pop-up Snap para confirmar se deseja executar a operação para a carteira UniPass AA.
Depois de confirmar através da MetaMask, pode prosseguir com a transação. Neste cenário, a MetaMask ganha o controlo sobre a carteira UniPass AA através do Snap, eliminando a necessidade do UniPass desenvolver o seu próprio plugin de carteira. Isto também permite a integração de utilizadores de baixo custo através da MetaMask.
Que informações podemos obter deste processo de instalação e utilização?
A segurança tem sempre precedência quando se trata de produtos de carteira. Vamos mergulhar no design de segurança dos Snaps.
Os snaps são baseados no NPM, o que implica que são aplicações web e JavaScript. Como sabemos, o JavaScript é altamente flexível mas suscetível a ataques como XSS e phishing. Então, como é que o MetaMask Snap enfrenta estes desafios?
Ao pesquisar, descobrimos que a MetaMask financiou e integrou o Hardened JavaScript da Agoric (ou Secure ECMAScript) como uma solução de sandbox “totalmente virtualizada”. A Agoric elaborou uma API de restrição JavaScript e apresentou um projecto de proposta ao TC-39: Proposta TC-39.
Em termos simples, o Hardened JavaScript é um subconjunto mais seguro do JavaScript padrão. Ao ajustar algumas das capacidades do JavaScript e limitar as chamadas à API, reduz vários riscos. Cria uma sandbox segura para executar o código e segue o “Princípio do Menor Privilégio” no planeamento de permissões de código.
A Agoric e a MetaMask co-desenvolveram o LavaMoat (https://github.com/LavaMoat/lavamoat) projeto para aumentar a segurança dos Snaps. O LavaMoat aborda principalmente os riscos de segurança das dependências externas em projetos JavaScript.
Tanto a Agoric como a MetaMask foram submetidas a testes de segurança de caixa preta e caixa branca e publicaram relatórios de segurança detalhados. (Mais detalhes: https://agoric.com/blog/technology/purple-teaming-how-metamask-and-agoric-hunted-bugs-to-harden-javascript). Portanto, ao nível da execução do código, temos razões amplas para acreditar que os Snaps são seguros.
Além da autorização explícita do utilizador e do design de privilégio mínimo, para serem oficialmente reconhecidos, os Snaps devem ser de código aberto, reduzindo a probabilidade de código malicioso. Observamos também que os Snaps listados no site oficial foram submetidos a auditorias de segurança de terceiros, aumentando ainda mais a sua credibilidade.
Atualmente, os Snaps são geridos com base em pacotes NPM e versionamento. O NPM é uma ferramenta de gestão de pacotes amplamente utilizada para o Desenvolvimento Web, permitindo aos programadores e equipas de projeto lançar novos pacotes e código de forma independente.
A MetaMask não tem controlo sobre os lançamentos de versões na plataforma NPM. Existe a possibilidade de as alterações mais recentes da versão não serem de código aberto ou auditadas, não é?
Após esclarecimento oficial, todas as alterações às versões do pacote NPM precisam de ser revistas pela equipa oficial e adicionadas a uma lista de permissões antes de poderem ser instaladas. Portanto, mesmo que uma equipa de projeto lança um novo pacote NPM, não pode ser instalado pelos utilizadores até que esteja oficialmente listado. Esta abordagem aumenta sem dúvida o custo de atualização das versões do Snap mas é de facto a solução mais segura. Reflete a filosofia de design do MetaMask Snap de priorizar a segurança acima de tudo.
O MetaMask Snap foi recentemente anunciado oficialmente, mas está em desenvolvimento há mais de quatro anos! O conceito inicial do MetaMask Snap foi lançado por Dan Finlay em 10 de outubro de 2019, no Medium. Artigo Médio.
Equilibrar segurança, flexibilidade e eficiência é um desafio significativo. É evidente que a MetaMask investiu muitos recursos e preparação neste empreendimento.
Actualmente, três APIs principais estão expostas principalmente:
Abaixo está uma breve introdução às capacidades e efeitos específicos abertos pelo MetaMask Snap, para lhe dar uma compreensão mais vívida.
A interface Snap_NotiFY pode exibir notificações no MetaMask ou no navegador. Os Snaps podem enviar mensagens diretas aos utilizadores através desta interface, conforme mostrado na imagem abaixo.
Quando um utilizador interage com um contrato inteligente, a MetaMask aciona o evento OnTransaction do Snap. A MetaMask passa a transação bruta não assinada para o método do manipulador onTransaction. Os Snaps podem então devolver uma interface na página de confirmação secundária da transação, personalizando o conteúdo apresentado.
Através desta capacidade, podem ser realizadas funcionalidades como auditoria segura de informações sobre transações e exibições de informações alargadas.
A capacidade de diálogo permite que os Snaps abrem diretamente uma janela separada, semelhante às caixas de diálogo tradicionais Alerta/Confirmar/Prompt. São utilizados para lembretes, confirmações e envios de informações, respetivamente.
Através do Dialog, poderá personalizar interfaces interativas simples e operações para integrar com o seu DApp.
Por razões de segurança, o Snap atualmente não suporta estruturas frontend de terceiros e fornece apenas um UIKit limitado. Aqui, ainda usamos o Insight como exemplo, mostrando a biblioteca de componentes da interface do usuário disponível para desenvolvedores.
Como mostrado na imagem, os recursos atuais incluem Título (texto grande), Texto (texto pequeno), Painel (um cartão de uso único), Divisor, Copiável (clique para copiar) e um subconjunto de recursos Markdown (negrito e itálico). Portanto, as capacidades interativas parecem temporariamente inatingíveis e o HTML incorporado não pode ser usado para interações. No entanto, depois de fazerem uma pergunta no Discord oficial, afirmaram que essas limitações são por razões de segurança e podem ser relaxadas nas próximas versões.
Além disso, por razões de segurança, os pedidos externos são suportados apenas através do método Fetch e não suportam protocolos de pedido adicionais, como o WebSocket. Devido às limitações de segurança, capacidade e privacidade, também não é possível aceder a informações do cliente, como o URL atual que acionou o Snap, tornando difícil implementar uma gama mais ampla de funcionalidades.
A maioria destes problemas decorre de preocupações com a segurança. Acreditamos que à medida que a segurança for validada ao longo do tempo, serão concedidas mais permissões.
Com a introdução destas APIs, a MetaMask evoluiu essencialmente para um produto de plataforma aberta. Parece como quando o WeChat lançou a sua Conta Oficial e Mini-programas, transformando-se apenas numa ferramenta de chat.
Em 2019, a MetaMask já previa o cenário atual do mercado com inúmeras cadeias públicas, festas de projeto e requisitos de carteira personalizada. Em vez de cada projeto desenvolver o seu próprio plugin e os utilizadores terem de instalar vários plugins, é mais eficiente desenvolver com base no MetaMask Snap. No primeiro lote de Snaps, vimos carteiras de outros ecossistemas que não o EVM, como Sui Wallet, Solana Wallet e Arweave Wallet. Dada a sua base de utilizadores existente, o MetaMask Snap está fadado a impactar significativamente o cenário da carteira.
Na verdade, o potencial do MetaMask Snap pode ser ainda maior do que imaginamos, estendendo-se para além das carteiras. Também podemos ver os esforços da equipa EthSign, que criou um gestor de palavras-passe universal chamado KeyChain baseado no MetaMask Snaps. Todas as palavras-passe do navegador podem ser encriptadas e armazenadas usando a chave da carteira. Ao proteger a sua carteira, está essencialmente a proteger todas as suas palavras-passe.
Há também uma criação da equipa Web3MQ. O Web3MQ é uma rede de relé de comunicação descentralizada de alto desempenho. O Web3MQ Snap servirá como seu cliente para facilitar as interações de mensagens, notificações, alertas e funções push. Vai integrar-se com outros DApps que estão ligados ao Web3MQ, tais como ferramentas de chat ou jogos baseados em blockchain, entre outros. Com a ajuda do Web3mQ Snap, as mensagens e atualizações serão automaticamente enviadas aos utilizadores do Metamask Snap, eliminando a necessidade de autorização adicional do utilizador. Isto estabelece uma ligação sem confiança entre utilizadores e entre utilizadores e aplicações.
Os Snaps são altamente centrados no desenvolvimento. Com a API aberta, como está a experiência do programador? Vamos mergulhar na criação de um Snap para descobrir.
É sabido que a maioria dos utilizadores muitas vezes não conhece os contratos inteligentes com os quais estão a interagir, incluindo as seguintes preocupações:
Para os utilizadores médios, esperar que revisem o código de solidez dos contratos antes de cada operação é uma tarefa difícil. Esta situação é ideal para a funcionalidade Transaction Insight analisar contratos inteligentes, como usar IA para uma auditoria de segurança preliminar, possivelmente filtrando 80% dos ataques básicos de phishing.
Instalação da carteira
Primeiro, instale o MetaMask Flask.
O MetaMask Flask é uma versão centrada no desenvolvimento da extensão MetaMask, usada principalmente para pré-visualizar novas funcionalidades e desenvolvimento de funcionalidades experimentais. Lembre-se, é para desenvolvimento, não para uso diário. Não importe as suas chaves privadas de uso diário. Estamos a usar o Flask aqui principalmente para pré-visualizar o nosso Snap desenvolvido localmente.
Recomenda-se desativar temporariamente a sua carteira normal MetaMask e outras carteiras de navegador depois de instalar ou criar um novo perfil do Chrome para evitar conflitos.
Depois de instalar a carteira, crie uma nova tal como uma carteira normal MetaMask. Esta é uma carteira de teste, por isso não importe a sua carteira de uso diário.
Em seguida, precisamos de depositar algumas moedas de teste na carteira recém-criada, que podem ser obtidas através de torneiras. O Snap discutido neste artigo usa o Goerli, pelo que o conteúdo a seguir incidirá principalmente no Goerli.
Para inicializar um Snap com base num modelo, siga a documentação oficial. Primeiro, use a CLI @metamask/create-snap para criar um novo projeto Snap. Ao mesmo tempo, inicializaremos usando o modelo oficial:
yarn create @metamask/snap tranaction-insights-snap & & cd transaction-insights-snap
Os principais ficheiros Snap estão em. /pacotes/snap. A estrutura do directório é:
O ficheiro de configuração do Snap está em snap.mainfest.json
, e o corpo principal do Snap está dentro. /src/index.ts
, o que é bastante sucinto.
Primeiro, habilite as permissões. Adicione as três linhas seguintes ao snap.mainfest.json
:
Código JSONCopy
“InitialPermissions”: {
“endowment:transaction-insight”: {},//Perspetiva da transação
“endowment:ethereum-provider”: {},//Acesso ao RPC
“dota:acesso à rede”: {}//
No arquivo de manifesto, também pode atualizar a descrição
e o ProposedName para modificar a descrição e o nome
do projeto.
Para esta demonstração, tudo o que é necessário é modificar o ficheiro index.ts para completar todas as funcionalidades. Abaixo está um trecho de código simplificado. Para obter o código executável completo, visite: https://github.com/LidamaoHub/insights.
Código TSXCopy
importar { OnTransactionHandler, OnRpcRequestHandler } de '@metamask/snaps-types';
importar { heading, panel, text, copyable, divider } de '@metamask/snaps-ui';
export const onTransaction: onTransactionHandler = async ({ transaction }) = > {
// transação
inclui valores como (endereço do contrato)
e dados
(dados de interação)
//Exemplo de código para buscar informações de auditoria para o contrato abaixo
const info = aguardar busca (http://contract-info.audit.dev/?address=${transaction.to});
//Abaixo está um código de amostra de UI
retorno {
conteúdo: [
texto (
`${info.riskList.length} item de risco`,
),
título (`${info.riskList.length ? 'Risk List' : ''}`),
... Info.RiskList.map (item, i) = > texto (`${i + 1} ${item.text}`)),
divisor (),
texto (
`Mais informações de auditoria do seguinte url`,
),
copiável (
`https://contract-info.audit.dev/mm${info.token}`,
)
]
};
};
Para recursos mais detalhados, consulte a documentação do desenvolvedor do MetaMask Snap.
Após a instalação, todas as suas transações exibirão alertas de risco semelhantes:
A experiência de desenvolvimento com Snaps é atualmente bastante tranquila, com muito poucos problemas. Os modelos oficiais também são ricos e diversificados. Os programadores experientes podem normalmente começar e desenvolver o Snap necessário dentro de algumas horas. No entanto, o maior gargalo para lançamentos oficiais que atendem a um público mainstream serão as auditorias de segurança. Nem todos os programadores independentes ou pequenas equipas têm os recursos para conduzir auditorias aos seus Snaps. Portanto, espera-se que a quantidade e a diversidade de Snaps não experimentem um crescimento explosivo durante um tempo considerável.
Se conseguir executar com sucesso o exemplo acima, parabéns, é um programador iniciante qualificado do Snap!
No ano passado, a MetaMask lançou oficialmente o MetaMask Grants DAO para financiar projetos de alto valor dentro do ecossistema MetaMask. É uma iniciativa experimental orientada pelos funcionários, destinada a oferecer subsídios a programadores externos globais para a construção de experiências impactantes no ecossistema MetaMask. Uma parte dos lucros trimestrais da MetaMask são canalizados para este DAO, e o seu orçamento anual atual é de 2,4 milhões de dólares.
Qualquer projeto que enriqueça o ecossistema MetaMask pode candidatar-se a um Subsídio MetaMask oficial do MetaMask Grants DAO. Para mais informações, visite https://metamaskgrants.org/.
Vale a pena mencionar que a LXDAO tem a honra de ter solicitado e recebido uma bolsa da MetaMask este ano, e participou ativamente no desenvolvimento de projetos relacionados, contribuindo para o ecossistema MetaMask!
Dissecámos o que é o Snap de uma perspectiva técnica, as suas considerações de segurança, limitações e experiência do programador. Em resumo:
Atualmente, o MetaMask Snap ainda está a sofrer iterações rápidas. Prevê-se que mais permissões e capacidades serão abertas no futuro. Há esperança para a introdução de um mecanismo mais aberto mas seguro, como um sistema de auditoria de baixo custo seguro e sem permissão, de modo a permitir que mais desenvolvedores participem a um custo mais baixo. Se este problema for resolvido, pode haver um aumento esperado na procura no futuro. Podem até surgir posições de programador dedicadas do Snap.
Aproveitando a enorme base de utilizadores da MetaMask, os promotores indie também podem encontrar oportunidades únicas. Vamos manter os olhos abertos para as próximas inovações revolucionárias que os Snaps trarão para a mesa.
Por último, obrigado pelo seu artigo. Acredito que contribuirá significativamente para aumentar a consciencialização sobre o estado atual dos MetaMask Snaps.
Por favor, continue a seguir o nosso Twitter: < a href= "https://twitter.com/LXDAO_Official" " > @lxdao_official. Estaremos a lançar mais conteúdo relacionado com o MetaMask Snapchat, como workshops, por isso, fique ligado!