OPEN STANDARD · VERSION 1
Forever Proof
A small JSON document that proves a fingerprint existed before a specific Bitcoin block was mined, checkable by anyone with no help from whoever issued it. The format is open: anyone may produce or verify Forever Proofs, with no permission or fee.
The document
{
"format": "sebbi-forever-proof/1",
"subject": { "kind": "hash", "code": "NT-7Q2M-X9KD", "digest": "<sha256 of the file>" },
"leaf": "sebbi-notary/1|<sha256 of the file>",
"merkle": {
"algorithm": "RFC 6962 SHA-256 (leaf 0x00, node 0x01)",
"index": 41, "tree_size": 300,
"path": ["<hex>", "<hex>", "..."],
"root": "<hex>"
},
"bitcoin": { "state": "confirmed", "heights": [917204], "proof_ots_base64": "<OpenTimestamps proof of the root>" }
}Fields
| format | Always sebbi-forever-proof/1. |
| subject | What is being proven. kind is hash (a notarised fingerprint), humankeys (a Human Keys proof) or chain_block (a block on a sebbi.pro chain), with the fields for that kind. |
| leaf | The exact UTF-8 string placed in the tree. hash: sebbi-notary/1|<digest>. humankeys: sebbi-humankeys/1|<code>|<text_hash>|<verdict>|<sealed_at>. chain_block: the block's audit hash. |
| merkle | index, tree_size, path (sibling hashes, leaf upwards, hex) and root. RFC 6962: leaf hash = SHA-256(0x00 ‖ leaf), node = SHA-256(0x01 ‖ left ‖ right). Verified with the RFC 9162 §2.1.3.2 algorithm. |
| bitcoin | proof_ots_base64: a standard OpenTimestamps detached proof whose file digest is the Merkle root. state is pending until a Bitcoin attestation is present. |
Verifying
- Recompute the leaf from what you hold (the file's SHA-256, the Human Keys text fingerprint, or the chain block) and compare with
leaf. - Hash the leaf and fold it up
pathto the root. It must equalmerkle.root. - Decode the OpenTimestamps proof. Its file digest must equal the root.
- Replay every operation in the proof. For each Bitcoin attestation, the resulting message, byte-reversed, must equal that block's Merkle root as reported by independent sources or your own node.
- The subject existed before that block's time.
Built on two existing open standards: RFC 6962 Merkle trees (as used by Certificate Transparency) and OpenTimestamps. Nothing proprietary sits between the subject and Bitcoin.
Reference implementations
Python, standard library only: forever-verify.py. In-browser JavaScript: the verifier on sebbi.pro/forever (view source). Proofs are issued by the sebbi.pro notary.