Há alguns dias, a ConsenSys anunciou o lançamento público do MetaMask Snaps Open Beta. MetaMask Snaps são essencialmente plug-ins que ampliam os recursos da carteira MetaMask. Esses “Snaps” são aplicativos desenvolvidos por terceiros que podem ser instalados para adicionar novas funcionalidades.
Se comparássemos a transformação do MetaMask com o WeChat pela ConsenSys, então 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 da ConsenSys e a base de utilizadores da MetaMask, alterará o panorama do setor de carteiras.
O site oficial já listou 35 Snaps disponíveis e lançou uma Snap App Store: https://snaps.metamask.io/.
Lista parcial de snaps
Então, como são os MetaMask Snaps do ponto de vista técnico? Quais são suas capacidades e limitações? Eles estão seguros? Como é a experiência do desenvolvedor? Todos esses fatores podem determinar o potencial futuro dos MetaMask Snaps.
Desde o ano passado, a LXDAO esteve profundamente envolvida na pesquisa da implementação de Snaps. Vários membros se envolveram no desenvolvimento do Snap e participaram de hackathons relacionados. Hoje, vamos nos aprofundar nessas questões de uma perspectiva técnica e até mesmo desenvolver um Snap para oferecer a você uma experiência prática de desenvolvedor.
Geralmente, você pode instalar Snaps no mercado oficial do MetaMask Snap ou diretamente no site de um projeto. Por exemplo, com o UniPass, ao visitar a página do aplicativo, haverá um botão para conectar sua MetaMask.
Clicar nele inicia a instalação do Snap:
Depois de instalado, você pode começar a usar o produto e seus recursos. Nesse caso, o UniPass criará uma conta de contrato inteligente para você, que você pode controlar por meio de sua MetaMask EOA (conta de propriedade externa).
Quando você inicia uma transferência, o UniPass aciona um pop-up Snap para confirmar se você deseja executar a operação para a carteira UniPass AA.
Após a confirmação através do MetaMask, você pode prosseguir com a transação. Nesse cenário, a MetaMask ganha controle sobre a carteira UniPass AA por meio do Snap, eliminando a necessidade da UniPass desenvolver seu próprio plugin de carteira. Isso também permite a integração de usuários de baixo custo via MetaMask.
Que insights podemos obter deste processo de instalação e uso?
A segurança sempre tem precedência quando se trata de produtos de carteira. Vamos nos aprofundar no design de segurança do Snaps.
Snaps são baseados em NPM, o que implica que são aplicativos web e JavaScript. Como sabemos, o JavaScript é altamente flexível, mas suscetível a ataques como XSS e phishing. Então, como o MetaMask Snap enfrenta esses desafios?
Após a pesquisa, descobrimos que a MetaMask financiou e integrou o Hardened JavaScript da Agoric (ou Secure EcmaScript) como uma solução de sandbox “totalmente virtualizada”. Agoric elaborou uma API de restrição de JavaScript e apresentou um projeto de proposta ao TC-39: Proposta TC-39.
Em termos simples, Hardened JavaScript é um subconjunto mais seguro do JavaScript padrão. Ao ajustar alguns dos recursos do JavaScript e limitar as chamadas de API, vários riscos são reduzidos. Ele cria uma sandbox segura para execução do código e segue o “Princípio do Menor Privilégio” no planejamento de permissões de código.
Para especificações técnicas mais detalhadas sobre Hardened JavaScript, consulte: https://tvcutsem.github.io/assets/HardenedJS_BlueLava2022.pdf.
Agoric e MetaMask co-desenvolveram o LavaMoat (https://github.com/LavaMoat/lavamoat) projeto para aumentar a segurança dos Snaps. LavaMoat aborda principalmente os riscos de segurança de dependências externas em projetos JavaScript.
Tanto Agoric quanto MetaMask passaram por 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, no nível de execução do código, temos muitos motivos para acreditar que os Snaps são seguros.
Além da autorização explícita do usuário e do design com privilégios mínimos, 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 passaram por auditorias de segurança de terceiros, aumentando ainda mais sua credibilidade.
Atualmente, os Snaps são gerenciados com base em pacotes e versionamento NPM. NPM é uma ferramenta de gerenciamento de pacotes amplamente utilizada para desenvolvimento Web, permitindo que desenvolvedores e equipes de projeto liberem novos pacotes e códigos de forma independente.
MetaMask não tem controle sobre o lançamento de versões na plataforma NPM. Existe a possibilidade de que as alterações de versão mais recentes não sejam de código aberto ou auditadas, não é?
Após esclarecimento oficial, todas as alterações nas versões do pacote NPM precisam ser revisadas pela equipe oficial e adicionadas a uma lista de permissões antes de serem instaladas. Portanto, mesmo que uma equipe de projeto libere um novo pacote NPM, ele não poderá ser instalado pelos usuários até que seja oficialmente listado. Esta abordagem sem dúvida aumenta o custo de atualização das versões do Snap, mas é de fato a solução mais segura. Reflete a filosofia de design do MetaMask Snap de priorizar a segurança acima de tudo.
MetaMask Snap foi anunciado oficialmente recentemente, mas na verdade 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 nesta empreitada.
Atualmente, três APIs principais estão expostas principalmente:
Abaixo está uma breve introdução aos recursos 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 usuários por meio desta interface, conforme mostrado na imagem abaixo.
Quando um usuário interage com um contrato inteligente, MetaMask aciona o evento onTransaction do Snap. MetaMask passa a transação bruta não assinada para o método manipulador onTransaction. Os Snaps podem então retornar uma interface na página secundária de confirmação da transação, personalizando o conteúdo exibido.
Através desta capacidade, recursos como auditoria segura de informações de transações e exibições estendidas de informações podem ser realizados.
O recurso Diálogo permite que o Snaps abra uma janela separada diretamente, semelhante às tradicionais caixas de diálogo Alerta/Confirmação/Prompt. Eles são usados para lembretes, confirmações e envio de informações, respectivamente.
Através do Dialog, você poderá personalizar interfaces e operações interativas simples para integração com seu DApp.
Por motivos de segurança, o Snap atualmente não oferece suporte a estruturas de front-end de terceiros e fornece apenas um UIKit limitado. Aqui, ainda usamos o Insight como exemplo, apresentando a biblioteca de componentes de UI disponível para desenvolvedores.
Conforme mostrado na imagem, os recursos atuais incluem Título (texto grande), Texto (texto pequeno), Painel (um cartão descartável), Divisor, Copiável (clique para copiar) e um subconjunto de recursos Markdown (negrito e itálico). Portanto, os recursos interativos parecem temporariamente inatingíveis e o HTML incorporado não pode ser usado para interações. No entanto, após fazerem uma pergunta no Discord oficial, eles 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, as solicitações externas são suportadas apenas através do método Fetch e não suportam protocolos de solicitação adicionais, como WebSocket. Devido a limitações de segurança, capacidade e privacidade, também não é possível acessar informações do cliente, como a URL atual que acionou o Snap, tornando um desafio a implementação de uma gama mais ampla de recursos.
A maioria desses problemas decorre de questões de segurança. Acreditamos que à medida que a segurança for validada ao longo do tempo, mais permissões serão concedidas.
Com a introdução dessas APIs, o MetaMask evoluiu essencialmente para um produto de plataforma aberta. É semelhante a quando o WeChat lançou sua conta oficial e miniprogramas, deixando de ser apenas uma ferramenta de chat.
Em 2019, a MetaMask já previa o cenário atual do mercado com inúmeras redes públicas, partes de projetos e requisitos de carteira personalizados. Em vez de cada projeto desenvolver seu próprio plugin e os usuários terem que instalar vários plugins, é mais eficiente desenvolver com base no MetaMask Snap. No primeiro lote de Snaps, vimos carteiras de outros ecossistemas além do EVM, como Sui Wallet, Solana Wallet e Arweave Wallet. Dada a sua base de usuários existente, o MetaMask Snap certamente terá um impacto significativo no cenário da carteira.
Na verdade, o potencial do MetaMask Snap pode ser ainda maior do que imaginamos, indo além das carteiras. Também podemos ver os esforços da equipe EthSign, que criou um gerenciador de senhas universal chamado KeyChain baseado em MetaMask Snaps. Todas as senhas do navegador podem ser criptografadas e armazenadas usando a chave da carteira. Ao proteger sua carteira, você está essencialmente protegendo todas as suas senhas.
Há também uma criação da equipe Web3MQ. Web3MQ é uma rede de retransmissão de comunicação descentralizada de alto desempenho. O Web3MQ Snap servirá como cliente para facilitar interações de mensagens, notificações, alertas e funções push. Ele se integrará com outros DApps conectados ao Web3MQ, como ferramentas de chat ou jogos baseados em blockchain, entre outros. Com a ajuda do Web3MQ Snap, mensagens e atualizações serão automaticamente enviadas aos usuários do Metamask Snap, eliminando a necessidade de autorização adicional do usuário. Isso estabelece uma conexão confiável entre usuários e entre usuários e aplicativos.
Snaps são altamente centrados no desenvolvedor. Com a API aberta, como é a experiência do desenvolvedor? Vamos mergulhar na criação de um Snap para descobrir.
É bem sabido que a maioria dos usuários muitas vezes não conhece os contratos inteligentes com os quais estão interagindo, incluindo as seguintes preocupações:
Para os usuários comuns, esperar que eles revisem o código de solidez dos contratos antes de cada operação é uma tarefa difícil. Esta situação é ideal para o recurso Transaction Insight analisar contratos inteligentes, como usar IA para uma auditoria preliminar de segurança, possivelmente filtrando 80% dos ataques básicos de phishing.
Instalação de carteira
Primeiro, instale o MetaMask Flask.
MetaMask Flask é uma versão centrada no desenvolvedor da extensão MetaMask, usada principalmente para visualizar novos recursos e desenvolvimento de funcionalidades experimentais. Lembre-se, é para desenvolvimento, não para uso diário. Não importe suas chaves privadas de uso diário. Estamos usando o Flask aqui principalmente para visualizar nosso Snap desenvolvido localmente.
É recomendado desativar temporariamente sua carteira MetaMask normal e outras carteiras de navegador após instalar ou criar um novo perfil do Chrome para evitar conflitos.
Depois de instalar a carteira, crie uma nova como uma carteira MetaMask normal. Esta é uma carteira de teste, portanto não importe sua carteira de uso diário.
Em seguida, precisamos depositar algumas moedas de teste na carteira recém-criada, que podem ser obtidas através de faucets. O Snap discutido neste artigo usa Goerli, portanto, o conteúdo a seguir se concentrará principalmente em Goerli.
Para inicializar um Snap baseado em um template, 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:
fio criar @metamask/snap transaction-insights-snap && cd transaction-insights-snap
Os principais arquivos Snap estão em ./packages/snap. A estrutura do diretório é:
O arquivo de configuração do Snap está em snap.mainfest.json
, e o corpo principal do Snap está em ./src/index.ts
, o que é bastante sucinto.
Primeiro, ative as permissões. Adicione as três linhas a seguir a snap.mainfest.json
:
jsonCopiar código
“permissões iniciais”: {
“endowment:transaction-insight”: {}, //Insight da transação
“endowment:ethereum-provider”: {}, // Acesso ao RPC
“dotação:acesso à rede”: {} //
No arquivo de manifesto, você também pode atualizar a description
e proposedName
para modificar a descrição e o nome do projeto.
Para esta demonstração, basta modificar o arquivo 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';
exportar const onTransaction: OnTransactionHandler = async ({ transaction }) => {
// transaction
inclui valores como to
(endereço do contrato) e data
(dados de interação)
// Exemplo de código para buscar informações de auditoria para o contrato abaixo
const info = aguarda busca (http://contract-info.audit.dev/?address=${transaction.to}
);
// Abaixo está um exemplo de código de UI
retornar {
contente: [
text(
`${info.riskList.length} item de risco`,
),
cabeçalho(`${info.riskList.length ? 'Risk List' : ''}`),
...info.riskList.map((item, i) => text(`${i + 1} ${item.text}`)),
divisor(),
text(
`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 poucos problemas. Os modelos oficiais também são ricos e diversificados. Desenvolvedores experientes geralmente podem começar e desenvolver o Snap necessário em poucas horas. No entanto, o maior gargalo para lançamentos oficiais que atendam ao público mainstream serão as auditorias de segurança. Nem todos os desenvolvedores independentes ou equipes pequenas têm recursos para realizar auditorias em seus Snaps. Portanto, espera-se que a quantidade e a diversidade de Snaps não experimentem um crescimento explosivo por um tempo considerável.
Se você conseguiu executar com sucesso o exemplo acima, parabéns, você é um desenvolvedor 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 dirigida por funcionários, com o objetivo de oferecer subsídios a desenvolvedores externos globais para a construção de experiências impactantes dentro do ecossistema MetaMask. Uma parte dos lucros trimestrais da MetaMask é canalizada para este DAO, e seu orçamento anual atual é de US$ 2,4 milhões.
Qualquer projeto que enriqueça o ecossistema MetaMask pode solicitar um MetaMask Grant oficial do MetaMask Grants DAO. Para obter mais informações, visite https://metamaskgrants.org/.
Vale ressaltar que a LXDAO está honrada por ter se candidatado e recebido uma bolsa da MetaMask este ano, e tem participado ativamente no desenvolvimento de projetos relacionados, contribuindo para o ecossistema MetaMask!
Dissecamos o que é o Snap de uma perspectiva técnica, suas considerações de segurança, limitações e experiência do desenvolvedor. Resumindo:
Atualmente, o MetaMask Snap ainda está passando por 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, porém seguro, como um sistema de auditoria seguro e sem permissão, de baixo custo, para permitir que mais desenvolvedores participem a um custo menor. Se esta questão for resolvida, poderá haver um aumento esperado na procura no futuro. Podem até surgir cargos dedicados de desenvolvedor Snap.
Aproveitando a enorme base de usuários do MetaMask, os desenvolvedores independentes também podem encontrar oportunidades únicas. Vamos ficar atentos às próximas inovações revolucionárias que o Snaps trará para a mesa.
Por último, obrigado pelo seu artigo. Acredito que contribuirá significativamente para aumentar a conscientização sobre o estado atual dos MetaMask Snaps.
Continue acompanhando nosso Twitter:https://twitter.com/LXDAO_Official@lxdao_official . Estaremos lançando mais conteúdo relacionado ao MetaMask Snap, como workshops, fique ligado!
Há alguns dias, a ConsenSys anunciou o lançamento público do MetaMask Snaps Open Beta. MetaMask Snaps são essencialmente plug-ins que ampliam os recursos da carteira MetaMask. Esses “Snaps” são aplicativos desenvolvidos por terceiros que podem ser instalados para adicionar novas funcionalidades.
Se comparássemos a transformação do MetaMask com o WeChat pela ConsenSys, então 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 da ConsenSys e a base de utilizadores da MetaMask, alterará o panorama do setor de carteiras.
O site oficial já listou 35 Snaps disponíveis e lançou uma Snap App Store: https://snaps.metamask.io/.
Lista parcial de snaps
Então, como são os MetaMask Snaps do ponto de vista técnico? Quais são suas capacidades e limitações? Eles estão seguros? Como é a experiência do desenvolvedor? Todos esses fatores podem determinar o potencial futuro dos MetaMask Snaps.
Desde o ano passado, a LXDAO esteve profundamente envolvida na pesquisa da implementação de Snaps. Vários membros se envolveram no desenvolvimento do Snap e participaram de hackathons relacionados. Hoje, vamos nos aprofundar nessas questões de uma perspectiva técnica e até mesmo desenvolver um Snap para oferecer a você uma experiência prática de desenvolvedor.
Geralmente, você pode instalar Snaps no mercado oficial do MetaMask Snap ou diretamente no site de um projeto. Por exemplo, com o UniPass, ao visitar a página do aplicativo, haverá um botão para conectar sua MetaMask.
Clicar nele inicia a instalação do Snap:
Depois de instalado, você pode começar a usar o produto e seus recursos. Nesse caso, o UniPass criará uma conta de contrato inteligente para você, que você pode controlar por meio de sua MetaMask EOA (conta de propriedade externa).
Quando você inicia uma transferência, o UniPass aciona um pop-up Snap para confirmar se você deseja executar a operação para a carteira UniPass AA.
Após a confirmação através do MetaMask, você pode prosseguir com a transação. Nesse cenário, a MetaMask ganha controle sobre a carteira UniPass AA por meio do Snap, eliminando a necessidade da UniPass desenvolver seu próprio plugin de carteira. Isso também permite a integração de usuários de baixo custo via MetaMask.
Que insights podemos obter deste processo de instalação e uso?
A segurança sempre tem precedência quando se trata de produtos de carteira. Vamos nos aprofundar no design de segurança do Snaps.
Snaps são baseados em NPM, o que implica que são aplicativos web e JavaScript. Como sabemos, o JavaScript é altamente flexível, mas suscetível a ataques como XSS e phishing. Então, como o MetaMask Snap enfrenta esses desafios?
Após a pesquisa, descobrimos que a MetaMask financiou e integrou o Hardened JavaScript da Agoric (ou Secure EcmaScript) como uma solução de sandbox “totalmente virtualizada”. Agoric elaborou uma API de restrição de JavaScript e apresentou um projeto de proposta ao TC-39: Proposta TC-39.
Em termos simples, Hardened JavaScript é um subconjunto mais seguro do JavaScript padrão. Ao ajustar alguns dos recursos do JavaScript e limitar as chamadas de API, vários riscos são reduzidos. Ele cria uma sandbox segura para execução do código e segue o “Princípio do Menor Privilégio” no planejamento de permissões de código.
Para especificações técnicas mais detalhadas sobre Hardened JavaScript, consulte: https://tvcutsem.github.io/assets/HardenedJS_BlueLava2022.pdf.
Agoric e MetaMask co-desenvolveram o LavaMoat (https://github.com/LavaMoat/lavamoat) projeto para aumentar a segurança dos Snaps. LavaMoat aborda principalmente os riscos de segurança de dependências externas em projetos JavaScript.
Tanto Agoric quanto MetaMask passaram por 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, no nível de execução do código, temos muitos motivos para acreditar que os Snaps são seguros.
Além da autorização explícita do usuário e do design com privilégios mínimos, 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 passaram por auditorias de segurança de terceiros, aumentando ainda mais sua credibilidade.
Atualmente, os Snaps são gerenciados com base em pacotes e versionamento NPM. NPM é uma ferramenta de gerenciamento de pacotes amplamente utilizada para desenvolvimento Web, permitindo que desenvolvedores e equipes de projeto liberem novos pacotes e códigos de forma independente.
MetaMask não tem controle sobre o lançamento de versões na plataforma NPM. Existe a possibilidade de que as alterações de versão mais recentes não sejam de código aberto ou auditadas, não é?
Após esclarecimento oficial, todas as alterações nas versões do pacote NPM precisam ser revisadas pela equipe oficial e adicionadas a uma lista de permissões antes de serem instaladas. Portanto, mesmo que uma equipe de projeto libere um novo pacote NPM, ele não poderá ser instalado pelos usuários até que seja oficialmente listado. Esta abordagem sem dúvida aumenta o custo de atualização das versões do Snap, mas é de fato a solução mais segura. Reflete a filosofia de design do MetaMask Snap de priorizar a segurança acima de tudo.
MetaMask Snap foi anunciado oficialmente recentemente, mas na verdade 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 nesta empreitada.
Atualmente, três APIs principais estão expostas principalmente:
Abaixo está uma breve introdução aos recursos 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 usuários por meio desta interface, conforme mostrado na imagem abaixo.
Quando um usuário interage com um contrato inteligente, MetaMask aciona o evento onTransaction do Snap. MetaMask passa a transação bruta não assinada para o método manipulador onTransaction. Os Snaps podem então retornar uma interface na página secundária de confirmação da transação, personalizando o conteúdo exibido.
Através desta capacidade, recursos como auditoria segura de informações de transações e exibições estendidas de informações podem ser realizados.
O recurso Diálogo permite que o Snaps abra uma janela separada diretamente, semelhante às tradicionais caixas de diálogo Alerta/Confirmação/Prompt. Eles são usados para lembretes, confirmações e envio de informações, respectivamente.
Através do Dialog, você poderá personalizar interfaces e operações interativas simples para integração com seu DApp.
Por motivos de segurança, o Snap atualmente não oferece suporte a estruturas de front-end de terceiros e fornece apenas um UIKit limitado. Aqui, ainda usamos o Insight como exemplo, apresentando a biblioteca de componentes de UI disponível para desenvolvedores.
Conforme mostrado na imagem, os recursos atuais incluem Título (texto grande), Texto (texto pequeno), Painel (um cartão descartável), Divisor, Copiável (clique para copiar) e um subconjunto de recursos Markdown (negrito e itálico). Portanto, os recursos interativos parecem temporariamente inatingíveis e o HTML incorporado não pode ser usado para interações. No entanto, após fazerem uma pergunta no Discord oficial, eles 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, as solicitações externas são suportadas apenas através do método Fetch e não suportam protocolos de solicitação adicionais, como WebSocket. Devido a limitações de segurança, capacidade e privacidade, também não é possível acessar informações do cliente, como a URL atual que acionou o Snap, tornando um desafio a implementação de uma gama mais ampla de recursos.
A maioria desses problemas decorre de questões de segurança. Acreditamos que à medida que a segurança for validada ao longo do tempo, mais permissões serão concedidas.
Com a introdução dessas APIs, o MetaMask evoluiu essencialmente para um produto de plataforma aberta. É semelhante a quando o WeChat lançou sua conta oficial e miniprogramas, deixando de ser apenas uma ferramenta de chat.
Em 2019, a MetaMask já previa o cenário atual do mercado com inúmeras redes públicas, partes de projetos e requisitos de carteira personalizados. Em vez de cada projeto desenvolver seu próprio plugin e os usuários terem que instalar vários plugins, é mais eficiente desenvolver com base no MetaMask Snap. No primeiro lote de Snaps, vimos carteiras de outros ecossistemas além do EVM, como Sui Wallet, Solana Wallet e Arweave Wallet. Dada a sua base de usuários existente, o MetaMask Snap certamente terá um impacto significativo no cenário da carteira.
Na verdade, o potencial do MetaMask Snap pode ser ainda maior do que imaginamos, indo além das carteiras. Também podemos ver os esforços da equipe EthSign, que criou um gerenciador de senhas universal chamado KeyChain baseado em MetaMask Snaps. Todas as senhas do navegador podem ser criptografadas e armazenadas usando a chave da carteira. Ao proteger sua carteira, você está essencialmente protegendo todas as suas senhas.
Há também uma criação da equipe Web3MQ. Web3MQ é uma rede de retransmissão de comunicação descentralizada de alto desempenho. O Web3MQ Snap servirá como cliente para facilitar interações de mensagens, notificações, alertas e funções push. Ele se integrará com outros DApps conectados ao Web3MQ, como ferramentas de chat ou jogos baseados em blockchain, entre outros. Com a ajuda do Web3MQ Snap, mensagens e atualizações serão automaticamente enviadas aos usuários do Metamask Snap, eliminando a necessidade de autorização adicional do usuário. Isso estabelece uma conexão confiável entre usuários e entre usuários e aplicativos.
Snaps são altamente centrados no desenvolvedor. Com a API aberta, como é a experiência do desenvolvedor? Vamos mergulhar na criação de um Snap para descobrir.
É bem sabido que a maioria dos usuários muitas vezes não conhece os contratos inteligentes com os quais estão interagindo, incluindo as seguintes preocupações:
Para os usuários comuns, esperar que eles revisem o código de solidez dos contratos antes de cada operação é uma tarefa difícil. Esta situação é ideal para o recurso Transaction Insight analisar contratos inteligentes, como usar IA para uma auditoria preliminar de segurança, possivelmente filtrando 80% dos ataques básicos de phishing.
Instalação de carteira
Primeiro, instale o MetaMask Flask.
MetaMask Flask é uma versão centrada no desenvolvedor da extensão MetaMask, usada principalmente para visualizar novos recursos e desenvolvimento de funcionalidades experimentais. Lembre-se, é para desenvolvimento, não para uso diário. Não importe suas chaves privadas de uso diário. Estamos usando o Flask aqui principalmente para visualizar nosso Snap desenvolvido localmente.
É recomendado desativar temporariamente sua carteira MetaMask normal e outras carteiras de navegador após instalar ou criar um novo perfil do Chrome para evitar conflitos.
Depois de instalar a carteira, crie uma nova como uma carteira MetaMask normal. Esta é uma carteira de teste, portanto não importe sua carteira de uso diário.
Em seguida, precisamos depositar algumas moedas de teste na carteira recém-criada, que podem ser obtidas através de faucets. O Snap discutido neste artigo usa Goerli, portanto, o conteúdo a seguir se concentrará principalmente em Goerli.
Para inicializar um Snap baseado em um template, 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:
fio criar @metamask/snap transaction-insights-snap && cd transaction-insights-snap
Os principais arquivos Snap estão em ./packages/snap. A estrutura do diretório é:
O arquivo de configuração do Snap está em snap.mainfest.json
, e o corpo principal do Snap está em ./src/index.ts
, o que é bastante sucinto.
Primeiro, ative as permissões. Adicione as três linhas a seguir a snap.mainfest.json
:
jsonCopiar código
“permissões iniciais”: {
“endowment:transaction-insight”: {}, //Insight da transação
“endowment:ethereum-provider”: {}, // Acesso ao RPC
“dotação:acesso à rede”: {} //
No arquivo de manifesto, você também pode atualizar a description
e proposedName
para modificar a descrição e o nome do projeto.
Para esta demonstração, basta modificar o arquivo 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';
exportar const onTransaction: OnTransactionHandler = async ({ transaction }) => {
// transaction
inclui valores como to
(endereço do contrato) e data
(dados de interação)
// Exemplo de código para buscar informações de auditoria para o contrato abaixo
const info = aguarda busca (http://contract-info.audit.dev/?address=${transaction.to}
);
// Abaixo está um exemplo de código de UI
retornar {
contente: [
text(
`${info.riskList.length} item de risco`,
),
cabeçalho(`${info.riskList.length ? 'Risk List' : ''}`),
...info.riskList.map((item, i) => text(`${i + 1} ${item.text}`)),
divisor(),
text(
`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 poucos problemas. Os modelos oficiais também são ricos e diversificados. Desenvolvedores experientes geralmente podem começar e desenvolver o Snap necessário em poucas horas. No entanto, o maior gargalo para lançamentos oficiais que atendam ao público mainstream serão as auditorias de segurança. Nem todos os desenvolvedores independentes ou equipes pequenas têm recursos para realizar auditorias em seus Snaps. Portanto, espera-se que a quantidade e a diversidade de Snaps não experimentem um crescimento explosivo por um tempo considerável.
Se você conseguiu executar com sucesso o exemplo acima, parabéns, você é um desenvolvedor 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 dirigida por funcionários, com o objetivo de oferecer subsídios a desenvolvedores externos globais para a construção de experiências impactantes dentro do ecossistema MetaMask. Uma parte dos lucros trimestrais da MetaMask é canalizada para este DAO, e seu orçamento anual atual é de US$ 2,4 milhões.
Qualquer projeto que enriqueça o ecossistema MetaMask pode solicitar um MetaMask Grant oficial do MetaMask Grants DAO. Para obter mais informações, visite https://metamaskgrants.org/.
Vale ressaltar que a LXDAO está honrada por ter se candidatado e recebido uma bolsa da MetaMask este ano, e tem participado ativamente no desenvolvimento de projetos relacionados, contribuindo para o ecossistema MetaMask!
Dissecamos o que é o Snap de uma perspectiva técnica, suas considerações de segurança, limitações e experiência do desenvolvedor. Resumindo:
Atualmente, o MetaMask Snap ainda está passando por 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, porém seguro, como um sistema de auditoria seguro e sem permissão, de baixo custo, para permitir que mais desenvolvedores participem a um custo menor. Se esta questão for resolvida, poderá haver um aumento esperado na procura no futuro. Podem até surgir cargos dedicados de desenvolvedor Snap.
Aproveitando a enorme base de usuários do MetaMask, os desenvolvedores independentes também podem encontrar oportunidades únicas. Vamos ficar atentos às próximas inovações revolucionárias que o Snaps trará para a mesa.
Por último, obrigado pelo seu artigo. Acredito que contribuirá significativamente para aumentar a conscientização sobre o estado atual dos MetaMask Snaps.
Continue acompanhando nosso Twitter:https://twitter.com/LXDAO_Official@lxdao_official . Estaremos lançando mais conteúdo relacionado ao MetaMask Snap, como workshops, fique ligado!