A Árvore de Merkle é um método criptográfico que verifica, com segurança, a validade e a origem de um conteúdo específico em grandes estruturas de dados. Isso é possível porque um conjunto de dados completo, composto por qualquer quantidade de informações, pode ser representado por um único valor de tamanho fixo chamado “hash”.
Observação: é possível transformar qualquer tipo de dados em hash. Por exemplo, o parágrafo acima pode ser representado como o seguinte valor hash de tamanho fixo:
b280ea449f14c128518b490e5f36a1e6f88e17e2d49341ba92f0b38ef23dcbe03d131e0630833092093c226a3f694329dd542e540dd6bc087ee2b632fc2325de
Se quiser confirmar essa informação, recrie o hash aqui! Observe que o valor do hash muda totalmente quando são feitas pequenas mudanças no parágrafo (até mesmo de espaços em branco).
Como é possível resumir grandes quantidades de dados em um único hash?
Aqui entra em jogo a ideia de uma “árvore”. Como referência, lembre-se de que um grande conjunto de dados é geralmente composto por vários subconjuntos de dados. Por exemplo, a Bitso tem um conjunto de dados que engloba todos os ativos sob nossa custódia. Ele é formado por subconjuntos de dados, representados pelo saldo que cada cliente mantém na Bitso.
O método da Árvore de Merkle cria “folhas” individuais que representam um subconjunto de dados, e cada “nó folha” tem um hash que resume as informações contidas nesse subconjunto. Quando reunimos vários subconjuntos de dados “folha”, podemos construir um “ramo” de dados. O ramo também é representado por um hash, criado pela combinação de todos os hashes “folha” em um novo valor de hash de tamanho fixo. Ao reunir todos os hashes de “ramo”, podemos criar o hash final de “árvore”, resultante no Hash raiz de Merkle, representando todo o conteúdo englobado pela nossa estrutura de dados completa.
Por que isso é tão relevante?
Com esse método, é possível mostrar que um subconjunto de dados específico está de fato contido na estrutura de dados maior sem revelar seu conteúdo ou o conteúdo de outros subconjuntos de dados. Em outras palavras, você pode verificar que sua folha de dados "existe" na Árvore de Merkle.