I am reading the Cornell selfish mining paper. In it, their main argument is that a selfish miner can increase the ratio of the blocks he mines relative to the honest miners. I do not dispute this. However, to my understanding, merely denying others their blocks does not help you; just because everyone else is getting fewer blocks doesn't mean you're getting more. (That is, everyone mining normally would be expected to get a certain rate, but if you suppress some of those blocks, then the total rate goes down. So denying others their blocks is not zero-sum; just because everyone else's rate goes down does not imply that your rate goes up.)

Here's a simpler explanation of my confusion. Consider this thought experiment. Let's say 2/3 of the miners suddenly quit mining, leaving it all to a miner who has 1/3 of the hashrate. We can all agree that this miner is at least as well off as a miner conducting a selfish miner attack. (The reason for this is very simple: he could just replicate the exact same strategy used by the selfish miner, except that the honest miners now have no chance of finding a block in this thought experiment.) Nonetheless, they can only mine at a rate of 1 block per 30 minutes, at least until the next difficulty readjustment.

So unless you're a sadist who just wants to make everyone else worse off, it seems that selfish mining gives no advantage, unless we consider at least one of these three factors:

  1. Transaction fees. If you mine at the same rate and cause everyone else to mine at a lower rate (because a lot of their blocks get rejected), you are still finding blocks at the same time intervals on average, but since each block takes longer in general to find, it will include more transactions and thus more transaction fees.
  2. Difficulty changes. If the difficulty readjustment occurs as you're performing selfish mining, then of course decreasing everyone else's share of the pie increases yours.
  3. Economic effects. With fewer bitcoins being mined, all else being equal, a decrease in supply causes an increase in price. So the bitcoins you mine are more valuable.

Am I correct in concluding that without these three effects, there is no selfish mining attack? If so, then selfish mining is not a problem in practice, at least for now. Transaction fees are minuscule compared to the block reward, difficulty retargets are infrequent, and the amount mined each day isn't really that significant compared to the total number of coins in circulation.

  • The key word is "for now": the paper concentrates on the long term effects of the attack, in which case points 2 and 3 certainly cannot be ignored. Mar 21, 2014 at 12:45
  • I am aware. :) I just wanted to see if there was something more fundamental that I missed while reading the paper.
    – Tony
    Mar 21, 2014 at 20:54

3 Answers 3


You're missing the main point: when a selfish miner finds a new block, he keeps it private, does not broadcast it to the network, and starts mining on top of that privately.

The rest of the network is still mining on a block that was actually already found, but not broadcast.

When the rest of the network finally finds this block, the selfish miner broadcasts his version, in an attempt to replace it.

By invalidating blocks this way a selfish miner is effectively wasting other people's cycles, and has a head start for winning the next block, because he started mining on it before the others.


Keep in mind that this practice is only successful if you're a large pool with around 25% of hashing power. Major pools of this size are closely watched and scrutinized by the entire community. Finding consecutive blocks in a row, for many times, is a strong indicator that the pool is practicing selfish mining. The community can therefore decide whether to leave the pools who are practicing this behavior.

  • I was initially convinced by that argument, the head start, as well. But after thinking about it for a long time, I realized that the head start doesn't really do any good, since the selfish miner isn't mining any faster than before. He is merely slowing down the overall hashrate. In any case, how do you refute my thought experiment?
    – Tony
    Mar 21, 2014 at 9:24
  • Just to clarify: Given a network difficulty and your hashrate, these two pieces of information are completely sufficient to determine the rate at which you mine, regardless of what other (honest) miners are doing. And you can't decrease difficulty (in the short term) or increase your hashrate (in a way that wouldn't just also allow you to mine more if you were honest).
    – Tony
    Mar 21, 2014 at 9:34
  • 1
    The math on the paper proves that overall selfish miners will win more blocks than honest ones. Fortunately however everybody can see who's mined what. So we can leave the pools who are practicing this behavior. Mar 21, 2014 at 10:37
  • Ah, that's a good point, and what I was looking for. I was treating the selfish miner as a single entity, and neglecting the fact that a pool owner can get people to move to their pool this way. Please add this to your answer, because it is the thing that I actually missed. I'll wait a few more days to see if there's something even more fundamental that works even if the selfish miner acts alone; if not I'll accept your answer.
    – Tony
    Mar 21, 2014 at 10:49
  • 2
    Wait a minute - I think I misread your comment, Luca. You're saying people will move away from selfish pools, but what I got out of your comment was that selfish pools will gain more miners because people are acting in their own self-interest.
    – Tony
    Mar 21, 2014 at 11:57

Selfish mining is not related to the three factors you mentioned.

The basic idea is that a miner can do one of two things:

  • Shift her mining efforts on top of any new legitimate block she hears about and broadcast to the network any block she finds as soon as she finds it
  • When she finds a block, instead of broadcasting it immediately, keep it to herself and attempt to mine on top of it and lengthen a private branch of the blockchain which she can later choose to broadcast opportunistically and collect the reward associated with the one (or more) blocks in her secret branch.

The first strategy is the one suggested in Satoshi's paper. I'm calling this a suggestion because there is nothing forcing it in the software.

Surprisingly (perhaps) the second strategy can be shown to increase the chances of winning the next block, in some cases.

Certain types of double spend attacks as well as the selfish miner's strategy utilize this. For a more comprehensive analysis you can look at this paper On the Phase Space of Block-Hiding Strategies in Bitcoin-like networks.

The second strategy becomes beneficial only when the miner has a sizable hashing power (around 1/3) or is central enough to have many miners work on it's block in case of a tie with the rest of the network.

the TLDR is: centralization is bad. Once a miner becomes too big he can, in principle, abuse his power to get more than his relative share.

  • This does not resolve the issue presented by my thought experiment, however. If selfish mining is viable without those three factors, then either 1) a single miner with 1/3 of the hashrate will be able to mine more quickly if the other 2/3 of the miners dropped out, even without a difficulty change; or 2) the strategy of blocking everyone else from mining completely (which is equivalent to everyone else dropping out) is not at least as effective as any other possible strategy. Which is it?
    – Tony
    Mar 27, 2014 at 18:21
  • Hi Tony, I think I have an answer for you, but you are correct that neither of the two options you offered is the case. It is not the rate at which the selfish miner gets solutions, but the portion of blocks he solves before the next difficulty change. Before he has to release his replacement block, the time he spends mining increases his chances and also lowers the next difficulty (for him and everyone else). Eventually, the difficulty will reflect his mining alone for a few seconds and everyone mining for the rest of the 10 minutes. He'll continue solving more blocks than he deserves. Aug 27, 2015 at 4:29

I think you have asked a good question, although it's value is only in getting people to think about these issues, and I don't like the wording. The fact is that the three factors you identified for exclusion cannot be removed. I discourage separating bad actions from their consequences in the mind. It opens doors to bad places.

The first question in your paragraph has the seeds of a measurement problem. You start out measuring the ratio of blocks solved by the selfish miner, but eventually you get to the rate at which he solves blocks. Pick one.

He does solve a higher ratio of blocks, but since he is mining alone for some of that time, it takes longer, so on the ratio metric, he has the advantage. On the metric of solution rate, he does not have an advantage, at least not until his "sadism" as you called it affects the difficulty, which you excluded.

Lastly, I would like to discourage a certain kind of thinking that your question demonstrates. I doubt you did this on purpose (school tends to bend us towards it), but I will ask a question in the same way:

Does rape cause any problems in the absence of psychological effects, pregnancy, and injury?

Perhaps your goal was not to suggest that selfish mining can be acceptable behavior, but to zero in on the effects that make it unacceptable. For the purpose of further illustration, I propose that you ask it this way next time: What effects of rape are problematic aside from psychological effects, pregnancy, and injury? Or, for your question, "What advantages does selfish mining offer other than more transaction fees, a lower difficulty, and the increase in price from a choked supply?"

By the way, it was in answering my own more-recently asked question, "Can Bitcoin Days Destroyed be a better resolution mechanism for competing blocks?" that I came back to this one to offer my answer.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.