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?
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 timestamp – Hyun Seok Jeong – 2018-09-12T04:16:32.787