This webpage is an interface to create and/or verify timestamp proofs using the OpenTimestamps protocol and its free public Bitcoin calendar servers. [If in a hurry, skip the following introduction at your own risk and go straight away to timestamping.]
A timestamp demonstrates that a document existed in a specific status prior to a given point in time, providing a document with a certain sure date (e.g. postmark). Law requires dates to be usually certified by public officials and notary services; for digital documents, timestamping is based on the digital signature of a Certification Authority (CA).
Digital data can be securely timestamped though the attestation of its hash value in a blockchain transaction: the hash value 'uniquely' identifies the document (as if it were its digital fingerprint), the transaction extends its native blockchain timestamping to the included hash value, therefore proving its existence at a given point in time. As a result, its blockchain attestation proves the existence of the original document itself prior to the timestamp moment.
The timestamping and content of a blockchain transaction are secured by the amount of computational effort performed after its inclusion in a block of the chain. Indeed, the more blocks are added to the chain after a given block, the more computationally intensive is tampering with the data of that block; even just trying to alter the timestamp of a transaction becomes technically and economically prohibitive, especially in the Bitcoin case.
Although there are many ways to realize a timestamp, OpenTimestamps is a vendor-independent blockchain-agnostic open protocol that defines a set of operations for creating provable blockchain timestamps and later independently verifying them; as such, it allows for third party auditability and is suitable for regulatory prescriptions.
OpenTimestamps attestation proofs can be verified independently from any server, vendor, or centralized infrastructure, simply using a local copy of the blockchain (e.g. a Bitcoin full node). Trust minimization is achieved because of this distributed, decentralized, independent, uncensorable, and cross-jurisdictional design. This webpage interface is just a facility and, since a webpage cannot access the local filesystem, relies on public Bitcoin block-explorers (e.g. blockstream.info) for verification.
To avoid the inefficiency of one blockchain transaction for every timestamp, an OpenTimestamps server provides aggregation of multiple document hashes in a Merkle tree data structure and attests only the hash of the Merkle tree root. Since the inclusion of a hash value leaf in a Merkel tree can be cryptographically proved and is part of the attestation proof, the single attestation of the tree root implicitly attests all the leaves. This aggregation before attestation approach results in almost unlimited scalability.
While anyone could timestamp with any permissionless blockchain by paying the appropriate transaction fees (using the OpenTimestamps protocol or any alternative approach), for convenience there are multiple public OpenTimestamps calendar servers (e.g. btc.ots.dgi.io), free to use without any registration or API key. A single calendar server can offer its services to multiple remote OpenTimestamps clients: verifiable timestamp are created almost instantly. The public free OpenTimestamps calendar servers use Bitcoin as timestamp notary, i.e. they make the Bitcoin transactions that will ultimately attest hash values in the Bitcoin blockchain.
Use the box below to:
Attestation proofs can be verified independently from any OpenTimestamps server or facility. The same is not true for the submission receipt, which can only be upgraded to proof using the OpenTimestamps calendar(s) used for submission.
The user is responsible to store both the stamped document (which has never been shared with the OpenTimestamps servers) and its attestation proof (which technically might be stored by the OpenTimestamps servers).
While the OpenTimestamps protocol is blockchain agnostic, a timestamp is as reliable as the used blockchain:
It should be obvious, but it is worth mentioning that timestamping (using the OpenTimestamps protocol or any alternative approach):