Árvores de Merkle na prova de reservas: como um hash tranca milhões de saldos

2026-09-10

Árvores de Merkle na prova de reservas: como um hash tranca milhões de saldos

Uma árvore de Merkle permite que uma corretora publique um único valor curto que a compromete de uma vez com cada saldo de usuário. Cada usuário vira uma folha, as folhas são hasheadas aos pares para cima até restar uma raiz, e qualquer mudança em qualquer ponto abaixo produz uma raiz completamente diferente. Por isso uma raiz publicada é um compromisso e não uma promessa, e por isso você prova a sua inclusão sem ver os dados de mais ninguém.

Como funciona uma árvore de Merkle na prova de reservas: folhas, hashing aos pares para cima e uma raiz que muda se algo abaixo mudar

Que problema uma árvore de Merkle resolve

Uma corretora quer dizer algo sobre milhões de saldos sem publicá-los. Publicar a lista exporia cada cliente; publicar um total não prova nada, porque um total pode ser montado com qualquer conjunto de números.

É preciso um valor curto o bastante para publicar, derivado de cada saldo e impossível de conciliar com outro conjunto de saldos. Aí a corretora se compromete publicamente com o conjunto inteiro, e cada usuário verifica separadamente que a sua linha fazia parte daquilo com que ela se comprometeu.

É exatamente esse o trabalho de uma árvore de Merkle, e explica por que se usa essa estrutura e não um simples hash de uma lista concatenada. Um hash plano também mudaria se os dados mudassem, mas obrigaria você a ter cada saldo em mãos para conferi-lo, o que destrói a exigência de privacidade.

As partes, com nome

Termo O que é Por que importa
Folha O hash dos saldos de um usuário na fotografia É a linha que você confere pessoalmente
Texto da folha A cadeia exata hasheada para formar a folha Diferença de formato muda o hash
Irmão O outro hash necessário em cada nível É o que o seu arquivo de prova contém
Caminho de prova Os irmãos da sua folha até a raiz É curto mesmo com milhões de usuários
Raiz O único hash no topo O valor que a corretora publica

Leia a segunda linha duas vezes. Uma folha é o hash de uma cadeia específica, e se a cadeia for montada de outro jeito o hash é outro: por isso a versão do algoritmo precisa ser publicada junto com a raiz.

Como uma folha é montada

Uma folha é o hash de um texto curto que descreve uma conta no instante da fotografia. Esse texto nomeia a versão do algoritmo, o identificador da divulgação a que pertence, um identificador de registro para a conta e os saldos nos ativos cobertos.

Duas regras de formatação fazem mais trabalho do que parecem. Os saldos são escritos com número fixo de casas decimais, então a mesma quantia sempre produz o mesmo texto, e os ativos aparecem em ordem fixa em vez da ordem que um sistema porventura emitiu. Sem qualquer uma das duas, duas implementações hasheariam a mesma conta de forma diferente e a verificação independente falharia por motivos que nada têm a ver com honestidade.

A conta é identificada por um identificador de registro e não por nada a seu respeito. É isso que permite publicar a estrutura da árvore sem informar quem está nela. Os campos publicados em volta estão em como ler um relatório de prova de reservas.

Como a árvore cresce para cima

As folhas são combinadas aos pares. Dois hashes são juntados numa cadeia e essa cadeia é hasheada, produzindo um nó um nível acima; esses nós são pareados do mesmo jeito, e o processo se repete até restar um único valor.

A ordem importa em cada junção, e é esse detalhe que derruba quem escreve um verificador. Cada passo tem um lado esquerdo e um direito, e hasheá-los na ordem errada dá outro resultado. Um arquivo de prova registra, portanto, não só qual hash irmão usar em cada nível, mas de que lado ele está, e o seu verificador precisa respeitar essa instrução em vez de ordenar os dois valores.

Como a árvore se reduz pela metade a cada nível, o caminho de qualquer folha até a raiz é curto. Um conjunto de milhões de contas produz uma prova de poucas dezenas de hashes, e é por isso que essa conferência roda num celular instantaneamente, sem baixar o conjunto inteiro.

Por que a adulteração é detectável

Funções de hash têm a propriedade de que uma mudança pequena na entrada produz uma saída sem relação. Mude um saldo na menor quantia representável e o hash da folha muda por completo, o nó pai muda, e com ele cada nó no caminho até a raiz.

É isso que transforma publicação em compromisso. Uma vez pública a raiz, a corretora não consegue revisar um saldo, inserir uma conta nem remover uma sem produzir uma raiz diferente. Não dá para fazer em silêncio nem fazer para um usuário sem quebrar a verificação de todos cujo caminho passa pelo mesmo ramo.

O compromisso só vincula se a raiz foi publicada antes de alguém ter interesse em que ela estivesse errada, então o momento e o registro público da raiz pesam tanto quanto a matemática. Como fazer a comparação você mesmo está em como verificar a prova de reservas.

Por que os vizinhos continuam privados

O seu caminho de prova contém hashes de outras partes da árvore, e um hash não é reversível aos dados de onde veio. Você fica sabendo que um irmão existe e qual é o hash dele; não fica sabendo de quem são os saldos abaixo nem quanto valem.

Essa assimetria é justamente o que faz a estrutura combinar com o problema. Cada usuário confirma a própria inclusão e nenhum aprende nada sobre outro, sem que a corretora precise confiar em ninguém nem publicar uma lista de clientes.

As implementações costumam reforçar isso executando a conferência localmente em vez de devolver os seus dados a um servidor. Aqui o argumento de privacidade e o de verificabilidade apontam para o mesmo lado, o que é incomum e merece nota.

Onde a estrutura para de ajudar

Uma árvore de Merkle prova pertencimento a um conjunto. Ela diz que a sua linha estava na árvore cuja raiz foi publicada, e não diz absolutamente nada sobre se aquele era o conjunto certo.

Daí decorrem três limites. A árvore não diz se todas as contas foram incluídas, porque uma conta omitida não deixa rastro para quem ficou. Não diz se os ativos existem, o que é uma afirmação on-chain à parte e não uma propriedade da estrutura. E nada diz sobre passivos além dos saldos que entraram, assunto de prova de reservas e passivos.

Nada disso é defeito da criptografia. É a fronteira do que se pode pedir a uma prova de pertencimento, e conhecer a fronteira é o que impede que a estrutura seja vendida por mais do que vale.

Em resumo

Uma árvore de Merkle transforma milhões de saldos num valor publicável e dá a cada usuário um caminho curto provando que a sua linha está debaixo dele. Folhas são hashes de registros de formato fixo, nós são hashes de pares, e a ordem de concatenação em cada nível faz parte da especificação, não é um detalhe.

Sua força é que adulteração depois da publicação não tem como ser escondida e que inclusão pode ser provada sem expor ninguém. Sua fronteira é que só prova pertencimento: se o conjunto estava completo, se os ativos existem e quanto somam os passivos ficam fora da árvore. Continue lendo os conteúdos da Bitbase Academy.

Aviso: Este artigo é conteúdo educacional da Bitbase Academy, fornecido apenas para fins informativos. Não constitui aconselhamento de investimento, negociação, tributário ou financeiro. Criptoativos são voláteis; avalie seu próprio risco. Escrito em setembro de 2026; consulte as informações oficiais mais recentes.

Fontes

[1] Bitbase, Prova de reservas — divulgação mensal, raiz de Merkle e verificador de código aberto www.bitbase.com

Artigos relacionados

Mais