fbpx

Chaves, Endereços e Carteiras no Bitcoin: diferença entre Chave Pública e Endereço

A confusão entre chave pública e endereço bitcoin é comum. Vamos estudar a anatomia de um endereço bitcoin, explicando como eles são criados e qual a diferença entre uma chave pública e um endereço no Bitcoin.

Carteira Bitcoin

Uma carteira bitcoin é a combinação de três elementos: chave privada, chave pública e endereço. Você pode pensar na carteira como a interface para comunicar com a rede Bitcoin. Ao criar uma carteira, você recebe chaves públicas, privadas e endereços bitcoin que permitem uma comunicação direta com outras carteiras e com a blockchain.

A chave privada é um número secreto e aleatório (sua segurança vem dessa aleatoriedade) usado para assinar transações e gastar os bitcoins de uma determinada carteira. Formalmente, uma chave privada Bitcoin é uma série de 32 bytes.

Qualquer pessoa (ou aplicativo, programa, ciborgue ou AI) que deter as chaves privadas associadas à um endereço com bitcoins, poderá transacioná-los. É o único pré-requisito para movimentá-los.

A chave pública -derivada da chave privada- é usada pela carteira para fazer diferentes endereços de bitcoin. O endereço de bitcoin é derivado da chave pública, é o hash da chave pública na forma de uma sequência alfanumérica pública que funciona como um endereço de e-mail para o qual os fundos podem ser enviados.

Cada transação requer a assinatura da chave privada para liberar os fundos de um determinado endereço e provar sua propriedade. Isso ocorre automaticamente no software da carteira bitcoin, sem que a chave privada precise ser exposta. Em resumo, a assinatura prova a posse de uma chave privada, mesmo que ela não revele a chave privada.

Mas, se o endereço bitcoin compartilhada publicamente é gerado a partir de uma derivação da chave privada, como isso não expõe a chave privada? Queremos que apenas aqueles que detém a propriedade do bitcoin, possa gastá-los, como isso é feito?

Função HASH

A resposta está no hash. Diferente das chaves privadas, as chaves públicas e os endereços não são criados aleatoriamente, mas são gerados usando uma função hash. As chaves privadas produzem chaves públicas e as chaves públicas produzem endereços bitcoin. Mas não se pode derivar uma chave pública de um endereço de bitcoin e não se pode derivar uma chave privada de uma chave pública.

Um hash é uma função unidirecional que produz uma impressão digital de tamanho específico, a partir de uma entrada de tamanho arbitrário. Além disso, a função hash é “one way”, ou seja, é muito fácil obter uma saída de uma entrada, mas é praticamente impossível obter a entrada de uma saída. Dessa forma, a exposição do endereço não coloca os fundos em risco.

SHA256, RIPEMD160, BASE58CHECK

Funções hash criptográficas são usadas extensivamente no bitcoin: em endereços de bitcoin, em endereços de script e no algoritmo de prova de trabalho de mineração. Entre eles, estão o Secure Hash Algorithm (SHA) e o RACE Integrity Primitives Evaluation Message Digest (RIPEMD), especificamente o SHA256 e RIPEMD160.

O Bitcoin resolve o problema do compartilhamento do endereço, sem riscos de exposição da chave privada com o ECDSA (Elliptic Curve Digital Signature Algorithm), uma função matemática unidirecional.

O processo é o seguinte: a chave privada (P) é submetida à função hash ECDSA, gerando a chave-pública (p). E a chave pública (p), é submetida à função hash unidirecional duas vezes, gerando um endereço de bitcoin (A).

A chave pública é revelada somente quando você gasta dinheiro, porque é necessário provar que a assinatura digital veio da sua chave privada e, em seguida, eles também verificam se o hash da chave pública é o mesmo hash da transação de saída. Se a assinatura e o hash coincidem, então a transação é válida e o dinheiro pode ser gasto.

A chave pública -derivada da chave privada- é submetida à função hash SHA-256, resultando em um número único de 256-bits. Esse número é submetido à função hash RIPEMD-160 que retorna um número único de 160-bits (20 bytes). Esse número é nosso endereço wallet.

Para tornar a leitura mais agradável, há ainda mais um passo. O endereço de 160-bits, derivado da função RIPEMD-160, passa pelo Base58Chech, uma função que diminui o tamanho do endereço. No final do processo, teremos algo como: 1JwSSubhmg6iPtRjtyqhUYYH7bZg3Lfy1T

O uso desses algoritmos faz com que seja matematicamente impossível realizar o processo inverso, descobrindo a chave privada através da chave pública ou do endereço. E isso faz com que possamos compartilhar nosso endereço sem qualquer risco.

A razão pela qual o Bitcoin usa o hash, além da chave pública, é a segurança. Caso haja alguma falha na derivação da chave pública a partir da chave privada, utilizando apenas o hash da chave pública e não a chave pública em si, a chave privada ainda estaria em segurança até os fundos serem gastos. Em caso de falha, ao gastar os fundos, a transação (que mostra sua assinatura e sua chave pública) poderia ser usada para fazer engenharia reversa da chave privada.

Anatomia de um Endereço Bitcoin

Alguns detalhes sobre endereços Bitcoin:

  • Eles são alfanuméricos e contêm letras maiúsculas e minúsculas (há exceções: endereços segwit que não fazem distinção entre maiúsculas e minúsculas).
  • Um endereço bitcoin costuma ter 34 caracteres (podendo ter apenas 26 caracteres se a chave pública que os gera começar com uma série de zeros à esquerda)
  • O endereço é compostos por três partes: um número de versão (1 byte), um hash de chave pública (20 bytes) e uma soma de verificação (4 bytes).
  • O número de versão é o primeiro caractere de um endereço. O mais comum é o “1” (P2PKH-Pay-to-PubkeyHash), mas há também endereços que começam com endereços “3” (P2SH-Pay To Script Hash) e bech32/segwit que começam com “bc1”.
  • A segunda parte do endereço é o hash da chave pública, conforme discutido acima, e ocupa 20 bytes.
  • Os 4 bytes finais de um endereço são uma soma de verificação que garante a validade do endereço.
  • Por questão de ambiguidade visual, excluiu-se dos endereços os caracteres: 0 (zero), O (maiúsculo), I (maiúsculo i) e l (minúscula L)

Lembre-se, perder a chave privada é equivalente a perder todos os fundos. A chave privada é o único elemento necessário para gastar seus bitcoin, por isso ele não deve ser compartilhado com ninguém e deve ser mantida em segurança.

Infochain VIP | Conteúdo Exclusivo em Primeira Mão
Receba em seu e-mail notícias e artigos sobre Blockchain e Criptoeconomia e entenda como essa tecnologia está impactando o mundo.
Não gostamos de spam! E protegeremos seu email como se fossem bitcoins.