Todos os posts

8 min de leitura

Provar um arquivo de um lote Merkle: o certificado de inclusão

Depois que muitos hashes de arquivos são publicados sob uma única raiz Merkle na Cardano, um certificado de inclusão é um pequeno arquivo para baixar que prova que um arquivo específico fazia parte daquele lote — verificável no seu próprio navegador, sem confiança na CardanoWall, para sempre.

Quando você publica um lote de arquivos na Cardano, apenas uma pequena impressão digital vai para a cadeia: uma única raiz Merkle que representa a lista inteira. Isso mantém a publicação barata. Mas levanta uma pergunta óbvia — se só a raiz está na cadeia, como você prova depois que um arquivo específico realmente estava no lote?

A resposta é um certificado de inclusão: um pequeno arquivo que você pode baixar e que prova que o hash de um arquivo específico fazia parte daquele lote publicado. Qualquer pessoa pode verificá-lo no próprio navegador, contra qualquer explorador público de Cardano, sem confiar na CardanoWall. E como a prova está embutida no arquivo, ele continua funcionando para sempre.

Este é o companheiro do dia a dia do agrupamento Merkle. O agrupamento é como você se compromete com milhares de arquivos de uma vez; um certificado de inclusão é como você pesca um deles de volta e o prova mais tarde.

Que problema um certificado de inclusão resolve?

Imagine que você publicou mil arquivos em um único lote no ano passado — uma pasta de contratos, um conjunto de artefatos de lançamento, um dia de logs de auditoria. Todos foram dobrados em uma só raiz Merkle, e essa raiz foi carimbada no tempo na Cardano. Barato, compacto, pronto.

Agora alguém contesta apenas um desses arquivos. Talvez uma contraparte pergunte: "Você consegue mostrar que este contrato exato existia antes do prazo?". A blockchain guarda apenas a raiz, não o arquivo nem a lista. Apontar para a transação prova que algum lote de tamanho conhecido existia — mas não que este documento estava dentro dele.

Um certificado de inclusão fecha essa lacuna. É um arquivo minúsculo e autossuficiente que diz, na prática: "o hash deste arquivo era o item número 42 do lote por trás desta transação Cardano, e aqui está a conta exata que qualquer pessoa pode executar para confirmar". Você entrega o certificado, e o outro lado verifica sem precisar que você, sua conta ou mesmo o nosso site ainda existam.

O que um certificado realmente contém?

Pense nele como um pacote de evidências lacrado, com três partes.

  • A impressão digital do seu arquivo. Não o arquivo em si — apenas o hash dele. O certificado nunca carrega o conteúdo do seu documento, então é seguro compartilhá-lo mesmo quando o arquivo é privado.
  • O caminho da prova. Uma curta lista de impressões digitais "irmãs" que permite a qualquer pessoa dobrar o hash do seu arquivo de volta, subindo pela árvore Merkle, e chegar exatamente à raiz publicada. É esta a parte que torna o certificado autossuficiente: a conta está embutida, então ninguém jamais precisa pedir a você o restante do lote.
  • A âncora na blockchain. A transação Cardano em que a raiz foi publicada, o tempo que a blockchain registrou para ela e alguns links de exploradores públicos, para que qualquer pessoa possa conferir por conta própria.

Ele também inclui uma linha claim em linguagem clara que diz o que o certificado prova, e uma breve nota sobre como verificá-lo de forma independente. Um certificado pode cobrir um arquivo ou vários de uma vez — cada um recebe o próprio caminho de prova e uma marca verified clara.

A CardanoWall pode lhe entregar esse pacote em alguns formatos: um arquivo JSON (o original legível por máquina que ferramentas podem reverificar) e um PDF (uma versão legível e imprimível para pessoas e processos jurídicos, com o JSON guardado dentro como anexo, de modo que o documento continua verificável por máquina).

Como você obtém um?

Você mesmo o cria, na página da transação, no seu navegador.

Abra a página pública da transação que carregou o lote. Como o registro contém uma raiz Merkle, a página oferece uma verificação de inclusão. A partir daí, são dois pequenos passos:

  1. Diga qual arquivo. Você cola o hash do arquivo ou simplesmente solta o arquivo na página: o seu navegador calcula o hash localmente e nunca o envia.
  2. Leia o resultado. A página busca a lista de folhas do lote, recalcula a prova e lhe mostra um resultado claro em verde (seu arquivo está no lote) ou vermelho (não está).

Quando está verde, você baixa o certificado — JSON, PDF ou ambos. Esse download é a prova portátil. Mande por e-mail, arquive, anexe a um contrato, deixe em uma sala de dados. A partir de agora, ela é totalmente independente da CardanoWall.

Tudo acontece no lado do cliente. Não geramos o certificado em um servidor para depois pedir que você confie nele; o seu próprio navegador faz o trabalho, e é exatamente por isso que o resultado é confiável.

Por que ninguém precisa confiar na CardanoWall?

Porque nada no certificado depende de nós sermos honestos, estarmos online ou mesmo continuarmos em atividade.

Há duas afirmações dentro de um certificado de inclusão, e ambas são coisas que qualquer pessoa pode verificar por si:

  • Seu arquivo estava no lote. Um verificador dobra o hash do seu arquivo ao longo do caminho da prova e confirma que ele reproduz a raiz publicada. Isso é pura aritmética — basta o arquivo do certificado, nada mais. Se até um único bit do seu arquivo tivesse mudado, a dobra cairia em uma raiz diferente e a verificação falharia.
  • A raiz está mesmo na Cardano. Um verificador procura a transação em qualquer explorador público de Cardano — Cardanoscan, AdaStat, um da escolha dele — e confirma que a mesma raiz aparece no registro na cadeia. Nenhum servidor da CardanoWall participa dessa consulta.

Juntas, essas duas verificações provam que o arquivo existia em ou antes do tempo que a blockchain carimbou naquela transação. E esse tempo vem da Cardano, não de nós. Não podemos adiantar um bloco, retroagir a data de uma transação ou editar a história em silêncio; a blockchain decide quando as coisas aconteceram. É justamente esse o sentido de ancorar a uma cadeia pública em vez de pedir que você confie no relógio de uma empresa.

Se a CardanoWall sumisse amanhã, todo certificado que já emitimos continuaria sendo verificável. A ferramenta de linha de comando de código aberto cardanowall, e qualquer ferramenta independente que entenda o formato, podem reexecutar as mesmas verificações.

flowchart LR
  A["Seu arquivo"] -->|"hash local"| B["Hash do arquivo"]
  B --> C["Dobrar o caminho da prova"]
  C --> D["Raiz recalculada"]
  E["Transação Cardano<br/>(explorador público)"] --> F["Raiz publicada + tempo de bloco"]
  D -->|"devem coincidir"| F
  F --> G["Existia em ou antes<br/>do tempo de bloco"]

O que um certificado não prova?

Um certificado é preciso sobre uma coisa e silencioso sobre todo o resto — e ser honesto quanto a isso é o que o torna confiável.

Ele prova que o hash de um arquivo específico existia em ou antes do tempo de bloco da blockchain, e que fazia parte do lote comprometido. É só isso. Em particular:

  • Não prova quem criou o arquivo. Um certificado não diz nada sobre autoria. Qualquer pessoa poderia ter publicado o lote. (No Label 309, a autoria é uma assinatura separada e opcional, nunca presumida — veja o que uma prova não prova.)
  • Não prova que o arquivo seja verdadeiro, exato ou lícito. Prova que os bytes existiam até certo tempo, não que aquilo que dizem esteja correto.
  • Não prova que o arquivo seja a única versão nem a original. Prova que este arquivo exato estava no lote — não que nenhuma outra versão exista.
  • Não é um carimbo de tempo "qualificado". É um carimbo de tempo ancorado em blockchain, da mesma família de outros carimbos de tempo de blockchain. É uma evidência corroborativa forte de cronologia, mas não é um carimbo de tempo eletrônico qualificado eIDAS emitido por uma autoridade regulada. Se um processo exige especificamente um carimbo de tempo qualificado, isto por si só não atende a essa exigência (veja prova de existência versus uma autoridade de carimbo de tempo).

O valor do certificado está exatamente em não afirmar nada a mais. Ele fixa a cronologia e a integridade, e deixa o significado para os documentos e as pessoas ao seu redor.

Como isso se relaciona com o OpenTimestamps?

Se você já conhece o OpenTimestamps, a ideia vai parecer familiar.

O OpenTimestamps lhe dá um pequeno arquivo de prova .ots: um carimbo de tempo portátil e autossuficiente que qualquer pessoa pode verificar depois sem confiar no serviço que o criou. Um certificado de inclusão é algo do mesmo formato — um arquivo de prova portátil que você pode entregar a qualquer um — com duas diferenças que vale a pena conhecer.

A autoridade de carimbo de tempo é a blockchain Cardano, com o tempo extraído do bloco que carregou a sua raiz, em vez de um servidor de calendário. E a conta da prova é a mesma construção de árvore Merkle usada em outras partes do padrão, então um único certificado pode pescar um arquivo de um grande lote comprometido. Mesmo espírito, âncora diferente.

Para uma comparação mais completa, lado a lado, veja como a Proof of Existence se compara ao OpenTimestamps.

A versão curta

Publique muitos arquivos sob uma única raiz Merkle e você mantém minúsculo o custo da blockchain. Um certificado de inclusão é como você prova depois que qualquer um desses arquivos realmente estava no lote: um pequeno download, verificável no seu próprio navegador, contra qualquer explorador público de Cardano, com o tempo fornecido pela cadeia e sem confiança na CardanoWall. O caminho da prova está embutido no arquivo, então o certificado continua funcionando muito depois de qualquer ferramenta, conta ou empresa específica ter desaparecido.

Leitura adicional

merkleproof-of-existencelabel-309