Skip to content

Transparency Log

Veristamp maintains a public, append-only transparency log. Every receipt is committed to this log, making it impossible to backdate or silently delete a receipt.

A sealed entry in the log establishes:

  • Existence — A receipt with a specific fingerprint existed at the stated time and was signed by Veristamp.
  • Inclusion — The receipt was committed to a public Merkle tree. The log operator cannot remove or modify entries without detection.
  • Anchoring — The daily epoch root is cross-timestamped by external public timestamp authorities (Apple, DigiCert, etc.), proving the ledger itself cannot be backdated.

Every 24 hours, all receipts from that day are sealed into a signed Merkle epoch:

  1. Pending receipts are gathered into a Merkle tree.
  2. The tree root is signed by Veristamp.
  3. The root is sent to 4 public timestamp authorities (DigiCert, Apple, GlobalSign, Microsoft). Their signed responses are bundled as external_proofs.
  4. The epoch bundle is published to roots.veristamp.in.
  5. The pending pool is cleared.

The Veristamp Ed25519 signature covers the receipt itself. The external TSA anchors cover the daily epoch root — not individual receipts.

This means: your receipt is signed by Veristamp. The epoch containing your receipt is anchored by public TSAs. These are two separate guarantees that work together.

All public artifacts are served from roots.veristamp.in:

PathContent
/.well-known/veristamp-roots/current.jsonLatest epoch root, signed
/.well-known/veristamp-roots/2026-06.jsonMonthly archive
/.well-known/veristamp-log/epochs/{epoch_id}.jsonFull epoch bundle

The log publishes enough to verify inclusion, but not enough to identify a file. Public epoch bundles contain only:

  • Receipt ID
  • Issued time
  • Key ID
  • Receipt signature
  • Nonce-bound leaf hash

The raw file hash and nonce are never published. You can prove inclusion using your private receipt combined with the public epoch bundle.

Every receipt bundle includes verify.html — a zero-dependency HTML file.

  1. Double-click verify.html
  2. Drop your file and receipt.json
  3. The browser runs local cryptographic checks (SHA-256 and Ed25519) to ensure integrity.
  1. File SHA-256 matches the receipt
  2. Ed25519 signature is valid against the keyring
  3. (If online) Receipt appears in the correct epoch bundle
  4. (If online) Leaf hash matches the published record
  5. (If online) Merkle root is intact (no tampering)
  6. (If online) Which TSAs anchored the epoch

If you just want to check the file hash:

bash
$ sha256sum yourfile

Compare the output to hash.value in receipt.json. If they match, the file is authentic.

For advanced users and auditors, the bundled verify.py script serves as a complete reference implementation. This script fetches the correct public epoch based on the receipt time, rebuilds the Merkle tree from scratch to verify its root, and verifies the leaf inclusion.

bash
$ python verify.py receipt.json yourfile --show-anchors

It will output the exact openssl ts -verify commands needed to cryptographically prove the time anchors against the Root CAs.