Uma carteira de software usa um número aleatório para gerar uma chave privada mestra.
Então, por meio de um algoritmo determinístico e irreversível, ele pode derivar um número ilimitado de chaves privadas filhas dessa chave privada mestra.
Por que precisamos de um algoritmo determinístico e irreversível?
Porque determinístico significa que todas as chaves privadas filhas sempre podem ser geradas a partir da mesma chave privada mestra, enquanto irreversível significa que a chave privada mestra não pode ser reconstruída a partir de qualquer chave privada filha.
É por isso que é chamada de carteira Hierárquica Determinística (HD). A estrutura de derivação das chaves privadas se assemelha a uma árvore: uma chave pai pode derivar múltiplas chaves filhas, cada chave filha pode derivar múltiplas chaves netas e esse processo pode continuar indefinidamente.
Quando uma carteira HD é criada pela primeira vez, ou quando é feito backup de uma carteira, uma frase mnemônica é gerada. Uma frase mnemônica é uma sequência de palavras em inglês. Esta sequência é usada para gerar a seed, e a seed é então usada para gerar todas as chaves privadas na carteira. Em outras palavras, a frase mnemônica serve como backup da carteira, pois pode ser usada para restaurá-la. A semente, por sua vez, corresponde ao número aleatório original por trás da carteira determinística.
Uma grande vantagem de uma carteira HD é que apenas a chave pública mestra é necessária para gerar qualquer número de chaves públicas secundárias. Em outras palavras, novos endereços públicos podem ser criados a partir da chave pública mestra sem exigir acesso às chaves privadas, sejam elas a chave privada mestra ou as chaves privadas filhas. No entanto, todos esses endereços gerados ainda podem ser controlados pela chave privada mestra.
É claro que esse design também traz riscos. Se a frase mnemônica for exposta, é essencialmente equivalente a expor todas as chaves privadas. Quando isso acontecer, a segurança dos ativos digitais na carteira será efetivamente perdida.
Por que são necessárias tantas chaves privadas?
A razão pela qual os usuários precisam de tantas chaves privadas pode ser compreendida através do mecanismo de mudança nas transações Bitcoin.
Uma transação Bitcoin é uma estrutura de dados que contém entradas e saídas. Também inclui as informações de script necessárias que transferem valor de sua origem (a entrada) para seu destino (a saída).
Para entender as entradas e saídas do Bitcoin, é importante conhecer o conceito de UTXO (Saída de transação não gasta). Um UTXO é a unidade básica de uma transação Bitcoin e representa uma saída de transação não gasta. Na verdade, um único bitcoin é distribuído por muitas transações e muitos blocos na forma de UTXOs. Na realidade, não existe um registo centralizado que armazene um simples saldo de conta; em vez disso, existem apenas UTXOs descentralizados bloqueados para seus respectivos proprietários.
Um UTXO pode representar qualquer valor, mas uma vez criado, é indivisível da mesma forma que uma moeda física não pode ser dividida ao meio. Se o valor de um UTXO for maior que o valor necessário para uma transação, todo o UTXO ainda deverá ser gasto e o excesso será devolvido como troco.
Por exemplo, imagine que você tem um UTXO no valor de 20 unidades e deseja pagar 1 unidade. A transação deve consumir o UTXO completo de 20 unidades e criar duas saídas: uma saída envia 1 unidade ao destinatário, enquanto a outra envia 19 unidades de volta para sua carteira como troco. Nesse sentido, a maioria das transações de Bitcoin gera mudanças.
Isto leva a outra questão: a alteração deve ser enviada de volta para o endereço original ou para um endereço recém-gerado?
Quando Satoshi Nakamoto projetou o Bitcoin, um mecanismo de alteração de endereço foi usado, o que significa que um novo endereço é frequentemente criado para receber a alteração de cada transação. A vantagem desse design é que ele ajuda a proteger a privacidade do usuário e reduz certos riscos de segurança.
Na vida real, isto pode ser comparado à abertura de várias contas bancárias com nomes e identidades diferentes em bancos diferentes. Mesmo que alguém consiga observar o fluxo de dinheiro em cada conta, torna-se muito mais difícil para eles rastrear tudo até o verdadeiro proprietário dos ativos digitais. Isso é parte do que dá ao Bitcoin seu relativo anonimato.
É por isso que os usuários de carteiras precisam de tantas chaves privadas. Como as chaves públicas e as chaves privadas sempre existem em pares, e cada transação pode gerar um novo endereço de alteração, armazenar e fazer backup das chaves privadas correspondentes a todos esses endereços tornar-se-ia, de outra forma, um grande desafio técnico. A carteira HD resolve esse problema permitindo que uma única raiz gere qualquer número de chaves públicas e privadas infantis, melhorando muito a usabilidade das carteiras digitais.
