“Criptografia é ao mesmo tempo uma arte e uma ciência que envolve ocultar comunicações”.
É mais arte do que ciência. Ciência é apenas uma técnica utilizada para converter uma visão artística em um procedimento matemático, nesse caso.
Introdução:
Árvores de Merkle existem nos campos da criptografia e da ciência da computação há muito tempo, bem antes de existir a blockchain que nós conhecemos e apreciamos. Atualmente, as vemos utilizadas com frequência para verificação de dados.
O que é uma árvore de MERKLE?
Uma árvore de Merkle é uma estrutura de dados composta de camadas, cada uma delas composta de hashes das camadas filhas. Uma árvore de Merkle é frequentemente representada por uma árvore de hash binária com cada nó tendo no máximo dois filhos. Os ramos representam o hash de hashes combinados de dois filhos. Esse processo de re-hashing da concatenação de nós filho para construir o nó pai é repetido até que o hash raiz ou a raiz de Merkle seja obtida. Além disso, é uma árvore na qual é gerado um hash de cada nó com os conteúdos dos nós filho e é gerado o hash de cada ramificação com os conteúdos dos nós filho. A raiz é o nó do topo enquanto as folhas são os nós da base. As folhas representam o hash gerados dos dados iniciais.
Ela é representada por um valor que é o resultado de alguma função hash criptográfica. As funções hash são de uma via, o que significa que é fácil produzir uma saída a partir da entrada, mas computacionalmente inviável determinar uma entrada a partir da saída.
Explicação:
Todos sabemos que executar uma ação em um Contrato Inteligente, como uma transferência, custa dinheiro (ou Ether em palavras técnicas), que é pago como gas para os nós de validação da rede. Imagine que você tenha que fazer centenas de transferências; dadas as altas taxas de gas na rede principal da ETH, isso é muito dinheiro.
Esta é uma ocorrência razoavelmente regular para os airdrops de NFT ou no setor de apostas. Em certas situações, as árvores de Merkle vêm em ajuda para reverter as responsabilidades. E se, em vez de executar uma transferência para eles, fizermos com que todos os possíveis destinatários reclamem seus tokens? Como eles serão responsáveis pelo pagamento do gas para reivindicar os tokens, nosso sistema irá escalar melhor.
Vamos ver como isto funciona na prática. Se conhecemos todos os endereços, podemos usar uma árvore de Merkle para encontrar uma raiz Merkle única. Envie a cada um destes endereços uma prova representando um nó de árvore.
Eles podem reivindicar os tokens com provas. Nossa raiz Merkle pode validar as provas e confirmar que são da mesma árvore. Se a validação for bem sucedida, podemos assumir que a prova é legítima e emitir os tokens.
Característica dos Nós da Árvore de Merkle:
As árvores de Merkle têm três tipos de nós:
Nós Pai
Os nós pai podem ser encontrados em qualquer nível da árvore, mas estão sempre acima dos nós folha. Os nós pai podem nutrir apenas um ou dois nós de cada vez. O valor de um nó pai é determinado pelo hash dos nós abaixo dele, indo da esquerda para a direita. Como várias entradas sempre darão hashes diferentes, a ordem em que os hashes dos nós de fomento são concatenados é crítica. Dependendo do tamanho da árvore, os nós pai podem nutrir nós pai adicionais.
Nós Folha
O valor desses nós é o resultado do hash dos dados originais usando um determinado algoritmo de hash. Há tantos nós folha em uma árvore quanto há itens de dados originais para fazer hash. Por exemplo: Nove nós folha são necessários para gerar o hash de nove bits de dados.
Nó Raiz
O nó raiz é gerado a partir do hash dos nós de dois pais abaixo dele, indo novamente da esquerda para a direita. Uma árvore de Merkle tem apenas um nó-raiz, que contém o hash raiz. Como já foi dito, empregar uma Árvore de Merkle dentro de um contexto NFT (ERC-721) seria vantajoso nos casos em que um certo número de tokens é reservado para uma whitelist. A Árvore de Merkle deve ser pré-calculada e, portanto, empregar dados únicos para cada membro.
Requisitos da blockchain:
Considere uma blockchain sem Árvores de Merkle, para entender sua importância. Vamos utilizar o Bitcoin já que ele utiliza Árvores de Merkle e é mais simples de entender.
Sem as Árvores de Merkle, cada nó da rede teria que manter uma cópia de cada transação Bitcoin já feita. Isso é um grande número de dados. Os pedidos de autenticação na Bitcoin precisam de grandes quantidades de dados para serem enviados através da rede, portanto, você mesmo deve verificar os dados. Para verificar que não foram feitas alterações, um computador de validação precisaria comparar os ledgers (registros).
As Árvores de Merkle é de fato uma solução. As informações de hash na contabilidade, isolando as provas dos dados. Provando que o envio de pequenas quantidades de dados através da rede é suficiente para validar uma transação. Também permite aos usuários comparar o poder computacional nominal e a largura de banda da rede de ambas as versões do ledger.
Conclusão:
As árvores de Merkle são uma parte importante da tecnologia Blockchain, embora você nunca possa usá-las por conta própria na vida real. Em vez disso, você pode usar bibliotecas conhecidas e auditadas, e normalmente não é uma boa ideia desenvolver algoritmos de criptografia por conta própria. A Merkle, deve-se salientar, prova ser melhor e pode ser escolhida enquanto valha a pena utilizá-la.
Vale ressaltar que as provas Merkle mantêm a integridade, mas não a disponibilidade. Saber que ninguém mais pode roubar seus bens não é muito confortável se o armazenamento de dados optar por bloquear o acesso e você não puder construir uma árvore de Merkle para chegar até eles. Como resultado, as árvores de Merkle funcionam melhor com sistemas de armazenamento descentralizados como o IPFS.
Tem sido referido que uma das ideias mais fundamentais na ciência da computação é a árvore de Merkle. Ela é amplamente utilizada em uma variedade de aplicações, e seu uso em moedas criptográficas tem gerado uma nova tecnologia de blockchain.
Esse artigo foi escrito por André Costa e traduzido por Fátima Lima. Seu original pode ser lido aqui.
Oldest comments (0)