Acabei de implementar o SIWE (Sign-In with Ethereum) em 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: o 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 aquele endereço. O SIWE resolve isso fazendo você assinar uma mensagem, o que prova a posse. É parecido com como funcionam as transações — você assina algo com sua chave privada.

O processo se divide em três passos 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 precisa. Mas se seu dapp tem contas de usuário ou lida com dados sensíveis, o SIWE se torna bem valioso.

Eu acabei usando Next.js para a implementação full-stack, já que dá pra lidar com frontend e backend no mesmo projeto. Comecei com pacotes npm como Ant Design Web3 e Wagmi — eles cuidam de muita coisa pesada. Você consegue instalar as dependências principais com um único comando npm, o que economiza bastante tempo de configuração.

O fluxo de assinatura envolve primeiro obter 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, o domínio e o 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 uns 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 do próprio docs é importante: o código de demonstração que eles fornecem é só para fins educativos. 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á virou o padrão agora. O ecossistema npm amadureceu bastante, então a integração ficou muito menos dolorosa do que era antes.
ETH-0,7%
Ver original
Esta página pode conter conteúdo de terceiros, que é fornecido apenas para fins informativos (não para representações/garantias) e não deve ser considerada como um endosso de suas opiniões pela Gate nem como aconselhamento financeiro ou profissional. Consulte a Isenção de responsabilidade para obter detalhes.
  • Recompensa
  • Comentário
  • Repostar
  • Compartilhar
Comentário
Adicionar um comentário
Adicionar um comentário
Sem comentários
  • Marcar