Selfish mining at 1636647 - noncesense-research-lab/archival_network GitHub Wiki
This page contains documentation of the events surrounding block 1636647.
Background
To learn more about selfish mining strategies, read Majority is not Enough: Bitcoin Mining is Vulnerable by Ittay Eyal, Emin Gun Sirer and Stubborn Mining: Generalizing Selfish Mining and Combining with an Eclipse Attack by Kartik Nayak, Srijan Kumar, Andrew Miller, and Elaine Shi
Logs
Here are logs from proximate blocks:
2018-08-11 15:35:01.940 [P2P6] [MAIN H=1636646 MRT=1534001673 NRT=1534001701.940]
2018-08-11 15:40:08.279 [P2P8] [MAIN H=1636647 MRT=1534002002 NRT=1534002008.278] ** NOW ALT
2018-08-11 15:40:59.425 [P2P5] [ALT H=1636648 MRT=1534002008 NRT=1534002059.425] ** NOW MAIN
2018-08-11 15:40:59.971 [P2P8] [ALT H=1636647 MRT=1534002005 NRT=1534002059.971] ** NOW MAIN
2018-08-11 15:41:50.102 [P2P2] [MAIN H=1636649 MRT=1534002061 NRT=1534002110.102]
Notation
Let [HH,TT] represent a block by the last two digits of its height and last two digits of its (spoofable) miner-reported timestamp. TT can be left blank (e.g. [HH,**] if there is only one known version of a block at that height)
Observations
There are a few things to note:
-
According to the miner-reported timestamps [47,05] and [48, 08] were discovered 3 seconds apart (... not statistically impossible, but improbable)
-
The node-receipt timestamps (NRTs) show that neither block was received by our archival nodes until almost a minute later
-
Block 1636648 was received before block 1636647
Interpretation
The "original" block for H=*47 (i.e. [47,02] the first version shared with the Monero network at large) followed H=[46,**] by a 10-minute wait time. I think in the interim, somebody mined their own version ([47,05]), but didn't share it with the network until they also solved [48,08].
Only then, did the miner share their [47,05] and [48,08] blocks with the network, kicking the original [47,02] off the main chain.
This phenomenon was simultaneously observed on several MAP nodes (on a few continents).
... of course the whole NRT - MRT = 50 seconds issue is a whole different matter. I doubt that they actually waited 50 seconds to release their blocks, so it's possible that the miner-reported timestamps are spoofed to make it look like a "close call" between the two versions of H=*47)