Imagine que Ana abre sua carteira e toca em RECEBER.
Na tela aparece uma combinação de letras e números, acompanhada de um código QR.
Ana pode compartilhar essa informação para receber BTC.
Mas há uma pergunta que poucas pessoas fazem...
DE ONDE VÊM ESSAS LETRAS E NÚMEROS? COMO A CARTEIRA SABE QUAL ENDEREÇO MOSTRAR?
A resposta está em um procedimento criptográfico que vamos entender passo a passo.
Na seção anterior, aprendemos que uma carteira HD pode gerar numerosas chaves privadas e suas respectivas chaves públicas.
Agora vamos descobrir como o software utiliza uma dessas chaves públicas para construir um endereço de Bitcoin....
Para explicar, utilizaremos um exemplo real: um endereço P2WPKH, também conhecido como endereço SegWit nativo.
É um dos tipos de endereço que começam com bc1q.
O QUE O SOFTWARE FAZ PRIMEIRO?
A carteira obtém uma chave pública correspondente a uma das chaves privadas que administra.
No nosso exemplo, utiliza uma chave pública comprimida, representada por 33 bytes de informação.
Mas atenção...
UMA CHAVE PÚBLICA NÃO É A MESMA COISA QUE UM ENDEREÇO DE BITCOIN....
Ainda precisamos transformar essas informações.
COMO ELE FAZ ISSO?
O software aplica à chave pública uma função criptográfica chamada SHA-256.
Lembremos que uma função hash permite calcular uma impressão digital a partir de determinados dados.
Depois, aplica ao resultado do SHA-256 outra função chamada RIPEMD-160.
Essa combinação recebe um nome técnico: HASH160.
E o que obtemos?
Uma impressão digital criptográfica de 20 bytes, calculada a partir da chave pública.
MAS ESSA IMPRESSÃO DIGITAL AINDA NÃO É O ENDEREÇO COMPLETO....
É um dos dados necessários para construí-lo.
ENTÃO COMO SURGE O ENDEREÇO QUE VEMOS NA TELA?
A carteira incorpora as informações que identificam a versão do mecanismo utilizado.
No nosso exemplo, corresponde à versão 0 do SegWit.
Depois, utiliza um sistema de codificação chamado BECH32, definido no padrão BIP173.
Para que serve?
Para representar esses dados por meio de uma sequência de caracteres que possamos copiar e compartilhar.
O Bech32 não criptografa nem oculta as informações.
Ele as codifica seguindo regras específicas e adiciona caracteres de verificação que permitem detectar muitos erros acidentais.
E ASSIM OBTEMOS UM ENDEREÇO QUE COMEÇA COM bc1q...
Mas o que significam esses caracteres?
bc identifica a rede principal do Bitcoin.
O número 1 separa o prefixo do restante dos dados.
E a letra q, logo após esse separador, representa a versão 0 nesta codificação.
Os demais caracteres representam as informações correspondentes ao endereço e incluem dados de verificação.
TODO ESSE PROCESSO É REALIZADO AUTOMATICAMENTE PELA CARTEIRA.
Ana não calcula hashes, não converte números nem digita chaves manualmente.... O software faz esses cálculos seguindo as regras do formato.
PODEMOS RESUMIR O PROCEDIMENTO?
Sim. No nosso exemplo, o percurso é:
CHAVE PÚBLICA - SHA-256 - RIPEMD 160 - DADOS DE VERSÃO - CODIFICAÇÃO BECH32 - ENDEREÇO.
E agora vem algo importante.
O QUE ACONTECE QUANDO BRUNO ENVIA BITCOINS PARA ESSE ENDEREÇO?
A carteira de Bruno interpreta as informações codificadas. Com base nesses dados, prepara uma saída de transação com as condições correspondentes para que esses BTC possam ser gastos posteriormente.
Como já aprendemos, um endereço não é uma conta bancária nem um recipiente onde moedas digitais são armazenadas.
É UMA INFORMAÇÃO QUE PERMITE INDICAR COMO UMA SAÍDA DE BITCOIN DEVE SER CONSTRUÍDA.
E QUE FUNÇÃO CUMPRE O CÓDIGO QR?
Facilita o compartilhamento dessas informações sem que seja necessário digitá-las.
Pode conter simplesmente o endereço ou uma solicitação de pagamento com informações adicionais, como um valor.
Mas não modifica as chaves privadas nem o procedimento criptográfico utilizado para construir o endereço.
E POR QUE É TÃO IMPORTANTE CONFERI-LO ANTES DE ENVIAR BTC?
Porque esses caracteres representam informações precisas.
O mecanismo de verificação do Bech32 pode detectar muitos erros de digitação.
No entanto, existe um risco diferente.
Um invasor poderia substituir o endereço original por outro endereço válido que controla.
Nesse caso, o formato pode estar perfeitamente correto, mas o destinatário seria diferente...
UM ENDEREÇO VÁLIDO NÃO SIGNIFICA NECESSARIAMENTE QUE SEJA O ENDEREÇO CORRETO.
Por isso, devemos verificar se ele realmente corresponde à pessoa que receberá os fundos.
O QUE APRENDEMOS?
Que um endereço de Bitcoin não é uma combinação arbitrária de caracteres...
Que sua construção utiliza informações criptográficas e regras de codificação específicas.
E que uma chave pública pode participar da geração de um endereço sem que seja necessário revelar a chave privada correspondente.
Mas há uma questão que ainda não resolvemos...
SE OS ENDEREÇOS SERVEM PARA RECEBER BITCOINS, POR QUE ALGUNS COMEÇAM COM 1, OUTROS COM 3 E OUTROS COM bc1q OU bc1p?
São apenas diferenças visuais ou representam mecanismos distintos?
Isso nos leva diretamente à próxima seção....
PORQUE POR TRÁS DE CADA ENDEREÇO EXISTE UMA ESTRUTURA QUE O SOFTWARE DEVE INTERPRETAR CORRETAMENTE.
E AGORA QUE SABEMOS COMO UM É CONSTRUÍDO, ESTAMOS PREPARADOS PARA ENTENDER POR QUE NEM TODOS OS ENDEREÇOS DE BITCOIN SÃO IGUAIS....

