Chave pública estendida (xpub) e carteiras somente leitura
Uma chave pública estendida (xpub) permite gerar endereços de recebimento sem nenhuma chave privada. É assim que carteiras “somente leitura” e servidores de pagamento funcionam.
Mas a xpub revela todo o histórico e os saldos da conta, e, combinada com uma chave filha não hardened vazada, expõe a chave privada do pai.
Laboratório educativo. Todo o cálculo roda no seu navegador, nada é enviado nem salvo. Nunca digite aqui sua frase de recuperação, chave privada ou passphrase reais: os exemplos usam apenas vetores de teste públicos.
Só dados de teste
Nunca cole nem exiba a xprv ou a xpub de uma carteira real. Uma xpub revela todos os endereços e o histórico da conta.frase / entropiaseedchave privada (segredo)chave pública / endereço (público)
Conta m/84'/0'/0' (exemplo)
xpub6CatWdiZiodmUeTDp8LT5or8nmbKNcuyvz7WyksVFkKB4RHwCD3XyuvPEbvqAQY3rAPshWcMLoP2fMFMKHPJ4ZeZXYVUhLv1VMrjPC7PW6V
•••••••• (oculta: é segredo)
Carteira somente leitura: só a xpub
Endereços de recebimento m/0/i gerados apenas com a xpub, sem nenhuma chave privada:
- 0. bc1qcr8te4kr609gcawutmrza0j4xv80jy8z306fyu ✓ igual ao derivado com a chave privada
- 1. bc1qnjg0jd8228aq7egyzacy8cys3knf9xvrerkf9g ✓ igual ao derivado com a chave privada
- 2. bc1qp59yckz4ae5c4efgw2s5wfyvrz0ala7rgvuz8z ✓ igual ao derivado com a chave privada
- 3. bc1qgl5vlg0zdl7yvprgxj9fevsc6q6x5dmcyk3cn3 ✓ igual ao derivado com a chave privada
- 4. bc1qm97vqzgj934vnaq9s53ynkyf9dgr05rargr04n ✓ igual ao derivado com a chave privada
Limite da xpub: derivação hardened
Filhos hardened usam a chave privada do pai, então não dá para derivá-los a partir da xpub.
Ataque: xpub do pai + chave privada de um filho não hardened
Se alguém tem a xpub da conta e vaza a chave privada de um filho não hardened, calcula a chave privada do pai: k_pai = (k_filho − IL) mod n, em que IL = HMAC-SHA512(chain code, chave pública do pai ‖ índice) é público.
Teste o que aprendeu
Experimente
- Compare os endereços gerados só com a xpub com os gerados com a chave privada.
- Rode o vazamento: recupere a chave do pai a partir da xpub e de um filho.
- Tente derivar um filho hardened a partir da xpub e veja o erro.
Detalhes técnicos
- Filho não hardened: k_filho = (IL + k_pai) mod n, com IL = HMAC-SHA512(chaincode, pubkey_pai ‖ índice). Como a xpub contém pubkey e chaincode, quem tem k_filho calcula k_pai = (k_filho − IL) mod n.
- Derivação hardened inclui a chave privada do pai no HMAC, então a xpub não basta para derivá-la.
- A xpub não gasta fundos, mas compromete a privacidade de todos os endereços da conta.
Termos desta lição
- xpubA xpub (chave pública estendida) é uma chave pública BIP-32 acompanhada do chain code. Com ela, dá para gerar os endereços de recebimento de uma conta sem acess
- BIP-32O BIP-32 define as carteiras HD (hierárquicas determinísticas): a partir de uma única seed, gera-se uma árvore inteira de chaves privadas e públicas. A chave me
- Private KeyA chave privada (private key) é um número secreto usado em criptografia, funcionando de forma parecida com uma senha. No mundo das criptomoedas, ela é usada par
- Public KeyA chave pública (public key) é um identificador criptográfico único associado a uma conta on-chain. Diferente da chave privada, ela pode ser compartilhada livre
Contas feitas com bibliotecas auditadas (@scure/bip39, @scure/bip32, @noble/curves, @noble/hashes) e conferidas contra os vetores de teste oficiais dos BIP-32, BIP-39 e BIP-84. Conteúdo educativo, não é um gerador nem um serviço de recuperação de carteiras.