Blog: Time-Stamping with Blockchains (2015-02-25)

Due to the release of my newest project, NameStamp, today, I would like to offer some general thoughts on time-stamping in the context of decentralised blockchain systems like Bitcoin. This post is based on NameStamp's README file, which also contains some more technical details.

What is time stamping and why is it useful?

Time stamping is the process of creating a proof that something (in particular, a digital file) existed at some point in time. This can be very useful in a lot of situations. For instance, to prove authorship of some manuscript, song or other digital work: If you create a time stamp before you publish the work and then someone tries to "steal" it, you can use the time stamp to prove that you had the piece before everyone else. Or, if you rent a flat (could also be a car or something else, it does not really matter), you can take pictures of any damage present and time-stamp it. This allows you to prove later on that you were not the originator of the damage, since it was already present on the date when you moved in.

How is this related to Bitcoin?

Bitcoin creates digital money. Ownership of a particular balance is proved using asymmetric cryptography. In other words, if you own some bitcoins and want to send them to Alice, you write a message saying

I want to transfer X bitcoins out of my balance Y to Alice.

and sign it with your private key. Then you broadcast the message to the Bitcoin network, and every participating node can process the transfer if your signature matches the owner of "balance Y". However, a major difficulty in systems like this is double-spending: In addition to your message above, you could also create a message that spends the very same balance to Bob (or even back to yourself!). In this situation, the network needs a way to determine which of the two transactions is the "correct" one. A simple rule to resolve this conflict is to "use the earlier transaction". However, for this to work, one needs a way to determine an absolute order of events on which the network agrees upon.

This is the point where Bitcoin's time-stamping scheme comes in: Roughly speaking, all transactions are grouped into blocks. The blocks themselves form a hash chain, which implies that earlier blocks can not be manipulated without invalidating the whole chain. A particular process, called mining, is then employed to reach consensus about the correct chain. This leads to an absolute order of blocks, which is almost impossible to change afterwards. Since each block contains a real-world time, these blocks can also be interpreted as time stamps of the data contained in them (as well as all previous blocks of the chain).

Namecoin time stamps

While Bitcoin is, of course, designed to be money, the system can be "hacked" to include time stamps of actual data. One service that allows this is Proof of Existence. Namecoin, on the other hand, is specifically designed to store arbitrary "data". Thus, it is particularly well-suited also to store time stamps. Instead of crafting particular transactions that look like sending money but instead contain data, you can just include your data per design into a name's value! Since Namecoin has a blockchain similar to Bitcoin's, the same time-stamp process secures the data afterwards.

However, one can still argue that Bitcoin is the most secure blockchain in existence, and that Bitcoin has a better chance of surviving throughout the coming years than Namecoin has. (While I believe that both systems will survive and be of great use, I also think that this argument is justified.) Fortunately, Namecoin is merge-mined with the Bitcoin blockchain: This means that Bitcoin miners can also mine Namecoin, without any additional cost. Currently about half of all Bitcoin miners makes use of this possibility. The way in which merge-mining works ensures that Namecoin blocks are, in some sense, regularly included into the Bitcoin blockchain. In other words, even if you use Namecoin to time-stamp your data, a hash chain will eventually exist that links your data back to Bitcoin itself!

At this point, finally, NameStamp comes in: It allows you to explicitly highlight and extract this link. This makes your time stamp independent of the Namecoin blockchain, so that your proof can be verified just against the Bitcoin alone.


Copyright © 2011–2018 by Daniel KraftHomeContactImprint