Uma árvore de Merkle (também chamada de árvore de hash binária) é uma estrutura de dados usada em blockchains para resumir e verificar grandes conjuntos de dados de forma eficiente. Cada nó folha contém o hash de um bloco de dados (uma transação), cada nó não folha contém o hash de seus nós filhos e a raiz — a raiz de Merkle — é um único hash que representa todas as transações em todo o bloco.
Tanto o Bitcoin quanto o Ethereum usam árvores de Merkle para organizar as transações dentro de cada bloco. A raiz de Merkle é armazenada no cabeçalho do bloco, possibilitando as provas de Merkle — provas matemáticas de que uma transação específica está incluída em um bloco usando apenas um pequeno número de hashes (O(log n)), em vez de exigir o download de todas as transações. Isso permite uma verificação leve para SPVs e clientes leves sem a necessidade de baixar toda a blockchain.
Estrutura da Árvore Merkle
4 transactions in a block: Tx1, Tx2, Tx3, Tx4
Step 1: Hash each transaction (Bitcoin uses double SHA-256)
H1 = SHA256(SHA256(Tx1)) = "abc..."
H2 = SHA256(SHA256(Tx2)) = "def..."
H3 = SHA256(SHA256(Tx3)) = "ghi..."
H4 = SHA256(SHA256(Tx4)) = "jkl..."
Step 2: Hash pairs of child nodes
H12 = SHA256(SHA256(H1 + H2)) = "mno..."
H34 = SHA256(SHA256(H3 + H4)) = "pqr..."
Step 3: Hash to root
Merkle Root = SHA256(SHA256(H12 + H34)) = "stu..."
Tree structure:
Merkle Root (stu...)
/ \
H12 (mno...) H34 (pqr...)
/ \ / \
H1(abc) H2(def) H3(ghi) H4(jkl)
| | | |
Tx1 Tx2 Tx3 Tx4
Merkle Proof for Tx3 (prove Tx3 is in block):
Provide: H4, H12
Verifier computes:
H3 = hash(Tx3) ← from the transaction itself
H34 = hash(H3 + H4) ← H4 provided
Root = hash(H12 + H34) ← H12 provided
If computed Root matches block header Root → Tx3 confirmed ✓
Data required: 2 hashes (not all 4 transactions)
For a block with 4,096 transactions:
Proof requires only 12 hashes — not 4,096
For 1,000,000 transactions: ~20 hashes
Nota sobre contagens ímpares de transações: Se um bloco contiver um número ímpar de transações, o hash da última transação será duplicado para formar um par — uma peculiaridade conhecida da implementação da árvore de Merkle do Bitcoin.
Aplicações da Árvore de Merkle
| Aplicação | Como as árvores Merkle são usadas |
|---|---|
| Blocos de Bitcoin | A raiz Merkle da transação é armazenada no cabeçalho do bloco; permite provas SPV para carteiras leves. |
| Estado do Ethereum | Merkle Patricia Trie (MPT) para estados de contas, armazenamento e registros de transações/recibos; Verkle Trees planejado como atualização. |
| Elegibilidade para Airdrop | As provas Merkle verificam endereços individuais na blockchain sem armazenar a lista completa de destinatários no contrato. |
| Provas ZK | As provas de Merkle podem ser verificadas dentro de circuitos ZK para provas de inclusão compactas. |
| Git (controle de versão) | O Git utiliza um DAG (Grafo Acíclico Direcionado) endereçado por conteúdo de objetos — uma estrutura inspirada e intimamente relacionada às árvores de Merkle. |
| Transparência do certificado | Os registros Merkle somente para anexação permitem a auditoria pública de todos os certificados TLS emitidos. |
| clientes apátridas | As provas Merkle/Verkle permitem que os nós verifiquem blocos sem armazenar o estado completo. |
Perguntas frequentes
P: Como os airdrops DeFi usam árvores Merkle?
Os airdrops utilizam árvores Merkle para comprovar a elegibilidade na blockchain sem precisar armazenar todos os endereços elegíveis no contrato, o que seria proibitivamente caro em larga escala. O protocolo cria uma árvore Merkle com todos os endereços e valores elegíveis, e a raiz é armazenada na blockchain. Os usuários elegíveis enviam seu endereço juntamente com uma prova Merkle — um pequeno conjunto de hashes. O contrato verifica a prova comparando-a com a raiz armazenada e, se válida, libera a solicitação. Isso permite a verificação eficiente em termos de gás de milhões de endereços elegíveis com apenas uma única raiz Merkle de 32 bytes armazenada na blockchain.
P: O que é uma Merkle Patricia Trie?
O Ethereum utiliza uma variante mais complexa chamada Merkle Patricia Trie (MPT) — que combina uma árvore Merkle (hash criptográfico para verificação de integridade) com uma trie Patricia (uma estrutura comprimida por prefixo para busca eficiente de chave-valor). O Ethereum mantém três MPTs separadas por bloco: a trie de estado (todos os saldos de contas e armazenamento de contratos), a trie de transações (todas as transações no bloco) e a trie de recibos (resultados e registros de execução de transações). Isso possibilita provas de estado eficientes — comprovando o saldo de qualquer conta ou qualquer valor de armazenamento em qualquer bloco histórico. O roteiro do Ethereum inclui a transição de MPTs para Árvores Verkle , que produzem provas ainda menores e permitem clientes sem estado.
P: Como as provas Merkle ajudam os clientes leves (carteiras SPV)?
Uma carteira leve — como uma carteira Bitcoin para dispositivos móveis — não baixa o blockchain completo, apenas os cabeçalhos dos blocos (80 bytes cada). Para verificar se uma transação foi confirmada, ela solicita uma prova Merkle de um nó completo: um pequeno conjunto de hashes que comprova que a transação está incluída em um bloco específico. Para um bloco Bitcoin com milhares de transações, essa prova requer aproximadamente 20 hashes, em vez de baixar todas as transações. Isso permite a verificação de transações com kilobytes de dados em vez de gigabytes, viabilizando carteiras de criptomoedas práticas para dispositivos móveis.
P: O que acontece se uma árvore Merkle tiver um número ímpar de folhas?
Na implementação do Bitcoin, se houver um número ímpar de transações, o hash da última transação é duplicado para que possa ser pareado e calculado. Essa é uma peculiaridade conhecida do design original da árvore de Merkle do Bitcoin e não tem implicações de segurança na prática, embora tenha sido considerada deselegante por pesquisadores do protocolo.
P: Qual a diferença entre as árvores Merkle e as árvores Verkle?
Árvores de Verkle são uma proposta de sucessora para as Árvores de Merkle Patricia no Ethereum. Elas utilizam compromissos vetoriais (baseados em criptografia de curva elíptica) em vez de compromissos baseados em hash, produzindo provas drasticamente menores. Uma prova de Verkle para um grande número de folhas pode ter um tamanho muito menor do que uma prova de Merkle equivalente — uma propriedade crucial para viabilizar clientes Ethereum sem estado que não precisam armazenar o estado completo.
Termos relacionados
SHA-256 · Função Hash Criptográfica · Bitcoin · Ethereum · Cliente Leve (SPV) · Airdrop · Prova ZK · Árvore Verkle · Merkle Patricia Trie
Dica da UPay: As árvores de Merkle são o motivo pelo qual a verificação em blockchain é eficiente, e não apenas teoricamente completa. Quando você verifica uma transação no Etherscan, está efetivamente verificando uma prova de Merkle. Quando você reivindica um airdrop enviando uma transação on-chain, está enviando uma prova de Merkle da sua elegibilidade. Quando uma carteira móvel confirma um pagamento em Bitcoin sem baixar toda a blockchain, ela está usando SPV com provas de Merkle. Compreender as árvores de Merkle ajuda você a entender por que a verificação em blockchain é criptograficamente comprovável e praticamente eficiente — você nunca precisa baixar tudo para verificar nada.
Aviso: Este conteúdo tem fins meramente educativos e não constitui aconselhamento financeiro.









