The Majority is not enough paper proposed an academic and somehow practical attack to Bitcoin mining system based on creating hidden forks. The paper claims that if miners work on whichever fork they received first, the attack can be executed by very small pool. Their proposed solution is: "when a miner learns of competing branches of the same length, it should choose which one to mine on uniformly at random". However this solution does not solve the problem completely, it just increases required size of the pool which want to execute the attack.
I have read about the attack here and here, however, I didn't find answers of my questions:
- Is the attack really practical?
- Have bitcoin developers applied the solution proposed in the paper? (If yes, why the wiki is not updated? The wiki states: "generating nodes build onto whichever one of the blocks they received first")
- Have bitcoin developers applied another solution for the problem? (The solution proposed in the paper does not solve the problem completely)
EDIT:
why mining on both chain forks uniformly would increase the required mining power for a selfish mining attack?
Mining on both chain forks uniformly is a solution to sybil attack of the selfish miners. Selfish want to force other miners to work on their fork, so they create a significant number of zero-power miners to the Bitcoin miner network, as their sensor. When one of their sensors senses a new valid block, all sensors broadcast the fork of the selfish miners. Therefore, more than half of miners (nearly all of them) would work on selfish miners fork.
Note that, the sybil attack and their proposed solution is minor part of the attack. The main attack could be executed without running sybil attack and even in the case of applying their proposed solution, if the selfish miners have 33% of mining power.