Futuros
Aceda a centenas de contratos perpétuos
TradFi
Ouro
Plataforma de ativos tradicionais globais
Opções
Hot
Negoceie Opções Vanilla ao estilo europeu
Conta Unificada
Maximize a eficiência do seu capital
Negociação de demonstração
Introdução à negociação de futuros
Prepare-se para a sua negociação de futuros
Eventos de futuros
Participe em eventos para recompensas
Negociação de demonstração
Utilize fundos virtuais para experimentar uma negociação sem riscos
Lançamento
CandyDrop
Recolher doces para ganhar airdrops
Launchpool
Faça staking rapidamente, ganhe potenciais novos tokens
HODLer Airdrop
Detenha GT e obtenha airdrops maciços de graça
Launchpad
Chegue cedo ao próximo grande projeto de tokens
Pontos Alpha
Negoceie ativos on-chain para airdrops
Pontos de futuros
Ganhe pontos de futuros e receba recompensas de airdrop
Investimento
Simple Earn
Ganhe juros com tokens inativos
Investimento automático
Invista automaticamente de forma regular.
Investimento Duplo
Aproveite a volatilidade do mercado
Soft Staking
Ganhe recompensas com staking flexível
Empréstimo de criptomoedas
0 Fees
Dê em garantia uma criptomoeda para pedir outra emprestada
Centro de empréstimos
Centro de empréstimos integrado
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
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
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.
Após clicar, o Snap será instalado:
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.
Quando você realiza uma transferência, o UniPass irá abrir o Snap para confirmar se deseja realizar esta operação na carteira UniPass AA.
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?
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. **
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.
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:
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
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.
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.
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.
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ê.
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:
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
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.
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
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:
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.
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:
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.