Blockchain do Bitcoin – Função Hash

Browse By

Uma função hash é um algoritmo que mapeia dados de comprimento variável para dados de comprimento fixo. Os valores retornados por uma função hash são comumente chamados de hashes.

Um dos algoritmos mais conhecidos é o SHA256 (Secure Hash Algorithm), cuja saída tem 256 bits (64 hexadecimais). Esse é o algoritmo utilizado na rede Bitcoin e também em diferentes sistemas, como os Internet Bakings.

Do ponto de vista do Bitcoin, as funções de hash são usadas, por exemplo, nas transações, para assegurar um tamanho fixo antes de serem assinadas. Dessa forma, teríamos:

  1. hash := H(msg)
  2. sig := Sign(sk, hash)
  3. isValid := Verify(pk, hash, sig)

A função H é a função SHA256, que transforma a mensagem com as transações (msg) em um hash correspondente. As demais funções seguem o explicado na seção 2.

Existem diversos sites que permitem executar a função SHA256. Escolhemos um site simples para orientá-lo nessa prática, conforme o passo a passo a seguir.

1) Acesse o site https://goo.gl/e3841Q.

2) No campo “Data” digite, por exemplo, “Transfiro 10 bitcoins para carteira X32” e clique em “Calculate SHA256 hash”.

3) No campo “SHA-256 hash” será exibido o retorno da função de hash SHA256, no caso do texto acima sugerido, será:

4f7f81d5cb50aa5acd2f60f75f47dac30cced8b106e6597f36acaa232ff61c03

4) Experimente agora digitar “Transfiro 100 bitcoins para carteira X32” e clicar novamente em “SHA-256 hash”. Você verá que o hash é completamente outro.

Esse algoritmo apresenta algumas importantes características:

  • Qualquer alteração nos dados gera um hash completamente diferente;
  • O hash é ”praticamente” único e determinístico ( x = y => H(y) = H(x) );
  • ”Inviável” descobrir o texto de entrada a partir do hash (não inversível);
  • Resistente a colisões, ou seja, é muito difícil achar entradas que mapeiam para o mesmo hash.

Claramente a função de hash é uma excelente forma de identificar rapidamente mudanças em um conjunto de dados, pois se o hash não é o mesmo, os dados também não são. Essa função pode ser usada para transações, para conjuntos de transações e para blocos, impedindo assim qualquer alteração que passe despercebida, conforme discutiremos mais adiante.

ENTENDENDO O BLOCKCHAIN – O que todos devem saber.

Criado por ECOA PUCRIO, Rafael Nasser