According to the Yellow Paper, the restrictions on block timestamps, Hs, are,
- Hs ∈ ℙ256 (Mathematical term #35) ― ①,
- and Hs > P(H)Hs (Mathematical term #48 and #56) ― ②,
where P(H)Hs is the parent (previous) block's timestamp, and ℙ256 is a set of natural numbers less than 2256.
It seems the Yellow Paper allows future blocks (blocks that have a future timestamp) ― ③, as there's no restriction apart from ① and ②.
But how do Ethereum clients actually cope with them? Do they really accept any future blocks as the Yellow Paper allows?
I took a quick glance at the source code of geth and cpp-ethereum, and it seems ErrFutureBlock
and "allowFutureBlocks"
are relevant, but I couldn't fully understand what they are doing with them.
If there's something I missed or was wrong above, please let me know.