Merkle Tree (Blockchain Hash Tree)

Por que confiar em nós

Merkle Tree é uma estrutura de dados usada em criptografia, blockchains e algumas criptomoedas para verificar a integridade dos elementos de dados. Isto posto, saiba o que é e como funciona uma Merkle Tree no artigo abaixo.

O que é uma Merkle Tree?

Uma Merkle Tree, também conhecida como hash tree, é uma estrutura de dados usada em criptografia, blockchains e algumas criptomoedas para verificar a integridade dos elementos de dados em um conjunto de dados maior.

As Merkle Trees consistem em blocos de dados, cada um dos quais é convertido em um hash exclusivo. Os hashes individuais são então emparelhados e hash novamente, um processo conhecido como concatenação. Esse processo continua até que apenas um único hash, a raiz Merkle, permaneça.

A raiz fornece um único ponto de referência para todo o conjunto de dados.

Techopedia Explica

As tree structures são estruturas de dados hierárquicas que têm uma relação pai-filho entre os nós. Com o tempo, colocar as raízes de uma árvore no topo de um diagrama tornou-se uma maneira padrão de representar estruturas de árvores na ciência da computação.

A razão para a orientação de cabeça para baixo pode ser atribuída a convenções históricas na diagramação. Por exemplo, muitas representações hierárquicas, como organogramas, são lidas naturalmente de cima para baixo.

Como as Merkle Trees são criadas

As Merkle Trees são construídas usando funções de hash criptográficas que convertem dados de entrada em cadeias de caracteres de tamanho fixo chamadas hashes. Cada hash na árvore representa um elemento de dados específico ou um bloco de elementos de dados. 

À medida que a “árvore” é construída para cima a partir da base (nível folha da árvore), cada hash subsequente representa uma combinação dos hashes filhos do pai, até que o hash superior, a raiz Merkle, represente efetivamente a totalidade dos dados de entrada.

Para construir uma Merkle Tree, todo o conjunto de dados é primeiro dividido em segmentos menores chamados blocos. Se não houver um número par de blocos, o último bloco será duplicado para obter paridade. Cada bloco recebe um hash, que se torna um nó da folha na árvore.

Para estabelecer a hierarquia da árvore, dois hashes de nó folha vizinhos são combinados (concatenados). O par concatenado é então “hashado” para produzir um nó pai que reside acima dos dois nós folha originais.

O processo de emparelhamento e hash continua camada por camada, subindo na árvore até que apenas um hash permaneça no topo. O hash final, conhecido como “raiz Merkle” ou “hash raiz”, resume todo o conjunto de dados.

Como as Merkle Trees são usadas para verificação de dados

As Merkle Trees permitem que itens de dados específicos que fazem parte de um grande conjunto de dados sejam verificados de forma rápida e eficiente, inspecionando um subconjunto dos hashes da árvore. Essencialmente, o processo envolve a verificação do caminho do bloco de dados em questão até a raiz Merkle.

Aqui está um detalhamento simplificado do processo de verificação:

  • Inicie o processo de verificação localizando o hash do bloco de dados específico a ser verificado.
  • Suba na árvore. Em cada nível da árvore, localize o hash adjacente (irmão) ao hash atual, concatene-o (combine-o) com seu irmão e faça o hash da combinação resultante.
  • Compare o hash recém-calculado com o hash do nó pai na árvore. Se houver uma correspondência, continue o processo até que a raiz Merkle seja alcançada.

Desde que os hashes recém-calculados correspondam aos hashes do nó pai na árvore original, a integridade do bloco de dados específico em questão pode ser verificada.

(Qualquer alteração nos dados causaria discrepâncias nos hashes de caminho ou na raiz Merkle.)

O papel das Merkle Trees nas Blockchains e Bitcoin

As Merkle Trees são úteis para verificar inconsistências e validar blockchains.

Ao organizar hashes de transação em uma Merkle Tree, qualquer nó de blockchain pode verificar de forma rápida e eficiente se uma transação específica existe dentro de um bloco. Essa estrutura também ajuda a garantir a integridade dos dados em um bloco específico, porque se uma única transação for alterada, a raiz Merkle (o hash superior da árvore) também mudará e tornará as inconsistências detectáveis.

No protocolo Bitcoin, quando um novo bloco é adicionado ao blockchain, cada bloco inclui a raiz Merkle de uma Merkle Tree no cabeçalho. Isso cria automaticamente uma “prova de inclusão” para cada transação de Bitcoin.

A prova de inclusão é uma forma de demonstrar que uma transação específica faz parte de um bloco sem ter que revelar ou verificar todas as transações nesse bloco. Essa prova é especialmente crucial para carteiras SPV (Verificação de Pagamento Simplificado) leves que não baixam o blockchain completo para verificar as transações.

As Merkle Trees também desempenham um papel na “prova de reservas”. A Prova de Reservas é um método usado por exchanges de criptomoedas e provedores de carteiras para provar que possuem fundos suficientes para cobrir os saldos de seus clientes.

Margaret Rouse
Technology Specialist
Margaret Rouse
Especialista em Tecnologia

Margaret é uma premiada redatora e professora conhecida por sua habilidade de explicar assuntos técnicos complexos para um público empresarial não técnico. Nos últimos vinte anos, suas definições de TI foram publicadas pela Que em uma enciclopédia de termos tecnológicos e citadas em artigos do New York Times, Time Magazine, USA Today, ZDNet, PC Magazine e Discovery Magazine. Ela ingressou na Techopedia em 2011. A ideia de Margaret de um dia divertido é ajudar os profissionais de TI e de negócios a aprenderem a falar os idiomas altamente especializados uns dos outros.