Chaves e Endereços

Como você envia e recebe bitcoins?

Para enviar e receber bitcoins, você precisa de algum tipo de "número de conta" e "senha".

No Bitcoin, chamamos isso de chave pública e chave privada.

Diagrama mostrando a chave pública como número de conta e a chave privada como senha.

Aqui estão os dados da sua conta. Bem-vindo ao Bitcoin.

Porém, esse "número de conta" é um número incomodamente longo. Então, para facilitar a vida, criamos uma versão encurtada dessa chave pública, que chamamos de endereço.

Diagrama mostrando um endereço como outra versão do número de conta.

Você vai ver o quão horrenda é a chave pública em um instante.

Então, resumindo:

De onde vêm as chaves e os endereços?

Todas as chaves usadas no Bitcoin são geradas aleatoriamente no seu computador.

Chave Privada

Tudo começa com a chave privada, que é apenas um número gerado aleatoriamente:

Ilustração mostrando uma chave privada sendo produzida por um gerador de números aleatórios.

Mas, como esse número é muito grande, geralmente o exibimos em formato hexadecimal:

Diagrama mostrando uma chave privada convertida para o formato hexadecimal.

Números hexadecimais são mais curtos que os decimais porque também usam as letras a, b, c, d, e e f.

E aí temos uma chave privada; só um número grande e aleatório.

Por exemplo:

Chave Privada ef235aacf90d9f4aadd8c92e4b2562e1d9eb97f0df9ba3b508258739cb013db2

Não use a chave privada (nem o endereço) de exemplo desta página. Estou mostrando apenas como exemplos de como elas se parecem. Todas as suas chaves privadas devem ser geradas com segurança no seu próprio computador/dispositivo e mantidas em segredo.

Uma chave privada pode ser qualquer número entre 1 e 115792089237316195423570985008687907852837564279074904382605163141518161494336.

Chave Pública

Você usa sua chave privada para calcular sua chave pública.

Mas, primeiro, essa chave pública vai ser vista por outras pessoas. Portanto, quando usamos a chave privada para criar nossa chave pública, não queremos que seja possível para ninguém descobrir qual era a nossa chave privada.

Afinal de contas, a chave privada protege os nossos bitcoins.

Diagrama mostrando como uma chave privada é usada para calcular a chave pública, mas você não consegue calcular a chave privada a partir da pública.

Não queremos que ninguém consiga trabalhar de trás para frente, da chave pública para a chave privada.

Felizmente, podemos usar um tipo especial de função matemática para conseguir isso.

Nós simplesmente jogamos a chave privada (que é um número, afinal) dentro dessa função, e a função cospe uma chave pública (que é mais um número).

Diagrama mostrando uma chave privada passando por uma função matemática para produzir uma chave pública.

Agora, há dois benefícios em usar essa função em particular:

  1. Existe uma conexão matemática entre a chave privada e a chave pública. Isso será útil mais adiante, quando quisermos gastar nossos bitcoins em uma transação.
    Ilustração mostrando como a chave privada encaixa na chave pública como uma chave e fechadura tradicionais.
  2. Não é possível descobrir a chave privada a partir da chave pública. Mesmo que a chave pública seja calculada a partir da chave privada, estamos usando o que é conhecido como uma função de "mão única", então você não consegue trabalhar de trás para frente, da chave pública para calcular a chave privada.

E pronto, graças ao nosso número aleatório e a essa função, agora temos um par de chaves que podemos usar para enviar e receber bitcoins:

Chave Privada ef235aacf90d9f4aadd8c92e4b2562e1d9eb97f0df9ba3b508258739cb013db2
Chave Pública 02b4632d08485ff1df2db55b9dafd23347d1c47a457072a1e87be26896549a8737

Endereço

Essa chave pública é horrenda, não é? Ninguém vai gostar de digitar isso.

Então vamos deixá-la um pouco mais bonita e chamá-la de endereço.

Diagrama mostrando uma chave pública sendo convertida em um formato de endereço mais curto.

Ainda bem.

Tudo o que fizemos aqui foi comprimir a chave pública (usando funções de hash) e convertê-la para um formato que não usa nenhum caractere parecido com outro quando escrito (chamado Base58).

Então ainda não é o pedaço de dado mais curto e bonitinho que você já viu, mas é uma melhoria.

E é só isso que um endereço é; uma versão mais curta da chave pública:

Chave Privada ef235aacf90d9f4aadd8c92e4b2562e1d9eb97f0df9ba3b508258739cb013db2
Chave Pública 02b4632d08485ff1df2db55b9dafd23347d1c47a457072a1e87be26896549a8737
Endereço 1EUXSxuUVy2PC5enGXR1a3yxbEjNWMHuem

Também não é possível trabalhar de trás para frente, do endereço para a chave pública. Isso se deve ao uso de funções de hash ao comprimir a chave pública.

Preciso lembrar das 3 chaves?

Como sua chave pública e seu endereço são calculados a partir da sua chave privada, você pode se virar salvando apenas a sua chave privada.

Diagrama mostrando a chave privada como fonte da chave pública e do endereço.

Então, no pior dos casos, se você um dia precisar enviar seu endereço a alguém, basta calculá-lo a partir da sua chave privada.

Você provavelmente vai usar uma carteira, então gerenciar suas chaves privadas e endereços individuais não é bem um problema. A única coisa que você precisa manter em segurança ao usar uma carteira é a sua semente.

O que acontece se eu perder minha chave privada?

Bom, então você está fu…ndamentalmente sem sorte.

É impossível descobrir sua chave privada a partir da sua chave pública ou do endereço, então, se você perder sua chave privada, ela se foi.

Diagrama mostrando como não dá para trabalhar de trás para frente, de um endereço ou chave pública para a chave privada.

Você não consegue calcular sua chave privada a partir do seu endereço ou chave pública.

E se você não tem a chave privada de um endereço, quaisquer bitcoins localizados nesse endereço ficarão travados ali para sempre.

Que tal isso de segurança?

Isso pode parecer um sistema implacável, e é porque ele é.

Por outro lado, é reconfortante saber que não há portas dos fundos para o seu dinheiro. Existe apenas uma chave para os seus bitcoins, e você está no comando dela.

Ilustração de alguém tentando ligar para o suporte do Bitcoin depois de perder a chave privada.