Xpub: o que a chave pública da sua carteira Bitcoin revela
Uma xpub permite encontrar todos os endereços de uma conta Bitcoin, e com eles todo o histórico, sem poder gastar. O que ela revela, o risco dela e para quem entregá-la.
Uma xpub (chave pública estendida) é a chave pública de uma conta de carteira Bitcoin da qual são derivados todos os seus endereços: quem a tem vê cada pagamento recebido e enviado por essa conta, mas não pode gastar nada.
O que uma xpub contém
O padrão BIP32 descreve as carteiras hierárquicas determinísticas: uma única semente gera uma árvore inteira de chaves. Uma chave estendida acrescenta à chave um código de cadeia (chain code), que serve para calcular as chaves filhas dela. Segundo o BIP32, conhecer uma chave pública estendida permite reconstruir todas as suas chaves públicas filhas não reforçadas (non-hardened).
As carteiras organizam essas chaves segundo o caminho do BIP44: m / purpose' / coin_type' / account' / change / address_index. A xpub que uma carteira mostra é a do nível account'. Ela cobre duas cadeias de endereços: 0 para os endereços de recebimento, 1 para os endereços de troco, que recebem o troco dos seus próprios envios.
xpub, ypub ou zpub
O prefixo indica qual tipo de endereço a conta usa:
| Prefixo | Padrão | Caminho da primeira conta | Endereços |
|---|---|---|---|
xpub | BIP44 | m/44'/0'/0' | Endereços antigos, que começam com 1 |
ypub | BIP49 | m/49'/0'/0' | SegWit aninhado, que começam com 3 |
zpub | BIP84 | m/84'/0'/0' | SegWit nativo, que começam com bc1q |
As três são o mesmo tipo de chave: só mudam os bytes de versão e, com eles, as primeiras letras.
O que uma xpub revela
- Todos os endereços da conta, passados e futuros: eles são derivados um a um, sem limite.
- Todo o histórico: cada recebimento, cada envio, cada valor, já que a blockchain é pública.
- O saldo da conta, a qualquer momento.
- Nada para gastar: sem chave privada, nenhuma transação pode ser assinada.
O próprio BIP32 cita esse uso: entregar a um auditor a chave pública estendida de uma conta permite que ele veja todos os pagamentos de entrada e de saída, sem acesso a nenhuma chave secreta. Quem tem a sua xpub tem a visão desse auditor, para sempre: uma xpub não pode ser revogada.
O risco que você precisa conhecer
Uma xpub sozinha não permite gastar. Mas o BIP32 avisa: conhecer uma chave pública estendida e qualquer chave privada não reforçada que descenda dela equivale a conhecer a chave privada estendida mãe. Em outras palavras, a sua xpub e a chave privada de um único dos seus endereços bastam para gastar a conta inteira.
O nível account' é reforçado: um vazamento desse tipo fica limitado à conta em questão e não atinge as outras contas da mesma semente. Por isso, exporte uma xpub, nunca a chave privada de um endereço, e nunca informe a sua frase de recuperação.
Como um software encontra os endereços
Um software que lê uma xpub deriva os endereços em ordem e para depois de uma sequência de endereços nunca usados: o BIP44 fixa esse limite (gap limit) em 20. Se você criou mais de 20 endereços seguidos sem usá-los, um software que segue essa regra não verá os seguintes.
Para ler os saldos, o software consulta depois um servidor ou um nó, endereço por endereço. Esse servidor fica sabendo então de todos os seus endereços e pode ligá-los entre si: esse é o outro vazamento, que não vem da xpub em si, mas da forma de lê-la.
Antes de entregar a sua xpub
- Pergunte-se quem a guarda: um aplicativo que guarda a sua xpub nos servidores dele conhece a sua conta por todo esse tempo, e um vazamento dos dados dele a expõe.
- Prefira uma leitura local: uma carteira conectada ao seu próprio nó, ou uma ferramenta que deriva os endereços no seu dispositivo, não confia a xpub a ninguém.
- Uma conta por uso: outra conta (o
account'seguinte) tem outra xpub, que não revela nada das outras contas.
Como o CentraFIN lê a sua xpub
O CentraFIN lê a sua xpub no seu dispositivo: o seu navegador deriva os endereços, lê os saldos por uma conexão criptografada de ponta a ponta e guarda tudo em um cofre que ele mesmo criptografa. O servidor do CentraFIN nunca vê a sua xpub, um endereço nem um saldo. Cada endereço é sempre lido no mesmo nó, sorteado, para que nenhum nó veja a conta inteira. Os detalhes estão na página Bitcoin.
Fontes
- BIP32: carteiras hierárquicas determinísticas
- BIP44: caminho de derivação e gap limit
- BIP49: ypub, SegWit aninhado
- BIP84: zpub, SegWit nativo
Perguntas frequentes
Dá para roubar bitcoins com uma xpub?
Não só com a xpub: ela não permite assinar. Com a chave privada de um dos endereços da conta junto, sim: a conta inteira.
Uma xpub basta para ver o meu saldo?
Sim. Ela dá todos os endereços da conta, e a blockchain dá os saldos e as transações deles.
O que fazer se a minha xpub vazou?
Ela não pode ser revogada: quem a tem sempre verá essa conta. Daqui em diante, use uma conta nova cuja xpub nunca tenha sido compartilhada. A transferência a partir da conta antiga, essa, continuará visível.
Qual é a diferença entre xpub, ypub e zpub?
O tipo de endereço da conta: endereços que começam com 1 para a xpub, com 3 para a ypub (SegWit aninhado) e com bc1q para a zpub (SegWit nativo).
Assuma o controle do seu patrimônio
Sua conta fica pronta em um minuto, sem senha.