Posso ter duas carteiras Dusk instaladas e fazer com que uma transferência válida de DUSK saia da carteira errada, sem nenhum erro de cadeia.
O risco começa antes da assinatura. A descoberta da carteira Dusk é baseada em eventos, não em singleton. Um dApp envia dusk:requestProvider; cada carteira compatível pode responder com dusk:announceProvider, e cada provider carrega seu próprio uuid estável e estado de perfil.
Se eu apenas mantiver providers[0] e chamar dusk_requestProfiles, transformei a ordem dos anúncios em seleção de carteira. A transação ainda pode ser perfeitamente válida. O provider errado abre a aprovação, o perfil errado fornece a conta e dusk_sendTransaction assina a partir daquela carteira.
É por isso que eu nunca trataria “existe um provider Dusk” como suficiente. Quando mais de um provider estiver disponível, eu quero que o usuário escolha a carteira pela identidade anunciada, persista esse uuid e, então, vincule o perfil visível e a conta ao provider selecionado antes de eu mostrar qualquer aprovação de transferência.
A consequência não é uma transação falha. É pior, porque tudo funciona.
No Dusk, a descoberta de providers me diz quais carteiras estão presentes. Ela não me diz qual carteira o usuário quis usar para gastar.
#dusk $DUSK @Dusk
O risco começa antes da assinatura. A descoberta da carteira Dusk é baseada em eventos, não em singleton. Um dApp envia dusk:requestProvider; cada carteira compatível pode responder com dusk:announceProvider, e cada provider carrega seu próprio uuid estável e estado de perfil.
Se eu apenas mantiver providers[0] e chamar dusk_requestProfiles, transformei a ordem dos anúncios em seleção de carteira. A transação ainda pode ser perfeitamente válida. O provider errado abre a aprovação, o perfil errado fornece a conta e dusk_sendTransaction assina a partir daquela carteira.
É por isso que eu nunca trataria “existe um provider Dusk” como suficiente. Quando mais de um provider estiver disponível, eu quero que o usuário escolha a carteira pela identidade anunciada, persista esse uuid e, então, vincule o perfil visível e a conta ao provider selecionado antes de eu mostrar qualquer aprovação de transferência.
A consequência não é uma transação falha. É pior, porque tudo funciona.
No Dusk, a descoberta de providers me diz quais carteiras estão presentes. Ela não me diz qual carteira o usuário quis usar para gastar.
#dusk $DUSK @Dusk
