Marcos Gabbardo
Oct 8, 2018 · 4 min read

Markle trees são partes fundamentais para o funcionamento do blockchain, elas permitem eficiência e segurança na verificação de uma massa grande de dados, permitindo validar a integridade do conteúdo de dados.

Basicamente markle tree é uma “árvore de hashs” onde cada folha da árvore é um hash do dado transacional e cada nó é um “hash do hash” até a raiz da árvore, normalmente denominada Markle Root.

Figura 1: Markle Tree das transações A, B, C e D.

Breve explanação sobre função hash

Para quem é familiarizado com as propriedades de uma função hash, sabe que elas podem funcionar como uma espécie de impressão digital do conteúdo de dados. Por exemplo se fizermos um hash de um arquivo qualquer que você tenha em sua máquina ou de um conjunto de texto, o retorno desta função será um conjunto de caracteres que podemos considerar praticamente únicos, ou seja, não existirá outro texto ou arquivo que passado para a mesma função hash retornará o mesmo conjunto de caracteres (Existe possibilidades de “colisões de hashs”, mas para este artigo vamos desprezar esta hipótese por ter probabilidade próxima a zero, se existir interesse o leitor pode encontrar aqui um pouco mais de informação sobre as probabilidades deste evento ocorrer…).

Neste site você pode escrever textos e testar a geração de hash para eles utilizando o tipo SHA256 (que é um tipo de hash de 256bits). Po exemplo, o texto “hello world” gera o hash:

B94D27B9934D3E08A52E52D7DA7DABFAC484EFE37A5380EE9088F7ACE2EFCDE9

Agora se você tentar mudar este texto, colocando por exemplo a primeira letra do texto em maiúscula “Hello world”, note que o hash gerado será totalmente diferente:

64EC88CA00B268E5BA1A35678A1B5316D212F4F366B2477232534A8AECA37F3C

Entendendo hashs e Markle Trees

Seguindo na explicação de Markle Trees, é possível visualizar na figura 1 que além do hash do conteúdo de uma transação (nas folhas da árvore), os nós da árvore são feitos os hashs dos hashs (hash AB e hash CD) das transações (estes seguem o mesmo princípio de serem únicos), levando ao final ao hash(hash(AB)+hash(CD)), um Markle Root, ou seja um hash único que para fins práticos representa o conteúdo analítico de cada uma das transações (A, B, C e D), ele é a impressão digital única de todas as transações (ou dados) daquele bloco.

Assim sendo, se qualquer informação de qualquer uma das transações for alterada, o hash também será outro, garantindo assim facilidade de verificação da integridade de transações em blocos do blockchain.

Markle trees não são apenas utilizadas no blockchain, mas antes disso em uma série de necessidades, principalmente onde é necessário validar a integridade dos dados. Por exemplo, em transmissão de arquivos P2P ela pode ser empregada para saber se o arquivo chegou íntegro ao receptor, ou mesmo bancos de dados como Apache Cassandra ou Amazon Dynamo DB que escalam através de réplicas, utilizam markle trees para tratar erros de replicação de dados.

Entendendo Markle Trees e Blockchain

A possibilidade de verificação da estrutura de dados e transações através do uso de markle trees, possibilitou a validação de integridade de blocos do blockchain de maneira eficiente.

Figura 2: “Merkling in Ethereum” by Vitalik Buterin https://blog.ethereum.org/2015/11/15/merkling-in-ethereum/

A estrutura da figura 2 representa os headers dos blocos de blockchain (do bitcoin) e a formação do markle root através dos hashs de transações. Estes headers dos blocos contém apenas 5 informações:

  • o hash do cabeçalho anterior: para fazer a “chain” de blocos do blockchain;
  • o timestamp: ou seja a data de quando o bloco foi gerado;
  • o valor de dificuldade da mineração: cada bloco pode ter uma dificuldade diferente de ser minerado, quando um bloco é finalizado é gravado nele a dificuldade que este teve para ser minerado;
  • o resultado da prova do trabalho (proof of work nonce): o resultado da prova de trabalho do minerador que minerou este bloco e que tem referência ao bloco anterior, é a comprovação da mineração correta, que é feita através de hash, só que com outro conceito, chamado hashcash que será trabalho de outro artigo;
  • o root hash da Merkle Tree.

São 3 os benefícios trazidos ao blockchain pelo emprego de markle trees:

  • Facilidade na prova da integridade e validade dos dados (transações);
  • Requer pouca memória ou espaço em disco porque após gerada, fazer a prova dos hashs é rápido e fácil.
  • As provas requerem poucas informações, o que facilita muito a transmissão das provas dos hashs pela rede.

Assim, o emprego merkle tree na construção dos blocos possibilita por exemplo que ao invés de baixar todas as transações de um bloco, um light node (de bitcoin) pode baixar apenas a cadeia de cabeçalho de cada bloco, onde cada cabeçalho tem apenas 80 bytes. Caso contrário, sem o emprego de markle tree na construção do blockchain, seria necessário baixar todas as transações e dados de todos os blocos praticamente impossibilitando a adesão de usuários básicos para realizar transações no blockchain (bitcoin), dificultando que pessoas sem conhecimento técnico pudessem comprar e ter bitcoins em seu poder sem preocupações com infraestrutura robusta.

Datastamp

Datastamp - Registrando Dados no Blockchain

Marcos Gabbardo

Written by

I speak only for myself

Datastamp

Datastamp

Datastamp - Registrando Dados no Blockchain

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade