4

Context:

There is a bet going on r/bitcoin about the possibility of doing a user activated soft fork for reducing current miner reward to 0.25 BTC.

One of the users says the bet had two points:

  1. the change must be a soft fork (aka it doesn't break consensus)
  2. no miner must be able to claim more than 0.25 btc.

Would it be able to make a change to the Bitcoin consensus rules that would meet this criteria?

1
  • Maybe I'm not sure what "soft fork" means exactly in this context. But what about a scheme where > 50% of miners agree that they will not mine on top of any block with a reward larger than 0.25 BTC? Non-mining nodes don't have to upgrade; they might accept blocks with higher rewards from non-conforming miners, but those blocks will eventually be orphaned. And because of the 100-block maturation time, no transaction that spends a higher reward will ever be valid. Dec 8, 2018 at 17:50

3 Answers 3

3

Yes, it is possible. The rule regarding the coinbase reward is that a miner cannot take more than the block subsidy plus the transaction fees in the block. This means that a miner can opt to take less than the full reward that they are entitled to. This has happened before in Bitcoin a few times. The coins that they did not collect are gone forever.

So, you can use this rule to your advantage if you want to decrease the block subsidy via a soft fork. In your soft fork, you simply create a new rule which results in the coinbase reward being less than the current coinbase reward (e.g. the block subsidy is smaller). Because of the rule mentioned earlier, non-upgraded nodes will still accept blocks that have these coinbase transactions with a smaller coinbase reward. Thus this is a soft fork because the new rule is backwards compatible.

2

The way block reward is computed today is :

CAmount blockReward = nFees + GetBlockSubsidy(pindex->nHeight, chainparams.GetConsensus());

Which means that the block reward is the total fees in the block plus the current base block subsidy.

It's definitely possible to change this line to (pseudocode) :

CAmount blockReward = std::min(nFees + GetBlockSubsidy(pindex->nHeight, chainparams.GetConsensus()), 25000000);

This will be a soft fork which doesn't allow the reward to be larger than 0.25 BTC

To explain what I mean in English, the reward is set minimum taken between the current block subsidy + fees, or 0.25 BTC. This is a constraint on the current rules (where the base subsidy is larger than 0.25 BTC), and forward compatible with the period in the future when the base subsidy is lower than 0.25 BTC.

Adding @pieter-wuille's point from the comment, the current rules don't limit a miner in how low they can set their reward to be (where the minimum is zero), only how high. That means that a miner doesn't have to reward themselves with the maximum allowed reward. Such occurences have happened on chain before :

Rootstock accidentally set a zero amount as their reward : https://www.smartbit.com.au/tx/9bf8853b3a823bbfa1e54017ae11a9e1f4d08a854dcce9f24e08114f2c921182

The first satoshi taken out of money supply :

https://www.smartbit.com.au/tx/5d80a29be1609db91658b401f85921a86ab4755969729b65257651bb9fd2c10d

5
  • How is it possible to reduce/change block subsidy without breaking consensus? That seems impossible without a hardfork. Limiting included tx’s may be possible, to limit fees.
    – James C.
    Dec 8, 2018 at 17:53
  • 1
    The fees, should they push the reward to be higher than 0.25 btc are simply discarded (effectively burned - taken out of circulation entirely). This is soft fork compatible and already happened on chain.
    – arubi
    Dec 8, 2018 at 17:57
  • Got it. Fees yes. Not subsidy.
    – James C.
    Dec 8, 2018 at 17:57
  • 1
    @James C: the consensus rule is that the coinbase output cannot be more than the reward. It has always been allowed to be less (and there are plenty of examples of miners forgetting to claim some fees for example with badly written software). Dec 8, 2018 at 17:58
  • Ah @PieterWuille I did not known it could be less :) Thanks
    – James C.
    Dec 8, 2018 at 18:03
0

Changing the block subsidy amount and/or schedule is not possible without breaking consensus.

It can be possible to limit tx’s included in a block to limit the fees received by the miner with a soft fork. Empty blocks can still be valid.

2
  • It's not an arbitrary change. It's reducing the amount of coinbase reward. Dec 8, 2018 at 18:01
  • Yup my mistake. I understand now.
    – James C.
    Dec 8, 2018 at 18:04

Your Answer

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

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