Pular para o conteúdo
buybitcoinsmart

Glossário / Endereços e chaves

Chave pública

O que é uma chave pública?
Uma chave pública é o ponto da curva secp256k1 derivado da sua chave privada, que pode ser publicada sem risco, e é o valor contra o qual uma assinatura é verificada quando você gasta.

Multiplicar a chave privada por um ponto fixo da curva produz a chave pública, e nenhum método conhecido inverte essa etapa. As chaves comprimidas ocupam 33 bytes, e o Taproot as reduziu ainda mais, até a forma x-only de 32 bytes definida no BIP-340. Você raramente vê uma como usuário, porque a maioria dos endereços publica apenas um hash da chave e revela a própria chave quando os bitcoins finalmente se movem.

Como funciona

As chaves públicas saem de uma curva específica, e sua aritmética faz todo o trabalho. O Bitcoin usa a secp256k1, definida pela equação y ao quadrado é igual a x ao cubo mais 7 sobre um corpo primo grande, junto com um ponto de partida acordado chamado gerador. Somar esse gerador a si mesmo tantas vezes quantas a chave privada indica produz outro ponto da curva, e esse ponto é a chave pública. A operação é rápida em um sentido e, com todas as técnicas conhecidas hoje, inviável no outro, o que é toda a base da propriedade do bitcoin.

Três codificações aparecem na prática. A forma original não comprimida gasta 65 bytes para escrever as duas coordenadas atrás de um prefixo 0x04. A forma comprimida conserva apenas a coordenada x e um byte de paridade, 33 bytes no total, e é o padrão há bem mais de uma década. O Taproot vai um passo além com chaves x-only de exatamente 32 bytes, dispensando o byte de paridade porque o BIP-340 fixa a convenção em seu lugar.

Onde a chave aparece on-chain depende do tipo de saída. Uma saída legada ou SegWit versão 0 compromete um hash de 20 bytes da chave pública, então a cadeia mostra o hash e nada mais até que os bitcoins sejam gastos, momento em que quem gasta deve revelar a chave cujo hash corresponde a ele. Uma saída Taproot é diferente: a chave de saída de 32 bytes fica no próprio endereço, visível desde o momento em que os fundos chegam.

Por que isso importa quando você compra bitcoin

Duas situações práticas colocam uma chave pública diante de um comprador comum, e nas duas é fácil errar.

A primeira é provar que um endereço é seu. Segundo o regulamento da UE sobre transferências de fundos, uma corretora deve verificar que um endereço autocustodiado pertence realmente ao seu cliente antes de enviar mais de 1.000 euros para ele, e verificações comparáveis se aplicam em várias outras jurisdições cobertas pelos nossos guias de país. A prova padrão é uma mensagem assinada: sua carteira assina um desafio com a chave por trás do endereço, e a corretora o verifica com a chave pública. Nada secreto sai do seu dispositivo, então é seguro atender a essa solicitação, ao contrário de um pedido da própria chave.

A segunda é a chave pública estendida, a xpub que sua carteira pode exportar. Uma xpub não é uma credencial de gasto, e entregá-la não pode custar bitcoins diretamente. O que ela entrega é o seu histórico financeiro: qualquer pessoa que a tenha pode gerar todos os endereços que essa carteira usará algum dia, passados e futuros, e ler o saldo e cada transação associada a eles. Rastreadores de portfólio, ferramentas fiscais e contadores pedem xpubs rotineiramente. Entregue uma apenas onde você se sentiria confortável em entregar um extrato bancário de uma vida inteira, e use uma conta ou carteira separada onde não se sentiria.

Seguir uma chave até a blockchain

Tome uma carteira que usa o caminho padrão do SegWit nativo, m/84'/0'/0'/0/0. A chave nesse caminho são 33 bytes comprimidos. A carteira calcula seu hash, primeiro com SHA-256 e depois com RIPEMD-160, produzindo 20 bytes, e codifica esses bytes como um endereço bc1q. Tudo o que é enviado a esse endereço fica agora bloqueado a um hash, e a rede nunca viu a chave.

Quando você gasta, o campo de testemunha leva dois itens: uma assinatura e a chave pública de 33 bytes. Cada nó calcula o hash da chave, verifica que o resultado corresponde aos 20 bytes que a saída exigia e então verifica a assinatura com a chave. Só se as duas coisas se confirmarem o gasto é válido. A partir desse bloco a chave é pública, o que é um bom motivo para não deixar um saldo parado em um endereço do qual você já gastou.

Chave pública vs chave privada

A chave privada é escolhida ao acaso e a chave pública é calculada a partir dela, nunca o contrário. Essa assimetria decide como cada uma é tratada: publicar uma chave pública é rotina e não custa nada, enquanto publicar uma chave privada entrega os bitcoins imediatamente e de forma irreversível. Os backups protegem o lado privado, já que a chave pública sempre pode ser recalculada a partir dele em microssegundos. A verificação usa o lado público, e por isso desconhecidos e nós da rede podem verificar sua assinatura sem que nada lhes seja confiado.

Não confundir com

Perguntas frequentes

É seguro compartilhar minha chave pública?

Sim. Uma chave pública não pode ser convertida de volta na chave privada, e ela é publicada na blockchain toda vez que você gasta, de qualquer forma. O custo de compartilhá-la é de privacidade, não de segurança, já que ela vincula você aos bitcoins que controla.

Uma chave pública é a mesma coisa que meu endereço de bitcoin?

Não. Para saídas legadas e saídas SegWit nativas, o endereço contém um hash de 20 bytes da chave pública, não a chave. Os endereços Taproot são a exceção: eles incorporam diretamente uma chave de 32 bytes.

Alguém pode roubar meus bitcoins se tiver minha xpub?

Não, uma chave pública estendida não pode assinar nada. Ela permite que quem a tenha gere todos os seus endereços e acompanhe todo o seu saldo e seu histórico de transações, então trate-a como informação financeira sensível, e não como uma credencial secreta.

Leia a seguir

Termos relacionados

Mais em Endereços e chaves

Ler esta página em inglês