Todos os posts

9 min de leitura

Prova de reservas com raízes Merkle

Uma raiz Merkle ancorada com um carimbo de tempo Label 309 permite que você se comprometa com um instantâneo de reservas, passivos ou provas e demonstre a inclusão a clientes individuais — sem publicar cada conta.

Uma raiz Merkle pode tornar a verificação de um instantâneo de prova de reservas muito mais fácil, mas não prova solvência por si só. Ela prova que um conjunto específico de entradas foi comprometido em um momento específico. Se essas entradas resultam em um negócio solvente é uma questão à parte.

Eis o padrão. Uma corretora, um custodiante, uma fintech, um marketplace, um emissor de stablecoin ou uma equipe interna de tesouraria constrói uma árvore Merkle sobre um instantâneo de reservas ou passivos e, em seguida, ancora a única raiz de 32 bytes com um registro Label 309 na Cardano. Cada cliente, carteira ou linha de saldo é uma folha. Mais tarde, qualquer participante pode receber uma prova de inclusão curta, mostrando que sua entrada fazia parte do instantâneo comprometido — sem que todo o conjunto de dados precise jamais ser publicado.

O carimbo de tempo cumpre uma tarefa precisa: fixa quando esse comprometimento existiu, em uma cadeia pública, sem precisar confiar em nenhum servidor do emissor. A qualidade do próprio instantâneo continua dependendo de contabilidade, escopo, cobertura de passivos, controles de custódia e revisão independente.

O que é um instantâneo de prova de reservas?

Um instantâneo de prova de reservas é uma prova sobre ativos em um determinado momento.

Para empresas nativas de cripto, costuma significar provar que certas carteiras na cadeia mantinham certos ativos em uma certa altura de bloco ou momento. Em um processo mais robusto, também conecta esses ativos aos passivos dos clientes, aos livros internos, aos controles de custódia e à revisão independente.

Um instantâneo pode incluir:

  • saldos das carteiras de reserva;
  • identificadores de ativos;
  • alturas de bloco;
  • saldos de passivos;
  • comprometimentos de contas de clientes;
  • exclusões e ajustes;
  • relatórios de auditoria;
  • evidências de controle;
  • arquivos de conciliação;
  • atestações da administração.

O instantâneo não é um balanço vivo. É um comprometimento referente a um momento específico.

Por que usar uma raiz Merkle?

Porque o instantâneo completo costuma ser grande ou sensível demais para publicar.

Uma árvore Merkle permite que uma empresa se comprometa com muitas entradas usando uma única raiz de 32 bytes. Cada cliente, conta, carteira ou linha de saldo torna-se uma folha, as folhas têm seus hashes combinados em uma árvore e apenas a raiz vai para a cadeia. A raiz nada revela sobre as folhas com as quais se compromete, mas está vinculada a todas elas: altere qualquer folha, ou o número de folhas, e a raiz deixa de corresponder. Mais tarde, um participante recebe uma prova de inclusão — um caminho curto de nós irmãos, da ordem de log n hashes — mostrando que sua entrada fazia parte do instantâneo comprometido.

É isso que torna possível a divulgação seletiva:

  • um único cliente pode verificar apenas a própria inclusão;
  • a um auditor pode ser entregue a lista completa de folhas e o mapeamento de contas;
  • o público vê apenas a raiz com carimbo de tempo;
  • detalhes sensíveis de contas nunca precisam ser expostos.

Este é o mesmo mecanismo de agrupamento por trás de ancorar um registro para milhares de arquivos: a raiz é compacta, mas o que realmente importa é o processo subjacente.

O que o Label 309 acrescenta?

Acrescenta um carimbo de tempo público e independente que nenhuma parte isolada controla.

Um relatório de prova de reservas muitas vezes vive em um site ou em um PDF, e a raiz Merkle em uma postagem de blog. Mas um site pode mudar. Um PDF pode ser substituído. Um relatório pode ser atualizado discretamente, e uma raiz antiga pode desaparecer junto com ele.

Publicar a raiz do instantâneo em um registro Label 309 dá ao comprometimento, em vez disso, uma âncora pública de tempo na Cardano. Qualquer pessoa pode confirmar mais tarde que a mesma raiz existia até o momento do bloco da transação, usando apenas os metadados da transação e um explorador público da Cardano — sem servidor do emissor e sem confiança no domínio ou na infraestrutura da CardanoWall.

O registro também pode incluir:

  • o hash de uma declaração assinada;
  • hashes do instantâneo de ativos;
  • raízes do instantâneo de passivos;
  • URIs de relatório endereçadas por conteúdo;
  • papéis de trabalho de auditoria selados para destinatários selecionados;
  • um ponteiro de substituição para relatórios corrigidos.

O que deve entrar no instantâneo?

Defina a afirmação antes de construir a árvore.

O instantâneo deve deixar claro o que está provando. Um instantâneo apenas de reservas não é o mesmo que um instantâneo de reservas e passivos. Um instantâneo apenas de carteiras não é o mesmo que uma demonstração financeira auditada.

Campos úteis podem incluir:

  • id do instantâneo;
  • momento do instantâneo;
  • cadeia e id do ativo;
  • altura de bloco ou referência de livro-razão;
  • endereço de carteira ou id de conta interna;
  • saldo;
  • hash da entrada de passivo;
  • hash do identificador do cliente ou id ofuscado;
  • hash da folha de inclusão;
  • referência do auditor ou revisor;
  • hash do relatório;
  • declaração de escopo;
  • exclusões;
  • índice da folha Merkle.

O esquema deve ser determinístico. Se a construção da folha for ambígua, a verificação torna-se frágil.

Como os clientes podem verificar a inclusão?

A empresa entrega a cada cliente um pacote de prova.

Esse pacote pode incluir:

  • a própria entrada de saldo do cliente;
  • material de salt ou de ofuscação, se usado;
  • o caminho Merkle;
  • a raiz;
  • a referência da transação Label 309;
  • o hash do relatório;
  • instruções de verificação.

O cliente verifica que o hash de sua entrada resulta na folha, que o caminho Merkle se dobra até a raiz publicada e que a raiz corresponde àquela do registro Label 309 na cadeia. Nada disso exige que os servidores da empresa estejam on-line ou sejam honestos — as ferramentas Label 309 de código aberto, incluindo a ferramenta de linha de comando cardanowall, podem verificar um registro e checar provas de inclusão de forma independente.

Isso prova a inclusão naquele instantâneo. Não prova que todas as outras contas foram tratadas corretamente, e é exatamente por isso que a visão do auditor a seguir importa.

Como os auditores podem usar isto?

Os auditores podem inspecionar o conjunto completo de provas.

O público pode ver apenas a raiz e um relatório. A um auditor ou regulador pode ser entregue o manifesto completo, a lista de folhas, o mapeamento de contas, as evidências de carteira, os arquivos de conciliação e os papéis de trabalho selados.

O Label 309 pode ajudar ao ancorar:

  • a raiz pública;
  • o hash do manifesto privado completo;
  • as evidências de saldo das carteiras;
  • os arquivos de passivos;
  • as exportações de conciliação;
  • os rascunhos do relatório de auditoria;
  • o relatório final assinado.

Isso torna a trilha de auditoria mais difícil de reescrever depois do ocorrido.

E quanto às correções?

As correções devem ser visíveis, não ocultadas.

Se a empresa descobre um erro em um instantâneo, ela deve publicar um registro corrigido em vez de substituir o relatório antigo silenciosamente. O Label 309 tem um mecanismo embutido para isso: um ponteiro supersedes carrega o hash da transação do registro anterior, criando um vínculo somente de acréscimo da correção de volta ao que ela substitui.

Vale entender duas coisas sobre esse vínculo. Primeiro, a substituição não remove nem invalida o registro anterior — a cadeia é somente de acréscimo, então a raiz original permanece na cadeia e verificável de forma independente para sempre. O novo registro fica ao lado dela e aponta de volta; os leitores podem ver ambos. Segundo, para que o vínculo seja confiável, ambos os registros devem ser assinados pela mesma chave. Qualquer pessoa pode publicar um registro que afirma substituir o seu, então espera-se que verificadores e ferramentas honrem um vínculo de substituição apenas quando o registro que substitui é assinado por uma chave também presente no original. Se você pretende emitir correções, assine seus instantâneos.

Isso é muito melhor do que fingir que a primeira raiz nunca existiu.

O que isto não prova?

Não prova solvência por si só.

Não prova que todos os passivos foram incluídos.

Não prova que os ativos estão livres de ônus.

Não prova que as chaves são controladas com segurança.

Não prova que os ativos não foram tomados emprestados temporariamente para o instantâneo.

Não substitui uma auditoria, uma revisão de regulador, controles contábeis ou a conciliação de passivos dos clientes.

O que ela prova é restrito e genuinamente útil: um comprometimento específico existiu em um tempo público, e é possível demonstrar que entradas individuais estão dentro dele. Como em qualquer Proof of Existence, é prova de tempo e integridade, não de verdade ou de direitos.

Onde isto pode ser útil fora das corretoras de cripto?

O mesmo padrão funciona em qualquer lugar onde um instantâneo tenha muitas entradas privadas.

Exemplos:

  • reservas de stablecoin;
  • relatórios de ativos tokenizados;
  • saldos de vendedores de marketplace;
  • saldos de custódia de fintechs;
  • instantâneos de tesouraria interna;
  • livros de participação acionária de funcionários;
  • passivos de pontos de fidelidade;
  • inventários de créditos de carbono;
  • reservas de sinistros de seguro;
  • livros de depósitos de clientes.

A ideia compartilhada é simples: comprometa-se com muitas entradas, revele seletivamente, preserve o carimbo de tempo.

A versão curta

Raízes Merkle tornam escaláveis os instantâneos de prova de reservas. O Label 309 torna a raiz carimbada no tempo e verificável de forma independente contra uma cadeia pública.

Use a raiz para se comprometer com o instantâneo. Use provas de inclusão para clientes e auditores. Use registros selados para provas sensíveis. Use a substituição — com assinaturas — para correções.

Depois, seja honesto sobre o limite: uma raiz Merkle carimbada no tempo não é solvência. É uma peça forte e à prova de adulteração de um processo de prova mais amplo. O próprio Label 309 é um padrão aberto e neutro quanto ao fornecedor, submetido ao processo de CIP da Cardano e atualmente em revisão pelos editores de CIP como uma proposta da categoria Metadata — o agrupamento, o hashing e a mecânica de substituição descritos acima são definidos no padrão, não em qualquer produto isolado.

Leitura complementar

compliance-legalmerkleaudit