Blockchain/Nível IV · Protocolo a fundo/4.3 Custódia e privacidade/Lição 1
Carteiras HD (BIP32, BIP44, BIP84, BIP86)
Derivando uma árvore de chaves a partir de uma única semente
MateriaisUma carteira em modo de teste (testnet ou signet), nunca uma semente realUma carteira HD ou ferramenta que mostra caminhos de derivaçãoUm notebook
Curiosidade
- Como uma única semente pode gerar um número efetivamente ilimitado de chaves privadas únicas e recuperáveis?
- Por que uma única chave privada filha vazada, juntamente com a chave pública estendida do pai, pode expor todas as chaves em um ramo não endurecido?
- Qual diferença estrutural separa um endereço P2PKH legado de um endereço nativo SegWit ou Taproot em termos de eficiência nas taxas?
Explorar
- Antes do BIP32, introduzido por Pieter Wuille em 2012, as carteiras geravam pares de chaves aleatórios para cada novo endereço. Fazer o backup da carteira significava armazenar cada chave privada individualmente; perder um arquivo de backup significava que aqueles fundos específicos eram irrecuperáveis. O BIP32 mudou esse modelo ao derivar uma árvore determinística de chaves a partir de uma única semente mestra. Todo o histórico financeiro agora está ancorado nessa única semente, geralmente criada a partir de 128 ou 256 bits de entropia e escrita como 12 ou 24 palavras.
- O caminho de derivação segue a estrutura definida no BIP44 (2014): `m / purpose' / coin_type' / account' / change / index`. O apóstrofo denota derivação endurecida. Este é um mecanismo de segurança crítico. Na derivação não endurecida, se um invasor obtiver tanto a chave pública estendida do pai (xpub) quanto qualquer uma das chaves privadas filhas, ele poderá calcular matematicamente a chave privada do pai. A derivação endurecida quebra esse vínculo; uma chave privada filha vazada combinada com o xpub não revela nada sobre o segredo do pai.
- O BIP44 padronizou os três primeiros níveis para permitir suporte a múltiplas moedas dentro de uma única hierarquia. O nível `purpose'` identifica o padrão (por exemplo, 44 para BIP44, 84 para BIP84). O nível `coin_type'` distingue os ativos; o Bitcoin é o índice 0. Isso permite que uma única semente gerencie diferentes criptomoedas sem misturar suas chaves. O nível `account'` organiza os fundos em contas separadas, cada uma com sua própria cadeia de troco. As chaves públicas estendidas (xpubs) são tipicamente derivadas nesta profundidade.
- O BIP84 atualizou o padrão para endereços SegWit nativos que começam com `bc1q`. Ele define o propósito como 84. Esses endereços são mais eficientes do que os formatos legados, pois seus dados de witness são descontados no cálculo do peso da transação, reduzindo as taxas. O caminho de derivação se torna `m / 84' / 0' / account' / change / index`. Por exemplo, o primeiro endereço externo da Conta 0 é derivado em `m/84'/0'/0'/0/0`. Essa estrutura permite que servidores gerem endereços de recebimento a partir de um xpub sem jamais tocar em uma chave privada.
- O BIP86, um padrão de derivação separado desenvolvido por Ava Chow em 2021 para o Taproot, define o valor 86 como objetivo e gera endereços Taproot de chave única que começam com `bc1p`. O BIP86 abrange saídas Taproot de chave única sem árvore de scripts. Como um caminho de chave Taproot também pode conter uma chave agregada, como uma chave MuSig2, as saídas de uma carteira multi-partes podem parecer exatamente como essas de chave única na cadeia.
- As carteiras escaneiam para frente para detectar endereços usados, geralmente parando após um 'gap limit' (limite de intervalo) de 20 endereços consecutivos não utilizados em uma cadeia. Se nenhuma transação for encontrada nesse intervalo, a carteira assume que descobriu todas as chaves existentes para aquela conta. Para verificar esse mecanismo, abra qualquer carteira HD moderna e localize suas configurações de caminho de derivação. Identifique cada nível: purpose (propósito), coin type (tipo de moeda), account (conta), change (troco) e index (índice). Derive dois caminhos diferentes a partir da mesma semente para confirmar que eles produzem chaves distintas, mas permanecem totalmente recuperáveis a partir do mnemônico original.
Fatos-chave
- O BIP32 deriva uma árvore determinística de chaves filhas a partir de uma única semente mestra.
- A derivação endurecida (marcada com `'`) impede o vazamento da chave pai caso a chave privada filha e o xpub sejam comprometidos.
- A estrutura de caminho do BIP44 é `m / purpose' / coin_type' / account' / change / index`.
- O Propósito 84 corresponde aos endereços SegWit nativos (`bc1q`), que são mais eficientes em termos de taxas do que os formatos legados.
- O Propósito 86 corresponde a endereços Taproot de única chave (`bc1p`).
- As carteiras normalmente param de escanear após 20 endereços consecutivos não utilizados (o limite de intervalo).
Exercício nove, seis, três, um
9ReunirListe 9 caminhos de derivação a partir de diferentes carteiras ou padrões. Indique o propósito, o tipo de moeda e o formato do endereço para cada um.
6AgruparAgrupe os 9 em 6 categorias com base no tipo de script: P2PKH legado, SegWit aninhado, SegWit nativo, Taproot, multimoedas ou outro.
3DestilarReduza os 6 para 3 motivos pelos quais um desenvolvedor de carteira escolheria um caminho de derivação em vez de outro.
1CristalizarEscreva 1 frase explicando como a derivação endurecida protege a chave mestra da exposição por meio das chaves filhas.
Verificação de fatos
Datas, números e afirmações verificados com as fontes publicadas listadas abaixo.
- P. Wuille, BIP32: Hierarchical Deterministic Wallets (2012)
- M. Palatinus & P. Rusnak, BIP44: Multi-Account Hierarchy for Deterministic Wallets (2014)
- P. Rusnak, BIP84: Derivation scheme for P2WPKH based accounts (2017)
- A. Chow, BIP86: Key Derivation for Single Key P2TR Outputs (2021)
- A. M. Antonopoulos & D. A. Harding, Mastering Bitcoin, 3rd ed. (2023), ch. 5