Acabei de implementar o SIWE para um projeto e queria compartilhar o que aprendi, já que o processo é na verdade bem simples assim que você entende o conceito central.



Então, aqui vai: sobre Sign-In with Ethereum - é basicamente uma forma de verificar que você realmente possui um endereço de carteira. Quando você conecta sua carteira a um dapp, o frontend sabe quem você é, mas o backend não tem como verificar se você não está apenas alegando ser esse endereço. O SIWE resolve isso fazendo você assinar uma mensagem, o que prova a posse. É semelhante ao funcionamento de transações - você assina algo com sua chave privada.

O processo se divide em três etapas principais: conectar a carteira, assinar uma mensagem e depois obter um token de identidade. Um fluxo bem limpo assim que você entende.

Agora, nem todo dapp precisa de SIWE. Se você está construindo algo como um explorador de blocos onde os usuários apenas consultam dados públicos, realmente não é necessário. Mas se seu dapp tem contas de usuário ou lida com dados sensíveis, o SIWE se torna bastante valioso.

Acabei usando Next.js para a implementação full-stack, já que você consegue lidar com frontend e backend em um projeto só. Comecei com pacotes npm como Ant Design Web3 e Wagmi - eles cuidam de muita da parte mais pesada. Você pode instalar as dependências principais com um único comando npm, o que economiza bastante tempo de configuração.

O fluxo de assinatura envolve obter primeiro um nonce do seu backend. Esse nonce é único por endereço e evita ataques de repetição. Depois, você constrói uma mensagem que inclui o nonce, domínio e ID da cadeia, assina com sua carteira e envia tudo de volta para o backend para verificação. Se a assinatura for válida, você recebe um token JWT para requisições subsequentes.

Uma coisa que notei - usar nós RPC padrão faz a verificação levar cerca de 30 segundos, o que é péssimo para a experiência do usuário. Trocar para um serviço de nó dedicado (eu usei ZAN) reduziu isso drasticamente. Vale muito a pena essa otimização se você for colocar em produção.

A nota de segurança dos documentos é importante: o código de demonstração que eles fornecem é educativo. Para produção, você precisa de um gerenciamento adequado de JWT, limitação de taxa e outras proteções. Não copie e cole o código de exemplo direto para produção.

Se você está construindo um dapp que precisa de autenticação de usuário, o SIWE já é praticamente o abordagem padrão agora. O ecossistema npm amadureceu o suficiente que a integração ficou bem menos dolorosa do que costumava ser.
ETH-0,8%
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