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

A confusão ente 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, que pode ser registrado de inúmeras formas: uma string binária, uma string Base64, uma chave WIF, uma frase mnemônica ou, finalmente, uma string hexadecimal.

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.

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 co


mpartilhamento 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


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

  • 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.

Posts recentes

Ver tudo
''Todos os modelos estão errados, mas alguns são úteis".
George Box