What happens when a miner does not claim all fees/generated coins?

15

1

Suppose that a miner for some reason has the generation transaction of their blocks not take all the possible coins. This can happen for a variety of reasons, almost all of which are bugs:

  • An off-by-one error makes them think that their block should generate only 25 BTC when we're still at 50 BTC per block
  • Some bug prevents them from noticing a transaction fee; perhaps they were mining and updating the block in parallel using non-thread-safe code.
  • Depending on the answer to this question, they may actually decide to do this on purpose (though I can't think of an answer that would cause this in the vast majority of cases)

I can think of a few possible ways the network would respond, and none really seem ideal.

  • The block could be rejected, just as it would be if it had too much generated.
  • The block could be accepted and the extra coins available for whoever mines the next block (in which case, somebody may do this on purpose to encourage others to mine).
  • The block could be accepted and the extra coins lost.

What actually happens?

Daniel H

Posted 2012-08-28T00:34:19.087

Reputation: 644

Examples of this happening have been mentioned by Pieter Wuille on Will there be 21 million bitcoins eventually?.

Murch 2016-03-11T10:26:26.133

Answers

22

The block is accepted, and the coins are lost. Poor miner.

Here is a link to the part of the 0.6.3 source which checks this: https://github.com/bitcoin/bitcoin/blob/v0.6.3/src/main.cpp#L1362

Also, this has effectively happened before; block #124724 claimed one satoshi less it than could have.

Pieter Wuille

Posted 2012-08-28T00:34:19.087

Reputation: 54 032

Wouldn't the coins still be available to be collected by later blocks, as they aren't assigned to any address?Murch 2013-08-21T15:15:15.767

3@Murch: No. That would have made sense perhaps, but it's not how the rules are - and changing things at this level is extremely hard.Pieter Wuille 2013-08-21T21:04:01.657

Do you have a source on this, such as the standard client code or documentation?Daniel H 2012-08-28T04:12:57.913

3If you look at the client code, you'll see it only checks to make sure the output isn't more than the total of all fees plus the block reward. No other checks of the amount are made.David Schwartz 2012-08-28T07:14:46.243

1Updated my answer with a link to the source.Pieter Wuille 2012-08-28T14:31:55.653