20

Lets say I'm mining bitcoins, and I've just received a new block that someone else has mined. What encourages me to send that block to anyone else.

I can understand how the original miner wants to send the block around the network (so their block becomes part of the chain) but what incentive do other nodes have to send it around? Wouldn't it be better to not to spread the block, but then build your own block on top of it, in which case you'll then be two blocks ahead and more likely to be added to the chain?

Of course, if everyone does this the result would be terrible, but what incentive is there to encourage people (other than the original miners) to spread blocks besides altruism?

14

As long as the block reward is much higher than the transaction fees, this is totally not an issue: mining isn't an incremental process, it's a bruteforce probabilistic one.

I.e. in a single moment your chance of solving a block isn't higher if you have been mining that same block for some time: the chance is always the same.

Hence, once a block is relayed to you, you just add it to the blockchain and start immediately to search for a new block on top of that one.

Since the risk of your block being orphaned (currently you'd lose 25BTC ~= 3750€) is many orders of magnitude higher than the cost of relaying it (I'd estimate it a bunch of satoshis), it is always more convenient to relay it.

  • 7
    I agree, and might summarize/add: if you are a miner you want the block you are mining "on top of" to be as widely distributed as possible because you want to minimize the risk of building on a orphaned fork. – David Ogren Apr 4 '13 at 13:14
  • 1
    I don't think that answers the question. Suppose that you receive a block. Clearly, you should mine on top of it, but why should you relay that block to other nodes if bandwidth costs money? – Nick ODell Apr 4 '13 at 18:47
  • 2
    @NickODell because the risk to have your mined block orphaned (~2650€ currently) is much higher than the cost of relaying a block (a bunch of satoshis, I'd guess?). – o0'. Apr 5 '13 at 11:30
  • @Lohoris Good point. – Nick ODell Apr 5 '13 at 16:38
  • 1
    @Clinton we are talking about relaying a block you are mining upon, so decreasing the chances of your eventual new block being orphaned. – o0'. Apr 10 '13 at 9:09
5

The core problem with hoarding is risking work on an orphan chain. If you horde a block and start working on its successor you risk the network finding another legitimate block and forking the master block chain. If that is the case (unless you have significant processing power behind you) you will be working on a branch that will be orphaned in favor of a longer block chain, granting you nothing for your mining efforts.

4

There's no need for an additional incentive. It's enough that the sender wants to send it and the recipients want to receive it. The miner who found the block wants to get it to as many people as possible so they get the reward. The other miners want to receive it so they can build on a longer chain. That is sufficient.

If it ever got to be an issue, which I can't imagine it ever being, Bitcoin clients could drop connections to nodes that don't pull their own weight. Thus if you refused to relay blocks to a node, it would refuse to relay blocks to you. Though more likely the solution would simply be for more mining pools to take care to directly interconnect.

  • "The miner who found the block wants to get it to as many people as possible so they get the reward. The other miners want to receive it so they can build on a longer chain." <- This explanation is lacking the case the question is about. There is a third party: This part of the answer does not cover the case where another miner received a block, and now decides if he should send it on or not. Furthermore, the question is also not about theoretical countermeasures which could be implemented in the future. It is about the current situation. – Daniel S. Nov 13 '13 at 15:15
  • @DanielS. This is the Internet. If X wants to send information to Y, Y wants to receive information from X, and both X and Y are connected to the Internet, a third party can't do much to stop them. As for "the current situation", there is no evidence this problem exists in the current situation. We need to address some future situation where this is an actual problem. (You can't turn your car to avoid running off the road miles before the curve.) – David Schwartz Nov 13 '13 at 19:22
1

There has been a partial analysis as part of an academic claim that not relaying a block in some situations is advantageous for a mining pool. The paper is currently in preprint and its conclusions are hotly disputed, including on the Bitcoin Foundation's Blog.

The problem is that there is indeed no direct reward for relaying blocks. According to that preprint, in some circustances, there is even a penalty for too quickly relaying blocks you mined yourself, because it allows others to work on the most profitable chain. The existence of this negative incentive depends on the assumption that you can (at least partially) monopolize the network, such that when someone else mines a new block you can more quickly (or widely) spread your own block, in the nick of time, than the other new one propagates.

1

Original poster's hunch is absolutely correct. Miner has every incentive to send his newly found block to peers immediately. Any delay only harms its chances of being built into the permanent chain.

Miner is also very anxious to receive new blocks mined by others, so he can build at the tip.

But to relay a new block mined elsewhere only helps other miners to build at the tip, and therefore harms our miner's chances of producing the next best-block. The optimal strategy for our miner is to relay the block mined elsewhere only when he has found his own block on top of it.

For this reason, the network of non-mining full nodes plays an under-appreciated role as intermediary between miners. Full nodes have nothing to lose by relaying blocks promptly.

0

@TomHarding is correct in that a miner cannot void a block mined by another miner simply by not relaying it. The block gets propagated anyway, through other nodes.

It is worth pointing out that the problem you describe is related the problem of selfish mining, where, given some assumptions, a "selfish" miner has the incentive to avoid publishing a block he himself mined, and start working on the next block on top of that "private" block, hoping that at the same time, the rest of the miners are doing futile work (being unaware of the private block which would eventually make it into the blockchain). Of course, the selfish miner is risking losing the reward on the unpublished block if it doesn't make it to the blockchain eventually, but under some assumptions, this can still be a profitable strategy for him.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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