Uma das criações de Satoshi Nakamoto para tornar o Bitcoin uma realidade é a codificação Base58, um tipo de função criptográfica especialmente desenvolvida para Bitcoin cuja principal função é transformar os bytes resultantes da síntese de dados representados por uma série de bytes (aos quais é aplicado um processo criptográfico específico para transformar a saída em um formato padronizado dentro da rede) em algo facilmente legível e verificável .
A função pode não apenas codificar a informação, mas também decodificá-la e fazer o soma de verificação da mesma. Na verdade, todas essas funções são facilmente identificáveis no código-fonte do Bitcoin. Primeiramente, as definições de todas essas funções estão disponíveis no cabeçalho (cabeçalho de definição de função e macro em C/C++), base58.h, disponível no link a seguir
Embora o código das funções possa ser revisado e verificado revisando o arquivo base58.cpp, disponível neste outro link. São essas duas partes que possibilitam que o Base58 funcione dentro do Bitcoin.
Uma função para facilitar o uso do Bitcoin
Portanto, o Base58 basicamente faz algo que torna o Bitcoin mais fácil para nós: transforma os dados de origem de um endereço no formato legível que conhecemos. Por exemplo, algo tão simples como esta função é o que nos permite reduzir uma grande quantidade de dados, como uma chave ECDSA, em algo muito mais gerenciável e legível, como um endereço Bitcoin com seus 20 caracteres (na versão padrão ou legada desses endereços e que começam com 1 ou 3).
Agora, como todo esse processo acontece? Bom, o processo é bem simples e pode ser dividido nas seguintes etapas:
- Primeiro, são coletados os dados da versão/aplicativo, juntamente com os dados correspondentes à chave pública de nossas criptomoedas. Esses dados são tratados em bytes.
- Em seguida, o hash SHA-256 de todos os dados concatenados começa a ser calculado. Aqui temos nosso primeiro SHA-256.
- O resultado anterior é tomado como valor para uma nova rodada de SHA-256, e com ele temos o hash SHA-256 do hash anterior.
- Com o segundo hash calculado, pegaremos os primeiros quatro bytes resultantes dele.
- Agora concatenamos os dados do segundo hash SHA-256 (etapa 3) e os juntamos ao conjunto de dados da etapa 1.
- A concatenação acima será tratada como um conjunto de bytes no formato big-endian (um formato de armazenamento e processamento de dados computacionais). Neste ponto, inicia-se a conversão dos dados para Base58, utilizando um alfabeto especial (definido na imagem a seguir). Ao longo desse processo, toma-se o cuidado de normalizar o resultado para que não tenha zeros de Base58 no início da string (caso em que são representados com o valor "1").
- No final, o processo termina com uma concatenação de todos os "1"s resultantes do passo anterior para obter o valor final de Base58.
Usado em endereços e outros dados criptográficos dentro do Bitcoin e além
O uso de Base58 pode ser visto em diferentes partes do Bitcoin. Por exemplo, pode ser visto na codificação de endereços Bitcoin, já que são processados pela função Base58 para transformá-los nos endereços Bitcoin que conhecemos. Também é usado em chaves privadas no formato WIF. Mas não é usado apenas no Bitcoin, outras criptomoedas também usam essa função. Por exemplo, derivados de Bitcoin como Litecoin o Dogecoin eles usam Base58 em seu software, outras criptomoedas e moedas digitais como Ripple , Dash , Elixir e até mesmo Interplanetary File System (IPFS) ele também usa Base58 em seu software.
Isso deixa bem clara a enorme utilidade dessa função que tem ganhado espaço não só no mundo das criptomoedas mas também em diversos espaços dedicados a oferecer tecnologia descentralizada, e onde se inclui a criação de Satoshi Nakamoto não só por sua extrema funcionalidade, mas também como homenagem e lembrança de tudo o que foi conquistado desde que deu a conhecer ao mundo a sua criação.