Actually now I'm thinking- I reckon it is so that your transaction gets accepted by the network when it is sent out. At around 20 confirmations, you can be sure that the rest of the network also has 100 confirmations off the original mined block.

Otherwise at 100 confirms, you may have a chain ahead of everyone else or there might be a temporary network partition (islanding) that causes another fork to get built up, then when they rejoin, not everyone has 100 confirms...


From: Amir Taaki <zgenjix@yahoo.com>
To: "bitcoin-development@lists.sourceforge.net" <bitcoin-development@lists.sourceforge.net>
Sent: Friday, January 27, 2012 4:33 PM
Subject: GetBlocksToMaturity

Why add 20 to COINBASE_MATURITY there?

The underlying protocol accepts spent transactions at 100 (COINBASE_MATURITY) so this seems more like a measure to put people off spending until 120 confirms. If you are determined enough to hack your client, you can still spend before 120 but after 100.

Why is this?

Did Satoshi overestimate how many competing races there would be between mined blocks?