2. Timestamps are not necessary to avoid double-spending. A simple ordering of blocks is sufficient, so exchanging timestamps with enumeration would work double-spending wise. Permissioned consensus protocols, such as hyperledger, indeed have no timestamps (in version 1.0).
It uses a simple average of block time in the last 2016 blocks. But such averages ignore any values besides the first and last one in the interval. Hence, if the difficulty is constant, the following sequence is valid from both the protocol and the miners incentives point of views:
1, 2, 3,…., 2015, 1209600 (time of two weeks), 2017, 2018, 2019,…., 4031, 1209600*2, 4033, 4044, …
If we want to be pedantic, the best lower bound for a block timestamp is the timestamp of the block that closes the adjustment interval in which it resides.
Possible improvement:
-----------------------------
We may consider exchanging average with standard deviation in the difficulty adjustment formula. It both better mirrors changes in the hash power along the interval, and disables the option to manipulate timestamps without affecting the difficulty.
I'm aware that this change requires a hardfork, and won't happen any time soon. But does it make sense to add it to a potential future hard fork?
_______________________________________________
bitcoin-dev mailing list
bitcoin-dev@lists.linuxfoundation.org
https://lists.linuxfoundation.org/mailman/listinfo/bitcoin- dev