Interpretação da tecnologia MetaMask Snap: análise da experiência de desenvolvimento, limitações de capacidade, segurança e potencial de negócios

Conteúdo | Li Damao, Bruce

Edição e formatação | Cikey

Design | WangTeng

Este artigo foi co-escrito pelos membros do grupo de especialistas LXDAO Li Damao e Bruce. Discutiremos em profundidade os aspectos técnicos do MetaMask Snap. O que é MetaMask Snap? Que capacidades técnicas possui? Como garantir a segurança? Como foi a experiência de desenvolvimento? Essas questões podem determinar o potencial futuro do MetaMask Snap.

O que é MetaMask Snap?

Há poucos dias, a ConsenSys anunciou o lançamento do MetaMask Snaps Open Beta ao público. MetaMask Snaps pode expandir os recursos da carteira e você pode instalar aplicativos (Snaps) criados por desenvolvedores terceirizados para obter novas funcionalidades.

Se a ConsenSys incorporou o MetaMask no WeChat, então o Snap é um miniaplicativo do WeChat. Portanto, podemos ver a ambição do MetaMask: combinada com o tamanho do ConsenSys e o número de usuários do MetaMask, o padrão do campo da carteira mudará.

Atualmente, o oficial anunciou 35 modelos Snap disponíveis e lançou a Snap App Store

Interpretação da tecnologia MetaMask Snap: experiência de desenvolvimento, limitações de capacidade, segurança e análise de potencial de negócios

Lista instantânea parcial

Então, como é exatamente o MetaMask Snap do ponto de vista técnico? Quais são as limitações de suas capacidades? É seguro? Como foi a experiência de desenvolvimento? Tudo isso pode determinar o potencial futuro do MetaMask Snap.

Desde o ano passado, LXDAO conduziu pesquisas aprofundadas sobre a implementação do Snap. Atualmente, muitos membros participaram do desenvolvimento do Snap e participaram ativamente de hackathons relacionados. Hoje, iremos nos aprofundar nas questões acima de uma perspectiva técnica e desenvolver um Snap para permitir que você experimente a experiência do desenvolvedor Snap.

Primeira experiência do MetaMask Snap

Instale o MetaMask Snap

Geralmente pode ser instalado através do mercado oficial do MetaMask Snap ou diretamente no site oficial do projeto. Tomando como exemplo o UniPass, ao acessar a página do aplicativo, será fornecido um botão para permitir o link para o MetaMask.

Interpretação da tecnologia MetaMask Snap: experiência de desenvolvimento, limitações de capacidade, segurança e análise de potencial de negócios

Após clicar, o Snap será instalado:

Interpretação da tecnologia MetaMask Snap: experiência de desenvolvimento, limitações de capacidade, segurança e análise de potencial de negócios

Usar MetaMask Snap

Após a conclusão da instalação, você pode começar a usar os produtos e funções correspondentes. Neste aplicativo, o UniPass cria uma conta de contrato inteligente para facilitar seu controle através da conta EOA da MetaMask.

Interpretação da tecnologia MetaMask Snap: experiência de desenvolvimento, limitações de capacidade, segurança e análise de potencial de negócios

Quando você realiza uma transferência, o UniPass irá abrir o Snap para confirmar se deseja realizar esta operação na carteira UniPass AA.

Interpretação da tecnologia MetaMask Snap: experiência de desenvolvimento, limitações de capacidade, segurança e análise de potencial de negócios

Após a confirmação através do MetaMask, as operações relevantes podem ser realizadas. Neste cenário, o MetaMask tem a capacidade de controlar a carteira UniPass AA através do Snap. O UniPass permite aos usuários operar a carteira sem desenvolver um plug-in de carteira, e o MetaMask também pode ser usado para apresentar os usuários a um custo muito baixo!

Que informações podemos obter deste processo de instalação e uso?

  1. O Snap tem um controle de permissão relativamente preciso, incluindo até mesmo permissões para vincular carteiras, solicitações de rede, etc. O design geral é baseado no princípio do acesso com privilégios mínimos (Princípio do Mínimo Privilégio), com a segurança em primeiro lugar.
  2. Em npm:@unipasswallet/unipass-snap, você pode ver que o Snap é baseado em NPM para gerenciamento de pacotes e versões. A segurança será apresentada em detalhes posteriormente.
  3. O Snap é muito flexível e pode desenvolver e decidir o conteúdo e a lógica a serem exibidos de acordo com a necessidade do projeto. No entanto, a IU é relativamente simples e há espaço para otimização.
  4. A experiência do Snap é muito simples e confiável, atingindo de fato o nível de versões beta e ambientes de produção.

Para um produto de carteira, a segurança sempre vem em primeiro lugar. A seguir, vamos analisar o design de segurança do Snap.

O Snap é seguro?

Análise de tempo de execução do código instantâneo

Conforme mencionado acima, o Snap é baseado em NPM para gerenciamento de pacotes e versões, o que mostra que o Snap é na verdade um aplicativo baseado em Web e Java. Como todos sabemos, a sintaxe do JS é muito flexível e gratuita e pode facilmente levar a ataques como XSS e phishing. Como o MetaMask Snap aborda esse desafio?

Depois de algumas pesquisas, não é difícil descobrir que a MetaMask financia a Agoric e integra profundamente o Hardened JavaS da equipe da Agoric (também conhecido como Secure Ecma) como sua solução sandbox de “virtualização completa”. Agoric projetou uma API restrita a Java e enviou uma proposta preliminar ao TC-39 (JS Standardization Consortium) em:

Simplificando, Hardened Java é um subconjunto mais seguro do Java padrão. Com a ajuda de alguns recursos e mecanismos JS, algumas permissões e métodos de chamada de API JS são reduzidos, reduzindo assim alguns riscos. Ele cria uma sandbox segura para a execução do código correspondente e também segue o **Princípio do Menor Privilégio para planejar o controle de permissão do código. **

Interpretação da tecnologia MetaMask Snap: experiência de desenvolvimento, limitações de capacidade, segurança e análise de potencial de negócios

Agoric colaborou com MetaMask para desenvolver LavoMoat (este projeto para melhorar a segurança do Snap. LavaMoat é um conjunto de ferramentas que se concentra em resolver os riscos de segurança de dependências externas em projetos JS e adiciona restrições em algumas APIs e lógicas.

Agoric e MetaMask lançaram em conjunto testes de ataque e defesa de segurança de caixa preta e caixa branca e produziram relatórios de segurança detalhados. Portanto, no nível do tempo de execução do código, temos bons motivos para acreditar que o Snap é seguro.

O código Snap deve ser de código aberto e auditado

Além de ter um processo claro de autorização do usuário e um design com privilégios mínimos, para se tornar um Snap oficialmente reconhecido, ele deve abrir o código-fonte. Através do poder da comunidade, a possibilidade de o Snap trazer seu próprio código malicioso pode ser bastante reduzida. .

Além disso, também descobrimos que o Snap no site oficial deve passar por uma auditoria de código por uma empresa de segurança terceirizada antes de ser lançado. Isso melhora muito a credibilidade da segurança do Snap, e os auditores incluem o SlowMist, com o qual todos estão familiarizados.

Interpretação da tecnologia MetaMask Snap: experiência de desenvolvimento, limitações de capacidade, segurança e análise de potencial de negócios

Riscos de segurança do Snap atualmente descobertos

Como o Snap é atualmente baseado no gerenciamento de pacotes e versões do NPM, existe a possibilidade de certas alterações no nível do código, e auditorias não obrigatórias podem causar certos riscos de segurança.

Como o MetaMask não pode controlar o lançamento da versão da plataforma NPM, o projeto pode lançar uma nova versão a qualquer momento para os usuários instalarem. Devido ao custo da auditoria, a empresa de auditoria não auditará todas as versões, então surgirá uma situação: as alterações na versão mais recente podem não ser de código aberto ou auditadas.

No entanto, como o ambiente de execução é um ambiente sandbox e usa um design de permissões mínimas, a menos que o usuário confirme manualmente as novas alterações de permissão, a nova versão do Snap terá apenas as permissões da versão anterior para realizar operações. No entanto, se um Snap solicitar muita permissão, ainda causará riscos, então você ainda precisa estar atento ao instalar e usar o Snap.

Capacidades técnicas e limitações do MetaMask Snap

Embora o MetaMask Snap tenha sido anunciado oficialmente recentemente, o Snap foi desenvolvido há 4 anos! A ideia original do MetaMask Snap foi publicada no Medium por Dan Finlay em 10 de outubro de 2019

Equilibrar segurança, flexibilidade e eficácia é um grande desafio.Também pode ser visto que a MetaMask pagou muito dinheiro e fez muitos preparativos para este dia.

Atualmente, três APIs principais estão abertas:

  1. Interoperabilidade, permitindo que os desenvolvedores desenvolvam outras carteiras de cadeia baseadas em MetaMask
  2. Transaction Insights, que permite aos desenvolvedores obter dados de transação antes que uma transação do usuário seja iniciada para analisar se há riscos na transação.
  3. Notificações, envio de mensagens diretamente aos usuários por meio do Snap (mas isso parece exigir suporte do site, o que é um pouco de mau gosto)

Interpretação da tecnologia MetaMask Snap: experiência de desenvolvimento, limitações de capacidade, segurança e análise de potencial de negócios

A seguir está uma breve introdução aos recursos e efeitos abertos específicos do MetaMask Snap, para que você possa ter uma percepção mais vívida.

Capacidade de notificação de notificação

A interface Snap_notify pode exibir notificações no MetaMask ou no navegador. O Snap pode enviar mensagens diretamente aos usuários por meio desta interface, conforme mostrado na figura abaixo

Interpretação da tecnologia MetaMask Snap: experiência de desenvolvimento, limitações de capacidade, segurança e análise de potencial de negócios

Recursos de insights de transação

Quando o usuário interage com o contrato inteligente, o MetaMask acionará o evento onTransaction do Snap. O MetaMask passará a transação original não assinada para o método manipulador onTransaction. O Snap pode retornar uma interface na página de confirmação secundária da transação e personalizar o conteúdo de exibição.

Interpretação da tecnologia MetaMask Snap: experiência de desenvolvimento, limitações de capacidade, segurança e análise de potencial de negócios

Através desta capacidade, funções como auditoria de segurança de informações de transações e exibição expandida de informações podem ser realizadas.

Interface de diálogo e recursos de interface personalizada

O recurso Dialog permitirá que o Snap abra diretamente uma janela independente, obtendo recursos semelhantes à janela pop-up tradicional /Confirm/ (conforme mostrado abaixo), que pode ser usada para lembretes, confirmações, envio de informações, etc.

Interpretação da tecnologia MetaMask Snap: experiência de desenvolvimento, limitações de capacidade, segurança e análise de potencial de negócios

Através do Dialog, você poderá personalizar interfaces e operações interativas simples para se conectar ao seu DApp.

Que tipo de funções não estão disponíveis no momento para MetaMask Snap?

Devido à segurança e outros motivos, o Snap atualmente não oferece suporte a estruturas front-end de terceiros e fornece apenas um número relativamente pequeno de UIKit. O exemplo a seguir ainda usa o Insight para mostrar as bibliotecas de componentes de UI que todos os desenvolvedores podem chamar.

Interpretação da tecnologia MetaMask Snap: experiência de desenvolvimento, limitações de capacidade, segurança e análise de potencial de negócios

Conforme mostrado na figura, atualmente apenas Título (texto grande), Texto (texto pequeno), Painel (cartão e só pode ser usado uma vez), Divisor (linha de divisão), Copiável (clique para copiar) e um pequeno subconjunto de Markdown ( **negrito ** e itálico), então parece que construir interatividade é temporariamente impossível e é impossível usar HTML incorporado para realizar operações interativas. Porém, após fazer perguntas no Discord oficial, o oficial afirmou que estas são por questões de segurança e serão divulgadas na próxima versão.

Além disso, também com base em considerações de segurança, apenas o método Fetch é suportado para solicitações externas e mais protocolos de solicitação, como WebSocket, não são suportados. Devido a limitações de segurança, capacidade e privacidade, também é impossível obter informações do cliente, como a URL atual que evoca o Snap, e não é possível implementar funções mais ricas e diversificadas.

A maioria desses problemas e restrições se deve a considerações de segurança. Acredito que no futuro, após a verificação da segurança, mais permissões serão consideradas.

MetaMask, que fornece essas APIs, tornou-se na verdade um produto semelhante a uma plataforma aberta. Essa sensação é igual à de quando o WeChat lançou contas oficiais e miniprogramas, que instantaneamente fizeram as pessoas sentirem que não era mais uma simples ferramenta de chat.

MetaMask antecipou a estrutura de mercado atual em 2019, ou seja, existem muitas redes públicas e partes de projetos, e diversas necessidades de carteira customizadas. Em vez de cada parte do projeto precisar desenvolver seu próprio plug-in e os usuários precisarem instalar vários plug-ins ao mesmo tempo, é melhor desenvolver com base no MetaMask Snap. Entre o primeiro lote de Snaps lançado, também encontramos outras carteiras ecológicas não EVM, como Sui Wallet, Solana Wallet e Arweave Wallet. Com sua base de usuários existente, o MetaMask Snap certamente terá um impacto significativo no cenário da carteira.

Na verdade, a imaginação do MetaMask Snap pode ser maior do que esperávamos, mesmo além do alcance das carteiras. Também podemos ver o trabalho da equipe EthSign, que faz um gerenciador de senhas universal KeyChain baseado em MetaMask Snaps. As senhas em todos os navegadores podem ser criptografadas pela chave da carteira e armazenadas. Cuide bem da sua carteira desta forma e guarde todas as suas senhas com você.

Interpretação da tecnologia MetaMask Snap: experiência de desenvolvimento, limitações de capacidade, segurança e análise de potencial de negócios

O Snap é muito relevante para os desenvolvedores. Com a API aberta, como é a experiência específica do desenvolvedor? Poderíamos também desenvolver um Snap para experimentá-lo.

Desenvolva um teste instantâneo diretamente

Pensamentos de Alienação

Como todos sabemos, a maioria dos usuários não sabe realmente qual é o contrato inteligente com o qual estão interagindo, na maioria dos casos, o que inclui principalmente os seguintes problemas:

  1. Se o contrato negociado é um contrato substituído por um site de phishing
  2. Se o contrato negociado é um contrato atualizável
  3. O contrato inteligente é um contrato que acabou de ser implantado e não foi verificado por muitas pessoas?
  4. O contrato de transação é de código aberto?

Para usuários comuns, é ainda mais impossível pedir que leiam o código de solidez do contrato antes de operar. Neste momento, é realmente muito adequado usar a função Transaction Insight para implementar algumas análises de contratos inteligentes.Por exemplo, usar IA para fazer uma auditoria de segurança relativamente simples do contrato inteligente pode filtrar 80% dos ataques de phishing de baixo nível. **

**Prepare o ambiente de desenvolvimento e **baixe a carteira

Primeiro você precisa instalar o MetaMask Flask

Interpretação da tecnologia MetaMask Snap: experiência de desenvolvimento, limitações de capacidade, segurança e análise de potencial de negócios

MetaMask Flask é uma distribuição de extensão MetaMask centrada no desenvolvedor, usada principalmente para visualizações de novos recursos e desenvolvimento experimental de recursos. Observe que esta é a versão do desenvolvedor do MetaMask. Por favor, não a use diariamente e não importe a chave privada que você usa diariamente. O Flask é usado aqui principalmente para facilitar a visualização local e em tempo real do Snap que desenvolvemos.

Recomenda-se fechar temporariamente a Little Fox Wallet e outras carteiras do navegador após a instalação, ou criar um novo perfil do Chrome para uso, caso contrário ocorrerão conflitos.

criar uma conta

Depois de instalar a carteira, crie uma nova carteira como normalmente cria uma carteira MetaMask. Observe que esta é uma carteira específica para teste. Não importe sua própria carteira diária.

Em seguida, precisamos recarregar algumas moedas de teste na carteira recém-criada. As moedas de teste podem ser obtidas através da torneira. O Snap mencionado neste artigo usa Goerli, então o artigo a seguir se concentrará em Goerli.

Inicialize o Snap com base no modelo

De acordo com a documentação oficial, primeiro use a CLI @metamask/create-snap para criar um novo projeto Snap e use o modelo oficial para inicializar:

fio criar @metamask/snap transaction-insights-snap && cd transaction-insights-snap

Estrutura do arquivo instantâneo

Os arquivos principais do Snap estão em ./packages/snap, e a estrutura de diretórios de arquivos é a seguinte

Interpretação da tecnologia MetaMask Snap: experiência de desenvolvimento, limitações de capacidade, segurança e análise de potencial de negócios

O arquivo de configuração do Snap é colocado em snap.mainfest.json, e o arquivo principal do Snap é ./src/index.ts, que é muito conciso.

Ativar permissões

Primeiro precisamos habilitar as permissões. Primeiro adicionamos os três itens a seguir em snap.mainfest.json

“permissões iniciais”: {

“endowment:transaction-insight”: {}, //Insights de transação

“endowment:ethereum-provider”: {}, //Obter rpc

“endowment:network-access”: {}//Solicitar rede

}

Você também pode modificar deion e propostoName no arquivo Mainfest para modificar a descrição e o nome do projeto.

OBTER TRANSAÇÃO

Em seguida, neste caso, você só precisa modificar o arquivo index.ts para completar todas as funções. Um exemplo de código simples é o seguinte. Vá para o código que pode ser totalmente executado:

importar { OnTransactionHandler, OnRpcRequestHandler } from’@metamask/snaps-types’;importar { cabeçalho, painel, texto, copiável, divisor } de’@metamask/snaps-ui’;exportar const onTransaction: OnTransactionHandler = async ({transação }) => {

// a transação inclui para (endereço do contrato), dados (dados de interação) e outros valores

//A seguir está um exemplo de código para obter dados de auditoria de contrato

const info = buscar(

//A seguir está um exemplo de código da parte da UI

retornar {

contente: [

texto(

item de risco ${info.riskList.length},

),

título(${info.riskList.length ? ‘Lista de riscos’ : ‘’}),

…info.riskList.map((item, i) => texto(${i + 1} ${item.texto})),

divisor(),

texto(

Mais informações de auditoria no seguinte URL,

),

copiável (

)

]

};

};

Para obter mais informações, consulte a documentação do desenvolvedor MetaMask Snap para completar produtos Snap mais complexos.

Após a instalação, você verá informações de aviso de risco semelhantes para cada transação:

Interpretação da tecnologia MetaMask Snap: experiência de desenvolvimento, limitações de capacidade, segurança e análise de potencial de negócios

Atualmente, a experiência de desenvolvimento do Snap é muito tranquila, quase sem problemas, e os modelos oficiais também são muito ricos e diversificados. Desenvolvedores com vasta experiência geralmente podem começar a desenvolver os Snaps de que precisam em poucas horas. Mas precisa ser lançado oficialmente e disponibilizado aos usuários convencionais. O maior obstáculo serão as auditorias de segurança. Nem todos os desenvolvedores independentes e pequenas equipes têm recursos para auditar seus Snaps. Portanto, pode-se esperar que o número e a riqueza do Snap não tenham um crescimento explosivo muito grande por muito tempo no futuro.

Suporte ao desenvolvedor

Se você conseguir seguir os exemplos acima, parabéns por se tornar um desenvolvedor Snap básico qualificado!

Os funcionários da MetaMask também estabeleceram um MetaMask Grants DAO no ano passado para financiar projetos de alto valor no ecossistema MetaMask por meio de um programa de subsídios. MetaMask Grants DAO é um programa experimental liderado por funcionários que concede subsídios a desenvolvedores externos em todo o mundo para construir experiências impactantes dentro do ecossistema MetaMask. MetaMask injeta parte de seus lucros neste DAO a cada trimestre.O atual MetaMask Grants DAO tem um orçamento anual de US$ 2,4 milhões.

Atualmente, qualquer projeto que possa enriquecer o ecossistema MetaMask pode se inscrever no MetaMask Grants DAO oficial (MetaMask Grant).Para mais informações, clique aqui

Vale ressaltar que a LXDAO tem a honra de se candidatar ao MetaMask Grants este ano e participar do desenvolvimento de projetos relacionados, e estabeleceu um canal de contato.Se você é membro da LXDAO e tem ideias relevantes, pode contatá-los de forma mais eficiente para envie sua aplicação.

Interpretação da tecnologia MetaMask Snap: experiência de desenvolvimento, limitações de capacidade, segurança e análise de potencial de negócios

Conclusão

Acima, analisamos o que é o Snap do ponto de vista técnico, se é seguro, limitações de capacidade e experiência do desenvolvedor. Um breve resumo é o seguinte:

  • Snap é semelhante ao miniaplicativo WeChat, abrindo um espaço maior para a imaginação do MetaMask
  • A segurança geralmente é boa, mas existem certos riscos. Você ainda precisa estar atento às permissões de alto risco.
  • Devido a considerações de segurança, atualmente não há muitos recursos abertos, mas ainda pode gerar Snap imaginativo suficiente
  • Após quatro anos de aprimoramento e testes, a experiência do desenvolvedor é excelente. No entanto, devido a considerações de segurança, um mecanismo de lista de permissões e requisitos de auditoria foram projetados. Pode-se esperar que não haja um grande número de Snaps surgindo no futuro.

Atualmente, o MetaMask Snap ainda está iterando rapidamente e acredito que mais permissões e recursos serão abertos no futuro. Espera-se que mecanismos mais abertos e seguros possam ser introduzidos, como o mecanismo oficial de revisão de auditoria da Apple e o controle de versão do repositório de código oficial, para que mais desenvolvedores possam participar a um custo baixo. Se este problema for melhorado, pode-se esperar que haja muita demanda no futuro. Haverá até cargos dedicados de desenvolvedor Snap.

Com o grande número de usuários do MetaMask, os desenvolvedores independentes também podem ter certas oportunidades. Vamos esperar e ver qual será a próxima inovação revolucionária que o Snap traz.

Ver original
Esta página pode conter conteúdos de terceiros, que são fornecidos apenas para fins informativos (sem representações/garantias) e não devem ser considerados como uma aprovação dos seus pontos de vista pela Gate, nem como aconselhamento financeiro ou profissional. Consulte a Declaração de exoneração de responsabilidade para obter mais informações.
  • Recompensa
  • Comentar
  • Republicar
  • Partilhar
Comentar
Adicionar um comentário
Adicionar um comentário
Nenhum comentário
  • Fixar