2

I'm trying to understand the "Timestamp Server" section in the original bitcoin paper. It feels overly short for someone without an understanding of cryptography.

Is it saying?

  1. A block includes:
    1. The block itself
    2. The time the block was created
    3. A hash of the previous block
  2. When a new block is created:
    1. This block includes the current time and a hash of the previous block
    2. The hash of this new block is broadcasted to all nodes

There is little information online trying to research the concept of "timestamp server". Apologies if this is a silly question. As a software developer I'm trying to understand how this works on a granular level.

Source:

From the original paper, Bitcoin: A Peer-to-Peer Electronic Cash System.

3. Timestamp Server
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.

enter image description here

1

Is it saying ...

I think you have it right except that for 2.2. the whole new block is broadcast not just the hash.

Actually "broadcast" isn't exactly the right term really. I believe the node transmits the new block to a small number of peers (e.g. ten or so other nodes). These other nodes then pass on the new block if it looks OK to them. Eventually the new block reaches all nodes in the network.

In a comment below, Pieter Wuille has clarified some of the details, "Blocks are announced to all peers. Those peers then fetch the actual block from (typically) the first peer that announces from them."

I haven't found an explicit detailed description of the exact sequence of network actions, but if you read The Bitcoin Wiki's Protocol documentation you'll see that there are many message types and one of them is inv (inventory)

Allows a node to advertise its knowledge of one or more objects. It can be received unsolicited, or in reply to getblocks.

The inv payload includes an array inv_vec[] which contains a code for a type of data available (e.g. block) and a hash of that data.

So the recipient of that message could presumably see that the sender has one or more blocks that the recipient doesn't and could presumably then issue a getdata message to obtain that new data. As I said, I haven't yet found a detailed explanation of the exact sequence of operations but I imagine the reality is along these lines. So my description of this as broadcasting new blocks is a simplification.


There is little information online trying to research the concept of "timestamp server"

As you evidently know, but others might not, what Nakamoto was describing, under section 3. Timestamp Server, is an activity that we would now refer to as mining.

2
  • 2
    Blocks are announced to all peers. Those peers then fetch the actual block from (typically) the first peer that announces from them. This can be done through a number of mechanisms, but new blocks announced at the tip, modern Bitcoin Core nodes (0.13 and up) use compact blocks, see BIP152. – Pieter Wuille May 13 at 18:58
  • 1
    @Pieter, thanks for the clarification. I have accordingly updated the answer a little and might do so again when and if I think I understand the details better. – RedGrittyBrick May 15 at 20:40

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.