Um hash raiz ou raiz merkle é um tipo especial de hash criado para facilitar a verificação de dados dentro de uma árvore Merkle. Sem dúvida, uma estrutura de computação interessante com utilizações em muitas áreas e uma delas é a tecnologia blockchain.
El hash de raiz o hash de raiz, é o nome dado ao hash resultante de um árvore de merkle. Sua principal utilidade é servir de marcador para indicar a confiabilidade das informações da árvore Merkle em questão. Algo que é muito útil em uma rede P2P.
Para explicar melhor essa situação, vamos imaginar o seguinte exemplo:
Juan quer instalar um nó Bitcoin cheio. Durante sua inicialização, o nó O Bitcoin deve ser sincronizado com a rede. Isso a fim de obter todas as informações acumuladas no blockchain Bitcoin Para conseguir isso, o novo nó Bitcoin fará o download de todas essas informações. No entanto, o Bitcoin é uma rede sem confiança que baseia sua operação em uma série de funções criptográficas. Isso para garantir a veracidade das informações sem a necessidade de confiar em terceiros.
Para fazer isso, ele usa funções de hash criptográficas, como SHA-256. À medida que o nó baixa as informações, ele verifica se os hashes "mais confiáveis" estão corretos. Se estiverem, o nó Bitcoin continua seu trabalho de download. Caso contrário, ele descarta as informações e começa a baixar as informações de outra nova fonte onde todos os hashes confiáveis correspondem. Uma vez concluído o download, o novo nó pode iniciar seu trabalho, certificando-se de que todas as informações foram verificadas e estão corretas.
O exemplo dado deixa claro para nós a utilidade do hash raiz ao verificar a autenticidade dos dados recebidos. Mas também é perfeitamente aplicável a todos os blockchains e seus processos de sincronização completos.
Como você cria um hash de raiz?
Um hash raiz é gerado a partir de um hash incremental das informações em cada bloco de dados. Este processo garante que cada um dos blocos de informação seja tratado e marcado com um hash único e irrepetível. Veja, por exemplo, fazer uma árvore Merkle usando o algoritmo de hash SHA-256. Neste caso, nossos blocos de dados são:
Assim que tivermos os blocos de dados em mãos, começaremos a fazer o hash de cada um deles. Para isso, usaremos a função SHA-256 que nos daria o seguinte resultado.
Assim, temos que atribuir a cada bloco um hash SHA-256 único e irrepetível. Esta será a nossa marcação para reconhecer a autenticidade e como organizaremos nossa árvore Merkle. Continuando com o procedimento, deixamos de juntar os blocos de dados da seguinte forma:
Como você pode ver, nós concatenamos os hashes dos blocos próximos uns com os outros em pares. Portanto, temos os pares AB, CD, EF, GH. Ao final da primeira rodada, continuamos construindo a união dos hashes mas desta vez com os pares ABCD e EFGH. E finalmente acabamos concatenando tudo em um único hash que inclui os hashes de ABCD e EFGH para dar origem ao merkle raiz (ABCDEFGH).
Este último bloco no topo é nossa raiz de hash ou merkle. É o hash resultante da Árvore Merkle.