Bitcoin Forum

Bitcoin => Development & Technical Discussion => Topic started by: TierNolan on February 21, 2013, 04:20:22 PM



Title: Spending coinbase outputs in the same block?
Post by: TierNolan on February 21, 2013, 04:20:22 PM
Is that allowed?

I am thinking of schemes that need a number of transactions with 0 value input to 0 value outputs.

Could you just generate lots of txos in the coinbase and then use those in the block?


Title: Re: Spending coinbase outputs in the same block?
Post by: jgarzik on February 21, 2013, 04:22:30 PM
Is that allowed?

No.  You need to wait 100-120 blocks before you may spend a coinbase output.



Title: Re: Spending coinbase outputs in the same block?
Post by: TierNolan on February 21, 2013, 04:23:23 PM
No.  You need to wait 100-120 blocks before you may spend a coinbase output.

Ahh right, of course.  I should have remembered that.


Title: Re: Spending coinbase outputs in the same block?
Post by: Sukrim on February 21, 2013, 04:40:22 PM
Is that allowed?
No.  You need to wait 100-120 blocks before you may spend a coinbase output.
Even if you mine the block yourself?

In other words, is a block seen as invalid, if it contains a transaction that spends a coinbase output?


Title: Re: Spending coinbase outputs in the same block?
Post by: Peter Todd on February 21, 2013, 07:23:27 PM
Even if you mine the block yourself?

In other words, is a block seen as invalid, if it contains a transaction that spends a coinbase output?

Exactly.

The reason behind this rule is to limit the damage in the event that a block, or potentially a whole bunch of blocks, get orphaned by a better chain. The problem is that while normal transactions can always make their way back to the chain - they just become unconfirmed and can always be reconfirmed - when a block is orphaned the coinbase transaction simply no longer exists and thus transaction that spent that output are invalid. There could be a heck of a lot of those transactions, and thus a lot of peoples' payments disrupted.

The 100 block rule makes that really unlikely to happen because 100 block getting orphaned in a row is really unlikely to happen. Satoshi probably chose 100 blocks, rather than say 6 or something, to be conservative; making miners wait 16 hours before they can spend their reward is a pretty minor disadvantage compared to the huge amount of harm invalidating transactions can do. Personally I would have picked a week myself, but unlike Satoshi I have to sleep. :P

The value of this rule was really demonstrated a few years ago with the overflow bug. Basically a flaw was discovered where a special transaction could create an enormous number of coins out of thin air. The flaw was (very) quickly patched and miners upgraded, but it still took a good 50 blocks or so before the patched chain finally overtook the un-patched one. Because of the 100 block rule all the transactions on the un-patched chain eventually were confirmed on the patched one.