Checksum
Dados extras que permitem detectar erros
Um checksum é um pequeno pedaço de dado que permite verificar se outro pedaço de dado está igual ao esperado.
Eles são mais comumente encontrados em endereços para detectar erros de digitação, o que ajuda a evitar enviar bitcoins para o endereço errado.
Um checksum pode ser adicionado ao fim de um dado para criar um dado+checksum combinado. Quando você reinsere esse dado depois, dá para garantir que está tudo correto verificando se o dado ainda bate com o checksum.
Este tipo de checksum não ajuda na correção de erros. Ele detecta erros, mas não diz onde está o erro nem como corrigi-lo.
Localização
Onde os checksums são usados no Bitcoin?
- Endereços – Todo endereço Base58 (os que começam com 1 ou 3) contém um checksum.
- Chaves privadas WIF – O formato WIF contém um checksum.
- Chaves estendidas – Toda chave estendida (xprv/xpub) contém o seu próprio checksum.
- Mensagens de rede – Toda mensagem trocada entre os nós tem um checksum anexado, para detectar corrupção na transmissão.
Os endereços Bech32 modernos também contêm checksums, mas são mais complexos que os simples descritos nesta página.
Criando
Como você cria um checksum?
Um checksum é criado pegando os primeiros 4 bytes do HASH256 de um dado:
hash256(dado) = 05c4de7c1069e9de703efd172e58c1919f48ae03910277a49c9afd7ded58bbeb
checksum = 05c4de7c
HASH256
Verificando
Como você verifica um checksum?
Para verificar um checksum, você só precisa recalculá-lo a partir do dado e checar se bate com o checksum fornecido. Se não bater, o dado foi inserido incorretamente.