Fork Publishment

 Another idea for a defense against selfish mining was fork-punishment, which was proposed by Lear Bahack in 2013.

The fork-punishment rule is as it sounds: it punishes anyone who forks the blockchain.

Any competing blocks receive no block reward, regardless of whether they were mined selfishly or honestly, and the first miner who proves that there was indeed a fork gets half of the forfeited rewards from the previous block height.

This disincentivizes malicious users to attempt to fork the blockchain by working on their own secret chain, and also incentivizes honest miners to report any forks that they have seen.

In the diagram below, we see that there’s a fork, the top being the honest chain and the bottom being the dishonest chain.

Since two blocks are broadcast at the same block height, they are competing blocks and thus neither of them have an associated block reward.

The first miner who proves that there was a fork, and includes this in the next block, gets the block reward for the block they just mined, as well as half of the block reward from the previous block height.

One of the immediate drawbacks is that because we punish all competing blocks, honest miners suffer collateral damage from fork-punishment.

And the fact that we’re punishing honest miners constitutes a different kind of attack Fork-punishment also suffers from the fact that we would have to fundamentally change Bitcoin’s reward distribution rules.

We’d have to have some way of changing the coinbase transactions of blocks where there was a fork.

To do this and also to forward half of the block reward to the next block, we’d have to leverage a concept called transaction malleability, which is out of scope for this course.

And in the end, fork punishment would require a hard fork to implement, and as before, that’s pretty undesirable.

Uniform Tie Breaking