I am reading the bitcoin white paper, and I came across the concept of timestamp servers in it. Unfortunately the description of the usage of a timestamp server leaves me with more questions. And unfortunately googling has not helped much.

The paper has this:

The solution we propose begins with a timestamp server. A timestamp server works by taking a hash of a block of items to be timestamped and widely publishing the hash, such as in a newspaper or Usenet post [2-5]. The timestamp proves that the data must have existed at the time, obviously, in order to get into the hash. Each timestamp includes the previous timestamp in its hash, forming a chain, with each additional timestamp reinforcing the ones before it.

Okay I have questions:

  1. What is the format of the artifacts published by a timestamp server? Is it like an hash? or signature? or something else? How is the date attached to such an artifacts?

  2. Each timestamp includes the previous timestamp in its hash How is it possible to include a previous timestamp in another timestamp? Does timestamp have some form of verifiable identity? How does this look like?

  3. Where does a timestamp server publishes to? A URI of some sort?

  4. Anyone knows an example of a timestamp server? Preferably being used outside the context of bitcoin? I ask this so as to better get a feel of how timestamp server works and used.

  • 1
    $\begingroup$ ietf.org/rfc/rfc3161.txt is one standard for timestamp servers. I'm not familiar enough with them in general to answer this well, and I suspect there are other standards possible (the Bitcoin paper version is far broader than what this RFC allows). $\endgroup$ – SAI Peregrinus Dec 31 '20 at 5:08
  • 1
    $\begingroup$ Please next time split up the question into multiple questions. Generally we do allow some questions if they are related, but these are too far apart. The problem is that we may be able to answer part of the questions asked, but then are either missing part of the answer or won't answer at all. $\endgroup$ – Maarten Bodewes Dec 31 '20 at 12:58

In 1991, Stuart Haber and Scott Stornetta proposed a method for time stamping a digital document. In their method, when someone (Alice) wants to timestamp a document, she send the hash of her document to a Trusted Third Party (TTP). TTP (similar to figure 1) puts this hash in a Merkle tree and sends back to Alice a proof that her document is in the Merkle tree and then publishes this Merkle root [RH(i-1)] in a newspaper or Usenet post, just for time stamping, adding a specific time (publishing day) to RH(i-1).

enter image description here

Next day, TTP does a similar job with a difference: for calculating the Merkle root RH(i), he uses the previous day's Merkle root [RH(i-1)]. It is called linking and hash pointer and linked list made it possible. Hash pointer (figure 2) is a pointer to hash of some information that it will guarantee that the information hasn’t changed, because if someone wants to change a previous hash, he should change all next hashes and informations in the chain. enter image description here

Bitcoin uses a hash pointer (figure 3) for creating the ledger of transactions (Tx), with a difference: for calculating hashes of the chain, it uses Hashcash. Hashcash added the proof of works to bitcoin. In hashcash, miners scanning for a value that when hashed, the hash begins with a specific number of zero bits. For finding this specific hash, miners changes Nonce parameter in the blocks of chain. enter image description here

In bitcoin, with a peer to peer network, hashcash-based timestamp server and the ledger of transactions is distributed and all miners have a copy of it, so bitcoin doesn't need a Trusted Third Party (TTP).


Section 4 of the linked paper answers some of your questions:

To implement a distributed timestamp server on a peer-to-peer basis, we will need to use a proof-of-work system similar to Adam Back's Hashcash, rather than newspaper or Usenet posts. The proof-of-work involves scanning for a value that when hashed, such as with SHA-256, the hash begins with a number of zero bits. The average work required is exponential in the number of zero bits required and can be verified by executing a single hash.
For our timestamp network, we implement the proof-of-work by incrementing a nonce in the block until a value is found that gives the block's hash the required zero bits. Once the CPU effort has been expended to make it satisfy the proof-of-work, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing all the blocks after it.

  1. The 'server' publishes blocks of data with a hash digest.
  2. The previous hash is included in each block, as illustrated in section 4 (not included above).
  3. It is published to all connected P2P nodes. Section 5 of the paper goes into a little more detail.
  4. OriginStamp uses several blockchains to timestamp documents. Zoho provide a similar paid service. OpenTimestamps is free and relies on donations. Naturally examples of such timestamp services are built on existing cryptocurrency blockchains.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.