Visão Geral
Uma chave pública estendida (comumente chamada de xpub) é um componente das carteiras HD definido no BIP32. Ela contém tanto uma chave pública quanto um código de cadeia, que juntos permitem a derivação determinística de todas as chaves públicas filhas em um ramo específico da hierarquia de chaves. Isso permite que carteiras somente leitura, sistemas de contabilidade e processadores de pagamento gerem novos endereços de recebimento sem nunca ter acesso às chaves privadas correspondentes.
Estrutura
Uma chave pública estendida consiste em vários campos serializados em uma string codificada em Base58Check:
xpub661MyMwAqRbcF... (string xpub típica, 111 caracteres)
Estrutura interna:
┌──────────────────────────────────────────────────┐
│ Bytes de versão (4) → Identifica tipo de chave│
│ Profundidade (1) → Nível na árvore HD │
│ Impressão do pai (4) → Primeiros 4 bytes pai │
│ Índice filho (4) → Qual filho é este │
│ Código de cadeia (32) → Usado para derivação │
│ Chave pública (33) → Chave pública comprimida│
└──────────────────────────────────────────────────┘
Total: 78 bytes → Codificado em Base58Check
Prefixos de Versão
Diferentes bytes de versão produzem diferentes prefixos que indicam o tipo de endereço:
┌────────┬──────────────┬────────────────────────┐
│ Prefixo│ Tipo Script │ Caminho de Derivação │
├────────┼──────────────┼────────────────────────┤
│ xpub │ P2PKH │ m/44'/0'/conta' │
│ ypub │ P2SH-P2WPKH │ m/49'/0'/conta' │
│ zpub │ P2WPKH │ m/84'/0'/conta' │
└────────┴──────────────┴────────────────────────┘
Casos de Uso
- Carteiras somente leitura: Importar um xpub para monitorar saldos e gerar faturas sem capacidade de gasto
- Processadores de pagamento: Gerar endereços únicos para cada cliente ou pedido sem armazenar chaves privadas no servidor
- Contabilidade: Rastrear toda a atividade da carteira sem arriscar a segurança dos fundos
- Configurações multi-dispositivo: Compartilhar o xpub com uma carteira de celular para monitoramento enquanto mantém chaves privadas em uma carteira de hardware
Implicações de Privacidade
Compartilhar um xpub é uma decisão significativa de privacidade. Qualquer pessoa com acesso a um xpub pode:
- Derivar todos os endereços passados e futuros naquele caminho de derivação
- Ver o histórico completo de transações e saldo
- Correlacionar todos os endereços como pertencentes à mesma carteira
Por essa razão, os xpubs devem ser tratados como informações sensíveis e compartilhados apenas com partes confiáveis. Vazar um xpub para um terceiro dá a eles visibilidade total de sua atividade financeira.
Conceitos Errôneos Comuns
- Um xpub não pode ser usado para gastar fundos. Ele apenas permite a geração de endereços e o monitoramento de saldo.
- No entanto, combinar um xpub com qualquer chave privada filha de um caminho de derivação não endurecido pode expor a chave privada mestra. É por isso que a derivação endurecida é usada em níveis críticos da hierarquia de chaves.
- Um xpub é específico para uma conta na árvore HD. Uma carteira com múltiplas contas tem múltiplos xpubs.