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:

PrefixoPadrãoCaminho da primeira contaEndereços
xpubBIP44m/44'/0'/0'Endereços antigos, que começam com 1
ypubBIP49m/49'/0'/0'SegWit aninhado, que começam com 3
zpubBIP84m/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

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.