When update mining difficulty, Is the timespan of the past 2016 blocks approximated value?

1

I know how to calculate difficulty, and I know it is increased or decreased by checking the timespan of the past 2016 blocks.

and I found actual code for calculating timespan: https://github.com/bitcoin/bitcoin/blob/master/src/pow.cpp#L55

actual_timespan = last_block->get_timestamp() - first_block->get_timestamp()

But, as I know timestamp in block is not the exact time of the mining: https://en.bitcoin.it/wiki/Block_timestamp

So, the timespan which is used to calculate the next difficulty is not the exact timespan but approximate value. Am I right?

Hyun Seok Jeong

Posted 2018-09-12T02:38:49.510

Reputation: 11

Answers

0

It is impossible to know that actual timespan due to network delays, malicious miner behavior, being offline, etc. The target readjustment just uses the closest thing it can get to the actual timespan which is the difference in the timestamps. However those timestamps can be faked as well, so it is just an estimate.

Andrew Chow

Posted 2018-09-12T02:38:49.510

Reputation: 40 910

Yes, the network rules permit blocks to be created with timestamps up to two hours in the future, and generally up to one hour in the past (it has to be after the median of the timestamps of the 11 past blocks).Pieter Wuille 2019-09-01T16:13:10.657

You are right. but I just want to make sure that timestamp is also very inaccurate. not only because of network delays, malicious behavior, offline, but also because of choosing rules of timestampHyun Seok Jeong 2018-09-12T04:16:32.787