WEB3DEV

Cover image for Estendendo a MetaMask: um Snap para Filecoin
Jhonattan Farias
Jhonattan Farias

Posted on

Estendendo a MetaMask: um Snap para Filecoin

Aproximando Filecoin e Ethereum com o primeiro Snap na MetaMask Flask

À medida que a web3 continua a crescer e a interoperabilidade entre os ecossistemas se expande, era apenas uma questão de tempo para uma integração entre a camada de armazenamento mais incentivada do mundo – Filecoin – e a Ethereum. Nesse sentido, a ChainSafe se orgulha de ter lançado o FilSnap na MetaMask Flask para permitir o suporte a Filecoin na MetaMask como um recurso experimental.

Oh sôfrego! O que é um Snap?
Primeiro, precisamos entender o que é a MetaMask Flask. Flask é a distribuição canary anunciada recentemente pela MetaMask de sua conhecida extensão de criptografia. É uma versão experimental da MetaMask sem proteções, ou seja, um campo de testes para desenvolvedores.

⚠️ Isenção de responsabilidade: A MetaMask Flask é apenas para fins de teste. Todos os recursos são novos e experimentais, e você está se expondo a possíveis explorações importando suas chaves privadas reais para a Flask.

Mergulhando ainda mais, chegamos ao Snaps, o primeiro recurso lançado na Flask. Snaps permitem que os desenvolvedores expandam a funcionalidade da MetaMask em tempo de execução sem qualquer envolvimento da equipe principal da MetaMask. Isso cria extensibilidade e dá aos desenvolvedores a flexibilidade de adicionar seus próprios recursos e lançá-los ao público.

Snaps são essencialmente plugins para MetaMask – ou seja, programas personalizados que podem ser executados em ambientes isolados e podem ser usados ​​para personalizar a experiência da carteira de maneira personalizada. Eles podem adicionar novas APIs a MetaMask, novos recursos, modificar funcionalidades existentes usando APIs internas da MetaMask e, mais poderosamente, gerenciar chaves de usuário para diferentes protocolos.

Ao todo, ainda existem algumas limitações técnicas para a interação atual de Snaps, incluindo a incapacidade de modificar a interface do usuário da MetaMask, bem como a API limitada entre o Snap e a MetaMask. Essas coisas estão sendo trabalhadas, mas, no entanto, a versão atual do Snaps deu à ChainSafe a oportunidade de flexionar nossa experiência de domínio em todas as coisas MetaMask, Ethereum e Filecoin.

O que é o FilSnap?
Simplificando, o FilSnap permite que os desenvolvedores de dApps criem aplicativos web3 que integram o suporte a Filecoin por meio da extensão MetaMask🤯 Embora ainda não esteja disponível, o objetivo é que o Snap eventualmente expanda a interface da Metamask com as informações e interações relevantes para a rede Filecoin.

Em seu estado atual, a própria dApp deve exibir o frontend para interagir com o FilSnap. Criamos nossa dApp demo para mostrar diferentes funcionalidades. Aqui, os usuários podem visualizar suas contas e os saldos da Filecoin, enviar transações FIL e criar mensagens assinadas criptográficamente com suas chaves Filecoin. Aqui está nossa demonstração de como isso pode ser.

E aqui está um exemplo que ilustra como uma dApp pode usar o FilSnap de forma mais geral.

Imagem que mostra como uma dApp usa Filsnap

Para ampliar alguns dos detalhes, como exatamente o FilSnap cria seu endereço da Filecoin? Ele usa a entropia fornecida pela Metamask através do método RPC exclusivo do Snap snap_getBip44Entropy_*. A partir dessa entropia, o FilSnap deriva o endereço final. Você pode verificar detalhes sobre como isso é implementado aqui.

O Snap também tem a capacidade de persistir objetos de estado, usando o método RPC exclusivo do Snap snap_manageState. Você pode salvar um objeto arbitrário no estado. O FilSnap usa isso para manter a configuração de snap (caminho de derivação, ponto de extremidade RPC, etc.) e detalhes sobre transações executadas.

Desenvolver snaps de MetaMask traz seu próprio conjunto de desafios

O primeiro problema é que os Snaps estão sendo executados em um ambiente virtual chamado Secure EcmaScript (SES). Na prática, isso significa que os desenvolvedores não podem usar algumas práticas padrão de JavaScript e, também, todas as bibliotecas que você pretende usar precisam ser compatíveis com o ambiente SES.

Encontramos alguns obstáculos com o SES durante o desenvolvimento do FilSnap, mas sempre encontramos uma solução escrevendo código adicional ou encontrando uma biblioteca alternativa. O SES o torna mais ciente da sobrecarga de código que você está importando no seu projeto javascript padrão.

Todos os Snaps estão atualmente sendo distribuídos como pacotes npm, que você pode encontrar aqui. Essa URL npm também é apresentada como a origem do snap no prompt de instalação ao instalar o FilSnap.

Por fim, queríamos que os desenvolvedores de dApps adicionassem suporte ao FilSnap com facilidade, então criamos um pacote adicional — adaptador Filsnap. Se você é um maximalista do TypeScript (como nós!), você também pode encontrar os tipos apropriados para o adaptador aqui.

Esses dois pacotes nos permitiram expor a API tipada para o FilSnap e empacotar código clichê para chamar métodos RPC específicos do FilSnap. Ele também expõe o processo de instalação do snap como um método único. Você pode verificar mais detalhes sobre a API exposta aqui.

Abaixo você pode ver como enviar uma transação FIL básica usando a API FILsnap.

const gasEstimate = await api.calculateGasForMessage({
  to: toAddress,
  value: amountAttoFIL,
});
const msg: MessageRequest = {
  to: toAddress,
  value: amountAttoFIL,
  gaslimit: gasEstimate.gaslimit,
  gasfeecap: gasEstimate.gasfeecap,
  gaspremium: gasEstimate.gaspremium,
}
const response = await api.signMessage(msg);
const messageCid = await api.sendMessage(response.signedMessage);
Enter fullscreen mode Exit fullscreen mode

Demo da Filsnap

Interessado em saber mais? Se envolva!

Confira nossa dApp demo, instale o FilSnap e envie sua primeira transação da Filecoin usando a Metamask. Se você encontrar um bug ou tiver um recurso que gostaria de ver, verifique nosso repositório e levante um problema.

Documentos: https://github.com/chainsafe/filsnap/wiki

Sobre a ChainSafe

A ChainSafe é uma empresa líder em pesquisa e desenvolvimento de blockchain especializada em soluções de infraestrutura para a web descentralizada. Juntamente com as implementações de clientes para Ethereum, Polkadot, Filecoin e Mina, estamos construindo um portfólio de produtos web3 — Arquivos, Armazenamento, web3.unity e muito mais. Como parte de nossa missão de criar produtos inovadores para usuários e melhores ferramentas para desenvolvedores, a ChainSafe incorpora um ethos de código aberto e orientado para a comunidade. Para saber mais, clique aqui.

Site | Twitter | Linkedin | GitHub | Discord | YouTube

Este artigo foi criado por Mak Muftic e traduzido por Jhonattan Farias, você pode encontrar o artigo original aqui.

Top comments (0)