Whitepaper
Technical design for verifiable digital timestamps
Version 2.1 · February 2026
We live in an era where digital content can be created, modified, and deleted without trace. AI-generated deepfakes are indistinguishable from reality. Screenshots can be fabricated. Websites change or disappear. There is no native mechanism in the digital world to independently verify that a specific piece of content existed in a specific form at a specific time.
The consequences are profound: whistleblowers can't reliably show they had evidence before an investigation began, researchers can't establish prior art with mathematical certainty, journalists can't reliably demonstrate a website said what it said before it was edited, and ordinary people can't reliably document they created something before someone else claimed it.
BitProof anchors the SHA-256 hash of any digital content to Bitcoin's blockchain via the OpenTimestamps protocol. This creates a mathematical proof that the content existed in exactly that form at the time the hash was included in a Bitcoin block, without requiring trust in any organization, including BitProof itself.
The key properties of this approach:
BitProof is most useful anywhere digital evidence can be edited, deleted, or disputed later. It is designed for practical proof of existence and integrity, not platform trust.
.bitproof bundle containing a manifest and the OTS proof.bitproof bundle containing all captured files, manifest, and OTS proof
Practical path: open Verify Proof, upload your original content and the .bitproof file, and confirm the result.
.bitproof proof
A .bitproof file is a standard ZIP archive containing:
{
"manifest.json" // Metadata, hashes, proof status
"proof.ots" // OpenTimestamps proof file
"screenshot.png" // (archives only) Full-page screenshot
"page.html" // (archives only) HTML source
"page.pdf" // (archives only) PDF rendering
}
The manifest is the machine-readable receipt inside every bundle. In practice, most readers only need three things:
Abridged manifest example:
{
"version": "2.0",
"type": "bitproof-timestamp" | "bitproof-archive",
"created_at": "ISO 8601 timestamp",
"file": { // file timestamp flow
"hash": "SHA-256 hex",
"algorithm": "SHA-256"
},
"bundle": { // archive flow
"hash": "SHA-256 of concatenated file hashes",
"algorithm": "SHA-256"
},
"proof": {
"method": "opentimestamps",
"status": "pending" | "confirmed"
},
"authorship": { // optional
"version": "1",
"algorithm": "Ed25519",
"key_id": "ed25519:...",
"public_key": "base64url",
"signature": "base64url",
"signed_payload": { "file_hash" | "bundle_hash" },
"created_at": "ISO 8601 timestamp"
}
}
Full field-level schema is documented in docs/spec/SPEC.md.
User's Browser BitProof Server Bitcoin
────────────── ─────────────── ───────
File -> SHA-256 ──hash──> OpenTimestamps stamp ──anchor──> Block
│ │
└─(optional Ed25519 sign)───┘
Server response: .bitproof ZIP
URL ─────────────> Playwright capture
│ screenshot.png
│ page.html
│ page.pdf
↓
Bundle hash -> OTS stamp ──anchor──> Block
│
Server response: JSON preview + .bitproof ZIP
The backend is fully stateless. It uses temporary directories that are deleted after each response. There is no database, no file storage, no user accounts.
BitProof can prove: integrity and existence timing. If the hash matches and the OTS proof verifies against Bitcoin, that content existed in that form on or before the confirmed block time.
BitProof does not prove: legal identity, factual truth, or exclusive ownership. Optional authorship signatures prove control of a signing key, not real-world identity.
Assumptions: Bitcoin history remains available, SHA-256 remains collision-resistant, and your local device hashes content correctly. Independent verification does not require trusting BitProof infrastructure.
Bitcoin is a widely used proof-of-work chain with long operational history and broad tooling support. Using OpenTimestamps on Bitcoin keeps proofs low-cost through Merkle aggregation and allows verification with standard OTS tooling.
BitProof focuses on simple, auditable timestamping for digital files and captured web content. The goal is to make independent verification practical without requiring data custody by this service.
Verify independently.
This page was archived using BitProof. The record below is the current canonical archive for this whitepaper page.
Verify flow: open Verify Proof and upload the original archive bundle.