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.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. |