Escrito por: Mundus Security

Compilado por: Shenchao TechFlow

O EIP-6963 recentemente proposto visa resolver conflitos que surgem quando os usuários tentam usar vários provedores de carteira em um único navegador. Nesse caso, esses problemas conflitantes podem levar a uma experiência de usuário degradada, dificultar o controle do usuário sobre sua interface Ethereum e complicar o processo de interação com dApps.

Introdução ao problema

Atualmente, os provedores de carteira que oferecem extensões de navegador devem injetar seu provedor Ethereum (de acordo com o padrão EIP-1193) no objeto window.ethereum do navegador. Este mecanismo cria um problema para usuários que possuem várias extensões de navegador instaladas. As extensões do navegador são carregadas nas páginas da web em uma ordem imprevisível e instável, impedindo que os usuários selecionem sua carteira Ethereum no objeto window.ethereum. Normalmente, a última carteira carregada é aquela que abre a página de controle.

EIP-6963: Solução Proposta

Para resolver esse problema, a EIP-6963 propõe uma substituição para o provedor EIP-1193 existente para window.ethereum. Esta proposta introduz um conjunto de eventos de janela que permitem um protocolo de comunicação bidirecional entre bibliotecas Ethereum e scripts injetados fornecidos por extensões de navegador. Esta solução melhora a interoperabilidade entre múltiplos provedores de carteira, reduz a barreira de entrada para novos provedores de carteira e aprimora a experiência do usuário na rede Ethereum.

A proposta descreve uma interface padronizada de informações do provedor (EIP6963ProviderInfo), essencial para preencher o pop-up de seleção de carteira. Também enfatiza a importância de declarar a interface do provedor (EIP6963ProviderDetail), o que permite que a interface do provedor EIP-1193 permaneça inalterada para compatibilidade com versões anteriores.

As principais propriedades na interface de informações do provedor incluem:

walletId: O identificador globalmente exclusivo do provedor da carteira (por exemplo, io.dopewallet.extension ou awesomewallet). uuid: O identificador localmente exclusivo do provedor da carteira, em conformidade com o UUID v4.0. name: O nome legível do provedor da carteira (por exemplo, DopeWalletExtension ou Awesome). icon: Um URI que aponta para uma imagem, que deve ser um quadrado com resolução mínima de 96x96px. Recomenda-se o uso de PNG e WebP ou formatos de imagem vetorial como SVG. A equipe da proposta desaconselha fortemente o uso de formatos com perdas, como JPG/JPEG.

Em termos de eventos de disparo, tanto a biblioteca Ethereum quanto o provedor da carteira usam a função window.dispatchEvent para emitir eventos e window.addEventListener para observar eventos. Quando a biblioteca Ethereum é inicializada, ela emite o evento "eip6963:requestProvider", enquanto o provedor da carteira emite o evento "eip6963:announceProvider", fornecendo detalhes da interface e informações do provedor.

Impacto do EIP-6963

De acordo com estimativas otimistas, a aceitação e implementação do EIP-6963 pode levar de três a seis meses. Esse desenvolvimento pode gerar uma nova história de carteira até o final do ano, potencialmente quebrando a hegemonia de provedores líderes de carteira, como a Metamask, e fomentando um ambiente mais competitivo entre os provedores.

Espera-se que carteiras como Coin98, Coinbase Wallet, Trust Wallet, Phantom, Taho, Rabby, Frame, XDEFI, Rainbow, Zerion, Spot, Frontier, MEW, Dawn Wallet, Blockwallet, Bitski, SafePal, BitKeep e MathWallet se beneficiem desse desenvolvimento.

Prós e contras:

O EIP-6963 levanta algumas questões de segurança que precisam ser consideradas.

vantagem:

Sem ponto único de falha: Ao permitir múltiplos provedores de carteira, eliminamos o ponto único de falha. Isso é benéfico do ponto de vista da segurança, pois significa que os usuários têm opções alternativas caso um provedor de carteira sofra um ataque ou falha técnica. Menor dependência de um único provedor: Atualmente, a comunidade Ethereum depende fortemente de um único provedor, a MetaMask. Isso representa um risco potencial, pois se a MetaMask fosse comprometida, uma grande parcela dos usuários da Ethereum seria afetada. Ao oferecer suporte a múltiplas carteiras, a EIP-6963 distribui o risco. Maior controle do usuário: A capacidade de escolher múltiplos provedores de carteira oferece aos usuários maior controle sobre sua segurança. Os usuários podem escolher um provedor de carteira que se alinhe às suas preferências pessoais de segurança e nível de confiança.

deficiência:

Aumento da Superfície de Ataque: A implementação do EIP-6963 aumenta a superfície de ataque. Isso se deve ao aumento do número de provedores de carteira que podem ser explorados por agentes maliciosos. Cada provedor de carteira deve aderir a altos padrões de segurança para minimizar esse risco. Risco Potencial de Exploração de Imagens SVG: O EIP-6963 propõe o uso de imagens SVG como ícones de provedores de carteira. No entanto, imagens SVG podem conter código JavaScript, o que pode representar um risco de script entre sites (XSS). Embora o EIP especifique que imagens SVG devem ser renderizadas usando a tag para impedir a execução de JavaScript, essa recomendação só pode ser verificada por terceiros ou por um auditor de cada implementação. Impacto da Substituição de window.ethereum: Embora o EIP não interrompa diretamente os aplicativos existentes ao substituir window.ethereum, ele recomenda fazê-lo após o usuário selecionar uma carteira. Essa recomendação só pode ser verificada por terceiros ou por um auditor em cada implementação.

 

para concluir

O EIP-6963 visa aprimorar a interoperabilidade entre diversos provedores de carteira, reduzir a barreira de entrada para novos provedores e aprimorar a experiência do usuário na rede Ethereum. No entanto, o impacto na segurança é complexo.

Usuários, provedores de carteiras e desenvolvedores da biblioteca Ethereum devem aderir às melhores práticas para garantir que o ecossistema Ethereum permaneça seguro.

Ao implementar esta proposta, o ecossistema Ethereum pode caminhar para um ambiente mais competitivo e amigável ao usuário, beneficiando tanto os provedores de carteiras quanto seus usuários.