This tutorial breaks down the OpenTimestamps protocol into the following granular steps:
Calculate the hash value associated to
the data file to be timestamped; the hash value
acts as a digital fingerprint, 'uniquely'
identifying the unmodified original document.
The hash is calculated locally inside the browser
without disclosing the document to third parties,
preserving privacy; no internet connectivity is required.
Submit the hash to a selected set of OpenTimestamps
public calendar servers
(e.g., btc.ots.dgi.io)
for attestation of its existence (timestamp)
in the Bitcoin blockchain using a Bitcoin transaction;
internet connectivity is required.
The submission receipt is saved locally.
In time, this hash will be attested in a Bitcoin block header
and the submission receipt will become upgradable to
attestation proof. The submission receipt is not an
attestation proof yet,
i.e., it cannot be verified immediately:
it is incomplete as it takes up to few hours for the timestamp
to get confirmed by the Bitcoin blockchain.
To avoid the inefficiency of one blockchain transaction for
every document hash, a calendar server provides
aggregation of multiple hashes
in a Merkle tree data structure and
performs their attestation in a single transaction,
effectively attesting only the Merkle tree root,
which is itself a hash value.
Load an existing OTS receipt/proof from a local file; no internet connectivity required.
Display the informations included in the OTS receipt/proof, including the actual commitment operations and attestations (if any); no internet connectivity is required.
Attempt the upgrade of the OTS receipt/proof with attestations
that might be available from the selected OpenTimestamps calendars;
internet connectivity is required.
To be upgraded to proof status, incomplete receipts require the
assistance of the remote calendars used for timestamping:
each calendar has to provide its attestation as path to a
Bitcoin block header.
Upgrading an OTS receipt adds the path(s) to the Bitcoin
block header(s), making it a self-contained
calendar-independent OTS proof.
Even proofs can be updated, if a calendar can add
its attestation to
the ones previously provided by other calendars.
Of course, the earliest attestation is the most relevant:
subsequent ones do not add relevant information.
Verify the attestations included in the OTS receipt/proof
(if any); internet connectivity is required.
OTS receipt/proofs can be verified independently from any
OpenTimestamps
server or facility, using a local
Bitcoin Core
node; anyway, since a web-page cannot access the local
filesystem, this page relies on public block-explorers
for verification.
First an upgraded proof is obtained from the selected calendar
servers if available (as in the step above, performed
also here to ensure updated informations),
then the receipt/proof status is displayed below.