Timestamply Tutorial

Decentralised, provably secure, publicly auditable, proof of existence without the need for trusted authorities has an extremely wide range of applicability.

Timestamply Tutorial
Timestamply Tutorial

In this video, I’ll do a demonstration of how to use timestamply to upload and verify files. As said previously, timestamply is a tool to prove that something exists at a certain point in time.

Time stamping facilitates proof of existence, which is useful and potentially disruptive to essentially anything that involves attestation.  For example, property transfer and ownership records, device attestation on secure multi-tenant networks, provable transparency in political processes, and many applications in the legal space around contracts.

Decentralised, provably secure, publicly auditable, proof of existence without the need for trusted authorities has an extremely wide range of applicability. So let’s have a look at how to use the service.


Firstly, let’s head over to timestamp.decred.org and create a timestamp. Timestamps can be created using any digital file. Once uploaded, the file will produce a single 32byte string of characters, a Merkle root also referred to as a hash. If the file is altered in any way, the Merkle root will not represent the file uploaded. It’s for this reason, once uploaded, the original files must be kept unaltered.

This jpeg has been compressed with file change, notice merkle root hash is different from one shown in video - 8e7bcd6bc04a9eae4b6df67ae0a4883d881e44771ea90d477751f2d97e6dd7d6

I’ll upload an image file, by dragging and dropping it to the upload area. Although the Merkle root will be created almost instantly, anchoring to the blockchain is done hourly. In this case, the next anchor time is in approximately 15 minutes. After anchoring, it then takes a further 6 block confirmations for the transaction to be irreversible.

Time stamp being anchored

On the generate page we can see the status of the timestamp and an icon that lets us know that we are waiting for it to be anchored, we also get a time indicator for how long this will take. On the right, we then have two icons, a copy button and a select button.

Below this, there are three options, the first is to clear the list of timestamps, currently we only have one, but we can upload as many as we like. Next to this, we have the “download hash” button, which lets us download a file that includes the hash displayed here. And finally, we have a greyed out download proof button, which will become active once the document's merkle root and transaction hash have been anchored and confirmed.

Below, we have a list of the most recent timestamps that have been anchored to the chain, including our one at the top. In the search box, it’s possible to paste a Merkel root to search for individual proofs. On this page, although the proof is currently unavailable for download, we get the information that will be available once the process is complete. Starting with the hash status, currently pending 6 confirmations. Then the details including the merkle root and transaction hash. Once complete, these details can be used to query the Decred blockchain and retrieve the block containing the transaction (and associated timestamp).

Once the file has been initially anchored, we can check its progress on the blockchain and the associated information. If we click on the transaction ID it opens the dcrdata block explorer where we can see the first confirmation has already been received, and the transaction has entered the blockchain and is included in block 749,852.

The transaction ID and the merkle root are both present and have been included as part of a standard transaction, free of charge to the time stamping service. The block also provides the time reference to verify that the document existed at the time reference displayed.

Once the final confirmation is received and the information is irreversible on the blockchain, the pending message is updated with the timestamped notification along with a tick icon. The download proof is now available along with the three pieces of information presented here – Time, Merkle root, and transaction ID. These pieces of data categorically prove that the document in question existed at a certain point in time.

To verify this, we can copy the merkle root and then head over to the verify page and paste the merkle root into the box provided and then hit the verify by hash button. If the document hash is available, the verify log will return a clickable hash with a tick. If you want to confirm that the hash belongs to the document, you can re-upload the document to the area provided by dragging and dropping. If the document is available, the verify log will confirm with a clickable hash, which can then be viewed to check the details of the timestamp.

As you can see, it’s effortless to create and verify a timestamped document on the Decred blockchain, this is done at no cost to the person creating the timestamp or the person wanting to verify. Which is in complete contrast to the highly expensive services of notaries and other legally bounding contract services.