▲ Tower Verifier

Independent proof checker for The Tower. Works without The Tower being online.

You are on: file:// — confirm this matches the URL printed in your receipt's README before uploading anything.

Drag your tower-receipt-entry-N.zip here

or click to choose a file

READY

Drop a Tower receipt ZIP to verify it.

How this verifier works

  1. SHA-256 the entry text — must match receipt.hashes.hash_text.
  2. Walk the Merkle proof from your hash up to the batch root, using Tower's locked hex-string concatenation convention.
  3. Parse the OpenTimestamps proof inline (no third-party library — the entire OTS format handler is in src/verify-core.js, ~120 lines).
  4. Verify the 80-byte Bitcoin block header bundled in the ZIP — SHA-256d to derive the block hash, check its merkle_root against what the OTS proof walked to.

If all steps pass, the entry is anchored to a specific Bitcoin block. No block-explorer call is needed for confirmed entries — the math is self-contained.

Want to verify offline with a CLI instead?

The ZIP's README.txt contains step-by-step instructions for the standard opentimestamps-client CLI. That path works on any air-gapped machine with the OTS client installed.

Sourcing

This entire verifier is at github.com/neillgroom/tower-verifier under the MIT license. Clone it and open index.html in any browser — no build step, no dependencies beyond the vendored JSZip (used for reading the ZIP itself). Vendor provenance is locked in vendor/vendor-lock.json.