Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
This is the wiki page for my project on detecting selfish mining in Bitcoin.
What is Selfish Mining?
Selfish mining is an attack on the Bitcoin mining network proposed by Ittay Eyal and Emin Sirer. In their paper, they proposed a method that would allow selfish miners to claim a higher proportion of blocks than the proportion they would receive by mining honestly. The attack works by holding onto blocks the miner has found and attempting to get a two block lead over the network. After a lead is obtained, the selfish miner can then wait until the network is only one block behind and then publish the blocks they have found. Since the selfish miner has a longer chain, the network's blocks will be orphaned.
Importance of Preventing Selfish Mining
By hurting the revenue of other miners, selfish mining has the potential to make Bitcoin mining more centralized which hurts the security of the Bitcoin network.
Methods of Detection
This project will use two methods to detect selfish mining based on data in the blockchain. The first method is counting the number of orphaned blocks. Successful selfish mining will produce more orphaned blocks than normal. The second is the amount of time between blocks. Without selfish mining, the time between blocks should be distributed exponentially. With selfish mining, the number of short intervals between blocks will be increased.
The BlockCypher API will be used to collect data about blocks in the past. The BlockChain.info API will be used to collect live data about new blocks including orphaned blocks.