In Satoshi’s original paper, it is written that “we need timestamp to prevent double-spending”.

However, I think timestamp is unnecessary, because every block has a previous block hash and merkle tree root and these are enough to check if a transaction contained in a block is double-spending or not.

I think timestamp is just used to gurantee the current ‘difficulty target’, and I found posts here that it is even possible that a successor of a block can contain a timestamp which is earlier than that of the predecessor.

Am I correct? What’s actually the role of timestamp?


The timestamp is used primarily for establishing the difficulty. Without a timestamp, new nodes would not be able to determine the correct difficulty to be used for each 2016 block period as they wouldn't know how long it took to mine those blocks. So that everyone calculates the difficulty correctly, the block timestamps are used instead of real time.

This of course means that the difficulty can be manipulated by miners messing with the timestamp, but nodes do still check them against real time and will ignore blocks that are outside of a certain range of times based on its own internal clock time.


I do not know how other blockchain does it but in our case (stamping.io) the timestamp helps us so that all the nodes can obtain the same merkle tree, so that the same root hash can be achieved.

  • Your answer would be better if it addressed the Bitcoin blockchain, but I think it can be helpful even if it's only about the project you're addressing. It needs to be improved so that it really explains the role of the timestamp. For example, How does the timestamp enable all nodes to obtain the same merkle tree? – Dave Scotese Oct 22 '18 at 0:10

Your Answer

