One of the most challenging aspects of building cryptonetworks is getting the incentives right. Selfish mining is a subtle attack that breaks intended incentive structures and creates centralizing forces. Here’s a five tweet explanation:
Selfish mining is when a large miner on a Proof-of-Work blockchain––let’s call her Eve––intentionally withholds a block that she has successfully mined. In other words, she deliberately delays broadcasting it to the rest of the network.
Keeping the block in her back pocket allows her to get a head start mining on top of it. If she has significant hashing power (say more than 10%), she might be able to extend this private mini-fork of hers and stay ahead of the next longest chain for some time.
As soon as she notices that the rest of the network is catching up, she can immediately broadcast all of the blocks that she’s been withholding. Eve’s fork is the longest chain, so per the rules of the protocol, everyone switches to her fork and abandons the previous fork.
For as long as Eve can stay ahead, the rest of the network will be busy wasting their mining resources on a fork of the chain that will ultimately be abandoned. This is a competitive advantage for Eve because it reduces everyone else's profitability.
But, more importantly, getting other miners to waste their hashing power on irrelevant forks reduces the effective hash power in the network. This results in an increase to Eve’s relative hash power, and therefore, to her profitability.
Selfish mining is a reminder that it is a great challenge to get these protocols right. It is likely that all of our designs so far are still incomplete. We have more work to do. Check out the original paper by @ittayeyal and @el33th4xor to learn more.