Take the 2-minute tour ×
Bitcoin Stack Exchange is a question and answer site for Bitcoin crypto-currency enthusiasts. It's 100% free, no registration required.

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.

share|improve this question
    
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. –  Nate Eldredge Mar 21 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 at 20:54

2 Answers 2

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.

Edit

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.

share|improve this answer
    
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 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 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. –  Luca Matteis Mar 21 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 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 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.

share|improve this answer
    
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 at 18:21

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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