Pular para o conteúdo
buybitcoinsmart

Glossário / Endereços e chaves

Carteira HD

Outros nomes: protocolo HD, carteira determinística hierárquica, BIP32.

O que é uma carteira HD?
Uma carteira HD gera todas as chaves de que um dia vai precisar a partir de uma única semente aleatória, organizadas na árvore de pais e filhos que o BIP-32 especificou em 2012.

Especificação no BIP-32.

Uma semente produz uma chave mestra, a chave mestra produz ramificações e as ramificações produzem todos os endereços que você usa. O BIP-32 foi atribuído em 11 de fevereiro de 2012, e praticamente todas as carteiras de hardware, móveis e de desktop distribuídas hoje o seguem. É por isso que doze palavras em um cartão podem restaurar uma carteira que você usa há uma década.

Como funciona

Uma carteira HD transforma um número em uma hierarquia usando um hash com chave, executado repetidamente. A semente entra no HMAC-SHA512 com a string de chave fixa "Bitcoin seed", produzindo 64 bytes: os 32 da esquerda se tornam a chave privada mestra e os 32 da direita se tornam o código de cadeia mestra. Esse par é a raiz de tudo o que está abaixo dele.

Cada passo seguinte toma uma chave, seu código de cadeia e um número de índice, aplica o mesmo hash e gera uma chave filha com um código de cadeia próprio. Cada nó tem 4.294.967.296 filhos possíveis, divididos em duas metades: índices abaixo de 2.147.483.648 são normais e podem ser calculados apenas pelo lado público, enquanto índices iguais ou superiores a essa linha são hardened e exigem a chave privada. Repetir o passo constrói uma árvore, e uma posição nessa árvore é escrita como um caminho de derivação.

O determinismo é o que faz o projeto valer a pena. A mesma semente, entregue a qualquer implementação correta, produz exatamente as mesmas chaves na mesma ordem para sempre. Nenhuma chave é armazenada, apenas recalculada, e é por isso que o backup é uma frase e não um arquivo que cresce cada vez que você recebe um pagamento.

As palavras são uma camada separada, e confundir as duas camadas causa a maioria dos problemas de recuperação. O BIP-39 define como uma frase extraída de uma lista de 2.048 palavras se torna a semente, esticando-a pelo PBKDF2 com HMAC-SHA512 ao longo de 2.048 iterações, com sal formado pela string "mnemonic" mais uma frase secreta opcional. O BIP-32 não sabe nada sobre palavras e o BIP-39 não sabe nada sobre árvores. Eles são unidos por convenção, e é assim que duas carteiras podem concordar quanto à sua frase e ainda discordar quanto aos seus endereços.

O Bitcoin Core só cria carteiras determinísticas hierárquicas desde a versão 0.16.0. Antes disso, uma carteira guardava um conjunto de chaves aleatórias sem relação entre si, e um backup ficava desatualizado no momento em que o conjunto avançava além dele.

Por que isso importa quando você compra bitcoin

A frase que você anota durante a configuração da carteira é a única coisa que fica entre você e cada bitcoin que você venha a comprar, e a estrutura de árvore é o que torna essa afirmação verdadeira.

Faça o backup uma vez e o backup permanece completo. Cem saques de uma corretora para cem endereços novos são todos descendentes de uma única raiz, então nada do que você fizer depois aumenta o que você precisa proteger. Essa é a maior melhoria prática na custódia de bitcoin desde que o primeiro cliente foi lançado, e é igualmente a razão pela qual uma frase de recuperação fotografada uma vez fica comprometida para sempre: a fotografia abrange bitcoins que você ainda não comprou.

A portabilidade é o segundo ganho, e vem com uma ressalva. Uma frase anotada em uma Trezor ou uma Ledger é restaurada na Sparrow, na Electrum ou na BlueWallet porque todas implementam o mesmo padrão. A ressalva está na rota. O BIP-44 produz endereços que começam com 1, o BIP-49 produz 3, o BIP-84 produz bc1q e o BIP-86 produz bc1p, todos a partir de palavras idênticas. Restaure em um software cujo padrão usa um propósito diferente e o saldo aparece zerado enquanto os bitcoins permanecem intactos em outra ramificação. Anotar o caminho de derivação ao lado do backup, e nada mais ao lado dele, evita esse pânico específico.

O limite de lacuna é a terceira coisa que vale a pena saber. Uma carteira restaurada escaneia para frente por 20 endereços não usados segundo o BIP-44 e então para de procurar. Clicar em um botão de receber quarenta vezes em uma carteira da qual você nunca fez backup e depois usar o último endereço é uma forma confiável de produzir uma restauração que informa saldo vazio.

Ler m/84'/0'/0'/0/0 um nível por vez

Um caminho de derivação funciona como um endereço postal, estreitando-se em cada nível. Leia o caminho padrão do SegWit nativo da esquerda para a direita.

  • m é a chave mestra derivada da sua semente.
  • 84' seleciona o propósito BIP-84, que produz endereços SegWit nativos que começam com bc1q. O apóstrofo marca o nível como hardened.
  • 0' é o tipo de moeda, e 0 significa a mainnet do bitcoin. A testnet seria 1'.
  • 0' é a conta, então uma conta separada para uma empresa seria 1'.
  • 0 é a cadeia: 0 para endereços que você entrega, 1 para troco.
  • 0 é o índice de endereço, que aumenta a cada pagamento recebido.

Os três primeiros níveis são hardened e os dois últimos não, de forma deliberada. Essa divisão é o que permite exportar uma chave pública estendida de nível de conta para uma carteira de observação, que pode então gerar endereços de recebimento e de troco sem nunca conseguir alcançar uma conta irmã nem subir de volta até a chave mestra.

Carteira HD vs frase de recuperação

Uma carteira HD é um esquema de derivação; uma frase de recuperação é uma forma de anotar o número do qual ela parte. O BIP-32 define a árvore e aceita qualquer semente de 128 a 512 bits, recomendando 256. O BIP-39 define as palavras. A Electrum traz seu próprio formato de frase incompatível e ainda assim é totalmente determinística hierárquica, o que mostra que as duas camadas são realmente independentes. A distinção importa quando um software afirma aceitar a recuperação BIP-39: é uma promessa sobre ler suas palavras, não sobre em qual ramificação ele procurará depois.

Carteira HD vs caminho de derivação

Uma carteira HD é a árvore; um caminho de derivação é uma rota através dela. As pessoas descrevem uma carteira como “uma carteira BIP-84” como se fosse uma categoria de produto, mas qualquer carteira BIP-32 pode percorrer qualquer caminho, e a maioria dos softwares atuais mostra sem problema várias contas com propósitos diferentes a partir de uma única semente. Trate o caminho como uma coordenada que você anota junto ao backup, não como uma propriedade do aplicativo que você por acaso instalou.

Não confundir com

Perguntas frequentes

Preciso fazer backup de cada endereço que minha carteira HD cria?

Não. Cada endereço vem da mesma semente por um cálculo fixo, então a frase de recuperação já cobre os endereços que você ainda não usou. Registre o caminho de derivação junto com a frase e o backup estará completo.

Restaurei minha frase de recuperação e o saldo está zerado. O que deu errado?

Quase sempre é o caminho de derivação ou o limite de lacuna. As mesmas palavras produzem endereços diferentes em BIP-44, BIP-49, BIP-84 e BIP-86, e uma carteira restaurada para de verificar depois de 20 endereços não usados. Teste os outros propósitos e aumente o limite de lacuna antes de supor que algo foi perdido.

Uma carteira HD é menos segura do que gerar chaves uma a uma?

Não, e geralmente é mais segura. Cada chave ainda vem de 128 a 256 bits de entropia, e um único backup elimina a falha mais comum, que é um backup desatualizado que não contém uma chave que você usou depois.

Dois aplicativos de carteira podem compartilhar a mesma carteira HD?

Sim. Importe a mesma frase nos dois e defina o mesmo caminho de derivação, e eles vão derivar endereços idênticos e ver saldos idênticos. Assinar nos dois ao mesmo tempo pode produzir transações conflitantes, então trate um como o principal.

Leia a seguir

Termos relacionados

Mais em Endereços e chaves

Ler esta página em inglês