Coinbase transaction's 100-block cooldown period From the developer guide:


  The UTXO of a coinbase transaction has the special condition that it cannot be spent (used as an input) for at least 100 blocks. This temporarily prevents a miner from spending the transaction fees and block reward from a block that may later be determined to be stale (and therefore the coinbase transaction destroyed) after a block chain fork.


Can someone please explain why this constraint is necessary? I mean, how is the output of a coinbase transaction (plus block's transaction fees) different than the outputs of any other transaction?

Or, put differently, if coinbase transactions require a 100-block cooldown period, all other transactions do too, no?
how is the output of a coinbase transaction (plus block's transaction fees) different than the outputs of any other transaction?


Because it's validity is tied to WHICH block it is included in. You can't take a coinbase transaction and include it as if it were a standard transaction in another block, because it creates more bitcoins than it spends, which is not allowed for normal bitcoin transactions.

This issue is called being reorg-safe (reorganization-safe). It is a general principal of the blockchain, and it means that if a fork happens and you have to undo the latest block or two to replace them with different blocks, that shouldn't change which transactions are valid. With normal transactions, it's pretty easy to just add them to block X instead of block Y when a fork happens. 

But if you have transactions that depend on a recent coinbase transaction, then you can't take those transactions and put them in another block easily. So the 100 block rule is to keep the blockchain reorg-safe, so nothing bad happens in the case of a small fork.