Ontem à noite, uma publicação no X teve mais de 50 mil visualizações: na noite anterior, um usuário de Solana tinha transferido aos poucos cerca de 10 SOL para desconhecidos que precisavam de ajuda. No dia seguinte, quis retirar o saldo para a própria conta na Coinbase. Segundo o próprio relato, o terminal de negociação selecionou automaticamente como destinatário um endereço dos «recentemente usados», e ele acabou enviando todo o saldo para a outra pessoa. Até agora, ela não respondeu.
Não consigo verificar os detalhes da história, e também não cabe a mim julgar as pessoas envolvidas. O que vale a pena destacar do ponto de vista da engenharia é isto: definir «destinatário recente» como padrão é uma escolha de padrão muito perigosa. Na cabeça, você está pensando em «retirar»; mas, ao assinar, acaba usando o endereço da transação anterior. A blockchain não reconhece a sua intenção, só a sequência de caracteres que você assinou.
Meus hábitos ao transferir dinheiro:
1. Guardo os endereços que uso com frequência no meu catálogo de endereços e adiciono etiquetas. Para retirar, escolho sempre um endereço do catálogo, nunca da lista de «recentes». Também ativo a lista de permissões para saques na conta da corretora.
2. Para valores altos, começo por enviar uma quantia pequena. Só envio o restante depois de confirmar que chegou. Pago mais uma taxa para ter uma camada extra de proteção contra algo irreversível.
3. Antes de assinar, confiro os 6 primeiros e os 6 últimos caracteres do endereço. Os ataques de envenenamento de endereços aproveitam endereços com início e fim parecidos; olhar apenas os primeiros caracteres é como não olhar de todo.
4. Mantenho na carteira quente apenas o valor que pretendo movimentar em breve. Deixar todo o saldo num terminal onde posso clicar sem pensar já é, por si só, uma exposição ao risco.
Mesmo quando transfiro dinheiro a desconhecidos para ajudar numa emergência, sigo também a regra 2.
Não consigo verificar os detalhes da história, e também não cabe a mim julgar as pessoas envolvidas. O que vale a pena destacar do ponto de vista da engenharia é isto: definir «destinatário recente» como padrão é uma escolha de padrão muito perigosa. Na cabeça, você está pensando em «retirar»; mas, ao assinar, acaba usando o endereço da transação anterior. A blockchain não reconhece a sua intenção, só a sequência de caracteres que você assinou.
Meus hábitos ao transferir dinheiro:
1. Guardo os endereços que uso com frequência no meu catálogo de endereços e adiciono etiquetas. Para retirar, escolho sempre um endereço do catálogo, nunca da lista de «recentes». Também ativo a lista de permissões para saques na conta da corretora.
2. Para valores altos, começo por enviar uma quantia pequena. Só envio o restante depois de confirmar que chegou. Pago mais uma taxa para ter uma camada extra de proteção contra algo irreversível.
3. Antes de assinar, confiro os 6 primeiros e os 6 últimos caracteres do endereço. Os ataques de envenenamento de endereços aproveitam endereços com início e fim parecidos; olhar apenas os primeiros caracteres é como não olhar de todo.
4. Mantenho na carteira quente apenas o valor que pretendo movimentar em breve. Deixar todo o saldo num terminal onde posso clicar sem pensar já é, por si só, uma exposição ao risco.
Mesmo quando transfiro dinheiro a desconhecidos para ajudar numa emergência, sigo também a regra 2.