Pular para o conteúdo
buybitcoinsmart

Glossário / Endereços e chaves

Chave pública não comprimida

O que é uma chave pública não comprimida?
Uma chave pública não comprimida grava as duas coordenadas de um ponto da curva depois de um prefixo 0x04, ocupa 65 bytes e sobrevive hoje principalmente em chaves geradas antes de 2012.

O software mais antigo do Bitcoin registrava os valores completos de x e y, e é por isso que os bitcoins de 2009 e 2010 estão atrás de endereços derivados de chaves de 65 bytes. Depois, o SegWit fechou a porta ao formato, já que o BIP-143 proíbe chaves não comprimidas nos programas de testemunha da versão 0 e nenhum endereço bc1q pode usar uma. Se você está recuperando uma carteira de papel antiga, este é o detalhe que decide se seus fundos aparecem.

Como funciona

Uma chave pública não comprimida tem uma estrutura tão literal quanto o nome. Um byte de prefixo 0x04 anuncia o formato, depois 32 bytes dão a coordenada x e depois 32 bytes dão a coordenada y, num total de 65 bytes. Nada precisa ser calculado para lê-la: as duas metades do ponto já estão ali, e é exatamente por isso que a implementação original a escolheu no hardware da época.

As regras de validade nunca trataram o formato de maneira especial na camada base. Um nó que verifica um gasto legado do tipo pay-to-public-key-hash ou pay-to-script-hash aceita uma chave não comprimida sem objeção, e os bitcoins bloqueados em uma dessas chaves em 2010 continuam gastáveis sem prazo. O que mudou é tudo o que foi construído por cima: as carteiras BIP-32 derivam apenas chaves comprimidas, então uma frase de recuperação nunca pode produzir uma chave não comprimida, e o SegWit as tornou inválidas dentro dos gastos de versão de testemunha 0.

O custo dos 32 bytes extras é pago na hora de gastar. Uma entrada legada com uma chave comprimida ocupa cerca de 148 vbytes; a mesma entrada com uma chave não comprimida ocupa cerca de 180 vbytes, aproximadamente 22% a mais por um gasto idêntico. Consolidar uma dúzia dessas entradas durante um pico de taxas é onde essa diferença deixa de ser curiosidade.

Onde você a encontra

Três artefatos ainda entregam chaves não comprimidas às pessoas, e os três datam da mesma época.

As carteiras de papel impressas pelos sites geradores de 2011 a 2013 costumavam produzir um endereço começando por 1 e uma cadeia no formato Wallet Import Format começando por 5, o marcador do lado não comprimido do formato. As moedas físicas da série Casascius, cunhadas entre 2011 e 2013, escondiam o mesmo tipo de cadeia sob um holograma que revela qualquer violação. E as chaves privadas exportadas do software de carteira mais antigo são totalmente anteriores à mudança.

Recuperar uma chave antiga

A armadilha não é a codificação, é que uma mesma chave privada produz dois endereços diferentes. Calcular o hash da chave de 65 bytes dá um endereço legado; calcular o hash da versão comprimida de 33 bytes da mesma chave dá outro completamente diferente. Se você importar a chave em um software moderno que presume compressão, o saldo pode parecer zero enquanto os bitcoins continuam intactos no outro endereço.

As carteiras que lidam bem com material antigo, entre elas a Electrum, verificam as duas derivações quando você varre uma chave em vez de importá-la. Varrer também é a operação mais segura: move os bitcoins para um endereço controlado pela sua frase de recuperação atual, de modo que uma impressão que ficou numa gaveta, foi fotografada por um celular ou foi vista por um proprietário anterior deixa de poder gastar qualquer coisa. Verifique as duas formas de endereço em um explorador de blocos antes de concluir que uma recuperação falhou.

Não confundir com

Perguntas frequentes

Os bitcoins guardados atrás de uma chave pública não comprimida ainda podem ser gastos?

Sim. As saídas legadas aceitam chaves não comprimidas sem prazo de validade, e nada em nenhuma atualização mudou isso. A única restrição é que os gastos SegWit nativos as rejeitam, então os bitcoins precisam passar primeiro por uma entrada legada.

Por que minha chave privada antiga mostra dois endereços diferentes?

Porque as versões comprimida e não comprimida da mesma chave são cadeias de bytes diferentes, e cada uma gera por hash o seu próprio endereço. Verifique o saldo das duas antes de concluir que uma recuperação falhou.

Leia a seguir

Termos relacionados

Mais em Endereços e chaves

Ler esta página em inglês