Uma seed, uma carteira

2 minutos de leitura

Frequentemente encontra-se perguntas sobre se é possível usar a mesma seed em duas carteiras diferentes (dois dispositivos diferentes). Sim, é possível, mas não é a melhor coisa a fazer. Essas perguntas costumam ser respondidas com “sim, claro!”, “sem problemas”, e outras respostas positivas. Não é assim que funciona.

1. Como funciona

Quando o usuário pede para que seja gerado um novo endereço (E1) de recebimento, a carteira W1 pega a sua chave pública, coloca numa KDF (Key Derivation Function) e gera um novo endereço para o usuário. O usuário então recebe um pagamento nesse endereço E1. A carteira W2 está desligada e não conhece essa transação.

Quando a carteira W2 é ligada, ela baixa os novos blocos e verifica se nesses blocos consta alguma transação com algum de seus endereços (até aqui, E0 apenas, que é conhecido em ambas as carteiras e não é mostrado na imagem abaixo). Se o usuário decide criar um novo endereço (E1) nessa carteira W2, a carteira pega a sua chave pública, coloca numa KDF e gera um novo endereço (E1) para o usuário. O endereço E1 é gerado porque a carteira W2 ainda não usou esse endereço antes e não sabe que já foi usado pela carteira W1. A carteira W2 então anota que esse endereço foi gerado no momento em que o melhor bloco era o bloco #200107, de acordo com exemplo abaixo. Isso signifca que ela nunca precisará pesquisar nos blocos #200106 para trás por aquele endereço E1.

Figura 1 - Resultado do uso da mesma seed em carteiras diferentes
Figura 1 - Resultado do uso da mesma seed em carteiras diferentes

Referência: https://docs.decred.org/faq/wallets-and-seeds/

1.1. Como as carteiras geram os mesmos endereços?

A geração de endereços é determinística, não aleatória. Para colocar de forma bem simplificada, a KDF usa a chave pública do usuário e um número que é incrementado e fica anotado na carteira. Como a chave pública é gerada a partir da chave privada (seed), tudo que o usuário precisa saber é a seed. A carteira consegue refazer o resto do trabalho a partir do zero porque não há componente de aleatoriedade.

2. Recomendação

O melhor é sempre ter uma seed por carteira. Usar uma mesma seed em duas carteiras diferentes implica em ter que varrer a blockchain periodicamente em busca dos endereços que foram gerados apenas em uma das carteiras.

Estabeleça uma estratégia para armazenar seus recursos:

  • Recursos que não serão usados no curto prazo (pense num cofre)
  • Recursos que podem ser necessário para pagar contas e fazer grandes compras (uso de uma a algumas vezes por semana)
  • Recursos para pequenas compras, como um café ou um livro, que podem ficar num carteira móvel para o dia-a-dia